انجمن ویکی قلم‌های فارسی
ورود / عضویت

حروفچینی فارسی در کانتکست (ConTeXt)

بحث پیرامون مسائل مربوط به قلم‌سازی، حروف‌چینی و بومی‌سازی

حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط mingranina » 17 سپتامبر 2016, 08:23

با سلام،

نمونه‌هایی از متون تهیه‌ شده با نسخهٔ 0.20 پودمان دبیر (Dabeer Module) پیوست شده است. این پودمان که در مراحل اولیهٔ توسعه است برای حروفچینی فارسی در کانتکست (ConTeXt) نوشته شده و اخیراً منتشر گردیده است. فایل‌های TEX این نمونه‌ها در بسته dabeer-0.20 موجود می‌باشد.

با تشکر
پیوست‌ها
usage-11-reg.pdf
(62.63 KiB) دانلود 1354 بار
usage-10-kashida.pdf
(112.6 KiB) دانلود 693 بار
usage-09-poem.pdf
(59.65 KiB) دانلود 666 بار
usage-08-table.pdf
(82.98 KiB) دانلود 639 بار
usage-07-item.pdf
(59.47 KiB) دانلود 690 بار
usage-06-math.pdf
(77.78 KiB) دانلود 696 بار
usage-05-footnote.pdf
(68.55 KiB) دانلود 743 بار
usage-04-sectionno.pdf
(59 KiB) دانلود 689 بار
usage-03-pageno.pdf
(72.96 KiB) دانلود 661 بار
usage-02-quote.pdf
(45.98 KiB) دانلود 666 بار
usage-01-normal.pdf
(94.33 KiB) دانلود 684 بار
آخرین ویرایش توسط mingranina on 22 سپتامبر 2016, 09:32, ویرایش شده در 2.
mingranina
 
پست‌ها : 77
تاریخ عضویت: 17 سپتامبر 2016, 07:53

پاسخ: حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط Arzhang » 17 سپتامبر 2016, 17:52

به ایرماگ خوش آمدید و خسته نباشید.
همیشه جای یک نرم‌افزار حروف چینی مختص فارسی خالی بوده است و هر کوششی در این زمینه جای تقدیر دارد.
در مورد توضیحات آورده شده در متون ضمیمه، گرچه به نظرم حساسیت شما در استفاده از زبان فارسی قابل تمجید است اما گاهی سبب شده متن دشوار و یا حتی گاهی نادقیق شود. مثلاً کلمه‌ی «مستندات» برای مواردی به کار می‌رود که قضاوتی در کار باشد یا نکته‌ای بنا باشد اثبات شود. در یادداشت کوتاه بالا، کلمه‌ی «متون» دقیق‌تر است. همچنین در متن ضمیمه، استفاده از عبارت «زیرنویس» به جای پانویس، نادرست است. «پانویس» به یادداشت‌های توضیحی در پایین صفحه‌ی یک متن می‌گویند و «زیرنویس» جملات معمولاً ترجمه شده‌ی یک فیلم است که در پایین تصویر می‌آید.
موفق باشید
نماد کاربر
Arzhang
Site Admin
 
پست‌ها : 1449
تاریخ عضویت: 17 اوت 2009, 15:06
محل سکونت: مونترآل

پاسخ: حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط mingranina » 17 سپتامبر 2016, 20:29

با سلام،

کاملاً درست می‌فرمایید. پیام اصلاح و کلمه «متون» جایگزین «مستندات» شد. اما پیوست‌های پیام متعلق به مؤلف محترم نرم‌افزار Dabeer است.

با تشکر
mingranina
 
پست‌ها : 77
تاریخ عضویت: 17 سپتامبر 2016, 07:53

پاسخ: حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط Ahmad » 17 سپتامبر 2016, 21:34

mingranina بہ ایرماگ خوش آمدید،

ممنون بابت اطلاعات در مورد برنامہ ConTeXt و افزونۂ Dabeer.
چنانکہ شما هم در مدارک ضمیمہ نشان داده‌اید برنامہ ConTeXt امکانات زیادی برای صفحہ‌آرائی دارد. کلا این موضوع در مورد تمام برنامہ‌های خانواده TeXt صدق می‌کند. مشکل اما رابطہ کاربری بسیار پیچده اینگونہ برنامه‌ها است کہ استفاده از آنہا را برای کاربر عادی بسیار دشوار می‌کند و از این نظر اینگونہ برنامہ‌ها جذابیت زیادی ندارند.

بعنوان مثال برای ساختن مدرک سمت چپ در عکس ضمیمہ باید کدها و تگ‌های سمت راست را در برنامہ وارد کرد !

احمد
ConTeXt.png
نماد کاربر
Ahmad
Site Admin
 
پست‌ها : 1289
تاریخ عضویت: 30 مه 2004, 17:33
محل سکونت: سوئد

پاسخ: حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط mingranina » 21 سپتامبر 2016, 21:28

با سلام،
Ahmad نوشته است:[نمایش]
مشکل اما رابطہ کاربری بسیار پیچده اینگونہ برنامه‌ها است کہ استفاده از آنہا را برای کاربر عادی بسیار دشوار می‌کند و از این نظر اینگونہ برنامہ‌ها جذابیت زیادی ندارند.

آنچه مطرح فرموده‌اید سال‌هاست که در دنیای حروفچینی حرفه‌ای در مورد آن بحث می‌شود و البته برای مثال‌های ساده‌ای مانند‫ ‎print "Hello World"‎ مقایسه توانایی TeX (و دوستانش) با Word (و دوستانش) کار بسیار مشکلی است. در لینک‌های زیر عمده‌ترین دلایل برتری TeX ذکر شده است:


با تشکر
mingranina
 
پست‌ها : 77
تاریخ عضویت: 17 سپتامبر 2016, 07:53

نسخهٔ پایدار LuaTeX-1.0 منتشر شد

پستتوسط mingranina » 01 اکتبر 2016, 21:31

با سلام

نسخهٔ پایدار LuaTeX-1.0 منتشر شد و به این ترتیب بخشی از ConTeXt که از LuaTeX استفاده می‌کند و به آن MKIV گفته می‌شود از پایداری قابل قبولی برخوردار شده است. بنابراین از این پس آنچه را که از LuaTeX، ConTeXt، و Lua می‌آموزم در اینجا تحت عنوان «آموخته‌های من از LuaTeX، ConTeXt، و Lua» به اشتراک خواهم گذاشت.

با تشکر
mingranina
 
پست‌ها : 77
تاریخ عضویت: 17 سپتامبر 2016, 07:53

پاسخ: حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط Ahmad » 03 اکتبر 2016, 00:47

جناب mingranina
گرچه بنده نه کاربر اینگونه برنامه‌ها هستم و نه از طرفداران آن بدلیلی که در پست قبلی خود ذکر کردم ولی از معرفی و توضیح شما در مورد کارکرد این برنامه استقبال می‌کنم و از شما تشکر می‌نمایم.
احمد
نماد کاربر
Ahmad
Site Admin
 
پست‌ها : 1289
تاریخ عضویت: 30 مه 2004, 17:33
محل سکونت: سوئد

پاسخ: حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط AliGhz » 03 اکتبر 2016, 09:33

جناب mingranina گرامی

من هم به دلیل علاقه‌ای که به ابزارهای تایپ دارم و اینکه سیستم حروفچینی این مدلی همیشه برایم یک معما بوده است (که دقیقا چیست و چطور کار می‌کند)، از آموزش‌ها و توضیحات شما در اینجا استقبال می‌کنم. من البته الان خیلی با فرمول و نوشته‌های پیچیده سروکار ندارم، و برای لی‌اوت هم از ایندیزاین استفاده می‌کنم، اما جالب است که بدانم سیستمی مثل این که شما معرفی کرده‌اید چطور کار می‌کند و چه مزایایی دارد.

البته من هم مثل احمد عزیز، ترجیح می‌دهم هم راحت‌تر یک سیستم را بفهمم و هم سهل‌تر از آن استفاده کنم. اینطور که من اینجا می‌بینم، سیستم ConTeXt در مقایسه با مثلاً ورد، مثل سیستم عامل داس است به مک (یا ویندوز، از لحاظ رابط کابری).

البته نمی‌دانم مخاطبان و کاربران اصلی ConTeXt چه کسانی هستند، اما اگر قرار باشد نرم‌افزاری با دید تجاری و استفادۀ وسیع باشد، بدون سادگی در فهم و استفاده، برد زیادی نخواهد داشت.

البته سادگی در استفاده، به معنای سطحی یا سطح پایین بودن نیست؛ مثل سخت‌افزارهاو نرم افزارهای اپل که سیستمی پیچیده دارند اما کار کردن با آنها عموماً خیلی ساده است.
 Think Different.
نماد کاربر
AliGhz
Site Admin
 
پست‌ها : 2144
تاریخ عضویت: 14 نوامبر 2009, 16:55
محل سکونت: تهران

پاسخ: حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط mingranina » 05 اکتبر 2016, 00:53

با سلام

جناب آقای Ahmad و جناب آقای AliGhz

ممنون از پیام‌های دلگرم‌کنندهٔ شما. البته من در زمینه ConTeXt مبتدی هستم و در حدی نیستم که بتوانم حق مطلب را ادا کنم. اما سعی می‌کنم در نشان دادن توانایی‌های این نرم‌افزار حتی‌المقدور مفید باشم.

با تشکر
mingranina
 
پست‌ها : 77
تاریخ عضویت: 17 سپتامبر 2016, 07:53

پاسخ: حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط Ilia » 05 اکتبر 2016, 04:24

من چند وقت پیش برایم این سؤال پیش آمد که چرا باید کسی از این سیستم خشک برای نوشتن استفاده کند. کمی در موردش تحقیق کردم، نتیجه‌ای که به آن رسیدم این بود:

این برنامه یا هر چه اسمش را بگذارید، گذشته از اینکه یک سری امکانات برای مثلا فورمول نویسی و غیره ارائه میکند، هنر اصلیش این است که قدرت خرابکاری و بی‌سلیقگی را از کاربرش تا اندازهٔ زیادی میگیرد. یعنی هر بی‌سلیقه یا کودنی که کار کردن مشقتبار این را یاد بگیرد، نتیجهٔ نوشته‌اش تا اندازهٔ زیادی استاندارد و دارای آن ویژگی‌ای خواهد بود که در قالب‌های پیشفرض این برنامه پیشبینی شده است. یعنی مثلا رساله‌های دانشگاه بنظر استاندارد و مقبول و مشابه می‌آیند.

اگر لی‌آوت‌های یک عده را ببینید، این خودش نعمت کمی نیست. بعبارت دیگر رساله‌ای با فانت تاهومای ۱۶ روی ۲۰ و پارگراف‌بندی عجق وجق را طرف خیلی باید زحمت بکشد تا تحویل بدهد!
نماد کاربر
Ilia
Site Admin
 
پست‌ها : 6175
تاریخ عضویت: 25 سپتامبر 2006, 01:01
محل سکونت: کانادا

پاسخ: حروفچینی فارسی در کانتکست (ConTeXt)

پستتوسط AliGhz » 05 اکتبر 2016, 08:24

مطلبی خوب دربارهٔ این سبک نرم‌افزارهای حروفچینی:
http://panevis.ir/?p=932
 Think Different.
نماد کاربر
AliGhz
Site Admin
 
پست‌ها : 2144
تاریخ عضویت: 14 نوامبر 2009, 16:55
محل سکونت: تهران

آموخته‌های من از LuaTeX، ConTeXt، و Lua -‫ 1

پستتوسط mingranina » 08 اکتبر 2016, 11:46

با سلام

برای استفاده و اجرای کدهایی که در اینجا ملاحظه می‌کنید باید LuaTeX، ConTeXt، و Lua را روی سیستم خود نصب کنید.

اگر مایل هستید از نسخه‌های پایدار نرم‌افزارهای فوق استفاده کنید کافی است TeXlive را نصب و آن را به‌روز نمایید. و اگر می‌خواهید از نسخهٔ به‌روز و شامل آخرین اصلاحات (نسخهٔ بتا) استفاده کنید ConTeXt Standalone را نصب فرمایید.

بهترین روش برای فراگیری LuaTeX، ConTeXt، و Lua مثل سایر برنامه‌های کامپیوتری استفاده از مثال است. پس با مثال معروف ‎print "Hello World!"‎ و مثال Font Sampler شروع می‌کنیم که برای مرور و مشاهدهٔ سریع فونت‌های لاتین در یک شاخه نوشته شده و من آن را به کمک ConTeXt Mailing List به فونت‌های فارسی تعمیم داده‌ام.

کد زیر را در فایلی به‌نام ctx-example-1.tex ذخیره کنید.

کد: انتخاب همهٔ
\nopagenumbers
\input luaotfload.sty
\overfullrule 0pt
\font\mono = {file:lmmono8-regular.otf} at 6pt
\parindent 0pt

\def \samplestringEN {Hello World! 1234567890.}
\def \samplestringFA {سلام بر دنیا! ۰۱۲۳۴۵۶۷۸۹}

\directlua{
  dofile("ctx-example-1.lua")
  fontsampler_otf(arg[2])
}

\directlua{
  dofile("ctx-example-1.lua")
  fontsampler_ttf(arg[2])
}

\bye


کد زیر را نیز در همان شاخه و در فایلی به‌نام ctx-example-1.lua ذخیره کنید.

کد: انتخاب همهٔ
function dirtree(dir)
  assert(dir and dir ~= "", "directory parameter is missing or empty")
  if string.sub(dir, -1) == "/" then
    dir=string.sub(dir, 1, -2)
  end

  local function yieldtree(dir)
    for entry in lfs.dir(dir) do
      if not entry:match("^%.") then
        entry=dir.."/"..entry
          if not lfs.isdir(entry) then
            coroutine.yield(entry,lfs.attributes(entry))
          end
          if lfs.isdir(entry) then
            yieldtree(entry)
          end
      end
    end
  end

  return coroutine.wrap(function() yieldtree(dir) end)
end

function fontsampler_otf( dir )
  for entry in dirtree(dir) do
    if entry:match( "(.[ot]tf)","-4" ) then
      tex.tprint(
        {[[\mono ]]},
        {-2,"File name: "},
        {-2,entry:match( "([^/]+)$" )},
        {[[; ]]},
        {-2,"Font name: "},
        {-2,fontloader.info(entry).fontname},
        {[[\par\penalty 10000\font\sample={file:]]},
        {-2,entry},
        {[[} at 12pt\sample\samplestringEN\par\penalty 10000
          \vrule width \hsize height 0.25pt depth 0pt\par]]
        }
      )
    end
  end
end

function fontsampler_ttf( dir )
  for entry in dirtree(dir) do
    if entry:match(".ttf","-4") then
      tex.tprint(
        {[[\mono \pardir TRT \textdir TLT ]]},
        {-2,"File name: "},
        {-2,entry:match( "([^/]+)$" )},
        {[[; ]]},
        {-2,"Font name: "},
        {-2,fontloader.info(entry).fontname},
        {[[\par\penalty 10000\font\sample={file:]]},
        {-2,entry},
        {[[:language=dflt;script=arab;ccmp=yes;init=yes;medi=yes;final=yes;rlig=yes} at 12pt
          \sample \pardir TRT \textdir TRT \samplestringFA\par\penalty 10000
          \vrule width \hsize height 0.25pt depth 0pt\par]]
        }
      )
    end
  end
end


تعدادی فونت ‎OpenType (OTF)‎ مثل فونت‌های Iwona و تعدادی فونت ‎TrueType (TTF)‎ را که دارای گلیف‌های فارسی باشند مثل فونت‌های HM_XNiloofar در شاخه‌ای مثل tmp/Fonts-Samples/ کپی کنید.

در همان شاخه‌ای که فایل‌های ctx-example-1.tex و ctx-example-1.lua را ذخیره کرده‌اید، در خط فرمان تایپ کنید:

کد: انتخاب همهٔ
 luatex  ctx-example-1.tex  "/tmp/Fonts-Samples"


پس از اتمام موفق دستور فوق یک فایل PDF تولید می‌شود که شامل نام فایل، نام فونت و نمونهٔ هر یک از فونت‌هاست. نمونهٔ PDF مربوطه که روی سیستم من تولید گردیده به‌پیوست است.

فهرست مراجع و منابع (که به تدریج کامل‌تر خواهد شد) ممکن است برای درک بهتر کدهای فوق مفید باشد:



با تشکر
پیوست‌ها
ctx-example-1.pdf
(285.62 KiB) دانلود 634 بار
mingranina
 
پست‌ها : 77
تاریخ عضویت: 17 سپتامبر 2016, 07:53

آموخته‌های من از LuaTeX، ConTeXt، و Lua -‫ 1 (قسمت دوم)

پستتوسط mingranina » 15 اکتبر 2016, 17:34

با سلام

در این قسمت از «آموخته‌های من» که ادامهٔ همان «آموخته‌های من 1» است توابع Lua به‌گونه‌ای تغییر کرده است تا در خروجی نمونه‌فونت‌ها به ترتیب حروف الفباء (انگلیسی) و شمارهٔ صفحات با فونت و نویسهٔ دلخواه حروفچینی شود.

برای تولید خروجی، کد زیر را در فایلی به‌نام ctx-example-1-1.tex ذخیره کنید.

کد: انتخاب همهٔ
\input luaotfload.sty
\overfullrule 0pt
\font\mono = {file:lmmono8-regular.otf} at 8pt
\parindent 0pt

\def \samplestringEN {Hello World! 1234567890.}
\def \samplestringFA {سلام بر دنیا! ۰۱۲۳۴۵۶۷۸۹}

\centerline{\luatexbanner}

\def\folio{\directlua{
  dofile("ctx-example-1-1.lua")
  PageNumToPersian(\the\pageno)
}}

\directlua{
  dofile("ctx-example-1-1.lua")
  fontsampler_otf(arg[2])
}

\vfill \break

\directlua{
  dofile("ctx-example-1-1.lua")
  fontsampler_ttf(arg[2])
}

\bye


کد زیر را نیز در همان شاخه و در فایلی به‌نام ctx-example-1-1.lua ذخیره کنید.

کد: انتخاب همهٔ
function PageNumToPersian( pageno )
  DigitTable = {}
  DigitTable["0"] = "۰"
  DigitTable["1"] = "۱"
  DigitTable["2"] = "۲"
  DigitTable["3"] = "۳"
  DigitTable["4"] = "۴"
  DigitTable["5"] = "۵"
  DigitTable["6"] = "۶"
  DigitTable["7"] = "۷"
  DigitTable["8"] = "۸"
  DigitTable["9"] = "۹"

  function ConvertDigits(n)
    local page_tmp = ""
    str = tostring(n)
    for w in str:gmatch"." do
       page_tmp = page_tmp .. DigitTable[w]
    end
    return page_tmp
  end

  tex.tprint(
  {[[\font\sample = {file:HM_XKayhanNavaar.ttf:language=dflt;script=arab;ccmp=yes;init=yes;medi=yes;final=yes;rlig=yes} at 12pt]]},
  {[[\sample ]]},
  {ConvertDigits(pageno)}
  )
end

function dirtree(dir)
  assert(dir and dir ~= "", "directory parameter is missing or empty")
  if string.sub(dir, -1) == "/" then
    dir=string.sub(dir, 1, -2)
  end

  local function yieldtree(dir)
    for entry in lfs.dir(dir) do
      if not entry:match("^%.") then
        entry=dir.."/"..entry
          if not lfs.isdir(entry) then
            coroutine.yield(entry,lfs.attributes(entry))
          end
          if lfs.isdir(entry) then
            yieldtree(entry)
          end
      end
    end
  end

  return coroutine.wrap(function() yieldtree(dir) end)
end

function fontsampler_otf( dir )
  local dirtree_items = {}
  for item in dirtree(dir) do
    table.insert(dirtree_items, item)
  end
  table.sort(dirtree_items)
  for i=1,#dirtree_items do
    entry=dirtree_items[i]
    if entry:match( "(.[ot]tf)","-4" ) then
      tex.tprint(
        {[[\mono ]]},
        {-2,"File name: "},
        {-2,entry:match( "([^/]+)$" )},
        {[[; ]]},
        {-2,"Font name: "},
        {-2,fontloader.info(entry).fontname},
        {[[\par\penalty 10000\font\sample={file:]]},
        {-2,entry},
        {[[} at 12pt\sample\samplestringEN\par\penalty 10000
          \vrule width \hsize height 0.25pt depth 0pt\par]]
        }
      )
    end
  end
end

function fontsampler_ttf( dir )
  local dirtree_items = {}
  for item in dirtree(dir) do
    table.insert(dirtree_items, item)
  end
  table.sort(dirtree_items)
  for i=1,#dirtree_items do
    entry=dirtree_items[i]
    if entry:match(".ttf","-4") then
      tex.tprint(
        {[[\mono \pardir TRT \textdir TLT ]]},
        {-2,"File name: "},
        {-2,entry:match( "([^/]+)$" )},
        {[[; ]]},
        {-2,"Font name: "},
        {-2,fontloader.info(entry).fontname},
        {[[\par\penalty 10000\font\sample={file:]]},
        {-2,entry},
        {[[:language=dflt;script=arab;ccmp=yes;init=yes;medi=yes;final=yes;rlig=yes} at 12pt
          \sample \pardir TRT \textdir TRT \samplestringFA\par\penalty 10000
          \vrule width \hsize height 0.25pt depth 0pt\par]]
        }
      )
    end
  end
end


تعدادی فونت ‎OpenType (OTF)‎ مثل فونت‌های Iwona و تعدادی فونت ‎TrueType (TTF)‎ را که دارای گلیف‌های فارسی باشند مثل فونت‌های ‎HM_FElmi, HM_FNazli, HM_XKayhan, HM_XNiloofar‎ را در شاخه‌ای مثل tmp/Fonts-Samples/ کپی کنید.

در همان شاخه‌ای که فایل‌های ctx-example-1.tex و ctx-example-1.lua را ذخیره کرده‌اید، در خط فرمان تایپ کنید:

کد: انتخاب همهٔ
luatex  ctx-example-1-1.tex  "/tmp/Fonts-Samples"


پس از اتمام موفق دستور فوق یک فایل PDF تولید می‌شود که شامل نام فایل، نام فونت و نمونهٔ هر یک از فونت‌هاست. نمونهٔ PDF مربوطه که روی سیستم من تولید گردیده به‌پیوست است.

فهرست مراجع و منابع چدید (که به تدریج کامل‌تر خواهد شد) ممکن است برای درک بهتر کدهای فوق مفید باشد:

References and Resources:

Lua:
[14] Lua Mailing List


حجم فایل PDF تولید شده روی سیستم من ‎1132 KB‎ است که متأسفانه از سقف مجاز در سایت IRMUG بیشتر است و بنابراین امکان آپلود آن به‌صورت پیوست وجود ندارد.

با تشکر
mingranina
 
پست‌ها : 77
تاریخ عضویت: 17 سپتامبر 2016, 07:53

آموخته‌های من از LuaTeX، ConTeXt، و Lua -‫ 1 (قسمت سوم)

پستتوسط mingranina » 09 دسامبر 2016, 20:23

با سلام

برای آن دسته از کاربران گرامی که بخواهند از ConTeXt استفاده کنند مراجع و منابع زیر ممکن است مفید باشند. به‌ویژه برای دوستانی که با LaTeX آشنا باشند مراجع [15] و [16] بسیار مفید هستند.



با تشکر
mingranina
 
پست‌ها : 77
تاریخ عضویت: 17 سپتامبر 2016, 07:53



بازگشت به خط، زبان و قلم‌سازی


کاربران حاضر در این انجمن: بدون کاربران آنلاین و 11 مهمان