| grops(1) | General Commands Manual | grops(1) |
نام (NAME)
grops - پسپردازنده PostScript برای groff
خلاصه دستور (SYNOPSIS)
grops |
[-glm] [-b brokenness-flags] [-c num-copies] [-F font-directory] [-I inclusion-directory] [-p paper-format] [-P prologue-file] [-w rule-thickness] [file ...] |
grops |
--help |
grops |
-v |
grops |
--version |
توضیحات (DESCRIPTION)
درایور خروجی PostScript برای roff گنو، خروجی troff(1) را به PostScript ترجمه میکند. بهطور معمول، grops توسط groff(1) هنگامی که گزینه “-T ps” به آن داده شود فراخوانی میگردد. (در این نصب، ps دستگاه خروجی پیشفرض است.) از گزینه -P در groff برای ارسال هر یک از گزینههای نشاندادهشده در بالا به grops استفاده کنید. اگر هیچ آرگومان file داده نشود، یا اگر file برابر “-” باشد، grops جریان ورودی استاندارد را میخواند. این برنامه خروجی را در جریان خروجی استاندارد مینویسد.
هنگامی که با چندین آرگومان file فراخوانی شود، grops یک ساختار سند معتبر (منطبق بر قراردادهای ساختاردهی سند یا DSC) تولید نمیکند. برای چاپ چنین خروجی بههمپیوستهای، لازم است پردازش DSC در برنامه چاپ یا پیشنمایشگر غیرفعال شود.
برای راهنمای نصب قلمها برای grops، بخش “نصب قلم (Font installation)” را در ادامه ببینید.
گزینهها (OPTIONS)
گزینه --help پیام راهنمای استفاده را نمایش میدهد، در حالی که -v و --version اطلاعات نسخه را نشان میدهند؛ همگی پس از آن خارج میشوند.
- -b n
- مشکلات مربوط به صفبندها (spoolers)، پیشنمایشگرها و چاپگرهای قدیمیتر را برطرف میکند. بهطور معمول، grops خروجی را در PostScript سطح زبان 2 (%LanguageLevel 2) تولید میکند که با نسخه 3.0 از قراردادهای ساختاردهی سند (Document Structuring Conventions) مطابقت دارد. برخی از نرمافزارها و دستگاهها نمیتوانند چنین جریان دادهای را پردازش کنند. مقدار n تعیین میکند که grops چه کارهایی انجام دهد تا خروجی آن برای چنین مصرفکنندگانی قابل قبول باشد. اگر n برابر 0 باشد، grops هیچ راهکار دورزدنی را به کار نمیگیرد، که حالت پیشفرض است؛ این مقدار را میتوان با تغییر دستورالعمل broken در پرونده DESC مربوط به grops تغییر داد.
- مقدار 1 را اضافه کنید تا از تولید توضیحات %%BeginDocumentSetup و %%EndDocumentSetup جلوگیری شود؛ این کار برای نسخههای اولیه TranScript لازم است که با هر چیزی بین توضیح %%EndProlog و اولین توضیح %%Page دچار سردرگمی میشوند.
- مقدار 2 را اضافه کنید تا خطوط موجود در پروندههای گنجاندهشده که با %! آغاز میشوند حذف گردند؛ این خطوط پیشنمایشگر pageview سان را دچار سردرگمی میکنند.
- مقدار 4 را اضافه کنید تا خطوط موجود در پروندههای گنجاندهشده که با %%Page، %%Trailer و %%EndProlog آغاز میشوند حذف گردند؛ این کار برای صفبندهایی لازم است که توضیحات %%BeginDocument و %%EndDocument را درک نمیکنند.
- مقدار 8 را اضافه کنید تا بهجای %!PS-Adobe-3.0 عبارت %!PS-Adobe-2.0 به عنوان خط اول خروجی PostScript نوشته شود؛ این کار هنگام استفاده از Newsprint سان با چاپگری که نیاز به معکوسسازی ترتیب صفحات دارد لازم است.
- مقدار 16 را اضافه کنید تا اطلاعات اندازه رسانه حذف شود (یعنی نه توضیح %%DocumentMedia تولید شود و نه دستور PostScript به نام setpagedevice). این رفتار groff نسخه 1.18.1 و قبل از آن بود؛ این کار برای چاپگرهای قدیمیتری که PostScript سطح زبان 2 (%LanguageLevel 2) را درک نمیکنند لازم است، و همچنین در صورتی که قرار باشد خروجی برای تولید یک پرونده EPS بیشتر پردازش شود ضروری است؛ زیربخش “پستاسکریپت کپسولهشده (Encapsulated PostScript)” را در ادامه ببینید.
- -c n
- تعداد n نسخه از هر صفحه خروجی میدهد.
- -F dir
- پوشه dir/devname را به ابتدای مسیر جستجو برای پروندههای توصیف قلم و دستگاه و پیشگفتارهای PostScript اضافه میکند؛ name نام دستگاه است، که معمولاً ps میباشد.
- -g
- کد PostScript برای حدس زدن طول صفحه تولید میکند. این حدس تنها در صورتی درست است که ناحیه قابل چاپ به صورت عمودی در مرکز صفحه قرار گرفته باشد. این گزینه به شما امکان میدهد اسنادی تولید کنید که بتوان آنها را بر روی هر دو قطع کاغذ U.S. letter و A4 بدون تغییر چاپ کرد.
- -I dir
- دایرکتوری dir را برای پروندههای نامبردهشده در دنبالههای گریز \X'ps: file' و \X'ps: import' جستجو میکند. گزینه -I را میتوان بیش از یک بار مشخص کرد؛ هر dir به همان ترتیب مشخصشده جستجو میشود. برای جستجوی پوشه کاری جاری پیش از سایر پوشهها، “-I .” را در جایگاه مورد نظر اضافه کنید؛ در غیر این صورت در انتهای مسیر جستجو میشود.
- -l
- بهجای حالت عمودی (portrait)، از جهت افقی (landscape) استفاده میکند.
- -m
- تغذیه دستی (manual feed) کاغذ را برای سند فعال میکند.
- -p fmt
- ابعاد فیزیکی رسانه خروجی را تنظیم میکند، که دستورالعملهای papersize، paperlength و paperwidth را در پرونده DESC نادیده گرفته و جایگزین میکند. آرگومان fmt میتواند هر آرگومان پذیرفتهشده توسط دستورالعمل papersize باشد؛ groff_font(5) را ببینید.
- -P prologue
- از پرونده prologue، که در مسیر جستجوی قلم groff یافت میشود، به عنوان پیشگفتار PostScript استفاده میکند، که پیشفرض (بخش “فایلها (FILES)” در ادامه را ببینید) و متغیر محیطی GROPS_PROLOGUE را نادیده گرفته و جایگزین میکند.
- -w n
- خطها (خطکشها) را با ضخامت n هزارم یک em رسم میکند. ضخامت پیشفرض 40 (0.04 em) است.
کاربرد (USAGE)
ورودی به grops باید در قالبی باشد که توسط troff(1) خروجی داده میشود، همانطور که در groff_out(5) توصیف شده است. علاوه بر این، پروندههای توصیف دستگاه و قلم برای دستگاه مورداستفاده باید الزامات مشخصی را برآورده کنند. تفکیکپذیری دستگاه باید یک مضرب صحیح از 72 برابر sizescale باشد. پرونده توصیف دستگاه باید شامل یک قالب کاغذ معتبر باشد؛ groff_font(5) را ببینید. هر پرونده توصیف قلم باید حاوی دستورالعملی به شکل زیر باشد
internalname psname
یک پرونده توصیف قلم ممکن است حاوی یک دستورالعمل دیگر نیز باشد:
encoding enc-file
pschar code
برنامه grops قادر است تمامی گلیفهای موجود در یک قلم PostScript را نمایش دهد؛ به 256 گلیف محدود نمیشود. پرونده enc-file (یا کدگذاری پیشفرض در صورتی که پرونده کدگذاری مشخص نشده باشد) فقط ترتیب گلیفها را برای 256 کاراکتر اول تعیین میکند؛ به تمامی گلیفهای دیگر با بردارهای کدگذاری اضافی که grops در لحظه تولید میکند دسترسی پیدا میشود.
برنامه grops میتواند قلمهایی را که برای رندر سند لازم هستند درون آن جاسازی کند؛ به این عمل “بارگیری” (downloading) گفته میشود. چنین قلمهایی باید در قالب PFA باشند. از pfbtops(1) برای تبدیل یک قلم نوع 1 در قالب PFB استفاده کنید. قلمهای قابل بارگیری باید در یک پرونده download فهرست شوند که شامل خطوطی به فرم زیر است
psname file
اگر پرونده حاوی یک قلم قابل بارگیری یا سند واردشده با قراردادهای ساختاردهی سند Adobe مطابقت داشته باشد، آنگاه grops هرگونه توضیح موجود در پروندهها را به اندازه کافی تفسیر میکند تا مطمئن شود خروجی خود برنامه نیز استاندارد است. همچنین هرگونه منابع قلم مورد نیاز را که در پرونده download فهرست شدهاند، و نیز منابع پرونده مورد نیاز را فراهم میکند. علاوه بر این، میتواند وابستگیهای متقابل منابع را مدیریت کند. به عنوان مثال، فرض کنید یک قلم قابل بارگیری به نام Garamond دارید، و همچنین یک قلم قابل بارگیری به نام Garamond-Outline که به Garamond وابسته است (معمولاً به گونهای تعریف میشود که فرهنگ لغت قلم Garamond را کپی کرده و PaintType را تغییر دهد)، در این صورت لازم است Garamond پیش از Garamond-Outline در سند PostScript ظاهر شود. برنامه grops این فرآیند را به صورت خودکار انجام میدهد، مشروط بر اینکه پرونده قلم قابل بارگیری برای Garamond-Outline وابستگی خود به Garamond را از طریق قراردادهای ساختاردهی سند مشخص کرده باشد، به عنوان مثال با شروع شدن با خطوط زیر.
%!PS-Adobe-3.0 Resource-Font %%DocumentNeededResources: font Garamond %%EndComments %%IncludeResource: font Garamond
برنامه grops توضیحات %%DocumentFonts را تفسیر نمیکند. بهجای آن، توضیحات %%DocumentNeededResources، %%DocumentSuppliedResources، %%IncludeResource، %%BeginResource و %%EndResource (یا احتمالاً توضیحات قدیمی %%DocumentNeededFonts، %%DocumentSuppliedFonts، %%IncludeFont، %%BeginFont و %%EndFont ) باید استفاده شوند.
رنگهای پیشفرض قلممو (stroke) و پر کردن (fill) سیاه هستند. برای رنگهای تعریفشده در فضای رنگی “rgb”، از setrgbcolor استفاده میشود؛ برای “cmy” و “cmyk”، از setcmykcolor؛ و برای “gray”، از setgray. دستور setcmykcolor یک دستور PostScript در سطح زبان 2 (%LanguageLevel 2) است و بنابراین در برخی از چاپگرهای قدیمی در دسترس نیست.
تایپفیسها (Typefaces)
سبکهای نامگذاریشده با R، I، B و BI در موقعیتهای قلم 1 تا 4 سوار شدهاند. قلمهای متنی در خانوادههای A، BM، C، H، HN، N، P و T گروهبندی شدهاند، که هر یک دارای اعضایی در هر کدام از این سبکها هستند.
- AR
-
AvantGarde-Book
- AI
-
AvantGarde-BookOblique
- AB
-
AvantGarde-Demi
- ABI
-
AvantGarde-DemiOblique
- BMR
-
Bookman-Light
- BMI
-
Bookman-LightItalic
- BMB
-
Bookman-Demi
- BMBI
-
Bookman-DemiItalic
- CR
-
Courier
- CI
-
Courier-Oblique
- CB
-
Courier-Bold
- CBI
-
Courier-BoldOblique
- HR
-
Helvetica
- HI
-
Helvetica-Oblique
- HB
-
Helvetica-Bold
- HBI
-
Helvetica-BoldOblique
- HNR
-
Helvetica-Narrow
- HNI
-
Helvetica-Narrow-Oblique
- HNB
-
Helvetica-Narrow-Bold
- HNBI
-
Helvetica-Narrow-BoldOblique
- NR
-
NewCenturySchlbk-Roman
- NI
-
NewCenturySchlbk-Italic
- NB
-
NewCenturySchlbk-Bold
- NBI
-
NewCenturySchlbk-BoldItalic
- PR
-
Palatino-Roman
- PI
-
Palatino-Italic
- PB
-
Palatino-Bold
- PBI
-
Palatino-BoldItalic
- TR
-
Times-Roman
- TI
-
Times-Italic
- TB
-
Times-Bold
- TBI
-
Times-BoldItalic
یک قلم متنی دیگر عضو هیچ خانوادهای نیست.
- ZCMI
-
ZapfChancery-MediumItalic
قلمهای ویژه شامل موارد زیر هستند: S، قلم نماد (Symbol) در PostScript؛ ZD، قلم Zapf Dingbats؛ SS (نماد مایل / slanted symbol)، که شامل اشکال مایل حروف کوچک یونانی برگرفته از Symbol است؛ EURO، که یک گلیف یورو را برای استفاده در دستگاههای قدیمی فاقد آن فراهم میکند؛ و ZDR، یک نسخه معکوسشده از Zapf Dingbats (با نمادهای برعکسشده حول محور عمودی). بیشتر گلیفها در این قلمها بینام هستند و باید با استفاده از \N به آنها دسترسی پیدا کرد. سه قلم آخر قلمهای استاندارد PostScript نیستند، بلکه توسط groff ارائه شده و بنابراین در پرونده پیشفرض download گنجانده شدهاند.
علاوه بر این، grops از طرحواره نامگذاری تایپفیسهای شرق آسیا پشتیبانی میکند که با grohtml(1)، gropdf(1) و grotty(1) مشترک است.
دستورات افزونه دستگاه (Device extension commands)
برنامه grops دستورات افزونه دستگاه را که توسط درخواست device در groff یا دنباله گریز \X در roff تولید میشوند شناسایی میکند، اما تنها مواردی را تفسیر میکند که با برچسب “ps:” آغاز شوند.
- \X'ps: exec code'
.nr x 1i \X'ps: exec \nx u 0 rlineto stroke'
.nr x 1i .de y ps: exec \nx u 0 rlineto stroke .. \Yy
برنامه grops کد PostScript مشخصشده توسط کاربر را در یک فرهنگ لغت محصور میکند، نه چیزی بیشتر. بهویژه، کد درجشده را به ترتیب با save و restore شروع و پایان نمیدهد. در صورت نیاز، این موارد باید توسط کاربر تأمین شوند.
- \X'ps: file name'
- این دستور همانند دستور exec است به جز اینکه کد PostScript از پرونده name خوانده میشود.
- \X'ps: def code'
- یک تعریف PostScript موجود در code را در پیشگفتار قرار میدهد. به ازای هر دستور \X باید حداکثر یک تعریف وجود داشته باشد. تعاریف طولانی را میتوان بین چندین دستور \X تقسیم کرد؛ تمامی آرگومانهای code به سادگی با خطوط جدید جدا شده و به هم متصل میشوند. تعاریف در فرهنگ لغتی قرار میگیرند که هنگام اجرای یک دستور exec به صورت خودکار روی پشته فرهنگ لغت قرار میگیرد. اگر از دنباله گریز \Y با آرگومانی که نام یک ماکرو است استفاده کنید، code میتواند در چندین خط گسترش یابد.
- \X'ps: mdef n code'
- همانند def، به جز اینکه code میتواند حداکثر تا n تعریف را در بر گیرد. برنامه grops باید بداند که code شامل چه تعداد تعریف است تا بتواند یک فرهنگ لغت PostScript با اندازه مناسب برای نگهداری آنها ایجاد کند.
- \X'ps: import file llx lly urx ury width [height]'
- یک تصویر گرافیکی PostScript را از پرونده file وارد میکند. آرگومانهای llx، lly، urx و ury کادر احاطهکننده (bounding box) گرافیک را در دستگاه مختصات پیشفرض PostScript مشخص میکنند. همگی باید اعداد صحیح باشند: llx و lly مختصات x و y گوشه پایین و سمت چپ گرافیک هستند؛ urx و ury مختصات x و y گوشه بالا و سمت راست گرافیک هستند؛ width و height اعداد صحیحی هستند که پهنا و ارتفاع مورد نظر گرافیک را بر حسب واحدهای پایه groff مشخص میکنند.
- گرافیک به گونهای مقیاسبندی میشود که دارای این پهنا و ارتفاع باشد و به گونهای انتقال مییابد که گوشه پایین و سمت چپ گرافیک در موقعیت مرتبط با دستور \X قرار گیرد. اگر آرگومان ارتفاع حذف شود، به صورت یکنواخت در محورهای x و y مقیاسبندی میشود تا پهنای مشخصشده را داشته باشد.
- محتویات دستور \X توسط troff تفسیر نمیشوند، بنابراین فضای عمودی برای گرافیک به صورت خودکار اضافه نمیگردد، و آرگومانهای width و height مجاز به داشتن نشانگرهای مقیاس متصل نیستند.
- اگر پرونده PostScript با قراردادهای ساختاردهی سند Adobe مطابقت داشته باشد و حاوی یک توضیح %%BoundingBox باشد، آنگاه کادر احاطهکننده میتواند به صورت خودکار از درون ورودی groff با استفاده از درخواست psbb استخراج شود.
- برای توصیف ماکروی PSPIC، که رابطی سطحبالا و راحت را برای گنجاندن گرافیکهای PostScript فراهم میکند، groff_tmac(5) را ببینید.
- \X'ps: invis'
- \X'ps: endinvis'
- هیچ خروجی برای متن و دستورات رسمی که بین این دستورات \X محصور شدهاند تولید نمیشود. این دستورات برای استفاده در زمانی در نظر گرفته شدهاند که خروجی troff پیش از پردازش با grops پیشنمایش داده میشود؛ اگر پیشنمایشگر قادر به نمایش برخی کاراکترها یا سازههای دیگر نباشد، میتوان از کاراکترها یا سازههای جایگزین دیگری با محصور کردن آنها بین این دستورات \X برای پیشنمایش استفاده کرد.
به عنوان مثال، gxditview قادر به نمایش یک کاراکتر مناسب \[em] نیست زیرا قلمهای استاندارد X11 آن را ارائه نمیدهند؛ این مشکل را میتوان با درخواست زیر برطرف ساخت.
-
.char \[em] \X'ps: invis'\ \Z'\v'-.25m'\h'.05m' \D'l .9m 0'\h'.05m''\ \X'ps: endinvis'\[em]
در این حالت، gxditview قادر به نمایش کاراکتر \[em] نیست و خط را رسم میکند، در حالی که grops کاراکتر \[em] را چاپ میکند و خط را نادیده میگیرد (این کد از قبل در پرونده Xps.tmac وجود دارد، که در صورت پیشنمایش سندی که برای grops در نظر گرفته شده با gxditview، بارگیری میشود).
اگر رویه PostScript با نام BPhook از طریق یک دستور افزونه دستگاه “ps: def” یا “ps: mdef” تعریف شده باشد، در آغاز هر صفحه (پیش از اینکه هر چیزی توسط groff رسم یا نوشته شود) اجرا میگردد. برای مثال، برای اینکه کلمه “DRAFT” را با رنگ خاکستری روشن زیر محتویات صفحه قرار دهید، میتوانید از موارد زیر استفاده کنید.
.de XX
ps: def
/BPhook
{ gsave .9 setgray clippath pathbbox exch 2 copy
.5 mul exch .5 mul translate atan rotate pop pop
/NewCenturySchlbk-Roman findfont 200 scalefont setfont
(DRAFT) dup stringwidth pop -.5 mul -70 moveto show
grestore }
def
..
.devicem XX
یا، برای اینکه خطوط و چندضلعیها با کلاهکهای خطی مربعی (square linecaps) و اتصالات فارسی (mitered linejoins) رسم شوند، بهجای کلاهکها و اتصالات گرد که به صورت معمول توسط grops استفاده میشوند، از دستورات زیر استفاده کنید.
.de XX
ps: def
/BPhook { 2 setlinecap 0 setlinejoin } def
..
.devicem XX
پستاسکریپت کپسولهشده (Encapsulated PostScript)
خود برنامه grops اطلاعات کادر احاطهکننده (bounding box) را تولید نمیکند. اسکریپت زیر، groff2eps، یک پرونده EPS تولید میکند.
#!/bin/sh
groff -P-b16 "$1" > "$1".ps
gs -dNOPAUSE -sDEVICE=bbox -- "$1".ps 2> "$1".bbox
sed -e "/^%%Orientation/r $1.bbox" \
-e "/^%!PS-Adobe-3.0/s/$/ EPSF-3.0/" "$1".ps > "$1".eps
rm "$1".ps "$1".bbox
سپس میتوانید از “groff2eps foo” برای تبدیل پرونده foo به foo.eps استفاده کنید.
تروتایپ و سایر قالبهای قلم (TrueType and other font formats)
برای استفاده از قلمهای TrueType با grops، ابتدا آنها را به قالب Type 42 تبدیل کنید، که یک بستهبند (wrapper) PostScript معادل با قالب PFA توصیفشده در pfbtops(1) است. روشهای متعددی برای تولید یک بستهبند Type 42 وجود دارد؛ برخی از آنها شامل استفاده از یک مفسر PostScript مانند Ghostscript هستند—ببینید gs(1).
نرمافزار FontForge بیشتر قالبهای قلم برداری (outline font) را تبدیل میکند. در اینجا نحوه آمادهسازی Roboto Slab Serif برای استفاده با groff آمده است.
MAP=/usr/share/groff/1.24.1/font/devps/generate/text.map
TTF=/usr/share/fonts/truetype/roboto/slab/RobotoSlab-Regular.ttf
BASE=$(basename "$TTF")
INT=${BASE%.ttf}
PFA=$INT.pfa
AFM=$INT.afm
GFN=RSR
DIR=$HOME/.local/groff/font
mkdir -p "$DIR"/devps
fontforge -lang=ff -c "Open(\"$TTF\");\
Generate(\"$DIR/devps/$PFA\");"
afmtodit "$DIR/devps/$AFM" "$MAP" "$DIR/devps/$GFN"
printf "$BASE\t$PFA\n" >> "$DIR/devps/download"
برنامههای fontforge و afmtodit ممکن است بسته به ویژگیهای پرونده قلم هشدارهایی ایجاد کنند. قلم را به صورت زیر آزمایش کنید.
printf ".ft RSR\nHello, world!\n" | groff -F "$DIR" > hello.ps
هنگامی که مطمئن شدید قلم به درستی کار میکند، ممکن است بخواهید هر یک از سبکهای مرتبط موجود را نیز تولید کنید (به عنوان مثال، Roboto Slab همچنین دارای سبکهای “Bold”، “Light” و “Thin” است) و GROFF_FONT_PATH را در محیط خود تنظیم کنید تا شامل پوشهای باشد که قلمهای تولیدشده را در آن نگهداری میکنید، تا نیازی به استفاده از گزینه -F نباشد.
نصب قلم (Font installation)
جهت راحتی شما، groff اسکریپت install-font.bash را ارائه میدهد؛ یک اسکریپت شل که به صورت تعاملی در پیکربندی قلمها برای استفاده با قالببند troff گنو و درایور خروجی grops کمک میکند. بخش “فایلها (FILES)” در ادامه را ببینید.
در ادامه یک راهنمای گامبهگام برای نصب قلم در grops آمده است.
- •
- قلم خود را به قالبی تبدیل کنید که برای groff قابل درک باشد. این یک قلم PostScript نوع 1 در قالب PFA یا یک قلم PostScript نوع 42، به همراه یک پرونده AFM است. یک پرونده PFA به صورت زیر آغاز میشود.
%!PS-AdobeFont-1.0:
%!PS-TrueTypeFont
- •
- پرونده AFM را با استفاده از برنامه afmtodit(1) به یک پرونده توصیف قلم groff تبدیل کنید. برای مثال،
$ afmtodit BrushScriptX-Italic.afm text.map BSI
- اگر یک خانواده قلم دارید که سبکهای معمولی ایستاده (roman)، پررنگ (bold)، مورب (italic) و پررنگ-مورب (bold-italic) را ارائه میدهد (که در آن “italic” ممکن است “oblique” یا “slanted” باشد)، توصیه میکنیم به ترتیب از حروف R، B، I و BI به عنوان پسوند نام خانواده قلم در groff استفاده کنید تا قابلیتهای انتخاب خانواده و سبک قلم در groff فعال شوند. یک مثال، پشتیبانی درونی groff از قلم Times است: نام خانواده قلم به صورت T خلاصه میشود، و نامهای قلم groff بنابراین عبارتند از TR، TB، TI و TBI. با این حال، در مثال ما، قلم BrushScriptX تنها در یک سبک در دسترس است: italic.
- •
- پرونده(های) توصیف قلم groff را در یک زیرپوشه devps درون مسیر جستجویی که groff برای توصیفهای دستگاه و قلم به کار میبرد نصب کنید. مدخل GROFF_FONT_PATH را در بخش “محیط (ENVIRONMENT)” از troff(1) برای مقدار جاری مسیر جستجوی قلم مشاهده کنید. اگرچه groff مستقیماً از پروندههای AFM استفاده نمیکند، اما ایده خوبی است که آنها را در کنار پروندههای توصیف قلم آن ذخیره کنید.
- •
- قلمها را در پرونده devps/download ثبت کنید تا بتوان آنها را برای جاسازی در پروندههای PostScript که grops تولید میکند پیدا کرد. تنها اولین پرونده download یافتشده در مسیر جستجوی قلم خوانده میشود. اگر تردید دارید، پرونده پیشفرض download را (بخش “فایلها (FILES)” در ادامه را ببینید) در اولین پوشه مسیر جستجوی قلم کپی کرده و قلمهای خود را در آنجا اضافه کنید. نام قلم PostScript مورداستفاده توسط grops در فیلد internalname در پرونده توصیف قلم groff ذخیره میشود. (این نام لزوماً شباهتی به نام پرونده قلم ندارد.) خط زیر را به پرونده download اضافه میکنیم.
BrushScriptX-Italic→BrushScriptX-Italic.pfa
- •
- انتخاب و جاسازی قلم جدید را آزمایش کنید.
printf "\\f[BSI]Hello, world!\n" | groff -T ps >hello.ps see hello.pdf
قلمهای قدیمی (Old fonts)
نسخههای 1.19.2 و قبلتر groff حاوی توصیفاتی از مجموعه کمی متفاوتی از 35 قلم پایه سطح 2 پستاسکریپت بودند که توسط Adobe تعریف شده بودند. مجموعه قدیمیتر شامل 314 گلیف و مجموعه بزرگتری از جفتهای کرنینگ (kerning pairs) است؛ مجموعه جدیدتر تنها دارای 229 گلیف است، اما علامت یورو را شامل میشود. برای سازگاری رو به عقب، این توصیفهای قلم قدیمی نیز در پوشه /usr/share/groff/1.24.1/oldfont/devps نصب شدهاند.
برای استفاده از آنها، اطمینان حاصل کنید که grops قلمها را پیش از قلمهای پیشفرض سیستم (با همان نامها) پیدا کند: یا گزینه خط فرمان -F را به grops بدهید،
$ groff -Tps -P-F -P/usr/share/groff/1.24.1/oldfont ...
$ GROFF_FONT_PATH=/usr/share/groff/1.24.1/oldfont \
groff -Tps ...
وضعیت خروج (Exit status)
برنامه grops در صورت اجرای موفق با وضعیت 0 خارج میشود، اگر برنامه نتواند آرگومانهای خط فرمان خود را تفسیر کند با وضعیت 2 خارج میشود، و در صورتی که حین عملیات با خطایی مواجه شود با وضعیت 1 خارج میشود.
محیط (ENVIRONMENT)
- GROFF_FONT_PATH
- فهرستی از پوشهها که در آنها پوشه پروندههای توصیف قلم و دستگاه برای دستگاه خروجی انتخابشده جستجو میشود. troff(1) و groff_font(5) را ببینید.
- GROPS_PROLOGUE
- اگر این متغیر روی foo تنظیم شده باشد، آنگاه grops بهجای پرونده پیشگفتار پیشفرض prologue، از پرونده foo (در مسیر قلم) استفاده میکند. گزینه -P این متغیر محیطی را نادیده گرفته و جایگزین میکند.
- SOURCE_DATE_EPOCH
- یک برچسب زمانی (بیانشده به ثانیه از مبدأ زمان یونیکس) برای استفاده به عنوان برچسب زمان ایجاد خروجی بهجای زمان جاری. این زمان با استفاده از gmtime(3) و asctime(3) به قالبی قابل خواندن توسط انسان تبدیل شده و در یک توضیح PostScript ثبت میشود.
- TZ
- منطقه زمانی مورداستفاده در هنگام تبدیل زمان جاری به قالبی خوانا توسط انسان؛ tzset(3) را ببینید. اگر از SOURCE_DATE_EPOCH استفاده شود، همواره با استفاده از ساعت هماهنگ جهانی (UTC) به قالبی خوانا تبدیل میشود.
فایلها (FILES)
- /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/prologue
- پیشگفتار پیشفرض PostScript است که به ابتدای هر پرونده خروجی اضافه میشود.
- /usr/share/groff/1.24.1/font/devps/text.enc
- طرح کدگذاری مورداستفاده توسط بیشتر قلمهای PostScript نوع 1 را توصیف میکند؛ دستورالعمل encoding پروندههای توصیف قلم برای دستگاه ps به آن ارجاع میدهد.
- /usr/share/groff/1.24.1/tmac/ps.tmac
- ماکروهایی را برای استفاده با دستگاه خروجی ps تعریف میکند. هنگامی که دستگاه خروجی ps انتخاب شود، به طور خودکار توسط troffrc بارگیری میشود.
- /usr/share/groff/1.24.1/tmac/pspic.tmac
- ماکروی PSPIC را برای جاسازی تصاویر در یک سند تعریف میکند؛ groff_tmac(5) را ببینید. به طور خودکار توسط troffrc بارگیری میشود.
- /usr/share/groff/1.24.1/tmac/psold.tmac
- گلیفهای جایگزینی را برای قلمهای متنی که فاقد پوشش کامل مجموعه کاراکترهای ISO Latin-1 هستند فراهم میکند؛ با استفاده از آن، groff میتواند گلیفهایی مانند eth (ð) و thorn (þ) تولید کند که چاپگرهای قدیمیتر PostScript به صورت بومی از آنها پشتیبانی نمیکنند.
- /usr/share/doc/groff-1.24.1/examples/install-font.bash
- این اسکریپت، که توسط Peter Schaffter، نویسنده بسته ماکروی mom، ارائه شده و مدتهاست در وبسایت او در دسترس است، به در دسترس قرار دادن قلمهای TrueType (.ttf)، OpenType (.otf) و PostScript نوع 1 (.pfa، .pfb) برای groff کمک میکند.
- به پوشه آن بروید و دستور “bash install-font.bash -H” را برای توصیفی مشابه صفحه راهنما در مورد ویژگیها و نحوه کارکرد آن اجرا کنید.
برنامه grops پروندههای موقت را با استفاده از الگوی “gropsXXXXXX” ایجاد میکند؛ groff(1) را ببینید.
همچنین ببینید (SEE ALSO)
مشخصات قراردادهای ساختاردهی سند زبان PostScript (DSC)
afmtodit(1), groff(1), troff(1), pfbtops(1), groff_char(7), groff_font(5), groff_out(5), groff_tmac(5)
| 2026-03-15 | groff 1.24.1 |