SETFONT(8) دستورهای مدیریتی و نگهداری SETFONT(8)

setfont - بارگذاری و تنظیم قلم و جدول نگاشت نمایشگر کنسول متنی

setfont [ گزینهها... ] [ فایل_قلم... ]

دستور setfont قلمهای متنی EGA/VGA و جدولهای تطبیق یونیکد را در درایور کنسول لینوکس بارگذاری میکند. این دستور قلم را از فایل font.new می‌خواند و در مولد نویسه (character generator) کارت‌های گرافیک EGA/VGA بارگذاری می‌کند، و در صورت نیاز می‌تواند قلم پیشین را نیز به عنوان خروجی ذخیره کند. این دستور همچنین می‌تواند انواع جدول‌های نگاشت را بارگذاری کرده و نسخه‌های پیشین آن‌ها را خروجی دهد.

اگر هیچ آرگومانی مشخص نشود (یا فقط گزینه -N برای یک عدد دلخواه N)، آنگاه قلم پیش‌فرض (8xN) بارگذاری می‌شود (توضیحات پایین را ببینید). می‌توان چندین قلم کوچک که همگی حاوی جدول یونیکد هستند را تعیین کرد، و دستور setfont آن‌ها را با یکدیگر ادغام کرده و اجتماع آن‌ها را بارگذاری خواهد کرد.

کاربردهای متداول:

بارگذاری قلم پیش‌فرض.
setfont drdos8x16
بارگذاری یک قلم مشخص (در اینجا قلم ۴۴۸ گلیفی drdos).
setfont cybercafe -u cybercafe
بارگذاری یک قلم مشخص که فاقد جدول نگاشت یونیکد است، به همراه معرفی صریح یک جدول نگاشت.
setfont LatArCyrHeb-19 -m 8859-2
بارگذاری یک قلم مشخص (در اینجا یک قلم ۵۱۲ گلیفی که چند مجموعه نویسه را ترکیب کرده است) و مشخص کردن اینکه مجموعه نویسه محلی کاربر ISO 8859-2 است.

نکته: اگر یک قلم بیش از ۲۵۶ گلیف داشته باشد، تنها ۸ رنگ از ۱۶ رنگ به صورت هم‌زمان قابل استفاده خواهند بود. این امر می‌تواند خوانایی و جلوه بصری کنسول را کاهش دهد (کاهش شدت روشنایی و حتی حذف برخی رنگ‌ها).

قالب استاندارد قلم در لینوکس، قالب PSF است. این قالب دارای یک هدر است که ویژگی‌های قلم مانند اندازه نویسه را توصیف می‌کند، پس از آن بیت‌مپ‌های هر گلیف قرار دارند و در صورت تمایل، یک جدول نگاشت یونیکد در انتهای آن می‌آید که مقدار یونیکد هر گلیف را ارائه می‌دهد. چندین قالب قلم دیگر (که قدیمی و منسوخ هستند) نیز شناسایی می‌شوند. اگر فایل ورودی دارای قالب کدپیج (code page، معمولاً با پسوند .cp) باشد که حاوی سه قلم با اندازه‌هایی مانند 8x8 و 8x14 و 8x16 است، باید یکی از گزینه‌های -8 یا -14 یا -16 برای انتخاب یکی از آن‌ها به کار رود. فایل‌های خام قلم (Raw font files)، فایل‌های باینری با اندازه 256*N بایت هستند که حاوی تصاویر بیتی برای تک‌تک ۲۵۶ نویسه، یک بایت برای هر خط اسکن، و N بایت برای هر نویسه (0 < N <= 32) می‌باشند. بیشتر قلم‌ها پهنای ۸ بیتی دارند، اما با دستگاه‌های فریم‌بافر (fb) می‌توان از پهناهای دیگر نیز استفاده کرد.

برنامه setfont دانش درونی در مورد حالت‌های ویدیویی VGA ندارد، بلکه صرفاً از هسته درخواست می‌کند که ROM نویسه کارت ویدیویی را با بیت‌مپ‌های معینی پر کند. با این حال، از نسخه ۱.۳.۱ لینوکس به بعد، هسته اطلاعات کافی درباره حالت‌های ویدیویی EGA/VGA دارد تا فاصله خطوط متفاوتی را انتخاب کند. ارتفاع پیش‌فرض نویسه برابر با عدد N خواهد بود که از خود قلم استخراج شده یا با گزینه مشخص شده است. با این حال، کاربر می‌تواند ارتفاع نویسه متفاوتی (H) را با استفاده از گزینه -h تعیین کند.

در مسیر خروجی برنامه کاربر تا نمایش در صفحه کنسول، چندین مرحله نگاشت دخیل هستند. اگر کنسول در حالت utf8 باشد (به unicode_start(1) مراجعه کنید)، آنگاه هسته انتظار دارد که خروجی برنامه کاربر با کدگذاری UTF-8 باشد (به utf-8(7) مراجعه کنید) و آن را به یونیکد (ucs2) تبدیل می‌کند. در غیر این صورت، از یک جدول تبدیل برای برگرداندن خروجی ۸ بیتی برنامه به مقادیر یونیکد ۱۶ بیتی استفاده می‌شود. به چنین جدول تبدیلی نگاشت کنسول یونیکد (Unicode console map) گفته می‌شود. چهار نوع از این جدول‌ها وجود دارد: سه مورد درون هسته تعبیه شده‌اند و چهارمین مورد با استفاده از گزینه -m دستور setfont قابل تنظیم است. یک دنباله گریز (escape sequence) میان این چهار جدول انتخاب انجام می‌دهد؛ پس از بارگذاری یک cmap، دستور setfont دنباله گریز Esc ( K را ارسال می‌کند که آن را به عنوان تبدیل فعال قرار می‌دهد.

آرگومان‌های مناسب برای گزینه -m برای نمونه عبارتند از: 8859-1، 8859-2، ...، 8859-15، cp437، ...، cp1250.

با داشتن مقدار یونیکد نمادی که قرار است نمایش یابد، هسته گلیف مناسب را با استفاده از اطلاعات نگاشت یونیکد قلم پیدا کرده و نمایش می‌دهد.

قلم‌های قدیمی فاقد اطلاعات نگاشت یونیکد هستند و برای مدیریت آن‌ها، نگاشت‌های مستقیم به قلم (direct-to-font maps، که با -m بارگذاری می‌شوند) وجود دارند که تطابق میان بایت‌های کاربر و موقعیت‌های قلم را برقرار می‌کنند. رایج‌ترین تطابق، همان موردی است که در فایل trivial ارائه شده است (جایی که مقادیر بایتی کاربر مستقیماً به عنوان موقعیت‌های قلم استفاده می‌شوند). گاهی تطابق‌های دیگر ترجیح داده می‌شوند چرا که سخت‌افزار ویدیویی PC انتظار دارد نویسه‌های رسم خط (line drawing) در موقعیت‌های خاصی از قلم قرار داشته باشند.

تعیین آرگومان -m none از بارگذاری و فعال‌سازی یک جدول نگاشت جلوگیری می‌کند. نگاشت پیشین کنسول را می‌توان با گزینه -om file در یک فایل ذخیره کرد. این گزینه‌های setfont دستور mapscrn(8) را منسوخ می‌سازند. (با این وجود، مطالعه آن صفحه راهنما می‌تواند مفید باشد.)

تطابق میان گلیف‌های قلم و مقادیر یونیکد توسط یک جدول نگاشت یونیکد توصیف می‌شود. بسیاری از قلم‌ها یک جدول نگاشت یونیکد در درون فایل قلم خود دارند، و می‌توان با استفاده از گزینه -u یک جدول مشخص را معرفی کرد. برنامه setfont چنین جدول نگاشت یونیکدی را بارگذاری خواهد کرد، مگر اینکه آرگومان -u none داده شود. جدول نگاشت یونیکد قبلی با استفاده از گزینه -O به عنوان بخشی از فایل قلم ذخیره‌شده نگهداری خواهد شد. همچنین می‌توان با استفاده از گزینه -ou file آن را در فایلی جداگانه ذخیره کرد. این گزینه‌های setfont دستور loadunimap(8) را منسوخ می‌سازند.

جدول نگاشت یونیکد باید به مقدار «نویسه گمشده» U+fffd گلیفی اختصاص دهد، در غیر این صورت نویسه‌های گمشده ترجمه نشده و معمولاً نتیجه بسیار گیج‌کننده‌ای حاصل می‌شود.

معمولاً نیازی به هیچ جدول نگاشتی نیست و یک جدول نگاشت یونیکد از پیش درون قلم قرار دارد (گاهی با پسوند .psfu مشخص می‌شود)، بنابراین نیازی نیست بیشتر کاربران نگران معنا و کارکرد دقیق این جدول‌های نگاشت باشند.

می‌توان با استفاده از psfaddtable(1) یک جدول نگاشت یونیکد را به یک قلم psf اضافه کرد.

بارگذاری قلم پیش‌فرض (default8xN).
بازنویسی ارتفاع قلم. در گزینه کوتاه نباید هیچ فاصله‌ای بین پیشوند و عدد وجود داشته باشد.
دو برابر کردن اندازه قلم با تکرار تمام پیکسل‌های آن به صورت عمودی و افقی. این گزینه برای نمایشگرهای با تراکم پیکسلی بالا (مانند "4k") مناسب است که قلم‌های استاندارد در آن‌ها بسیار کوچک و ناخوانا هستند. با توجه به محدودیت‌های هسته، این قابلیت تنها برای قلم‌های 16x16 یا کوچک‌تر مناسب است.
ذخیره قلم پیشین در FILE.
ذخیره نگاشت کنسول در FILE.
ذخیره نگاشت یونیکد پیشین در FILE.
ذخیره قلم پیشین و نگاشت یونیکد در FILE.
بارگذاری نگاشت کنسول یا نگاشت کنسول یونیکد از FILE.
بارگذاری جدول یونیکد توصیف‌کننده قلم از FILE.
تنظیم قلم برای کنسول مشخص‌شده. (ممکن است نیازمند دسترسی ریشه/مدیر سیستم باشد.)
بارگذاری اجباری نگاشت یونیکد: دستور setfont فراخوانی سیستمی بارگذاری نگاشت یونیکد را صادر می‌کند حتی اگر نگاشت تعیین‌شده خالی باشد. این گزینه در موارد خاص می‌تواند مفید باشد.
بازنشانی قلم صفحه، اندازه، و نگاشت یونیکد به مقادیر پیش‌فرض زمان راه‌اندازی سیستم (bootup).
نمایش خروجی با جزئیات کامل.
نمایش نسخه برنامه و خروج.
نمایش پیام راهنما در مورد گزینه‌ها و خروج.

سخت‌افزار ویدیویی PC به کاربر اجازه می‌دهد از بیت «شدت» (intensity) یا برای تعیین روشنایی استفاده کند، یا برای آدرس‌دهی ۵۱۲ گلیف (به جای ۲۵۶ گلیف) در قلم. بنابراین، اگر قلم بیش از ۲۵۶ گلیف داشته باشد، رنگ‌های کنسول به ۸ رنگ (به جای ۱۶ رنگ) کاهش می‌یابند.

/usr/share/consolefonts
پوشه پیش‌فرض قلم‌ها.
/usr/share/unimaps
پوشه پیش‌فرض نگاشت‌های یونیکد.
/usr/share/consoletrans
پوشه پیش‌فرض نگاشت‌های صفحه کنسول.

قلم پیش‌فرض فایلی به نام default (یا default8xN اگر گزینه -N برای یک عدد N داده شده باشد) است، که ممکن است پسوند مناسبی (مانند .psf) داشته باشد.

psfaddtable(1), unicode_start(1), loadunimap(8), utf-8(7), mapscrn(8)

Eugene G. Crosser (crosser@pccross.msk.su)
Andries E. Brouwer (aeb@cwi.nl)
مه ۲۰۲۵ kbd