AUTOINST(1) Marc Penninga AUTOINST(1)

autoinst - پوسته‌ای برای LCDF TypeTools جهت نصب و استفاده از قلم‌های OpenType در LaTeX

autoinst -help

autoinst [گزینه‌ها] قلم(ها)

ابزارهای LCDF TypeTools ادی کوهلر (Eddie Kohler) ابزارهایی فوق‌العاده برای نصب قلم‌های OpenType در LaTeX هستند، اما استفاده از آن‌ها می‌تواند دشوار باشد: آن‌ها نیازمند خط‌فرمان‌های متعدد و اغلب طولانی هستند و فایل‌های fd و sty مورد نیاز LaTeX را تولید نمی‌کنند. دستور autoinst با ایجاد و اجرای تمام دستورات برای otftotfm، و ایجاد و نصب تمامی فایل‌های fd و sty لازم، استفاده از TypeTools را برای نصب قلم ساده می‌کند.

با دریافت یک خانواده از فایل‌های قلم (در قالب otf یا ttf)، دستور autoinst چندین خانوادهٔ قلم LaTeX ایجاد خواهد کرد:

-
چهار خانوادهٔ متنی (با ارقام تراز [lining] و کهن [oldstyle]، هرکدام در هر دو حالت جدول‌بندی‌شده [tabular] و متناسب [proportional])، همگی با شکل‌های زیر:
متن رومی (یعنی ایستاده / upright)
متن ایتالیک و مایل (گاهی خوابیده یا oblique نامیده می‌شود)
حروف کوچک‌بزرگ (Small caps)
حروف کوچک‌بزرگ ایتالیک و مایل
تزیینی (Swash)
«تزیینی ایستاده» ("Upright swash")
  • به ازای هر خانوادهٔ متنی با کدگذاری T1: یک خانواده از قلم‌های نماد با کدگذاری TS1، در شکل‌های رومی، ایتالیک و مایل.
  • خانواده‌هایی با نویسه‌های بالاوند (superiors)، فروند (inferiors)، صورت (numerators) و مخرج (denominators)، در شکل‌های رومی، ایتالیک و مایل.
  • خانواده‌هایی با نویسه‌های «عنوان‌بندی» (Titling)؛ این‌ها «... جایگزین نویسه‌واره‌های پیش‌فرض با گونه‌های متناظری می‌شوند که مشخصاً برای عنوان‌بندی طراحی شده‌اند. این گونه‌ها ممکن است تماماً حروف بزرگ بوده و/یا روی بدنه بزرگ‌تر باشند، و برای نمایش در اندازه‌های بزرگ‌تر تنظیم شده باشند» (بر اساس مشخصات OpenType).
  • یک خانواده از نقوش تزیینی (ornament)؛ همچنین در شکل‌های رومی، ایتالیک و مایل.

بدیهی است اگر قلم‌های شما فاقد حروف ایتالیک، ارقام کهن، حروف کوچک‌بزرگ و غیره باشند، شکل‌ها و خانواده‌های متناظر با آن‌ها ایجاد نخواهند شد. علاوه بر این، ایجاد اکثر خانواده‌ها و شکل‌ها می‌تواند توسط کاربر کنترل شود (بخش «COMMAND-LINE OPTIONS» را در ادامه ببینید).

این خانواده‌ها از طرح نام‌گذاری پروژهٔ FontPro استفاده می‌کنند: <FontFamily>-<Suffix>، که در آن <Suffix> عبارت است از:

ارقام تراز متناسب (یعنی ارقام دارای عرض‌های متغیر هستند)
ارقام تراز جدول‌بندی‌شده (یعنی تمام ارقام دارای عرض یکسانی هستند)
ارقام کهن متناسب
ارقام کهن جدول‌بندی‌شده
نویسه‌های بالاوند (توجه داشته باشید که اکثر قلم‌ها تنها یک مجموعهٔ ناقص از نویسه‌های بالاوند دارند: ارقام، برخی علائم نگارشی و حروف abdeilmnorst؛ برای سایر نویسه‌ها از حالت‌های عادی استفاده می‌شود)
نویسه‌های فروند؛ معمولاً فقط ارقام و برخی علائم نگارشی، و حالت‌های عادی برای سایر نویسه‌ها
نویسه‌های عنوان‌بندی (Titling)؛ بالا را ببینید
نقوش تزیینی (ornaments)
صورت‌ها و مخرج‌ها

قلم‌های مجزا به صورت <FontName>-<suffix>-<shape>-<enc> نام‌گذاری می‌شوند، که در آن <suffix> همان موارد بالا است (اما با حروف کوچک)، <shape> خالی، "sc" یا "swash" است، و <enc> کدگذاری است (همچنین با حروف کوچک). یک نام نمونه در این طرح می‌تواند FiraSans-Light-osf-sc-ly1 باشد..SS "استفاده از قلم‌ها در اسناد LaTeX (Using the fonts in your LaTeX documents)" autoinst یک فایل شیوه برای استفاده از قلم‌ها در اسناد LaTeX با نام <FontFamily>.sty تولید می‌کند. این فایل شیوه همچنین در صورت نیاز، بسته‌های fontenc و textcomp را بارگذاری می‌کند. برای استفاده از قلم‌ها، دستور "\usepackage{<FontFamily>}" را به دیباچهٔ (preamble) سند خود بیفزایید.

این فایل شیوه دارای چند گزینه است:

"mainfont"
دستور "\familydefault" را بازتعریف می‌کند تا این قلم را به قلم اصلی سند تبدیل کند. اگر قلم به عنوان یک قلم serif نصب شده باشد، این یک عملیات بی‌اثر (no-op) است؛ اما اگر قلم به عنوان قلم sanserif یا typewriter نصب شده باشد، این گزینه شما را از بازتعریف دستی "\familydefault" بی‌نیاز می‌کند.
"lining", "oldstyle", "tabular", "proportional"
انتخاب این‌که از کدام شیوهٔ ارقام (figure style) استفاده شود. حالت‌های پیش‌فرض، "oldstyle" و "proportional" هستند (در صورت موجود بودن).
"scale=<factor>", "scale=MatchLowercase"
مقیاس قلم را به میزان <factor> تغییر می‌دهد؛ به عنوان نمونه، "\usepackage[scale=1.05]{<FontFamily>}" اندازهٔ قلم را ۵٪ افزایش می‌دهد. مقدار ویژهٔ "MatchLowercase" می‌تواند برای مقیاس‌بندی قلم استفاده شود به گونه‌ای که x-height (ارتفاع حروف کوچک) آن با قلم اصلی فعلی مطابقت پیدا کند (که معمولاً Computer Modern Roman است، مگر این‌که بستهٔ قلم دیگری را پیش از این بارگذاری کرده باشید). کلمهٔ "scale" همچنین می‌تواند به صورت "scaled" نیز نوشته شود.
"medium", "book", "text", "normal", "regular"
وزنی را که LaTeX به عنوان وزن "regular" استفاده خواهد کرد انتخاب می‌کند.
"heavy", "black", "extrabold", "demibold", "semibold", "bold"
وزنی را که LaTeX به عنوان وزن "bold" استفاده خواهد کرد انتخاب می‌کند.

حالت پیش‌فرض در اینجا این است که پیش‌فرض LaTeX تغییر نکند، یعنی استفاده از وزن‌های "m" و "b".

فایل شیوه همچنین تلاش خواهد کرد بستهٔ figureversions (در CTAN) را بارگذاری کند، که دسترسی آسان به شکل‌ها و سبک‌های مختلف قلم را فراهم می‌کند. با استفاده از سازوکار ارائه‌شده توسط figureversions، فایل شیوهٔ تولیدشده تعدادی دستور (که متن مورد نظر برای حروف‌چینی را به عنوان آرگومان می‌گیرند) و اعلان (که آرگومانی نمی‌پذیرند، اما بر همهٔ متن تا انتهای گروه فعلی اثر می‌گذارند) برای دسترسی به نویسه‌های titling، superior و inferior تعریف می‌کند:

DECLARATION     COMMAND         SHORT FORM OF COMMAND
\tlshape        \texttitling    \texttl
\supfigures     \textsuperior   \textsup, \textsu
\inffigures     \textinferior   \textinf, \textin

در نهایت، این فایل شیوه دستورهای "\textsuperscript" و "\textsubscript" در LaTeX را برای استفاده از ارقام superior و inferior قلم‌ها بازتعریف کرده و سازوکار پانویس LaTeX را تغییر می‌دهد تا به جای اعداد کوچک‌شده از قلم متن عادی، از "\textsuperscript" استفاده کند. نسخه‌های قدیمی این دستورها همچنان به صورت "\textsuperscript*" و "\textsubscript*" در دسترس هستند.

هیچ دستوری برای دسترسی به قلم‌های numerator و denominator وجود ندارد؛ این قلم‌ها را می‌توان با استفاده از دستورهای استاندارد figureversions انتخاب کرد، برای مثال: "\fontfigurestyle{numerator}\selectfont".

بار دیگر تأکید می‌شود: همهٔ این دستورها تنها برای شکل‌ها و سبک‌های اعداد موجود تولید می‌شوند؛ هیچ دستوری برای شکل‌ها و سبک‌هایی که در قلم‌های شما مفقود هستند تولید نمی‌شود. توجه داشته باشید که تمام این دستورها بر پایهٔ figureversions ساخته شده‌اند؛ اگر آن بسته پیدا نشود، به استفاده از دستورهای سطح پایین‌تر از NFSS استاندارد ("\fontfamily"، "\fontseries"، "\fontshape" و غیره) محدود خواهید بود.

به‌طور پیش‌فرض، autoinst قلم‌های متنی را با کدگذاری‌های OT1، LY1 و T1 تولید می‌کند، و فایل‌های شیوهٔ تولیدشده از T1 به عنوان کدگذاری متن پیش‌فرض استفاده می‌کنند. کدگذاری‌های دیگر را می‌توان با استفاده از گزینهٔ -encoding انتخاب کرد (بخش «گزینه‌های خط فرمان (COMMAND-LINE OPTIONS)» در ادامه را ببینید)..SS "ریاضیات (Maths)" این یک ویژگی آزمایشی است؛ مسئولیت استفاده کاملاً بر عهدهٔ خودتان است! پیش از به‌کارگیری نتایج در اسناد واقعی، آن‌ها را به دقت آزمایش کنید، و آگاه باشید که نگارش‌های آیندهٔ autoinst ممکن است تغییرات ناسازگاری ایجاد کنند.

گزینهٔ -math به autoinst می‌گوید قلم‌های ریاضی پایه را تولید کند. هنگام فعال بودن، فایل استایل تولیدشده چند گزینهٔ اضافی را برای دسترسی به این قلم‌های ریاضی تعریف می‌کند:

"math"
استفاده از این قلم‌ها برای فرمول‌های ریاضی در سند شما.
"mathlining", "matholdstyle", "mathtabular", "mathproportional"
انتخاب سبک و تراز ارقام برای استفاده در ریاضیات. مقادیر پیش‌فرض "mathlining" و "mathtabular" هستند.
"mathcal"
استفاده از نویسه‌های تزئینی (swash) این قلم‌ها به عنوان الفبای "\mathcal". (این گزینه تنها زمانی وجود خواهد داشت که قلم‌های شما در عمل هم شامل نویسه‌های تزئینی و هم ویژگی "swsh" برای دسترسی به آن‌ها باشند).
"nomathgreek"
عدم تعریف دوبارهٔ حروف یونانی در ریاضیات.
"math-style=<style>"
انتخاب «سبک ریاضی» مورد استفاده. با "math-style=ISO"، تمام حروف لاتین و یونانی در ریاضیات خوابیده (italic) هستند؛ با "math-style=TeX" (پیش‌فرض)، حروف بزرگ یونانی ایستاده (upright) هستند؛ با "math-style=french"، تمام حروف یونانی و همچنین حروف بزرگ لاتین ایستاده هستند؛ و با "math-style=upright" تمام حروف ایستاده هستند.
"scriptscale=<scale>"
به‌طور پیش‌فرض، لایتک قلم‌ها را برای سبک‌های "script" و "scriptscript" در ۷۰٪ و ۵۰٪ از اندازهٔ قلم متن بارگذاری می‌کند. برای بسیاری از قلم‌های متنی، این اندازه بیش از حد کوچک است و به خوانایی آسیب می‌زند. این گزینه سبک "script" را با ضریب scale و سبک "scriptscript" را با توان دوم آن ضریب مقیاس‌بندی می‌کند. مقدار پیش‌فرض 1.1 است که سبک‌های "script" و "scriptscript" را به ترتیب در مقیاس‌های خواناترِ ۷۷٪ و ۶۰٫۵٪ بارگذاری می‌کند. برای استفاده از پیش‌فرض‌های LaTeX، از "scriptscale=1.0" استفاده کنید.

فایل استایل همچنین دستورهای "\up..." و "\it..." را برای دسترسی به نویسه‌های یونانی ایستاده و خوابیده، صرف‌نظر از سبک ریاضیِ انتخاب‌شده تعریف می‌کند: "\upGamma"، "\upalpha"، "\itDelta"، "\itbeta" و غیره.

توجه داشته باشید که گزینهٔ "math" تنها بر ارقام، حروف لاتین و یونانی، به‌همراه چند نویسهٔ نشانه‌گذاری پایه تأثیر می‌گذارد؛ تمام نمادهای ریاضی دیگر، عملگرها، جداکننده‌ها و غیره همان‌گونه که قبلاً بودند باقی می‌مانند. اگر نمی‌خواهید از نسخه‌های پیش‌فرض TeX برای آن نمادها استفاده کنید، پیش از بارگذاری فایل استایلِ تولیدشده توسط autoinst، یک بستهٔ ریاضی دیگر (مانند mathdesign یا newtxmath) را بارگذاری نمایید.

در نهایت، در نظر داشته باشید که autoinst بررسی نمی‌کند که آیا قلم‌های شما واقعاً حاوی تمام نویسه‌های مورد نیاز هستند یا خیر؛ بلکه صرفاً فرض می‌کند که موجودند و فایل استایل را بر همان اساس پیکربندی می‌کند. حتی اگر قلم‌های شما دارای حروف یونانی باشند، ممکن است نویسه‌هایی مانند "\varepsilon" مفقود باشند. همچنین ممکن است متوجه شوید که برخی گلیف‌ها در قلم شما موجود هستند، اما در فرمول‌ها به‌خوبی عمل نمی‌کنند یا با دیگر نمادها همخوانی ندارند؛ فایل استایل تولیدشده را ویرایش کنید تا اعلان‌های مربوط به این نویسه‌های مشکل‌ساز حذف شوند. بار دیگر تأکید می‌شود: نتایج را پیش از استفاده آزمایش کنید! اگر خود نویسه‌ها مناسب هستند اما فاصلهٔ میان آن‌ها بسیار کم است، می‌توانید حاشیه‌های جانبی (side bearings) را در قلم‌های ریاضی با گزینهٔ -mathspacing (پایین را ببینید) افزایش دهید، برای نمونه "-mathspacing=50".

سامانهٔ جدید انتخاب قلم لایتک یا NFSS (New Font Selection System)، قلم‌ها را با ترکیبی از خانواده (family)، سری (series، حاصل ترکیب وزن و پهنا)، شکل (shape) و اندازه (size) شناسایی می‌کند. autoinst متاداده‌های قلم را برای تعیین این پارامترها تحلیل می‌کند. هنگامی که این کار با شکست مواجه شود (معمولاً به این دلیل که خانوادهٔ قلم شامل وزن‌ها، پهناها یا شکل‌های نامتعارف است)، autoinst به چندین قلم با مقادیر یکسان برای این پارامترها می‌رسد؛ چنین قلم‌هایی را نمی‌توان در NFSS استفاده کرد، زیرا راهی برای تمایز آن‌ها وجود ندارد. هنگامی که autoinst چنین وضعیتی را تشخیص دهد، یک پیام خطا چاپ کرده و فرایند را متوقف می‌کند. اگر چنین شد، یا autoinst را روی مجموعهٔ کوچک‌تری از قلم‌ها دوباره اجرا کنید، یا پهناها، وزن‌ها و شکل‌های مفقود را به جدول‌های @WIDTH، @WEIGHT و %SHAPE در کد منبع بیفزایید. لطفاً یک گزارش باگ نیز ارسال کنید (بخش نویسندگان در زیر را ببینید).

نگاشت شکل‌ها به کدهای NFSS با استفاده از جدول زیر انجام می‌شود:

SHAPE                               CODE
--------------------------------    ----
Roman, Upright                      n
Italic                              it
Oblique, Slant(ed), Incline(d)      sl

(استثنا: قلم Adobe Silentium Pro شامل دو شکل Roman است؛ ما نخستین مورد را به "n" نگاشت می‌کنیم، و برای دومی از کد "it" استفاده می‌کنیم زیرا این خانواده فاقد شکل Italic است.)

برای وزن‌ها و پهناها، autoinst تا حد امکان تلاش می‌کند از کدهای استاندارد NFSS (کدهای ul، el، l، sl، m، sb، b، eb و ub برای وزن‌ها؛ و uc، ec، c، sc، m، sx، x، ex و ux برای پهناها) استفاده کند. مسلماً تمام ۸۱ ترکیب ممکن از این وزن‌ها و پهناهای NFSS به قلم‌های موجود نگاشت نخواهند شد؛ و متقابلاً ممکن است اختصاص یک کد یکتا به هر قلم موجود به روشی منطقی امکان‌پذیر نباشد (به‌ویژه برای وزن‌ها، برخی از خانواده‌های قلم انواعی بیش از ظرفیت کدهای NFSS دارند؛ برای نمونه، Fira Sans شامل پانزده وزن مختلف است!). بنابراین به هر قلم یک نام "series" نیز اختصاص داده می‌شود که حاصل الحاق وزن و پهنای آن پس از باز کردن اختصارات و تبدیل به حروف کوچک است. قلمی با پهنای "Cond" و وزن "Ultra" با نام "ultrablackcondensed" شناخته خواهد شد.

نگاشت دقیق میان قلم‌ها و کدهای NFSS را می‌توان در فایل‌های fd تولیدشده و در فایل لاگ پیدا کرد (می‌توانید autoinst را با گزینهٔ -dryrun اجرا کنید تا نگاشت انتخاب‌شده را از پیش بررسی نمایید). گزینه‌های خط فرمانی -nfssweight و -nfsswidth می‌توانند برای تنظیم دقیق نگاشت میان کدهای NFSS و قلم‌ها به کار روند.

برای دسترسی به وزن‌ها یا پهناهای خاص، همواره می‌توان از دستور "\fontseries" با نام کامل سری استفاده کرد (مانند "\fontseries{demibold}\selectfont")..SS "تزئینات (Ornaments)" autoinst رابطی با بیشترین تلاش (best-effort) برای دسترسی به نویسه‌های تزئینی (ornament) فراهم می‌کند. مشخصات OpenType دو روش را برای پیاده‌سازی تزئینات در قلم‌ها ارائه می‌دهد: یک روش نگاشت آن‌ها به حروف کوچک ASCII است، و روش دیگر تعریف آن‌ها به‌عنوان جایگزین‌هایی برای نویسهٔ «bullet» (نشان‌نقطه) است. تزئینات نوع اول را می‌توان بدون مشکل در Latex استفاده کرد، اما تزئیناتی که به روش دوم پیاده‌سازی شده‌اند را نمی‌توان به‌سادگی در Latex به کار برد (دست‌کم نه به‌صورت عمومی؛ ممکن است با ساخت فایل‌های کدگذاری خاصِ قلم انجام‌پذیر باشد).

متأسفانه، هیچ راهی برای تشخیص این‌که قلم از کدام‌یک از این روش‌ها استفاده می‌کند وجود ندارد؛ autoinst صرفاً فرض می‌کند که قلم تزئینات را به حروف کوچک ASCII نگاشت می‌کند و یک قلم با کدگذاری OT1 ایجاد می‌کند که امید می‌رود حاوی تزئینات باشد، به‌علاوهٔ یک دستور "\textornament" برای دسترسی به آن‌ها. این دستور یک آرگومان می‌گیرد: شمارهٔ اسلات (موقعیت) نویسهٔ تزئینی. به‌عنوان مثال، برای دسترسی به تزئینی که در موقعیت «a» (هگزادسیمال 0x61) قرار دارد، از "\textornament{"61}" استفاده کنید.

برای دیدن این‌که یک قلم چه تزئیناتی (و در چه موقعیت‌هایی) دارد، LaTeX را روی فایل nfssfont.tex (که در هر نصب استاندارد LaTeX موجود است) اجرا کنید، نام قلم تزئینی (مانند "Garamontio-Regular-orn-u") را وارد کرده و دستور "\table\bye" را بدهید؛ این کار جدولی از تمام گلیف‌های (glyph) موجود در آن قلم ایجاد می‌کند. اگر این جدول هیچ تزئینی را نشان ندهد، متأسفانه قلم شما تزئینات را به روشی ناسازگار با Latex (یا حداقل ناسازگار با autoinst) مدیریت می‌کند.

به‌عنوان هشدار نهایی، توجه داشته باشید که حتی زمانی که قلم شما تزئینات را به روشی سازگار با Latex مدیریت می‌کند، ممکن است به‌جای حروف کوچک ASCII، آن‌ها را به نویسه‌های دیگری (مانند ارقام یا علائم نگارشی) نگاشت کرده باشد.

از آن‌جا که pdfTeX نمی‌تواند قلم‌های OpenType مبتنی بر otf را زیرمجموعه‌گیری (subset) کند، otftotfm چنین قلم‌هایی را به قالب Type1 (pfb) تبدیل خواهد کرد. با این حال، بسیاری از قلم‌ها (دست‌کم آن‌هایی که تحت مجوز SIL Open Font License هستند) اجازهٔ بازتوزیع چنین نسخه‌های تبدیل‌شده‌ای را تحت نام اصلی‌شان نمی‌دهند.

به منظور تلاش برای رعایت چنین شروط مجوزی، autoinst یک گزینهٔ خط فرمان -t1suffix ارائه می‌دهد که یک پسوند به نام‌های (هم نام فایل و هم نام داخلی قلم) تمام قلم‌های Type1 تولیدشده اضافه می‌کند؛ بخش «COMMAND-LINE OPTIONS» را در ادامه ببینید.

لطفاً توجه داشته باشید که من وکیل نیستم و تضمین نمی‌کنم که این پسوند برای برآورده کردن شرایط مجوز کافی باشد. در صورت تردید، با یک وکیل واقعی مشورت کنید!

بخش LIGTABLE در فایل‌های tfm در TeX، که حاوی لیگچرها (ligatures) و جفت‌های کرنینگ (kerning pairs) یک قلم است، به حدود ۳۲٬۵۰۰ مدخل (2^15 - 256) محدود است. اگر تعداد لیگچرها به‌علاوهٔ کرنینگ‌ها در یک قلم فراتر از این حد باشد، pltotf و vptovf خطای جدی گزارش کرده و مدخل‌های اضافی را نادیده می‌گیرند. این مسئله دست‌کم برای خانواده‌های قلم Source Serif 4 و Minion 3 متعلق به Adobe رخ می‌دهد. حتی زمانی که pltotf و vptovf دربارهٔ اندازهٔ LIGTABLE هشداری نمی‌دهند، ممکن است باز هم ببینید که pdftex با خطای "Bad metric (TFM) file" از کار می‌افتد. بهترین راه برای مدیریت این وضعیت، استفاده از گزینهٔ "-extra" در autoinst برای افزایش مقدار پارامتر "--min-kern" در otftotfm است، که باعث می‌شود جفت‌های کرنینگ کوچک نادیده گرفته شوند: "-extra='--min-kern=6.0'". یافتن مقداری مناسب برای پارامتر "--min-kern" ممکن است نیازمند مقداری آزمون و خطا باشد.

نصب خودکار قلم‌ها در یک درخت مناسب TEXMF (همان‌طور که autoinst به‌طور پیش‌فرض تلاش می‌کند انجام دهد) تنها در توزیع‌های TeX کار می‌کند که از کتابخانهٔ kpathsea استفاده می‌کنند؛ در توزیع‌های TeX که جستجوی دایرکتوری اختصاصی خود را پیاده‌سازی کرده‌اند، مانند MiKTeX، برنامهٔ autoinst اخطار می‌دهد که نمی‌تواند برنامهٔ kpsewhich را پیدا کند و تمام فایل‌های تولیدشده را به یک زیردایرکتوری به نام "autoinst_output/" در دایرکتوری جاری منتقل می‌کند. اگر از چنین توزیع TeX استفاده می‌کنید، باید این فایل‌ها را به‌صورت دستی به مقصد درستشان منتقل کنید، یا با استفاده از گزینهٔ -target (بخش «COMMAND-LINE OPTIONS» را در ادامه ببینید) یک درخت TEXMF را به‌صورت دستی مشخص کنید.

همچنین، برخی قلم‌های OpenType حاوی چنان جفت‌های کرنینگ پرشماری هستند که فایل‌های pl و vpl حاصل برای ابزارهای pltotf و vptovf در MiKTeX بیش از حد بزرگ هستند؛ به نظر نمی‌رسد نسخه‌های ارائه‌شده با W32TeX (http://www.w32tex.org) و TeXLive (http://tug.org/texlive) این مشکل را داشته باشند.

به‌طور پیش‌فرض، autoinst تلاش خواهد کرد تمام فایل‌های تولیدشده را در درخت $TEXMFLOCAL نصب کند؛ هنگامی که این دایرکتوری توسط کاربر قابل نوشتن نباشد، در عوض از درخت $TEXMFHOME استفاده خواهد کرد. متأسفانه نسخهٔ MacTeX از "updmap-sys" در $TEXMFHOME جستجو نمی‌کند، و از این رو MacTeX قلم‌های جدید را پیدا نخواهد کرد.

برای برطرف کردن این مشکل، یا autoinst را با دسترسی ریشه (root) اجرا کنید (تا بتواند همه چیز را در $TEXMFLOCAL نصب کند) یا به‌صورت دستی "updmap -user" را اجرا کنید تا TeX را از فایل‌های موجود در $TEXMFHOME مطلع سازید. البته این گزینهٔ دوم با احتیاط‌ها و نکاتی همراه است؛ https://tug.org/texlive/scripts-sys-user.html را ببینید..SH "گزینه‌های خط فرمان (COMMAND-LINE OPTIONS)" autoinst به طور پیش‌فرض تلاش زیادی می‌کند تا «The Right Thing (TM)» (بهترین کار ممکن) را انجام دهد، بنابراین معمولاً به این گزینه‌ها نیازی نخواهید داشت؛ اما در صورت تمایل، اکثر جنبه‌های عملکرد آن قابل تنظیم دقیق هستند.

می‌توانید قبل از گزینه‌ها از یک یا دو خط تیره استفاده کنید، و نام گزینه‌ها می‌تواند به یک پیشوند یکتا خلاصه شود (به عنوان مثال، -encoding ممکن است به -enc یا حتی -en خلاصه شود، اما -e مبهم است (می‌تواند به معنای -encoding یا -extra باشد)).

چاپ یک متن راهنمای (نسبتاً) کوتاه و خروج.
خروجی تولید نکن؛ فقط قلم‌های ورودی را تجزیه کرده و نتایج را در فایل گزارش (log) بنویس.
افزودن جزئیات بیشتر به فایل گزارش (log).
چاپ شماره نسخهٔ autoinst و خروج.

کدگذاری(های) مشخص‌شده را برای قلم‌های متنی تولید می‌کند. چندین کدگذاری را می‌توان به صورت یک فهرست جداشده با کاما (بدون فاصله!) مشخص کرد؛ انتخاب پیش‌فرض کدگذاری‌ها "OT1,LY1,T1" است.

برای هر آرگومان کدگذاری، autoinst ابتدا بررسی می‌کند که آیا آن نام فایلِ یک فایل کدگذاری است یا خیر، و در صورت پیدا شدن از آن استفاده خواهد کرد؛ در غیر این صورت فرض می‌شود که آرگومان نام یکی از کدگذاری‌های توکار است. اگر آرگومان نام یک فایل باشد، autoinst قلم را با یک کدگذاری NFSS برابر با نام فایل (منهای پسوند «.enc») تعریف می‌کند، مگر زمانی که نام فایل با «U_» شروع شود؛ در این حالت کدگذاری NFSS برابر با «U» خواهد بود و بخش پس از «U_» به عنوان بخش «enc» در نام قلم تولیدشده استفاده خواهد شد.

در حال حاضر autoinst همراه با پشتیبانی توکار برای کدگذاری‌های OT1، T1/TS1، LY1، T2A/B/C، T3/TS3، T4، T5، LGR، CS، L7X و QX عرضه می‌شود. (فایل‌های متناظر برای جلوگیری از تداخل نام با سایر بسته‌ها، fontools_ot1.enc و غیره نامیده می‌شوند؛ پیشوند fontools_ را می‌توان نادیده گرفت.)

ساخت قلم‌های دارای کدگذاری TS1 را کنترل می‌کند. اگر کدگذاری‌های متنی (به -encoding در بالا نگاه کنید) شامل T1 باشند، پیش‌فرض -ts1 است، در غیر این صورت -nots1.
ساخت قلم‌های دارای ارقام تراز (lining figures) را کنترل می‌کند. پیش‌فرض -lining است.
ساخت قلم‌های دارای ارقام کهنه‌چین (oldstyle figures) را کنترل می‌کند. پیش‌فرض -oldstyle است.
ساخت قلم‌های دارای ارقام متناسب (proportional figures) را کنترل می‌کند. پیش‌فرض -proportional است.
ساخت قلم‌های دارای ارقام جدولی (tabular figures) را کنترل می‌کند. پیش‌فرض -tabular است.
ساخت قلم‌های حروف کوچک بزرگ‌نما (small caps) را کنترل می‌کند. پیش‌فرض -smallcaps است.
ساخت قلم‌های تزئینی (swash) را کنترل می‌کند. پیش‌فرض -swash است.
ساخت خانواده‌های قلم عنوان (titling) را کنترل می‌کند. پیش‌فرض -titling است.
ساخت قلم‌های دارای نویسه‌های بالانویس (superior) را کنترل می‌کند. پیش‌فرض -superiors است.
استاندارد OpenType چندین نوع رقم تعریف می‌کند که ممکن است به عنوان ارقام فرودست یا زیرنویس استفاده شوند: «Subscripts» (قابلیت OpenType به نام "subs")، «Scientific Inferiors» ("sinf")، و «Denominators» ("dnom"). این گزینه به کاربر امکان می‌دهد تعیین کند autoinst باید از کدام یک از این سبک‌ها برای نویسه‌های فرودست استفاده کند. همچنین، مقدار «auto» به autoinst می‌گوید از نخستین مقدار در "sinf"، "subs" یا "dnom" که توسط قلم پشتیبانی می‌شود استفاده کند. ذکر کردن صرفِ -inferiors معادل با -inferiors=auto است؛ در غیر این صورت پیش‌فرض -noinferiors است.

اگر سبکی از ارقام فرودست را مشخص کنید که در قلم وجود نداشته باشد، autoinst به رفتار پیش‌فرض خود مبنی بر عدم ساخت قلم‌های دارای ارقام فرودست بازمی‌گردد؛ و تلاشی برای جایگزینی یکی از سبک‌های دیگر نخواهد کرد.

ساخت قلم‌های دارای صورت و مخرج (کسری) را کنترل می‌کند. پیش‌فرض -nofractions است.
برخی قلم‌ها حاوی گلیف‌هایی برای بسته‌نگاشت‌های استاندارد f (شامل ff، fi، fl، ffi، ffl) هستند، اما قابلیت "liga" را برای دسترسی به آن‌ها ارائه نمی‌دهند. این گزینه به autoinst می‌گوید قوانین اضافی "LIGKERN" را به قلم‌های تولیدشده اضافه کند تا امکان استفاده از این بسته‌نگاشت‌ها فراهم شود. پیش‌فرض -ligatures است، مگر برای قلم‌های ماشین‌تحریری (typewriter).

برای غیرفعال کردن تولید بسته‌نگاشت‌ها حتی برای قلم‌هایی که دارای قابلیت "liga" هستند، -noligatures را مشخص کنید.

ساخت قلم‌های تزئینی (ornaments) را کنترل می‌کند. پیش‌فرض -ornaments است.
قلم را به ترتیب به عنوان یک قلم serif، sanserif یا typewriter نصب می‌کند. این امر نحوهٔ دسترسی شما به قلم در LaTeX را تغییر می‌دهد: با "\rmfamily"/"\textrm"، "\sffamily"/"\textsf" یا "\ttfamily"/"\texttt".

نصب قلم به عنوان یک قلم ماشین‌تحریری (typewriter) دو تغییر دیگر را ایجاد خواهد کرد: این کار - به طور پیش‌فرض - استفاده از بسته‌نگاشت‌های f را غیرفعال می‌کند (اگرچه می‌توان با گزینهٔ -ligatures این رفتار را لغو کرد)، و خط‌فاصله‌گذاری (hyphenation) را برای این قلم غیرفعال می‌سازد. اثر اخیر نمی‌تواند مجدداً در autoinst فعال شود؛ اگر می‌خواهید متن ماشین‌تحریری خط‌فاصله‌گذاری شود، از بستهٔ hyphenat استفاده کنید.

اگر هیچ یک از این گزینه‌ها مشخص نشده باشد، autoinst سعی می‌کند آن را حدس بزند: اگر نام فایل قلم حاوی رشتهٔ «mono» باشد یا اگر مقدار فیلد "isFixedPitch" در جدول "post" قلم True باشد، گزینهٔ -typewriter را انتخاب خواهد کرد؛ در غیر این صورت اگر نام فایل حاوی «sans» باشد گزینهٔ -sanserif را انتخاب می‌کند؛ در غیر این صورت -serif را برمی‌گزیند.

به autoinst می‌گوید قلم‌های پایهٔ ریاضی را بسازد (به بالا مراجعه کنید).
فاصلهٔ بین حروف (Letterspace) را در هر نویسه از قلم‌های ریاضی به میزان amount واحد تنظیم می‌کند، که در آن ۱۰۰۰ واحد برابر با یک em است. به نظر من، بسیاری از قلم‌های متنی هنگام استفاده در ریاضیات از فاصله‌گذاری ۵۰ تا ۱۰۰ واحدی بهره می‌برند؛ برخی قلم‌ها حتی به میزان بیشتری نیاز دارند. از قضاوت خودتان استفاده کنید!.SS "گزینه‌های خروجی (Output options)"
به autoinst می‌گوید که نام قلم‌های تمامی قلم‌های Type1 تولید شده را با افزودن SUFFIX به نام خانواده (family name) تغییر دهد. اگر از این گزینه بدون تعیین مقدار SUFFIX استفاده کنید، autoinst از مقدار «PS» استفاده خواهد کرد. رفتار پیش‌فرض زمانی که این گزینه داده نشود این است که نام قلم‌ها به‌هیچ‌وجه تغییر داده نشود.

همچنین بخش «OpenType fonts and licensing issues» در «WARNINGS AND CAVEATS» در بالا را ببینید.

تمامی فایل‌های تولید شده را در درخت TEXMF در DIRECTORY نصب می‌کند.

به‌طور پیش‌فرض، autoinst درخت‌های $TEXMFLOCAL و $TEXMFHOME را جستجو می‌کند و تمام فایل‌ها را در نخستین درخت TEXMF قابل نوشتن توسط کاربر که پیدا کند نصب می‌نماید. اگر autoinst نتواند چنین دایرکتوری قابل نوشتنی را بیابد (که نباید رخ دهد، زیرا $TEXMFHOME قرار است توسط کاربر قابل نوشتن باشد) یک پیام هشدار چاپ می‌کند و همه فایل‌ها را در زیردایرکتوری "autoinst_output/" از دایرکتوری جاری قرار می‌دهد. سپس بر عهدهٔ کاربر است که فایل‌های تولید شده را به مکان بهتری منتقل کند و تمام پایگاه‌های دادهٔ مرتبط را به‌روزرسانی نماید (معمولاً با فراخوانی texhash و updmap).

این گزینه‌ها معادل با گزینه‌های --vendor و --typeface در otftotfm هستند: آن‌ها بخش‌های «vendor» و «typeface» را در نام‌های زیردایرکتوری‌هایی از درخت TEXMF که فایل‌های تولید شده در آنجا ذخیره خواهند شد تغییر می‌دهند. مقادیر پیش‌فرض «lcdftools» و نام FontFamily قلم است. این گزینه‌ها تنها نام‌های دایرکتوری را تغییر می‌دهند، نه نام هیچ‌یک از فایل‌های تولید شده را.
داده‌های لاگ را به‌جای پیش‌فرض <fontfamily>.log در filename می‌نویسد. اگر فایل از قبل وجود داشته باشد، autoinst به انتهای آن اضافه می‌کند؛ یک فایل موجود را بازنویسی نمی‌کند.

به autoinst اعلام می‌کند که کدام سبک ارقام (figure style) پیش‌فرض خانواده قلم جاری است (یعنی چه ارقامی به دست می‌آیند وقتی هیچ ویژگی OpenType را مشخص نکرده باشید).

از این گزینه‌ها استفاده نکنید مگر اینکه مطمئن باشید به آن‌ها نیاز دارید! آن‌ها فقط برای قلم‌هایی نیاز هستند که ویژگی‌های OpenType را برای سبک ارقام پیش‌فرض خود ارائه نمی‌دهند؛ و حتی در آن صورت نیز، مقادیر پیش‌فرض autoinst (-defaultlining و -defaulttabular) معمولاً صحیح هستند.

کد NFSS مشخص‌شده با code را به وزن یا عرض داده‌شده نگاشت می‌کند، و بر جدول‌های توکار اولویت می‌یابد (آن‌ها را بازنویسی می‌کند). هر یک از این گزینه‌ها می‌تواند چندین بار مشخص شود، تا بیش از یک کد NFSS را لغو کند. مثال: برای نگاشت کد "ul" به وزن «Thin»، از "-nfssweight=ul=thin" استفاده کنید. برای جلوگیری کامل از استفاده از کد "ul"، از "-nfssweight=ul=" استفاده کنید.
آرگومان‌های extra options را به دستورهای otftotfm ارسال می‌کند. برای جلوگیری از اینکه extra options تصادفاً به عنوان گزینه‌های autoinst تفسیر شوند، باید به درستی درون نقل‌قول قرار گیرند.
حالت دستی؛ برای کاربرانی که می‌خواهند فایل‌ها و دستورهای تولید شده را پس‌پردازش کنند. به‌طور پیش‌فرض، autoinst بلافاصله تمامی دستورهای otftotfm تولیدی خود را اجرا می‌کند؛ در حالت دستی، این دستورها در فایلی به نام autoinst.bat نوشته می‌شوند. علاوه بر این، به otftotfm می‌گوید که فایل‌های انسان‌خوان (و قابل ویرایش) pl/vpl را به جای فایل‌های پیش‌فرض tfm/vf تولید کند، و تمام فایل‌های تولید شده را به جای نصب در ساختار TeX شما، در زیردایرکتوری "./autoinst_output/" از دایرکتوری جاری قرار دهد.

هنگام استفاده از این گزینه، پس از اتمام کار autoinst باید مراحل دستی زیر را اجرا کنید:

- اجرای pltotf و vptovf بر روی فایل‌های pl و vf تولید شده، جهت تبدیل آن‌ها به قالب tfm/vf؛
- انتقال تمام فایل‌های تولید شده به یک درخت مناسب TEXMF و در صورت نیاز، به‌روزرسانی پایگاه داده نام فایل‌ها؛
- معرفی فایل map جدید به TeX (معمولاً با اجرای "updmap" یا مشابه آن).

توجه داشته باشید که برخی از گزینه‌ها (-target، -vendor و -typeface) در حالت دستی بی‌معنی بوده و در نتیجه نادیده گرفته می‌شوند.

همچنین توجه داشته باشید که تغییر نام قلم در حالت دستی رخ نمی‌دهد.

برخی قلم‌ها جفت‌های فاصله‌گذاری (kerning pairs) را برای ارقام جدولی ارائه می‌دهند. این امر به احتمال بسیار زیاد چیزی نیست که شما می‌خواهید (برای نمونه، اعداد در جدول‌ها دقیقاً تراز نمی‌شوند). این گزینه گزینه‌های اضافی --ligkern را به دستورهای otftotfm اضافه می‌کند تا جلوی چنین فاصله‌گذاری‌هایی را بگیرد. توجه داشته باشید که این گزینه باعث ایجاد دستورهای بسیار طولانی می‌شود (صد گزینهٔ --ligkern اضافه می‌کند)، که ممکن است در برخی سیستم‌ها باعث ایجاد مشکل شود؛ به همین دلیل این گزینه به‌طور پیش‌فرض فعال نیست..SH "همچنین ببینید (SEE ALSO)" ابزارهای TypeTools و T1Utils از Eddie Kohler (http://www.lcdf.org/type).

Perl را می‌توان از http://www.perl.org تهیه کرد؛ این برنامه در بیشتر توزیع‌های لینوکس گنجانده شده است. برای Windows، نرم‌افزار ActivePerl (http://www.activestate.com) یا Strawberry Perl (http://strawberryperl.com) را امتحان کنید.

موتورهای LuaTeX (http://www.luatex.org) و XeTeX (http://www.tug.org/xetex) موتورهای TeX پشتیبانی‌کننده از یونیکد هستند که می‌توانند فونت‌های OpenType را به‌طور مستقیم، بدون نیاز به فایل‌های پشتیبانی خاص (La)TeX استفاده کنند.

پروژه‌ی FontPro (https://github.com/sebschub/FontPro) پشتیبانی بسیار کاملی از LaTeX (حتی برای حروف‌چینی ریاضیات) برای خانواده‌های فونت Minion Pro ،Myriad Pro و Cronos Pro از Adobe ارائه می‌دهد.

Marc Penninga (marcpenninga@gmail.com)

هنگام ارسال گزارش خطا (باگ)، لطفاً تا جای ممکن اطلاعات مرتبط را ارائه دهید؛ این اطلاعات معمولاً شامل فایل لاگ می‌شود (اما ممکن است به آن محدود نباشد) (لطفاً برای دریافت اطلاعات تکمیلی، گزینه‌ی خط فرمان -verbose را اضافه کنید). اگر پیام خطایی مشاهده کردید، لطفاً آن‌ها را عیناً (verbatim) قرار دهید؛ آن‌ها را نقل‌به‌مضمون یا بازنویسی نکنید.

حق نشر (C) 2005-2026 متعلق به Marc Penninga است.

این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط «پروانه‌ی همگانی عمومی گنو» (GNU General Public License) که توسط بنیاد نرم‌افزارهای آزاد (Free Software Foundation) منتشر شده است، چه نسخه‌ی ۲ مجوز و چه (به انتخاب خودتان) هر نسخه‌ی بالاتر دیگری، بازتوزیع کرده و/یا تغییر دهید. نسخه‌ای از متن «پروانه‌ی همگانی عمومی گنو» در توزیع fontools گنجانده شده است؛ فایل GPLv2.txt را ببینید.

این برنامه به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا تناسب برای یک هدف خاص. برای اطلاعات بیشتر، پروانه‌ی همگانی عمومی گنو (GNU General Public License) را ببینید.

این سند نسخه‌ی 20260210 از autoinst را شرح می‌دهد.

(برای تاریخچه‌ی کامل تا سال 2005، به کد منبع مراجعه کنید.)

2026-02-10
فایل‌های استایل تولیدشده اکنون به جای بسته‌ی (منسوخ‌شده‌ی) fontaxes، از بسته‌ی figureversions برای دسترسی به ارقام بالانویس و زیرنویس و کسرها استفاده می‌کنند. گزینه‌ی scriptscale به فایل استایل تولیدشده اضافه شد. هنگام ساخت فونت‌های ریاضی، در صورت وجود از ویژگی "mgrk" فونت استفاده می‌شود. چند باگ مبهم برطرف شد.
2025-09-09
در صورتی که وزن فونت از سایر متادیتاها قابل تشخیص نباشد، از WeightClass فونت استفاده می‌شود (پیشنهاد شده توسط Christoph L. Spiel).
2025-08-25
یک باگ در پردازش گزینه‌های "-nfssweight" و "-nfsswidth" برطرف شد.
2025-08-19
باگی برطرف شد که در آن هر فونتی با واژه‌ی "Typewriter" در نام خود، به عنوان "Italic" تجزیه می‌شد.
2025-07-02
راهکار موقت در تجزیه‌ی متادیتای فونت برای Source Serif 4 (مورد 2025-01-07 را ببینید) برای فونت‌های دیگر نیز لازم است؛ حداقل برای Arno Pro و شاید برخی فونت‌های دیگر Adobe. بنابراین ما آزمون را دوباره تغییر دادیم: این راهکار را به‌طور پیش‌فرض اعمال می‌کنیم، به‌جز برای Libertinus.
2025-06-23
قاعده‌ی "U_" برای نام فایل‌های کدگذاری (encoding) معرفی شد.
2025-04-16
بسته‌ی mweights بارگذاری نمی‌شود، چرا که قابلیت‌های آن اکنون بخشی از هسته‌ی اصلی LaTeX است (و در واقع مدتی هست که این‌گونه بوده است...).
2025-01-07
«اصلاحیه‌ای» که در تجزیه‌ی متادیتای فونت برای Source Serif 4 اضافه کرده بودیم، برای Libertinus Serif Display (و شاید فونت‌های دیگر) ایجاد مشکل می‌کرد؛ بنابراین اکنون پیش از اعمال آن اصلاحیه، بررسی می‌کنیم که آیا این خانواده واقعاً Source Serif 4 است یا خیر.
2026-02-10 fontools