LUAOTFLOAD.CONF(5) پردازش متن LUAOTFLOAD.CONF(5)

luaotfload.conf - فایل پیکربندی Luaotfload

  • ./luaotfload{.conf,rc}
  • XDG_CONFIG_HOME/luaotfload/luaotfload{.conf,rc}
  • ~/.luaotfloadrc

فایل luaotfload.conf شامل گزینه‌های پیکربندی برای Luaotfload است که یک مؤلفه بارگذاری و مدیریت فونت برای LuaTeX به شمار می‌رود.

یک فایل پیکربندی کوچک Luaotfload با چند سفارشی‌سازی اندک می‌تواند به شکل زیر باشد:

[db]
    formats = afm,ttf
    compress = false
[misc]
    termwidth = 60
[run]
    log-level = 6

این تنظیمات باعث می‌شود Luaotfload تمام فایل‌های فونت را نادیده بگیرد، به جز فونت‌های باینری پست‌اسکریپت (PostScript) دارای فایل AFM منطبق، و فونت‌های Truetype. همچنین یک فایل نمایه غیرفشرده ایجاد خواهد شد که به مراتب بزرگتر از نمایه پیش‌فرض فشرده‌شده با gzip است. عرض ترمینال به ۶۰ نویسه محدود می‌شود که بر خروجی پرگویی هنگام نمایه‌سازی تأثیر می‌گذارد. در نهایت، میزان جزئیات پیام‌ها به شدت افزایش می‌یابد: هر فایل فونتی که پردازش می‌شود روی یک خط جداگانه در stdout چاپ خواهد شد، به همراه انبوهی از اطلاعات دیگر.

برای مشاهده تفاوت رفتار، قطعه‌کد بالا را در ./luaotfload.conf ذخیره کرده و نمایه فونت را به‌روزرسانی کنید:

luaotfload-tool --update --force

پیکربندی فعلی را می‌توان با استفاده از luaotfload-tool روی دیسک ذخیره کرد:

luaotfload-tool --dumpconf > luaotfload.conf

نتیجه حاصل خود می‌تواند به عنوان یک فایل پیکربندی استفاده شود.

ساختار فایل پیکربندی از قالب رایج INI پیروی می‌کند. برای توضیحات دقیق‌تر لطفاً به بخش "CONFIGURATION FILE" در git-config(1) مراجعه کنید. خلاصه قواعد در زیر آمده است:

  • خطوط خالی و خطوطی که با نقطه ویرگول (;) آغاز می‌شوند نادیده گرفته می‌شوند.
  • یک فایل پیکربندی به بخش‌هایی تقسیم می‌شود که با مشخص کردن عنوان بخش درون براکت در یک خط جداگانه اعلان می‌شوند:
[some-section]
... محتوای بخش ...
•
بخش‌ها از یک یا چند انتساب متغیر به صورت variable-name = value تشکیل می‌شوند؛ به عنوان مثال:
[foo]
    bar = baz
    quux = xyzzy
    ...
•
نام بخش‌ها و متغیرها فقط می‌توانند شامل حروف بزرگ و کوچک انگلیسی و همچنین خط تیره (-) باشند.

متغیرها متعلق به یک بخش پیکربندی هستند و مقادیر آن‌ها باید از نوع مشخصی باشد. برخی از آن‌ها محدودیت‌های بیشتری دارند. برای مثال، «کالبک رنگ» باید رشته‌ای از یکی از مقادیر post_linebreak_filter، pre_linebreak_filter، یا pre_output_filter باشد که در بخش run از فایل پیکربندی تعریف شده‌اند.

در حال حاضر، پیکربندی به چهار بخش سازماندهی شده است:

گزینه‌های مربوط به نمایه فونت.
گزینه‌های بدون دسته‌بندی مشخص.
تنظیمات مسیرها و نام فایل‌ها.
گزینه‌های کنترل‌کننده رفتار زمان اجرای Luaotfload.

فهرست متغیرهای معتبر، بخش‌هایی که در آن‌ها قرار دارند و نوع داده آن‌ها در زیر آورده شده است. نوع‌ها بیانگر انواع داده لواند که مقادیر باید قابل تبدیل به آن‌ها باشند؛ آن‌ها به صورت زیر خلاصه شده‌اند: s برای نوع string (رشته)، n برای number (عدد)، b برای boolean (بولی). مقدار nil به معنای تنظیم‌نشده بودن متغیر است.

متغیر نوع پیش‌فرض
compress b true
designsize-dimen b bp
formats s "otf,ttf,ttc"
location-precedence s "system,texmf,local
max-fonts n 2^51
scan-local b false
skip-read b false
strip b true
update-live b true

فلگ compress مشخص می‌کند که آیا نمایه فونت (معمولاً luaotfload-names.lua[.gz]) در قالب‌های فشرده ذخیره شود یا خیر. در صورت عدم تنظیم، معادل پاس دادن --no-compress به luaotfload-tool است. از آنجا که این فایل صرفاً برای سهولت ایجاد می‌شود و هیچ تأثیری بر رفتار زمان اجرای Luaotfload ندارد، این فلگ باید روشن بماند. بیشتر ویرایشگرها در هر حال از zlib پشتیبانی می‌کنند.

تنظیم designsize-dimen هنگام جستجوی فونت‌های خانواده‌های دارای ابعاد طراحی اعمال می‌شود. در OpenType، این موارد بر حسب «دسی‌پوینت» (decipoints) مشخص می‌شوند که هر دسی‌پوینت معادل ده «پوینت بزرگ» در DTP است. هنگام نمایه‌سازی فونت‌ها، این مقادیر به sp تبدیل می‌شوند. برای اینکه این مقادیر طوری در نظر گرفته شوند که گویی در پوینت‌های TeX یا پوینت‌های Didot مشخص شده‌اند، مقدار designsize-dimen را روی pt یا dd تنظیم کنید.

فهرست formats باید دنباله‌ای از رشته‌های جداشده با کاما شامل یک یا چند مورد از این عناصر باشد:

  • otf (قالب OpenType)،
  • ttf و ttc (قالب TrueType)،
  • afm (معیارهای فونت ادوبی یا Adobe Font Metrics)،

این متغیر تقریباً متناظر با گزینه --formats در luaotfload-tool است. مقادیر نامعتبر یا تکراری نادیده گرفته می‌شوند؛ اگر فهرست شامل هیچ شناسه مفیدی نباشد، فهرست پیش‌فرض "otf,ttf,ttc" استفاده خواهد شد.

متغیر location-precedence تعیین می‌کند که luaotfload در چه مکان‌هایی و با چه ترتیبی به دنبال فونت‌ها بگردد. فونت‌های موجود در مکان‌های ابتدایی‌تر ترجیح داده می‌شوند. سه مکان پشتیبانی‌شده عبارتند از system برای دایرکتوری‌های فونت ویژه سیستم، texmf برای فونت‌هایی که بخشی از توزیع TeX{} هستند و local برای فونت‌های محلی.

متغیر max-fonts مشخص می‌کند که اسکنر فونت پس از پردازش چه تعداد فایل فونت، جستجو را متوقف کند. این متغیر برای رفع اشکال نمایه فونت مفید است و همان اثر گزینه --max-fonts در luaotfload-tools را دارد.

فلگ scan-local، در صورت تنظیم، دایرکتوری کاری فعلی را به عنوان مکانی برای جستجوی فونت لحاظ می‌کند. توجه: این کار به طور بالقوه پردازش سند را کند می‌کند زیرا نمایه فونت حاوی فونت‌های محلی روی دیسک ذخیره نمی‌شود، بنابراین هر بار که سند ساخته می‌شود، این فونت‌ها باید مجدداً نمایه‌سازی شوند. تنظیم scan_local روی false معادل حذف local از location-precedence است.

فلگ skip-read تنها برای اشکال‌زدایی کاربرد دارد: باعث می‌شود Luaotfload از خواندن فونت‌ها صرف‌نظر کند. اطلاعات فونت برای بازسازی نمایه از نمایه موجود فعلی گرفته می‌شود.

غیرفعال کردن فلگ strip مانع از آن می‌شود که Luaotfload داده‌هایی را از نمایه حذف کند که فقط هنگام پردازش فایل‌های فونت کاربرد دارند. توجه: این کار می‌تواند اندازه فایل‌های نمایه را به میزان قابل توجهی افزایش دهد و هیچ تأثیری بر رفتار زمان اجرا ندارد.

اگر update-live تنظیم شده باشد، در صورتی که Luaotfload نتواند فونت درخواستی را پیدا کند پایگاه داده را مجدداً بارگذاری خواهد کرد. کسانی که ترجیح می‌دهند به صورت دستی و با استفاده از luaotfload-tool به‌روزرسانی کنند باید این فلگ را غیرفعال کنند. این گزینه بر بازسازی ناشی از عدم تطابق نسخه تأثیری ندارد.

به طور پیش‌فرض Luaotfload حالت node را فعال کرده و ویژگی‌های پیش‌فرض فونت را که در استاندارد OpenType تجویز شده‌اند انتخاب می‌کند. این رفتار ممکن است در بخش default-features بازنویسی شود. پیش‌فرض‌های سراسری که برای تمامی اسکریپت‌ها اعمال می‌شوند را می‌توان از طریق گزینه global تنظیم کرد و سایر موارد را می‌توان بر اساس اسکریپتی که قرار است روی آن اعمال شوند تعیین نمود. برای مثال، تنظیمی مانند

[default-features]
    global = mode=base,color=0000FF
    dflt   = smcp,onum

حالت base را اجبار می‌کند، تمام فونت‌ها را به رنگ آبی درمی‌آورد و حروف کوچک کوچک (small capitals) و اعداد متنی را به صورت سراسری فعال می‌سازد. ویژگی‌ها به صورت فهرستی از متغیرها یا جفت‌های متغیر-مقدار جداشده با کاما مشخص می‌شوند. متغیرهای فاقد مقدار صریح، برابر با true تنظیم می‌شوند.

متغیر نوع پیش‌فرض
statistics b false
termwidth n nil
version s <نسخه Luaotfload>
keepnames b true

با فعال بودن statistics، آمارهای اضافی هنگام ایجاد نمایه جمع‌آوری شده و به فایل نمایه اضافه می‌شوند. سپس می‌توان آن را در بخش Lua پرس‌وجو کرد یا با خواندن خود فایل بررسی نمود.

مقدار termwidth، در صورت تنظیم، مقداری را که از پرس‌وجوی ویژگی‌های ترمینال محل اجرای Luatex به دست می‌آید بازنویسی می‌کند. این در صورتی مفید است که موتور با غیرفعال بودن shell_escape اجرا شود و ابعاد واقعی ترمینال قابل بازیابی نباشد.

مقدار version از رشته نسخه هاردکدشده در کد منبع Luaotfload گرفته می‌شود. با مسئولیت خودتان آن را تغییر دهید.

گزینه keepnames تعیین می‌کند که آیا لودر فونت ConTeXt باید نام‌هایی را که بی‌استفاده می‌داند نگه دارد یا آن‌ها را دور بریزد. این گزینه تنها پس از بازسازی حافظه موقت (کش) فونت‌ها اعمال می‌شود.

متغیر نوع پیش‌فرض
cache-dir s "fonts"
names-dir s "names"
index-file s "luaotfload-names.lua"
lookups-file s "luaotfload-lookup-cache.lua"

مسیرهای cache-dir و names-dir زیرپوشه‌ای درون درخت Luaotfload در پوشه luatex-cache را تعیین می‌کنند که به ترتیب کش فونت و نمایه فونت در آن ذخیره می‌شوند.

درون پوشه نمایه، نام فایل‌های نمایه و کش جستجوی فونت از مقادیر متناظر index-file و lookups-file مشتق خواهند شد. این پایه نام فایل برای نسخه کامپایل‌شده به بایت‌کد و همچنین -- برای نمایه -- نسخه فشرده‌شده با gzip است.

متغیر نوع پیش‌فرض
anon-sequence s "tex,path,name"
color-callback s "post_linebreak_filter"
definer s "patch"
log-level n 0
resolver s "cached"
fontloader s "default"
default_dvi_driver s "dvisvgm"

جستجوهای بدون شرط و مبهم فونت با سازوکار منعطف «ناشناس» (anonymous) مدیریت می‌شوند. این سازوکار شامل زنجیره‌ای از جستجوها است که به صورت متوالی اعمال می‌شوند تا زمانی که اولین مورد پاسخی در بر داشته باشد. به طور پیش‌فرض، جستجو ابتدا با استفاده از کتابخانه Kpathsea به دنبال فونت‌های TFM می‌گردد. اگر ناموفق بود، تلاشی صورت می‌گیرد تا درخواست به عنوان یک مسیر مطلق (مانند ساختار نحوی [/path/to/font/foo.ttf]) یا نام فایل (file:foo.ttf) تفسیر شود. در نهایت، درخواست به عنوان نام فونت تفسیر شده و از نمایه بازیابی می‌شود (name:Foo Regular). این رفتار را می‌توان با مشخص کردن یک فهرست به عنوان مقدار anon-sequence پیکربندی کرد. موارد مجاز عبارتند از tex، path، name -- که به ترتیب نشان‌دهنده جستجوهای شرح‌داده‌شده در بالا هستند -- و file برای جستجوی نام فایل بدون مسیر مطلق. همچنین جستجوهای my مقادیر معتبری هستند اما تنها باید از درون اسناد TeX استفاده شوند، زیرا روشی برای سفارشی‌سازی جستجوهای my در خط فرمان وجود ندارد.

گزینه color-callback مرحله‌ای را تعیین می‌کند که در آن فونت‌های تعریف‌شده با ویژگی color=xxyyzz رنگ‌آمیزی می‌شوند. به طور پیش‌فرض این امر در post_linebreak_filter اتفاق می‌افتد اما متناوباً می‌توان pre_linebreak_filter یا pre_output_filter را انتخاب کرد که سریع‌تر است اما ممکن است خروجی ناپایداری تولید کند. فیلتر pre_output_filter در سری 1.x از Luaotfload پیش‌فرض بود، در حالی که نسخه‌های بعدی تا نسخه 2.5 به pre_linebreak_filter متصل شدند که طبیعتاً بر هیچ نویسه‌ای که حین خط‌شکنی درج می‌شد تأثیر نمی‌گذاشت. هر دو به عنوان گزینه‌هایی برای بازگرداندن رفتار قبلی در صورت لزوم حفظ شده‌اند.

گزینه definer اجازه تعویض کالبک define_font را می‌دهد. جدا از مقدار پیش‌فرض patch، می‌توان مقدار generic را که به همراه لودر پیش‌فرض ارائه می‌شود انتخاب کرد. توجه داشته باشید که این ممکن است ابزارهایی مانند Fontspec را که به کالبک patch_font ارائه‌شده توسط Luaotfload برای اعمال اصلاحات مهم روی داده‌های فونت وابسته‌اند، دچار مشکل کند.

بک‌اند بارگذاری فونت می‌تواند با تنظیم مقدار fontloader انتخاب شود. مهم‌ترین گزینه‌ها عبارتند از default که فونت‌لودر اختصاصی Luaotfload را بارگذاری می‌کند، و reference که بسته بالادستی ارائه‌شده همراه با Luaotfload است. غیر از این موارد، می‌توان نام فایلی را که از طریق kpathsea قابل دسترس است تعیین نمود.

همچنین می‌توان فایل‌های منفرد تشکیل‌دهنده فونت‌لودر را مستقیماً بارگذاری کرد. هرچند کارایی کمتری دارد، اما به شدت به اشکال‌زدایی کمک می‌کند زیرا پیام‌های خطا به شماره خطوط واقعی فایل‌های سورس ارجاع می‌دهند و کامنت‌های توضیحی حذف نشده‌اند. در حال حاضر سه راهبرد مجزا برای بارگذاری در دسترس است: گزینه unpackaged دسته‌ای را که بخشی از Luaotfload است بارگذاری می‌کند. این‌ها حاوی همان کد منبعی هستند که فونت‌لودر مرجع از آن کامپایل شده است. گزینه دیگر، context تلاش خواهد کرد تا همان فایل‌ها را با نام‌هایشان در قالب Context از مسیر جستجو بارگذاری کند. در نتیجه این گزینه امکان استفاده از نسخه Context همراه با توزیع TeX را فراهم می‌کند. توزیع‌ها تمایل دارند نسخه پایدار این فایل‌ها را ترجیح دهند، بنابراین از برخی اشکالات موجود در نسخه‌های توسعه‌ای Luaotfload می‌توان از این طریق اجتناب کرد. گزینه سوم استفاده از context با دونقطه برای تعیین پیشوند دایرکتوری محل قرارگیری TEXMF است که فایل‌ها باید از آنجا بارگذاری شوند، به عنوان مثال context:~/context/tex/texmf-context. این را می‌توان هنگام ارجاع به توزیع دیگری مانند Context minimals استفاده کرد که در مسیر متفاوتی نصب شده و توسط kpathsea نمایه‌سازی نشده است.

مقدار log-level پرگویی پیش‌فرض پیام‌های چاپ‌شده توسط Luaotfload را تعیین می‌کند. فقط پیام‌هایی با میزان پرگویی کمتر یا مساوی با مقدار ارائه‌شده در ترمینال چاپ خواهند شد. در سطح لاگ ۵، Luaotfload می‌تواند بسیار پرحرف باشد. همچنین چاپ پیام‌های بیش از حد به دلیل غیرفعال بودن بافرینگ خطی، سرعت مفسر را کاهش می‌دهد (به setbuf(3) مراجعه کنید).

تنظیم resolver امکان انتخاب تابع تفکیک نام فونت را می‌دهد: با مقدار پیش‌فرض cached، ابزار Luaotfload نتیجه یک درخواست موفق نام فونت را در یک فایل کش ذخیره می‌کند تا جستجوهای بعدی تسریع شوند. گزینه دیگر، normal حافظه موقت را دور می‌زند و هر درخواست را جداگانه تفکیک می‌کند. (با توجه به بازسازی ساختار نمایه نام فونت در Luaotfload نسخه 2.4، تفاوت کارایی میان جستجوهای کش‌شده و کش‌نشده باید ناچیز باشد.)

هنگامی که luaotfload در حالت DVI استفاده می‌شود، گزینه default_dvi_driver نحوه بازنمایی فونت‌های OpenType را در خروجی DVI تعیین می‌کند. در بیشتر موارد باید از مقدار پیش‌فرض dvisvgm استفاده شود؛ این گزینه از قالبی استفاده می‌کند که توسط چندین بک‌اند شامل dvipdfmx و dvisvgm پشتیبانی شده و از GIDها برای شناسایی نویسه‌ها بهره می‌برد. تنظیم این مقدار روی xdvipsk در عوض از یک قالب داخلی ناپایدار استفاده می‌کند که بسته به نسخه luaotfload، موتور یا فونت تغییر خواهد کرد. هیچ‌کس نباید در این حالت به نگاشت میان کدهای نویسه DVI و گلیف‌های فونت اتکا کند مگر اینکه تمام نسخه‌های دخیل را کاملاً کنترل کرده و با پیاده‌سازی آن آشنایی عمیق داشته باشد.

نرم‌افزار Luaotfload تنها اولین فایل پیکربندی را که در یکی از مکان‌های جستجو می‌یابد پردازش می‌کند. نام فایل ممکن است luaotfload.conf یا luaotfloadrc باشد، به جز فایل نقطه‌دار (dotfile) در دایرکتوری خانگی کاربر که به صورت ~/.luaotfloadrc انتظار می‌رود.

فایل‌های پیکربندی پس از طی یک سری مراحل مکان‌یابی می‌شوند. جستجو به محض برخورد با فایلی مناسب متوقف می‌شود. توالی مکان‌هایی که Luaotfload بررسی می‌کند به شرح زیر است:

دایرکتوری کاری فعلی فرآیند LuaTeX.
زیرپوشه luaotfload/ درون درخت پیکربندی XDG، برای مثال /home/oenothea/config/luaotfload/.
فایل نقطه‌دار در پوشه خانگی.
پوشه TEXMF (با استفاده از kpathsea).

luaotfload-tool(1), luatex(1), lua(1)

•
مشخصات پایه XDG در نشانی http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html.

ابزار Luaotfload توسط تیم توسعه LuaLaTeX توسعه یافته است (https://github.com/lualatex). در حال حاضر توسط تیم پروژه LaTeX در https://github.com/latex3/luaotfload نگهداری می‌شود.

این صفحه راهنما توسط Philipp Gesang <phg@phi-gamma.net> نوشته شده است.

GPL v2.0

2024-12-03 3.29