afmtodit(1) General Commands Manual afmtodit(1)

afmtodit - تبدیل فایلهای متریک فونت ادوبی (AFM) به فرمت فونت groff

afmtodit [-ckmnqsx] [-a slant] [-d device-description-file] [-e encoding-file] [-f internal-name] [-i italic-correction-factor] [-o output-file] [-w space-width] afm-file map-file font-description-file
afmtodit --help
afmtodit -v
afmtodit --version

دستور afmtodit یک فایل توصیف فونت را برای استفاده در دستگاه‌های خروجی ps و pdf برنامه groff(1) از یک فایل متریک فونت ادوبی (AFM) به نام afm-file تولید می‌کند. فایل map-file نام کاراکترهای معمولی یا ویژه groff را به نام گلیف PostScript متناظر پیوند می‌دهد. خروجی در قالب groff_font(5) در font-description-file نوشته می‌شود؛ فایلی که نام آن برگرفته از نام فونت مدنظر در groff است (البته گزینه -o را ببینید).

فایل map-file باید شامل دنباله‌ای از خطوط با ساختار زیر باشد:

ps-glyph groff-char
که در آن ps-glyph نام گلیف PostScript و groff-char شناسه کاراکتر معمولی (اگر طول آن یک واحد باشد) یا ویژه (اگر طولانی‌تر باشد) در groff است. یک ps-glyph یکسان می‌تواند چندین بار در فایل تکرار شود؛ اما هر groff-char باید حداکثر یک بار درج شده باشد. خطوطی که با «#» شروع می‌شوند و خطوط خالی نادیده گرفته می‌شوند. اگر این فایل در دایرکتوری جاری پیدا نشود، در زیردایرکتوری devps/generate از دایرکتوری پیش‌فرض فونت جستجو می‌شود.

اگر یک گلیف PostScript در map-file ذکر نشده باشد و نام کاراکتر groff نیز با استفاده از فهرست گلیف ادوبی (AGL که درون afmtodit تعبیه شده است) قابل استنتاج نباشد، آن‌گاه afmtodit گلیف PostScript را به عنوان یک گلیف بدون نام در فایل توصیف فونت groff قرار می‌دهد که فقط از طریق دنباله اسکیپ “\N” در یک سند roff قابل دسترسی است. به‌طور خاص، این موضوع برای گونه‌های مختلف گلیف که به صورت “foo.bar” نام‌گذاری شده‌اند صادق است؛ تمام نام‌های گلیف که شامل یک یا چند نقطه باشند به موجودیت‌های بدون نام نگاشت می‌شوند. مگر اینکه گزینه -e مشخص شده باشد، از انکودینگ تعریف‌شده در فایل AFM (یعنی ورودی‌هایی با کدهای غیرمنفی) استفاده می‌شود. به بخش “Using Symbols” در Groff: The GNU Implementation of troff (راهنمای Texinfo برنامه groff) یا groff_char(7) مراجعه کنید، که نحوه ساخت شناسه‌های کاراکتر groff را شرح می‌دهند.

گلیف‌هایی که در فایل AFM کدگذاری نشده‌اند (یعنی ورودی‌هایی که با شناسه “-1” مشخص شده‌اند) همچنان در groff در دسترس هستند؛ این گلیف‌ها در فایل توصیف فونت groff، مقادیر اندیس گلیف بزرگتر از 255 (یا بزرگتر از بزرگترین کد استفاده‌شده در فایل AFM در شرایط نادری که بزرگتر از 255 باشد) دریافت می‌کنند. اندیس‌های گلیف‌های بدون کدگذاری ترتیب خاصی ندارند؛ بهتر است فقط از طریق شناسه‌های کاراکتر ویژه به آن‌ها دسترسی پیدا کنید.

اگر خود فایل فونت (و نه صرفاً متریک‌های آن) در دسترس باشد، درج نام آن در فایل‌های /usr/share/groff/1.24.1/font/devps/download و /usr/share/groff/1.24.1/font/devpdf/download امکان جاسازی آن را به ترتیب در خروجی‌های تولیدشده توسط grops(1) و gropdf(1) فراهم می‌سازد.

اگر گزینه -i استفاده شود، afmtodit به‌طور خودکار یک تصحیح مورب (italic correction)، تصحیح مورب چپ (left italic correction) و یک تصحیح زیرنویس (subscript correction) برای هر گلیف ایجاد می‌کند (اهمیت این موارد در groff_font(5) شرح داده شده است)؛ می‌توان این موارد را با افزودن خطوطی به شکل زیر به فایل afm-file برای گلیف‌های منفرد تعیین کرد:

italicCorrection ps-glyph n
leftItalicCorrection ps-glyph n
subscriptCorrection ps-glyph n
که در آن ps-glyph نام گلیف PostScript و n مقدار مورد نظر برای پارامتر مربوطه بر حسب یک‌هزارم em است. چنین پارامترهایی معمولاً فقط برای فونت‌های مورب (یا مایل / oblique) مورد نیاز هستند.

گزینه -s باید زمانی استفاده شود که فونت «ویژه» (special) باشد؛ یعنی هر زمان که گلیفی در فونت جاری یافت نشد، groff باید این فونت را جستجو کند. برای فعال‌سازی این جستجو، می‌توان font-description-file را به عنوان یک آرگومان برای دستورالعمل fonts در فایل DESC دستگاه خروجی درج کرد؛ یا از طرف دیگر، یک سند می‌تواند آن را با درخواست special تعیین نماید. اگر فونت ویژه نباشد نیازی به انجام هیچ‌کدام نیست، زیرا troff(1) در اولین باری که فونت استفاده می‌شود، آن را به‌طور خودکار سوار (mount) می‌کند.

گزینه --help پیام راهنمای استفاده را نمایش می‌دهد، در حالی که -v و --version اطلاعات نسخه را نشان می‌دهند؛ هر دو پس از نمایش خارج می‌شوند.

استفاده از slant به عنوان پارامتر شیب (slant یا «زاویه») در فایل توصیف فونت؛ این پارامتر توسط groff در موقعیت‌یابی اعراب‌ها و نشانه‌ها (accents) استفاده می‌شود. به‌طور پیش‌فرض، afmtodit از منفی مقدار ItalicAngle مشخص‌شده در فایل AFM استفاده می‌کند؛ در فونت‌های ایتالیک واقعی گاهی مطلوب است از شیبی کمتر از این مقدار استفاده شود. اگر متوجه شدید که یک فونت ایتالیک نشانه‌ها را بیش از حد به سمت راست گلیف‌های پایه قرار می‌دهد، از -a برای اختصاص شیب کوچکتری به آن استفاده کنید.
گنجاندن توضیحاتی (کامنت‌ها) در فایل توصیف فونت جهت شناسایی فونت PostScript.
استفاده از فایل توصیف دستگاه desc-file به جای فایل پیش‌فرض DESC. اگر در دایرکتوری جاری پیدا نشود، زیردایرکتوری devps از دایرکتوری پیش‌فرض فونت جستجو می‌شود (این موضوع هم برای فایل پیش‌فرض توصیف دستگاه و هم برای فایل مشخص‌شده با گزینه -d صادق است).
فونت PostScript باید برای استفاده از انکودینگ شرح داده شده در enc-file مجدداً انکود شود. قالب enc-file در grops(1) توضیح داده شده است. اگر در دایرکتوری جاری پیدا نشود، زیردایرکتوری devps از دایرکتوری پیش‌فرض فونت جستجو می‌شود.
تنظیم نام داخلی فونت groff روی name.
تولید یک تصحیح مورب (italic correction) برای هر گلیف به گونه‌ای که عرض آن به علاوه تصحیح موربش برابر با italic-correction-factor هزارمِ یک em، به‌علاوه مقداری باشد که لبه سمت راست کادر مرزی گلیف (bounding box) نسبت به مبدأ آن به سمت راست امتداد دارد. اگر این محاسبه منجر به یک تصحیح مورب منفی شود، به جای آن تصحیح مورب صفر لحاظ می‌شود.
همچنین یک تصحیح زیرنویس (subscript correction) برابر با حاصل‌ضرب تانژانت شیب فونت در چهارپنجم x-height (ارتفاع نویسه x) فونت تولید می‌کند. اگر این مقدار به یک تصحیح زیرنویس بزرگتر از تصحیح مورب منجر شود، به جای آن از تصحیح زیرنویسی برابر با تصحیح مورب استفاده می‌شود.
همچنین یک تصحیح مورب چپ (left italic correction) برای هر گلیف تولید می‌کند که برابر با italic-correction-factor هزارم یک em به‌علاوه مقداری است که لبه چپ کادر مرزی گلیف نسبت به مبدأ آن به سمت چپ امتداد دارد. تصحیح مورب چپ ممکن است منفی باشد مگر اینکه گزینه -m داده شده باشد.
این گزینه معمولاً فقط برای فونت‌های مورب (یا مایل) مورد نیاز است. فایل‌های توصیف فونت ارائه‌شده همراه با groff برای فونت‌های ایتالیک با گزینه -i50 ساخته شده‌اند.
نوشتن در output-file به جای font-description-file.
حذف داده‌های فاصله‌گذاری کاراکترها (kerning) از فونت groff؛ فقط برای فونت‌های با عرض ثابت (monospaced) استفاده شود.
جلوگیری از مقادیر منفی در تصحیح مورب چپ. فایل‌های توصیف فونت برای سبک‌های رومی (roman) توزیع‌شده با groff با “-i0 -m” ایجاد شده‌اند تا فاصله‌گذاری هنگام کار با eqn(1) بهبود یابد.
دستور “ligatures” (حروف ترکیبی) را برای این فونت تولید نکن؛ برای فونت‌های با عرض ثابت (monospaced) استفاده شود.
بی‌صدا کردن هشدارهای نگاشت‌های تکراری؛ بخش «پیام‌های تشخیصی» در زیر را ببینید.
افزودن دستورالعمل “special” به فایل توصیف فونت.
استفاده از space-width به عنوان عرض فاصله‌های میان کلمات.
عدم استفاده از فهرست گلیف توکار ادوبی (Adobe Glyph List).

دستور afmtodit در صورت عملیات موفق با وضعیت 0 خارج می‌شود؛ در صورتی که برنامه نتواند آرگومان‌های خط فرمان را تفسیر کند با وضعیت 2 و در صورت بروز خطا در حین عملیات با وضعیت 1 خارج می‌شود.

/usr/share/groff/1.24.1/font/devps/DESC
دستگاه خروجی ps را توصیف می‌کند.
/usr/share/groff/1.24.1/font/devps/F
فونت شناخته‌شده با عنوان F روی دستگاه ps را توصیف می‌کند.
/usr/share/groff/1.24.1/font/devps/download
فهرست فونت‌های موجود برای جاسازی درون سند PostScript (یا دانلود در دستگاه) را نگهداری می‌کند.
/usr/share/groff/1.24.1/font/devps/generate/dingbats.map
/usr/share/groff/1.24.1/font/devps/generate/dingbats-reversed.map
/usr/share/groff/1.24.1/font/devps/generate/slanted-symbol.map
/usr/share/groff/1.24.1/font/devps/generate/symbol.map
/usr/share/groff/1.24.1/font/devps/generate/text.map
نام‌های موجود در فهرست گلیف ادوبی (AGL) را به شناسه‌های کاراکتر ویژه groff به ترتیب برای Zapf Dingbats (ZD)، reversed Zapf Dingbats (ZDR)، slanted symbol (SS)، symbol (S) و فونت‌های متنی نگاشت می‌کنند. این map-fileها فایل‌های توصیف فونت ارائه‌شده همراه با groff را برای درایور خروجی grops تولید می‌کنند.

AGL name 'x' already mapped to groff name 'y'; ignoring AGL name 'uniXXXX'
اگر پیام‌ها به شکل نشان داده شده باشند، که در آن نام AGL نادیده‌گرفته‌شده حاوی چهار رقم شانزده‌شانزدهی (هگزادسیمال) XXXX است، می‌توانید آن‌ها را نادیده بگیرید. فهرست گلیف ادوبی (AGL) نام‌های مخصوص به خود را برای گلیف‌ها دارد؛ این نام‌ها اغلب با نام کاراکترهای ویژه در groff متفاوت هستند. دستور afmtodit در حال ایجاد نگاشتی از نام‌های کاراکتر ویژه groff به نام‌های AGL است؛ این نگاشت می‌تواند یک‌به‌یک یا چندبه‌یک باشد، اما یک‌به‌چند کار نخواهد کرد، بنابراین afmtodit نگاشت‌های اضافی را کنار می‌گذارد. برای مثال اگر x برابر Delta، y برابر *D و XXXX برابر 0394 باشد، afmtodit به شما اعلام می‌کند فایل توصیف فونت groff که در حال نوشتن آن است نمی‌تواند کاراکتر ویژه \[*D] در groff را هم‌زمان به هر دو گلیف AGL یعنی Delta و uni0394 نگاشت کند.
اگر پیامی شبیه به این دریافت کردید اما از اینکه کدام نگاشت نادیده گرفته شده است رضایت ندارید، راه حل این است که یک map-file جایگزین تهیه کنید و afmtodit را مجدداً با استفاده از آن اجرا نمایید.
هنگامی که از گزینه -q استفاده می‌شود، این پیام‌ها مهار شده و به جای آن‌ها تنها تعداد پیام‌هایی که در صورت نبود این گزینه صادر می‌شدند، نمایش داده می‌شود.

کتاب Groff: The GNU Implementation of troff، نوشته Trent A. Fisher و Werner Lemberg، راهنمای اصلی groff است. بخش “Using Symbols” ممکن است اهمیت ویژه‌ای داشته باشد. می‌توانید با دستور “info '(groff)Using Symbols'” آن را به صورت تعاملی مرور کنید.

groff(1), gropdf(1), grops(1), groff_font(5)

2026-03-15 groff 1.24.1