| TTF2TFM(1) | General Commands Manual | TTF2TFM(1) |
نام (NAME)
ttf2tfm - ساخت فایلهای متریک TeX از یک قلم TrueType
خلاصه دستور (SYNOPSIS)
ttf2tfm
ttffile[.ttf|.ttc]
[-c caps-height-factor]
[-e extension-factor]
[-E encoding-id] [-f font-index]
[-l] [-L ligature-file[.sfd]] [-n]
[-N] [-O] [-p inencfile[.enc]]
[-P platform-id] [-q]
[-r old-glyphname new-glyphname]
[-R replacement-file[.rpl]]
[-s slant-factor]
[-t outencfile[.enc]]
[-T inoutencfile[.enc]] [-u]
[-v vplfile[.vpl]]
[-V scvplfile[.vpl]] [-w] [-x]
[-y vertical-shift-factor]
[tfmfile[.tfm]]
ttf2tfm --version | --help این
برنامه
اطلاعات
متریک و
فاصلهگذاری
بینحروفی
(kerning) یک قلم TrueType
را استخراج
کرده و آن را
به
فایلهای
متریک قابل
استفاده
برای TeX
تبدیل
میکند
(بسیار شبیه
به afm2tfm که
بخشی از
بستهٔ dvips
است؛ لطفاً
برای
جزئیات
بیشتر
دربارهٔ
پارامترهای
گوناگون،
بهویژه
فایلهای
کدگذاری،
به
فایلهای info
آن مراجعه
کنید).
از آنجا که یک قلم TrueType اغلب شامل بیش از ۲۵۶ نگاره (glyph) است، روشهایی برای نگاشت زیرمجموعهای از نگارههای TrueType روی یک قلم TeX مورد نیاز است. برای انجام این کار، دو جدول نگاشت لازم است: نخستین جدول (با نام کدگذاری «ورودی» یا «خام») قلم TrueType را به یک قلم خام TeX نگاشت میکند (این جدول نگاشت هم توسط ttf2tfm و هم توسط ttf2pk) استفاده میشود، و جدول دوم (با نام کدگذاری «خروجی» یا «مجازی») قلم خام TeX را به قلم (مجازی) دیگری از TeX نگاشت میکند که تمامی اطلاعات kerning و حروف متصل (ligature) مورد نیاز TeX را فراهم میسازد.
این نگاشت دومرحلهای این مزیت را دارد که یک قلم خام میتواند از طریق سازوکار قلم مجازی با کدگذاریهای گوناگون LaTeX (مانند T1 و OT1) در دسترس باشد، و تنها یک فایل PK لازم خواهد بود.
برای قلمهای CJKV (چینی/ژاپنی/کرهای/ویتنامی کهن)، سازوکار متفاوتی ارائه شده است (بخش SUBFONT DEFINITION FILES در زیر را ببینید).
پارامترها (PARAMETERS)
بیشتر نامهای سوییچهای خط فرمان برای راحتی کار همانند afm2tfm هستند. وجود یک یا چند نویسهٔ فاصله میان یک گزینه و مقدار آن اجباری است؛ گزینهها نمیتوانند زنجیرهای ترکیب شوند. به دلایل تاریخی، نخستین پارامتر نمیتواند یک سوییچ باشد، بلکه باید نام قلم باشد.
- -c caps-height-factor
- ارتفاع حروف کوچک بزرگنما (small caps) ساختهشده با سوییچ -V. مقدار پیشفرض این عدد حقیقی 0.8 برابر ارتفاع نگارههای بزرگ (uppercase) است.
- در حالت subfont نادیده گرفته میشود.
- -e extension-factor
- ضریب امتداد برای کشیدن افقی نویسهها. مقدار پیشفرض این عدد حقیقی 1.0 است؛ اگر کمتر از 1.0 باشد، یک قلم متراکم (condensed) به دست میآید.
- -E encoding-id
- شناسهٔ کدگذاری (encoding ID) قلم TrueType. مقدار پیشفرض این عدد صحیح غیرمنفی 1 است.
- در صورت استفاده از -N نادیده گرفته خواهد شد.
- -f font-index
- نمایهٔ قلم در یک مجموعهٔ TrueType (TrueType Collection). پیشفرض، نخستین قلم (نمایهٔ 0) است. [مجموعههای TrueType معمولاً در برخی قلمهای CJK یافت میشوند؛ برای نمونه، نمایهٔ اول قلم نگارهها و متریکها را برای نگارش افقی تعیین میکند و نمایهٔ دوم همین کار را برای نگارش عمودی انجام میدهد؛ این مجموعهها معمولاً دارای پسوند `.ttc'.]
- برای قلمهای معمولی TrueType نادیده گرفته میشود.
- -l
- ایجاد حروف متصل (ligature) در زیرقلمها میان بایتهای اول و دوم تمام کدهای نویسهٔ اصلی. مثال: کد نویسهٔ 0xABCD به موقعیت نویسهٔ 123 در زیرقلم 45 نگاشت میشود. سپس یک ligature در زیرقلم 45 بین موقعیت 0xAB و 0xCD که به نویسهٔ 123 اشاره دارد ایجاد خواهد شد. قلمهای بستهٔ کرهای HLaTeX از این ویژگی استفاده میکنند. توجه داشته باشید که این گزینه تنها برای قلمهای TrueTypeای ligatureهای درست ایجاد میکند که در آنها cmap ورودی با کدگذاری خروجی یکسان باشد. در مورد HLaTeX، فایلهای TTF باید دارای شناسهٔ پلتفرم 3 و شناسهٔ کدگذاری 5 باشند.
- اگر در حالت subfont نباشد نادیده گرفته خواهد شد.
- -L ligature-file
- همانند -l، اما کدهای نویسه برای ligatureها در ligature-file مشخص میشوند. برای نمونه، `-L KS-HLaTeX' صرفنظر از شناسهٔ پلتفرم و کدگذاری قلم TrueType مورد استفاده، ligatureهای صحیحی را برای بستهٔ کرهای HLaTeX تولید میکند (فایل KS-HLaTeX.sfd بخشی از بستهٔ ttf2pk است).
- فایلهای ligature همان قالب و پسوند فایلهای SFD را دارند. این گزینه اگر در حالت subfont نباشد نادیده گرفته خواهد شد.
- -n
- استفاده از نامهای PS (نگارههای) قلم TrueType. تنها نگارههایی با یک مدخل معتبر در cmap انتخابشده استفاده میشوند.
- در حالت subfont نادیده گرفته میشود.
- -N
- تنها استفاده از نامهای PS قلم TrueType. هیچ cmapای استفاده نمیشود، بنابراین سوییچهای -E و -P هیچ اثری نخواهند داشت و باعث صدور یک پیام هشدار میشوند.
- در حالت subfont نادیده گرفته میشود.
- -O
- استفاده از مقادیر هشتهشتی (octal) برای تمام کدهای نویسه در فایل VPL به جای نامها؛ این گزینه برای قلمهای نماد یا CJK که در آنها نام نویسهها مانند `A` بیمعنی است، کاربرد دارد.
- -p inencfile
- نام فایل کدگذاری ورودی برای نگاشت TTF→raw TeX. این پارامتر باید در یک فایل نگاشت (پیشفرض: ttfonts.map) ثبتشده در ttf2pk.cfg برای فراخوانیهای پیاپی ttf2pk تعیین شود.
- در حالت subfont نادیده گرفته میشود.
- -P platform-id
- شناسهٔ پلتفرم (platform ID) قلم TrueType. مقدار پیشفرض این عدد صحیح غیرمنفی 3 است.
- در صورت استفاده از -N نادیده گرفته خواهد شد.
- -q
- ساکت کردن ttf2tfm. این گزینه هرگونه خروجی اطلاعاتی به جز پیامهای هشدار و خطا را سرکوب میکند. برای قلمهای CJK، اگر این سوییچ را مشخص نکنید، خروجی میتواند بسیار طولانی و حجیم شود.
- -r old-glyphname new-glyphname
- جایگزین کردن old-glyphname با new-glyphname. این سوییچ زمانی مفید است که بخواهید به یک نگارهٔ بدون نام (یعنی نگارهای که فقط میتواند با `.gXXX` یا `.cXXX` نمایش داده شود) یک نام اختصاص دهید یا اگر بخواهید نام یک نگارهٔ موجود را تغییر دهید. شما نمیتوانید از ساختارهای نام نگارهٔ `.gXXX` یا `.cXXX` برای new-glyphname استفاده کنید؛ استفادهٔ چندباره از -r امکانپذیر است.
- در صورت قرار داشتن در حالت subfont یا در صورتی که هیچ فایل کدگذاری مشخص نشده باشد، این سوییچ نادیده گرفته میشود..TP -R replacement-file اگر جفتهای جایگزینی زیادی دارید، از این گزینه استفاده کنید؛ آنها را میتوان در فایلی که باید پسوند `.rpl' داشته باشد جمعآوری کرد. نحو مورد استفاده در چنین فایلهای جایگزینی ساده است: هر خط غیرخالی باید شامل یک جفت `old-glyphname new-glyphname' باشد که با نویسه فاصله (بدون علامتهای نقلقول) جدا شدهاند. علامت درصد، یک یادداشت خطی را آغاز میکند؛ با قرار دادن یک بکاسلش به عنوان آخرین نویسه، میتوانید یک خط را در خط بعدی ادامه دهید.
- اگر در حالت subfont باشد یا هیچ فایل کدگذاری مشخص نشده باشد، این گزینه نادیده گرفته میشود.
- -s slant-factor
- ضریب موربسازی برای شیبدار کردن قلم، که معمولاً بسیار کوچکتر از 1 است. مقدار پیشفرض این عدد حقیقی 0.0 است؛ اگر مقدار بزرگتر از صفر باشد، نویسهها به سمت راست متمایل میشوند، در غیر این صورت به سمت چپ.
- -t outencfile
- نام فایل کدگذاری خروجی برای قلم(های) مجازی. فقط از نویسههای موجود در قلم خام TeX استفاده میشود.
- در حالت subfont نادیده گرفته خواهد شد.
- -T inoutencfile
- این گزینه معادل است با `-p inoutencfile -t inoutencfile'.
- در حالت subfont نادیده گرفته خواهد شد.
- -u
- تنها از نویسههای مشخصشده در کدگذاری خروجی استفاده میکند و نه موارد دیگر. بهطور پیشفرض، ttf2tfm تلاش میکند تمام نویسهها را در قلم مجازی بگنجاند، حتی مواردی که در کدگذاری قلم مجازی وجود ندارند (آنها را نسبتاً اختیاری در موقعیتهای استفادهنشده دیگر قرار میدهد).
- در حالت subfont نادیده گرفته خواهد شد.
- -v vplfile
- خروجی دادن یک فایل VPL علاوه بر فایل TFM. اگر هیچ فایل کدگذاری خروجی مشخص نشده باشد، ttf2tfm از یک کدگذاری پیشفرض قلم (cmtt10) استفاده میکند. نکته: دقت کنید که از نامهای متفاوتی برای قلم مجازی و قلم خام استفاده کنید!
- در حالت subfont نادیده گرفته خواهد شد.
- -V scvplfile
- مشابه -v، اما قلم مجازی تولیدشده یک قلم شبه small caps است که با مقیاسبندی حروف بزرگ به میزان 0.8 (یا مقداری که با -c مشخص شده است) برای حروفچینی حروف کوچک حاصل میشود. این قلم حروف نشانهدار (accented) را مدیریت کرده و فاصلهگذاری متناسب (kerning) مناسب را حفظ میکند.
- در حالت subfont نادیده گرفته خواهد شد.
- -w
- بردارهای کدگذاری PostScript حاوی نمایههای گلیف تولید میکند، که در درجه اول برای جاسازی قلمهای TrueType در pdfTeX استفاده میشود. ttf2tfm نامهای TFM را گرفته و پسوند را با .enc جایگزین میکند؛ یعنی برای فایلهای foo01.tfm، foo02.tfm، ... فایلهای foo01.enc، foo02.enc، ... را در همان مکان ایجاد میکند.
- اگر در حالت subfont نباشد، نادیده گرفته خواهد شد.
- -x
- چرخش همه گلیفها به اندازه ۹۰ درجه در خلاف جهت عقربههای ساعت. اگر هیچ پارامتر -y داده نشود، گلیفهای چرخیده به صورت عمودی به میزان 0.25em به پایین منتقل میشوند.
- اگر در حالت subfont نباشد، نادیده گرفته خواهد شد.
- -y vertical-shift-factor
- انتقال گلیفهای چرخیده به پایین به میزان دادهشده (واحد آن em است).
- اگر در حالت subfont نباشد یا گلیفها چرخیده نشده باشند، نادیده گرفته میشود.
- --version
- نسخه فعلی ttf2tfm و کتابخانه جستجوی فایل مورد استفاده (مانند kpathsea) را نمایش میدهد.
- --help
- اطلاعات نحوه استفاده را نمایش میدهد.
اگر هیچ نام فایلی برای TFM داده نشود، از نام فایل TTF شامل مسیر کامل با جایگزینی پسوند با `.tfm' استفاده میشود. برخلاف قلمهای Type 1 PostScript (اما مشابه با قالب جدید قلمهای CID PostScript)، بیشتر قلمهای TrueType بیش از یک جدول نگاشت بومی دارند که `cmap' نیز نامیده میشود و نمایههای (داخلی) گلیف TTF را به کدهای (خارجی) نویسهٔ TTF نگاشت میکند. نمونههای رایج شامل یک جدول نگاشت به موقعیتهای نویسهای کدگذاریشده با Unicode و نگاشت استاندارد Macintosh هستند.
برای تعیین یک جدول نگاشت TrueType، از گزینههای -P و -E استفاده کنید. با -P شناسهٔ بستر (platform ID) را مشخص میکنید؛ مقادیر تعریفشده عبارتند از:
| platform | platform ID (pid) |
| Apple Unicode | 0 |
| Macintosh | 1 |
| ISO | 2 |
| Microsoft | 3 |
شناسهٔ کدگذاری به بستر بستگی دارد. برای pid=0، پارامتر -E را نادیده میگیریم (آن را روی صفر تنظیم میکنیم) زیرا جدول نگاشت همواره Unicode نسخهٔ 2.0 است. برای pid=1، جدول زیر مقادیر تعریفشده را فهرست میکند:
| script | encoding ID (eid) |
| Roman | 0 |
| Japanese | 1 |
| Chinese | 2 |
| Korean | 3 |
| Arabic | 4 |
| Hebrew | 5 |
| Greek | 6 |
| Russian | 7 |
| Roman Symbol | 8 |
| Devanagari | 9 |
| Gurmukhi | 10 |
| Gujarati | 11 |
| Oriya | 12 |
| Bengali | 13 |
| Tamil | 14 |
| Telugu | 15 |
| Kannada | 16 |
| Malayalam | 17 |
| Sinhalese | 18 |
| Burmese | 19 |
| Khmer | 20 |
| Thai | 21 |
| Laotian | 22 |
| Georgian | 23 |
| Armenian | 24 |
| Maldivian | 25 |
| Tibetan | 26 |
| Mongolian | 27 |
| Geez | 28 |
| Slavic | 29 |
| Vietnamese | 30 |
| Sindhi | 31 |
| Uninterpreted | 32 |
شناسههای کدگذاری ISO در اینجا آمدهاند:
| encoding | encoding ID (eid) |
| ASCII | 0 |
| ISO 10646 | 1 |
| ISO 8859-1 | 2 |
و در نهایت، شناسههای کدگذاری Microsoft:
| encoding | encoding ID (eid) |
| Symbol | 0 |
| Unicode 2.0 | 1 |
| Shift JIS | 2 |
| GB 2312 (1980) | 3 |
| Big 5 | 4 |
| KS X 1001 (Wansung) | 5 |
| KS X 1001 (Johab) | 6 |
| UCS-4 | 10 |
اگر یک جفت شناسهٔ بستر/کدگذاری نامعتبر تعیین کنید، برنامه متوقف خواهد شد. سپس جفتهای pid/eid ممکن را نمایش میدهد. لطفاً توجه داشته باشید که بیشتر قلمها حداکثر دو یا سه cmap دارند که در مورد قلمهای مبتنی بر لاتین معمولاً متناظر با جفتهای pid/eid به صورت (1,0)، (3,0) یا (3,1) هستند. قلمهای معتبر Microsoft باید یک جدول نگاشت (3,1) داشته باشند، اما برخی قلمها وجود دارند (عمدتاً قلمهای آسیایی) که دارای یک cmap به صورت (3,1) هستند که در Unicode کدگذاری نشده است. دلیل این رفتار عجیب این واقعیت است که برخی از نسخههای قدیمی MS Windows قلمهایی را که دارای cmap غیر (3,1) باشند رد میکنند (زیرا تمامی شناسههای کدگذاری غیر Unicode در Microsoft برای نسخههای آسیایی MS Windows هستند).
گزینههای -P و -E برنامهٔ ttf2tfm باید به طور مشابه برای ttf2pk نیز مشخص شوند؛ پارامترهای متناظر در یک فایل نگاشت (map file) به ترتیب `Pid' و `Eid' هستند.
جفت pid/eid پیشفرض (3,1) است.
به همین ترتیب، گزینهٔ -f باید به عنوان پارامتر `Fontindex' در یک فایل نگاشت مشخص شود.
اگر از سوئیچ -N استفاده کنید، تمام cmapها نادیده گرفته شده و تنها از نامهای PostScript موجود در قلم TrueType استفاده میشود. گزینهٔ متناظر در یک فایل نگاشت `PS=Only' است. اگر از سوئیچ -n استفاده کنید، نامهای پیشفرض گلیف که درون ttf2tfm تعبیه شدهاند با نامهای گلیف PS موجود در قلم جایگزین میشوند. در بسیاری از موارد این چیزی نیست که بخواهید، زیرا نامهای گلیف موجود در قلم اغلب نادرست یا غیراستاندارد هستند. گزینهٔ متناظر در یک فایل نگاشت `PS=Yes' است.
نامهای گلیف جایگزین تکی مشخصشده با -r باید مستقیماً به صورت `old-glyphname new-glyphname' در یک فایل نگاشت داده شوند؛ -R معادل گزینهٔ `Replacement' است. شما باید بردارهای کدگذاری را از فونت TrueType به فونت خام TeX و از فونت خام TeX به فونت مجازی TeX دقیقاً مانند afm2tfm، مشخص کنید، اما امکانات بیشتری برای آدرسدهی کدهای نویسه در اختیار دارید. [منظور از «بردار کدگذاری» یک جدول نگاشت با ۲۵۶ ورودی در قالب یک بردار PostScript است؛ برای نمونه فایل T1-WGL4.enc این بسته را ببینید.] در afm2tfm، شما باید به هر گلیف با نام گلیف Adobe آن دسترسی پیدا کنید، به عنوان مثال `/quotedsingle' یا `/Acircumflex'. این قابلیت در ttf2tfm گسترش یافته است؛ اکنون میتوانید (و گاهی باید) مستقیماً با استفاده از نحو زیر برای تعیین موقعیت نویسه در نماد دهدهی، هشتهشتی، یا شانزدهشانزدهی، به نقاط کد و/یا گلیفها دسترسی داشته باشید: `/.c<decimal-number>'، `/.c0<octal-number>'، یا `/.c0x<hexadecimal-number>'. مثالها: `/.c72'، `/.c0646'، `/.c0x48'. برای دسترسی مستقیم به نمایه گلیف (glyph index)، در نحو معرفیشده به جای `c' از نویسه `g' استفاده کنید. مثال: `/.g0x32'. [نکته: در صورت استفاده از -N، نشانهگذاری `.cXXX' معنایی نخواهد داشت.]
برای جفتهای pid/eid با مقادیر (1,0) و (3,1)، هر دو ابزار ttf2tfm و ttf2pk نامهای پیشفرض درونی گلیفهای Adobe را تشخیص میدهند؛ اولی از نامهای ارائهشده در پیوست E کتاب `Inside Macintosh'، جلد 6 پیروی میکند و دومی از نامهای ارائهشده در مشخصات TrueType (مجموعه WGL4، یک زیرمجموعه از Unicode) استفاده میکند. توجه داشته باشید که نامهای Adobe برای یک گلیف معین اغلب یکتا نبوده و گاهی تفاوت دارند؛ به عنوان مثال، بسیاری از فونتهای PS دارای گلیف `mu' هستند، در حالی که این گلیف در مجموعه نویسه WGL4 با نام `mu1' خوانده میشود تا از حرف واقعی یونانی mu متمایز گردد. همچنین توجه داشته باشید که فونتهای OpenType (یعنی TrueType 2.0) از یک جدول WGL4 بهروزشده استفاده میکنند؛ ما از دادههای آخرین نسخه منتشرشده مشخصات TrueType (1.66) استفاده میکنیم. میتوانید این جدولهای نگاشت را در فایل کد منبع ttfenc.c بیابید.
از سوی دیگر، سوئیچهای -n و -N باعث میشوند که ttf2tfm به جای نامهای پیشفرض گلیفهای Adobe، نامهای PostScript موجود در خود فونت TrueType (ذخیرهشده در جدول `post') را خوانده و استفاده کند.
از سوئیچ -r برای نگاشت مجدد نامهای تکی گلیف و از -R برای تعیین فایلی شامل جفتنامهای جایگزین گلیف استفاده کنید.
اگر کدگذاری ورودی را انتخاب نکنید، نخستین ۲۵۶ گلیف از فونت TrueType با یک ورودی معتبر در cmap انتخابشده، به فونت خام TeX نگاشت خواهند شد (بدون گزینه -q، ابزار ttf2tfm این جدول نگاشت را در خروجی استاندارد چاپ میکند)، و به دنبال آن تمامی گلیفهایی که هنوز در cmap انتخابشده آدرسدهی نشدهاند نگاشت میشوند. با این حال، برخی از نقاط کد برای جفت pid/eid با مقدار (1,0) نادیده گرفته میشوند، زیرا گلیفهای مفیدی برای TeX به شمار نمیروند: 0x00 (null)، 0x08 (backspace)، 0x09 (horizontal tabulation)، 0x0d (carriage return)، و 0x1d (group separator). «نویسه نامعتبر» با نمایه گلیف 0 نیز حذف خواهد شد.
اگر سوئیچ -N را انتخاب کنید، در صورتی که هیچ کدگذاری ورودی مشخص نشده باشد، نخستین ۲۵۶ گلیف از فونت TrueType با یک نام PostScript معتبر استفاده خواهند شد. در این مورد نیز برخی گلیفها نادیده گرفته میشوند: `.notdef'، `.null'، و `nonmarkingreturn'.
اگر کدگذاری خروجی را انتخاب نکنید، ttf2tfm از همان جدول نگاشتی استفاده میکند که afm2tfm استفاده میکرد (میتوانید آن را در فایل کد منبع texenc.c بیابید)؛ این جدول متناظر با متن ماشینتحریری (typewriter) در TeX است. موقعیتهای استفادهنشده (خواه به دلیل نقاط کد خالی در جدول نگاشت باشند یا گلیفهای ناموجود در فونت TrueType) (به صورت تا حدی دلخواه) با نویسههای موجود در کدگذاری ورودی که در کدگذاری خروجی مشخص نشدهاند پر خواهند شد (بدون گزینه -q ابزار ttf2tfm کدگذاری خروجی نهایی را در خروجی استاندارد چاپ میکند). اگر فقط گلیفهایی را در فونت مجازی میخواهید که در فایل کدگذاری خروجی تعریف شدهاند و نه بیشتر، از گزینه -u استفاده کنید.
یک ویژگی که در afm2tfm وجود نداشت و برای کدگذاری T1 در LaTeX مورد نیاز است اضافه شده است: ttf2tfm در صورت امکان، حتی برای فونتهای معمولی نیز گلیف `Germandbls' را (صرفاً با متصل کردن دو گلیف `S') ایجاد خواهد کرد. این گلیف به عنوان آخرین مورد در فهرست گلیفها ظاهر میشود و با یک ستاره مشخص شده است. از آنجا که این یک گلیف واقعی نیست، تنها در فونت مجازی در دسترس خواهد بود.
هم برای کدگذاری ورودی و هم خروجی، یک موقعیت کد خالی با نام گلیف `/.notdef' نشان داده میشود.
در فایلهای کدگذاری، میتوانید از `\' به عنوان نویسه انتهایی یک خط استفاده کنید تا نشان دهید ورودی در خط بعدی ادامه مییابد. بکاسلش و نویسه خط جدید پس از آن حذف خواهند شد.
قلمهای CJKV (چینی/ژاپنی/کرهای/ویتنامی کهن) معمولاً شامل چندین هزار گلیف هستند؛ برای استفاده از آنها با TeX ضروری است که چنین قلمهای بزرگی به زیرقلمها (subfonts) تقسیم شوند. فایلهای تعریف زیرقلم (معمولاً با پسوند `.sfd') روشی ساده برای انجام روان این کار هستند.
نام یک فایل زیرقلم معمولاً از یک پیشوند (prefix)، یک میانوند زیرقلم (infix) و یک پسوند (postfix - که در بیشتر موارد خالی است) تشکیل میشود؛ مانند:
ntukai23 → prefix: ntukai، infix: 23، postfix:
(خالی)
در اینجا
نحو یک سطر
در یک فایل SFD
که
توصیفکننده
یک زیرقلم
است، آورده
شده است:
- <whitespace> <infix> <whitespace> <ranges> <whitespace>
- <infix> :=
- هر چیزی به جز فاصلههای خالی (whitespace). بهتر است تنها از نویسههای حرفی-عددی استفاده شود.
- <whitespace> :=
- فاصله (space)، انتقال صفحه (formfeed)، بازگشت به ابتدای سطر (carriage return)، تبهای افقی و عمودی -- بدون نویسه سطر جدید (newline).
- <ranges> :=
- <ranges> <whitespace> <codepoint> |
<ranges> <whitespace> <range> |
<ranges> <whitespace> <offset> <whitespace> <range> - <codepoint> :=
- <number>
- <range> :=
- <number> `_' <number>
- <offset> :=
- <number> `:'
- <number> :=
- هگزادسیمال (با پیشوند `0x')، دهدهی، یا اکتال (با پیشوند `0')
یک سطر میتواند با قرار گرفتن یک بکاسلش در انتهای آن، در سطر بعدی ادامه یابد. محدودهها نباید همپوشانی داشته باشند؛ آفستها باید در بازه 0-255 باشند.
مثال:
سطرِ
03 10: 0x2349 0x2345_0x2347
کدهای
نویسه 0x2349،
0x2345، 0x2346 و 0x2347 را
به ترتیب به
موقعیتهای
کد 10، 11، 12 و 13
از زیرقلمی
با میانوند
`03' اختصاص
میدهد.
فایلهای SFD موجود در توزیع، برای بسته CJK در LaTeX سفارشیسازی شدهاند.
باید نام فایل SFD را در داخل نام قلم TFM (در همان جایی که میانوند قرار خواهد گرفت) در میان دو علامت `@' قرار دهید، چه در خط فرمان و چه در یک فایل نگاشت (map file)؛ در این صورت هر دو برنامه ttf2tfm و ttf2pk به حالت زیرقلم (subfont mode) تغییر وضعیت میدهند.
میتوان بیش از یک فایل SFD را با جدا کردن آنها به وسیله ویرگول و بدون هیچ فاصله خالی استفاده کرد؛ برای یک زیرقلم مشخص، ابتدا اولین فایل برای یافتن ورودی پیمایش میشود، سپس فایل بعدی و به همین ترتیب. ورودیهای بعدی، ورودیهای یافتشده پیشین را بازنویسی (override) میکنند (که ممکن است فقط به صورت جزئی باشد). برای نمونه، اولین فایل SFD محدوده 0x10-0xA0 را تنظیم میکند و فایل بعدی ورودیهای 0x12 و 0x25 را اصلاح مینماید. همانطور که به سادگی مشخص است، این الگوریتم اجازه افزودن و جایگزینی را میدهد، اما امکان حذف ورودیها را فراهم نمیسازد.
حالت زیرقلم گزینههای -n، -N، -p، -r، -R، -t، -T، -u، -v، -V و -w را برای ttf2tfm غیرفعال میکند؛ به طور مشابه، هیچ پارامتر `Encoding' یا `Replacement' در یک فایل نگاشت مجاز نیست. نامهای منفرد گلیف جایگزین نیز نادیده گرفته میشوند.
ttf2tfm تمام فایلهای TFM زیرقلمِ مشخصشده در فایلهای SFD را (به شرطی که زیرقلم حاوی گلیف باشد) در یک بار اجرا ایجاد خواهد کرد.
مثال:
فراخوانیِ
ttf2tfm ntukai.ttf ntukai@Big5,Big5-supp@
از Big5.sfd و Big5-supp.sfd
استفاده
کرده و
تمام
فایلهای
زیرقلم ntukai01.tfm،
ntukai02.tfm و غیره را
تولید
خواهد کرد.
برنامهٔ ttf2tfm
در صورت
موفقیت
مقدار 0 و در
صورت بروز
خطا 1 را
بازمیگرداند؛
پیامهای
هشدار و خطا
در خروجی
خطای
استاندارد
نوشته
میشوند.
نکاتی درباره جستجوی فایل (SOME NOTES ON FILE SEARCHING)
هر دو برنامهٔ ttf2pk و ttf2tfm از یکی از کتابخانههای kpathsea، emtexdir یا MiKTeX برای جستجوی فایلها استفاده میکنند (emtexdir تنها روی سیستمعاملهایی کار میکند که پیشینهٔ شبه MS-DOS دارند، یعنی MS-DOS، OS/2 و Windows؛ MikTeX مختص MS Windows است).
بهعنوان آخرین راهکار، هر دو برنامه میتوانند بدون کتابخانهٔ جستجو کامپایل شوند؛ در این صورت، فایلهای مورد جستجو باید در دایرکتوری جاری باشند یا با یک مسیر مشخص شوند. پسوندهای پیشفرض نیز افزوده خواهند شد (با این استثنا که فقط `.ttf' افزوده میشود و نه `.ttc').
kpathsea
نسخهٔ واقعی kpathsea در صورتی که هر یک از برنامههای ttf2pk یا ttf2tfm را با گزینهٔ خط فرمان --version فراخوانی کنید، روی صفحه نمایش داده میشود.
در اینجا جدول نوع فایل و متغیرهای متناظر kpathsea آورده شده است. TTF2PKINPUTS و TTF2TFMINPUTS متغیرهای محیطی خاص برنامه هستند که در نسخهٔ 3.2 از kpathsea معرفی شدهاند:
| .ttf and .ttc | TTFONTS |
| ttf2pk.cfg | TTF2PKINPUTS |
| .map | TTF2PKINPUTS |
| .enc | TTF2PKINPUTS, TTF2TFMINPUTS |
| .rpl | TTF2PKINPUTS, TTF2TFMINPUTS |
| .tfm | TFMFONTS |
| .sfd | TTF2PKINPUTS, TTF2TFMINPUTS |
لطفاً برای جزئیات مربوط به این متغیرها به فایلهای info مربوط به kpathsea مراجعه کنید.
باید متغیر TEXMFCNF را روی دایرکتوریای تنظیم کنید که فایل پیکربندی texmf.cnf شما در آن قرار دارد.
دستور مناسب برای یافتن مقداری که یک متغیر kpathsea روی آن تنظیم شده در اینجا آمده است (ما از TTFONTS بهعنوان مثال استفاده میکنیم). این کار بهویژه زمانی مفید است که یک متغیر در texmf.cnf یا در محیط تنظیم نشده باشد، و در نتیجه به مقدار پیشفرضی اشاره دارد که درون کتابخانهٔ kpathsea بهصورت ثابت کدگذاری شده است (hard-coded).
ما نام برنامه را نیز انتخاب میکنیم چرا که امکان تعیین متغیرهایی وجود دارد که فقط برای یک برنامهٔ خاص جستجو شوند -- در مثال ما این متغیر TTFONTS.ttf2tfm خواهد بود.
روشی مشابه اما نه کاملاً یکسان، اجرای دستور زیر است:
kpsewhich -progname=ttf2tfm -show-path='truetype fonts'
[فهرست کاملی از انواع قالبها را میتوان با وارد کردن `kpsewhich --help' در اعلان خط فرمان به دست آورد.] این دقیقاً همان روشی است که ttf2tfm (و ttf2pk) برای جستجوی فایلها استفاده میکنند؛ عیب این روش آن است که تمام متغیرها بسط داده میشوند که میتواند باعث ایجاد رشتههای بسیار طولانی شود. در اینجا فهرستی از پسوندها و متغیرهای محیطی مرتبط با آنها که باید در autoexec.bat (و بهطور متناظر در config.sys برای OS/2) تنظیم شوند آمده است:
| .ttf و .ttc | TTFONTS |
| ttf2pk.cfg | TTFCFG |
| .map | TTFCFG |
| .enc | TTFCFG |
| .rpl | TTFCFG |
| .tfm | TEXTFM |
| .sfd | TTFCFG |
اگر یکی از متغیرها تنظیم نشده باشد، یک پیام هشدار صادر میشود. دایرکتوری جاری همیشه جستجو خواهد شد. طبق معمول، افزودن یک علامت تعجب به انتهای مسیر دایرکتوری باعث جستجو در زیردایرکتوریها تا یک سطح عمق میشود و دو علامت تعجب باعث جستجو در تمام زیردایرکتوریها خواهد شد. مثال:
TTFONTS=c:\fonts\truetype!!;d:\myfonts\truetype!
ساختارهایی مانند `c:\fonts!!\truetype' امکانپذیر نیستند.
MiKTeX
هر دو ttf2tfm و ttf2pk بهطور کامل در MiKTeX ادغام شدهاند. لطفاً برای جزئیات بیشتر دربارهٔ جستجوی فایل به مستندات MiKTeX مراجعه کنید.
مشکلات (PROBLEMS)
بسیاری از پیادهسازیهای vptovf تنها 100 بایت را برای سرآیند TFM مجاز میدانند (این محدودیت در خود قالب فایل TFM برابر با 1024 است): 8 بایت برای checksum و اندازهٔ طراحی (design size)، 40 بایت برای نام خانواده، 20 بایت برای کدگذاری، و 4 بایت برای بایت face. تنها 28 بایت برای برخی اطلاعات تکمیلی باقی میماند که توسط ttf2tfm برای یک رشتهٔ شناسایی (که اساساً رونوشتی از خط فرمان است) استفاده میشود، و همیشه از این محدودیت فراتر رفته میشود.
راهکار بهینه این است که مقدار max_header_bytes در فایل vptovf.web (و احتمالاً pltotf.web نیز) برای مثال به 400 افزایش داده شود و vptovf (و pltotf) دوباره کامپایل شوند. در غیر این صورت با پیامهای خطایی (بیضرر) مانند
This HEADER index is too big for my present table size
مواجه
خواهید شد
که میتوان
با خیال
آسوده
آنها را
نادیده
گرفت. ttf2pk(1), afm2tfm(1),
vptovf(1),
صفحات info برای
dvips و kpathsea
در دسترس بودن (AVAILABILITY)
ttf2tfm بخشی از بستهٔ FreeType 1 است، یک کتابخانهٔ باکیفیت برای رندر کردن TrueType.
نویسندگان (AUTHORS)
Werner LEMBERG <wl@gnu.org>
Frédéric LOYER <loyer@ensta.fr>
| 27-Jun-2013 | FreeType2 version |