.TH MF 1 "15 January 2026" "Web2C 2026" .\"===================================================================== .if n .ds MF Metafont .if t .ds MF Metafont .if t .ds TX \fRT\\h'-0.10m'\\v'0.17v'E\\v'-0.17v'\\h'-0.06m'X\fP .if n .ds TX TeX .ie t .ds OX \fIT\h'-0.17m'\v'+0.21m'E\v'-0.21m'\h'-0.04m'X\fP .el .ds OX TeX .\"===================================================================== .SH "نام (NAME)" mf, inimf, mf-nowin \- Metafont، زبانی برای طراحی قلم و نشان‌واره .SH "خلاصه دستور (SYNOPSIS)" .B mf .RI [ options ] .RI [ \fB&\fPbase ] \h'.25' [ \fIfile\fP [ \fImore-input\fP ] \h'.5'|\h'.5' [ \fB\e\fP\fImore-input\fP ] .\"===================================================================== .SH "توضیحات (DESCRIPTION)" \*(MF برنامه مبدأ را از فایل‌های مشخص‌شده می‌خواند و نقشه‌های بیتی قلم را در قالب .I gf (قلم عمومی یا generic font) و ابعاد قلم را در قالب .I tfm (ابعاد قلم \*(TX یا \*(TX font metric) خروجی می‌دهد. زبان \*(MF در کتاب .IR "The \*(MFbook" توصیف شده است. به‌طور کلی، برنامه‌های \*(MF چگونگی رسم نویسه‌ها در قلم‌ها یا سایر شکل‌ها را به روشی الگوریتمی توصیف می‌کنند. .PP روش معمول استفاده، اجرای دستور زیر است: .IP \fBmf\ \fP '\\\|mode=\fIprintengine\fP; [mag=magstep(\fIn\fP);]' input\ \fI font \fP .PP تا فایل .I font.mf با Metafont پردازش شود. .PP پردازش خط فرمان \fBmf\fP اساساً مشابه \*(TX است، به‌جز اینکه انتساب مرسوم به \fImode\fP در خط فرمان به این معناست که فراخوانی \fBmf\fP با چند دستور (همان‌طور که نشان داده شد) و نه صرفاً با یک نام فایل معمول است. بدون بک‌اسلش اولیه، \*(MF دقیقاً مانند \*(TX تلاش خواهد کرد فایلی با نام \fImode\fP را بخواند. در یونیکس، استفاده از نقل‌قول تکی (single quote) ساده‌ترین راه برای جلوگیری از تفسیر (نادرست) بک‌اسلش، نقطه‌ویرگول، پرانتزها و غیره توسط شل است. همچنین می‌توانید .I mf را بدون آرگومان اجرا کرده و دستورها را در سطر بعدی، در پاسخ به اعلان «**» مربوط به \fBmf\fP، بدون هیچ نقل‌قولی وارد کنید. .PP در هر دو حالت، سایر دستورهای \*(MF، مانند .I batchmode (برای کارکرد بی‌صدا) نیز می‌توانند قرار بگیرند. پسوند پیش‌فرض، «.mf»، می‌تواند با مشخص کردن صریح یک پسوند بازنویسی (override) شود. .PP نام .I font به عنوان «jobname» در نظر گرفته می‌شود و در تشکیل نام فایل‌های خروجی استفاده می‌شود. اگر \*(MF در خط اول نام فایلی دریافت نکند، نام کار .IR mfput خواهد بود. لاگ پیام‌های خطا به فایل \fIjobname\fP\fB.\fP\fIlog\fP می‌رود. فایل‌های خروجی شامل \fIjobname\fP\fB.\fP\fItfm\fP (برای ابعاد قلم) و \fIjobname\fP\fB.\fP\fI<\fPnumber\fI>gf\fP (برای نقشه‌های بیتی) هستند، که در آن به تفکیک‌پذیری (وضوح) و بزرگ‌نمایی قلم تولیدشده بستگی دارد. .PP هنگامی که \*(TX نتواند قلمی را پیدا کند، Metafont همچنین می‌تواند توسط \*(TX از طریق (برای نمونه) اسکریپت .BR mktextfm (1) (به آن رجوع کنید) فراخوانی شود. .PP .B خروجی Metafont .PP به‌صورت درونی، Metafont منحنی‌های بزیه درجه‌سوم (و خطوط مستقیم) را از برنامه مبدأ Metafont محاسبه می‌کند. با این حال، همان‌طور که در بالا ذکر شد، خروجی اصلی Metafont یک فایل نقشه‌بیتی (bitmap) است؛ یعنی با در نظر گرفتن دستگاه خروجی مورد نظر (بخش بعد را ببینید)، Metafont عملیات رستریزاسیون (شطرنجی‌سازی) را خودش انجام می‌دهد. (چرا؟ چون هدف کانوث از ایجاد \*(TX و Metafont کنترل کامل بر حروف‌چینی کتاب‌های خودش تا سطح تک‌تک پیکسل‌ها بود.) .PP از سوی دیگر، امروزه داشتن قلم‌های برداری (outline fonts) در خروجی‌های pdf (یا موارد دیگر) از \*(TX (یا سایر پردازنده‌های اسناد) تقریباً فراگیر شده است. این امکان وجود دارد که اسپلاین‌های محاسبه‌شده توسط Metafont را از فایل لاگ آن استخراج کرد، یا اینکه Metafont یک نقشه‌بیتی با وضوح بالا تولید کند و با ردگیری آن (مثلاً با .BR autotrace (1))، دوباره به اسپلاین‌ها رسید؛ اما هر دوی این روش‌ها در بهترین حالت ناخوشایند هستند. استفاده از MetaPost .RB ( mpost (1)) راحت‌تر است، که به‌جای نقشه‌های بیتی خروجی PostScript می‌دهد، و به‌جای نسخه‌های شطرنجی‌شده، اسپلاین‌ها را خروجی می‌دهد. کدهای منبع Metafont عموماً بدون تغییر نمی‌توانند در MetaPost استفاده شوند، اما بسیار به هم نزدیک هستند. مقاله‌ای دقیق در این‌باره، در پروژه‌ای نسبتاً اولیه، توسط ریچارد کینچ (Richard Kinch) نوشته شده است: MetaFog: Converting Metafont shapes to contours, \fITUGboat\fP 16:3, https://tug.org/TUGboat/tb16-3/tb48kinc.pdf). .PP فایل ابعاد قلم \fItfm\fP که توسط Metafont خروجی داده می‌شود شامل اطلاعات ابعاد نویسه‌ها (ارتفاع، عرض، عمق) به همراه اطلاعات لیگچرها، فاصله‌گذاری بین جفت‌حروف (kerns) و غیره است؛ به‌طور خلاصه، هر آنچه برای حروف‌چینی با این قلم نیاز است. این فایل شامل خود شکل‌ها نمی‌شود. در مقابل، قلم‌های OpenType و TrueType هم اطلاعات ابعاد و هم اطلاعات شکل‌ها را در بر دارند، به همراه قابلیت‌های بسیار بیشتر (به‌طور بالقوه) برای حروف‌چینی در خط‌های غیرلاتین، که \*(TX و Metafont اولیه در سطح عام و مدرن به مدیریت آن‌ها نمی‌پردازند. (پروژه‌های زیادی برای حروف‌چینی با \*(TX در خط‌های غیرلاتین، چه پیش از یونیکد و چه همراه با یونیکد پس از در دسترس قرار گرفتن آن، وجود داشته است. مقالات مربوطه در \fITUGboat\fP را می‌توان در آدرس زیر یافت: https://tug.org/TUGboat/Contents/listkeyword.html#CatTAGMultilingualDocumentProcessing.) .PP مشخصات فنی قالب‌های \fIgf\fP (نقشه‌بیتی) و \fItfm\fP (ابعاد قلم) در برنامه مبدأ Metafont یا هر یک از برنامه‌های کمکی کاربردی برای قالب‌های مربوطه موجود است؛ فهرست انتهای صفحه را ببینید. .PP .B حالت‌ها (تعاریف دستگاه) .PP در فراخوانی فوق، .I mode مربوط به \fIprintengine\fP باید نام یک دستگاه واقعی (مانند \fIljfour\fP) یا .IR localfont باشد. اگر حالتی مشخص نشود یا معتبر نباشد، \*(MF به‌طور پیش‌فرض در حالت .I proof قرار می‌گیرد که تصاویر بزرگی از نویسه‌ها را برای استفاده در طراحی قلم تولید می‌کند. حالت proof یک فایل خروجی با پسوند .2602gf (۳۶ پیکسل در هر نقطه) تولید خواهد کرد. یک فایل gf در حالت proof می‌تواند توسط .BR gftodvi (1) به یک سند قابل چاپ تبدیل شود. این خروجی حالت proof در کتاب \fIThe \*(MFbook\fP، پیوست H (نمونه‌های چاپی یا Hardcopy Proofs) بیشتر شرح داده شده است، و مثال‌هایی برای کل خانواده قلم Computer Modern در کتاب .I "Computer Modern Typefaces" (جلد E از مجموعه .IR "Computers & Typesetting" ) نشان داده شده است. .PP حالت‌ها با ماکروی .I mode_def تعریف می‌شوند که خروجی قلم را با تعریف مواردی مانند وضوح دستگاه، با یک دستگاه خروجی خاص تطبیق می‌دهد. فایل \fImodes.mf\fP (https://ctan.org/pkg/modes) همراه با \*(TX Live توزیع شده و به‌طور پیش‌فرض استفاده می‌شود؛ این فایل پارامترهای مختلف را شرح می‌دهد، بیش از ۱۵۰ حالت را تعریف می‌کند (از افزودن ورودی‌های بیشتر استقبال می‌شود)، و \fIlocalfont\fP را به عنوان \fIljfour\fP (یک چاپگر ۶۰۰ دی‌پی‌آی HP LaserJet) تعریف می‌نماید. .PP امروزه خروجی‌ها غالباً به‌صورت آنلاین مشاهده می‌شوند که در آن‌ها نقشه‌های بیتی با وضوح بالا مورد نیاز است. چندین تعریف در \fImodes.mf\fP می‌توانند برای این منظور استفاده شوند: حالتی با نام \fIpdf\fP (یا \fIdpdfezzz\fP در نسخه‌های قدیمی‌تر) نقشه‌های بیتی را با وضوح 8000 dpi تولید می‌کند (سایر پارامترها مقادیر متعارف دارند). اگر وضوح کمتری می‌خواهید، حالت‌های متعارف مشابه شامل \fIsupre\fP با 2400 و \fIultre\fP با 1200 هستند. .PP کتاب \fIThe \*(MFbook\fP جزئیات و مثال‌های بیشتری از حالت‌ها، به‌ویژه در فصل ۱۱ (بزرگ‌نمایی و وضوح تصویر) ارائه می‌دهد. .PP .B پله‌های بزرگ‌نمایی (Magsteps) .PP سامانهٔ .I magsteps دقیقاً همان چیزی است که در \*(TX استفاده می‌شود، به‌طوری که مقادیر \fIn\fP در فراخوانی فوق عموماً یکی از مقادیر 0.5، 1، 2، 3، 4 یا 5 است، هرچند از نظر اصولی می‌تواند هر مقداری باشد. بزرگ‌نمایی می‌تواند نه به‌صورت فراخوانی به magstep بلکه به عنوان مقداری دلخواه مانند 1.315 برای ایجاد اندازه‌های خاص نویسه نیز مشخص شود. همچنین می‌تواند کاملاً حذف شود، همان‌طور که در بالا نشان داده شد. .PP .B انتخاب پایه (.base) .PP مانند \*(TX، برنامه \*(MF نیز معمولاً با مجموعه بزرگی از ماکروهای از پیش کامپایل‌شده به نام «base» (پایه) استفاده می‌شود؛ پایهٔ \fIplain\fP به عنوان بخشی از \*(MF توزیع می‌شود و پرکاربردترین آن‌ها است. .PP پیاده‌سازی \*(MF در \*(TX Live (معروف به Web2C) خط فرمان خود را بررسی می‌کند تا ببیند با چه نامی فراخوانی شده است، درست همان کاری که \*(TX انجام می‌دهد. به‌طور خلاصه، نام‌های \fBinimf\fP و \fBvirmf\fP فایل \fIplain.base\fP را می‌خوانند، و هر نام دیگری فایل base متناظر با همان نام را می‌خواند. برای جزئیات به .BR tex (1) مراجعه کنید. نام فراخوانی \fBmf-nowin\fP یک حالت ویژه در \*(MF است که از \fImf.base\fP استفاده می‌کند؛ بخش زیر را ببینید. .PP .B مدیریت خطا (Error handling).PP به .BR tex (1) مراجعه کنید؛ بازیابی خطای Metafont کاملاً مشابه آن است. نام متغیر محیطی برای ویرایشگر MFEDIT است. .PP .B خروجی گرافیکی برخط .PP برخلاف \*(TX، \*(MF می‌تواند نتایج پردازش خود را به‌صورت برخط و هم‌زمان با اجرا نمایش دهد. \*(MF می‌تواند از اکثر نمایشگرهای امروزی استفاده کند. فصل\~23 کتاب .I "The \*(MFbook" آنچه را می‌توانید انجام دهید شرح می‌دهد. \*(MF از متغیرهای محیطی برای تعیین دستگاه نمایشگر مورد استفاده بهره می‌برد. .PP ابتدا به دنبال متغیر MFTERM می‌گردد؛ اگر MFTERM تنظیم نشده باشد، اما DISPLAY تنظیم شده باشد، پشتیبانی پنجره Metafont برای X به کار گرفته می‌شود. (DISPLAY طبق معمول باید روی یک مشخصه معتبر از کارساز X تنظیم شده باشد.) اگر نه MFTERM و نه DISPLAY هیچ‌کدام تنظیم نشده باشند، از TERM برای حدس زدن پشتیبانی پنجره مناسب استفاده می‌شود. اگر هیچ‌یک از این‌ها یافت نشود، هیچ خروجی برخطی دریافت نخواهید کرد. .PP مقادیر پشتیبانی‌شده برای MFTERM و TERM در https://tug.org/texinfohtml/web2c.html#Online-Metafont-graphics فهرست شده‌اند. از آنجا که این مقادیر عمدتاً قدیمی هستند، به‌ندرت استفاده می‌شوند و به‌طور پیش‌فرض در \*(TX Live فعال نیستند، این فهرست در اینجا تکرار نشده است. .PP دو متغیر پیکربندی Kpathsea با نام‌های \fIscreen_width\fP و \fIscreen_depth\fP پهنا و ارتفاع پنجره مورد استفاده توسط Metafont را تعیین می‌کنند. آن‌ها را می‌توان در متغیرهای محیطی یا در یک فایل پیکربندی Kpathsea (https://tug.org/texinfohtml/kpathsea.html#Path-sources) تنظیم کرد. مقادیر پیش‌فرض آن‌ها به‌ترتیب 1664 و 1200 است. .PP به‌طور پیش‌فرض، \*(TX Live به همراه دو باینری \*(MF توزیع می‌شود: .B mf و .BR mf-nowin . باینری .B mf از گرافیک پشتیبانی می‌کند، در حالی که باینری .B mf-nowin پشتیبانی نمی‌کند. باینری .B mf-nowin توسط اسکریپت‌هایی مانند .BR mktexpk (1) استفاده می‌شود، که در آن‌ها پشتیبانی گرافیکی به‌جای اینکه کمکی باشد، بیشتر مایه دردسر است. .\"===================================================================== .SH "گزینه‌ها (OPTIONS)" برای مشاهده جزئیات تجزیه خط فرمان و گزینه‌های موجود (به‌جز موارد مختص به \*(TX) به .BR tex (1) مراجعه کنید. تنها گزینه مختص به Metafont، گزینه \fB-base\fP است که کاملاً مشابه \fB-format\fP در \*(TX عمل می‌کند. .\"===================================================================== .SH "محیط (ENVIRONMENT)" برای اطلاعات عمومی و جزئیات بیشتر به .BR tex (1) مراجعه کنید. توضیحات مختصر ارائه‌شده در اینجا صرفاً یک راهنما هستند. متغیرهای محیطی بسیار بیشتری وجود دارند که می‌توانند بر رفتار جستجوی مسیر تأثیر بگذارند. .TP .B TEXMFOUTPUT در صورت تنظیم، اگر ذخیره فایل‌های خروجی در پوشه جاری ممکن نباشد، \*(MF تلاش می‌کند آن‌ها را در اینجا قرار دهد. .TP .B MFINPUTS مسیر جستجو برای فایل‌های .IR input . .TP .B MFEDIT الگوی دستوری برای رفتن به ویرایشگر. .TP .B MFTERM نمایشگر گرافیکی برخط را تعیین می‌کند. بالا را ببینید. .TP .B screen_width, screen_depth پهنا و ارتفاع پنجره گرافیکی برخط. .\"===================================================================== .SH "ابزارهای قلم (FONT UTILITIES)" در اینجا گزیده‌ای از برنامه‌های کاربردی اصلی که همراه با \*(MF ارائه می‌شوند آمده است: .TP \w'gftodvi'u+2n .B gftopk یک فایل .I gf را دریافت کرده و یک فایل قلم .I pk کوچک‌تر تولید می‌کند. .TP .B gftodvi برگه‌های نمونه (proof sheets) را برای قلم‌ها تولید می‌کند. .TP .B gftype محتویات یک فایل .I gf را با نمادها و/یا تصاویر نمایش می‌دهد. .TP .B pktype محتویات یک فایل .I pk را به‌صورت نمادین نمایش می‌دهد. .TP .B mft یک فایل منبع را همان‌گونه که در .I "Computer Modern Typefaces" نشان داده شده است، قالب‌بندی می‌کند. .\"=====================================================================.SH "فایل‌ها (FILES)" .TP .I $TEXMFMAIN/metafont/base/plain.mf پایه استاندارد. .TP .I $TEXMFMAIN/metafont/misc/modes.mf فایلی از .IR mode_def ها برای بسیاری از دستگاه‌ها. https://ctan.org/pkg/modes را ببینید. .TP .I *.base فایل‌های پایهٔ پیش‌پردازش‌شدهٔ \*(MF. .TP .I "mf.pool" متن کدگذاری‌شدهٔ پیام‌های \*(MF. .\"===================================================================== .SH "گزارش باگ‌ها (BUGS)" Knuth همچنان گزارش باگ‌های جدید برای \*(MF را می‌پذیرد، اما تنها هر چند سال یک‌بار آن‌ها را بررسی می‌کند. برای مشاهدهٔ فهرستی از گزارش‌های ارسال‌شده و اطلاعات بیشتر: https://tug.org/texmfbug .\"===================================================================== .SH "هشدار سلامتی (HEALTH WARNING)" از \fIThe \*(MFbook\fP: «طراحی قلم می‌تواند برای سایر علایق شما خطرآفرین باشد. هنگامی که گرفتار آن شوید، احساسات شدیدی نسبت به اَشکال حروف پیدا خواهید کرد؛ رسانه بر پیام‌هایی که می‌خوانید تحمیل خواهد شد و پیوسته به بهبود قلم‌هایی که در همه جا می‌بینید، به‌ویژه قلم‌های طراحی‌شده توسط خودتان، فکر خواهید کرد.» .\"===================================================================== .SH "همچنین ببینید (SEE ALSO)" .BR gftopk (1), .BR gftodvi (1), .BR gftype (1), .BR mft (1), .BR pktogf (1), .BR pltotf (1), .BR tftopl (1). .br .BR mktexmf (1), .BR mktexpk (1), .BR mktextfm (1). .br .BR mpost (1), .BR tex (1). .PP Donald E. Knuth, .I "The \*(MFbook" (جلد C از .IR "Computers & Typesetting" ). .br Donald E. Knuth, .I "\*(MF: The Program" (جلد D از .IR "Computers & Typesetting" ). .br Donald E. Knuth, .I Computer Modern Typefaces (جلد E از .IR "Computers & Typesetting" ). .br .PP برخی اطلاعات برخط: .br Metafont برای مبتدیان، نوشتهٔ Geoffrey Tobin: https://ctan.org/pkg/metafont-beginners .br پیاده‌سازی‌های قلم Metafont (تقریباً همگی برگرفته از Computer Modern هستند): https://ctan.org/topic/font-mf .PP صفحات وب \*(TX Live: https://tug.org/texlive .br راهنما و صفحه وب Texinfo مربوط به Web2C: https://tug.org/web2c .br راهنما و صفحه وب Texinfo مربوط به Kpathsea: https://tug.org/kpathsea .br سورس‌های برنامه‌نویسی ادیبانهٔ دنیای \*(TX، در قالب pdf: https://ctan.org/pkg/knuth-pdf .PP .I TUGboat (نشریهٔ گروه کاربران \*(TX، از ارسال مقالات استقبال می‌شود): https://tug.org/TUGboat .br به‌ویژه موضوع \fIFonts\fP: https://tug.org/TUGboat/Contents/listkeyword.html#CatTAGFonts .\"=====================================================================.SH "نویسندگان (AUTHORS)" \*(MF توسط Donald E. Knuth ایجاد شد، که آن را با استفاده از سیستم WEB خود برای برنامه‌های Pascal پیاده‌سازی کرد. این برنامه در ابتدا توسط Paul Richards در University of Illinois at Urbana-Champaign به Unix پورت شد. نسخه‌ای که اکنون در \*(TX Live، توزیع فعلی \*(TX در Unix، گنجانده شده است، توسط سیستم Web2C تولید می‌شود که در ابتدا توسط Tomas Rokicki و Tim Morgan نوشته شده بود. این صفحهٔ راهنما در ابتدا توسط Pierre MacKay نوشته شد. .PP گزارش باگ‌ها در \*(MF (بسیار نادر): https://tug.org/texmfbug .br فهرست پستی عمومی برای پرسش‌ها و گزارش‌های پیاده‌سازی: https://lists.tug.org/tex-k .br فهرست گفتگوی عمومی برای همهٔ موارد مربوط به \*(MF (و \*(TX): https://lists.tug.org/texhax