HBF2GF(1) General Commands Manual HBF2GF(1)

hbf2gf - تبدیل یک فونت بیت‌مپ CJK به زیرفونت‌های قابل استفاده توسط TeX و Omega.

hbf2gf [-q] configuration-file[.cfg]
hbf2gf
[-q] [-p] [-g] [-n] subfont-name x-resolution [y-scale | y-resolution]

hbf2gf -t [-q] subfont-name
hbf2gf --version | --help فونت‌های بیتی CJK را نمی‌توان به‌طور مستقیم با TeX به کار برد، زیرا تعداد نویسه‌ها در این فونت‌ها از 256، که محدودیت یک فونت TeX است، فراتر می‌رود. بنابراین ضروری است که این فونت‌ها به زیرفونت‌ها تقسیم شوند و این دقیقاً همان کاری است که hbf2gf انجام می‌دهد.

همان‌طور که از نامش پیداست، hbf2gf از فونت‌های CJK در قالب خاصی به نام Hanzi Bitmap Font (HBF) استفاده می‌کند. این ساختار صرفاً از فایل(های) بیتی CJK و یک فایل متنی با قالبی بسیار مشابه با قالب BDF در سامانه پنجره‌ای X (X Window System) تشکیل شده است که فایل‌های فونت بیتی را توصیف می‌کند: کدگذاری، اندازه و غیره. فایل‌های GF تولیدشده می‌توانند سپس با gftopk به فایل‌های استاندارد PK تبدیل شوند.

دستور hbf2gf می‌تواند در سه حالت فراخوانی شود:


hbf2gf [-q] configuration-file[.cfg]


این فراخوانی معمولاً مجموعه‌ای از فایل‌های GF، یک فایل PL و یک فایل دسته‌ای (batch file) ایجاد می‌کند که باید پس از پایان کار hbf2gf اجرا شود. این اسکریپت سپس gftopk را فراخوانی می‌کند تا تمام فایل‌های GF را به فایل‌های PK تبدیل کند، و pltotf را فراخوانی می‌کند تا فایل PL را به یک فایل TFM تبدیل نماید. در نهایت، فایل TFM را کپی می‌کند تا هر فایل PK فایل TFM مخصوص به خود را داشته باشد (که همگی یکسان هستند).


اگر ofm_file در فایل پیکربندی روی ‘yes’ تنظیم شده باشد، فایل‌های OFM و OVF نیز ایجاد خواهند شد.


گزینه -q دستور hbf2gf را بی‌صدا می‌کند.


hbf2gf
[-q] [-p] [-g] [-n] subfont-name x-resolution [y-scale | y-resolution]


این حالت برای استفاده به همراه mktexpk و مشتقات آن در نظر گرفته شده است. تنها یک فایل GF به همراه یک فایل PL برای زیرفونت مشخص‌شده محاسبه خواهد شد، که وضوح افقی و ضریب مقیاس عمودی (اگر مقدار کمتر از 10 باشد) یا وضوح عمودی (در غیر این صورت) را از خط فرمان دریافت کرده و پارامتر nmb_fonts در فایل پیکربندی را نادیده می‌گیرد. دو نویسه آخر (که به عنوان شماره زیرفونت تفسیر می‌شوند) حذف می‌شوند تا نام فایل پیکربندی به دست آید (که باید به ‘.cfg’) ختم شود). هیچ فایل اجرایی (job file) ایجاد نخواهد شد. اگر گزینه -p تنظیم شود، هیچ فایل PL ایجاد نمی‌شود. اگر -g تنظیم شود، هیچ فایل GF ایجاد نمی‌شود. پسوند فایل را می‌توان با -n کنترل کرد؛ اگر تنظیم شود، پسوند ‘.gf’ خواهد بود، در غیر این صورت ‘.<resolution>gf’. گزینه -q دستور hbf2gf را بی‌صدا می‌کند.


hbf2gf
-t [-q] subfont-name


این حالت برای استفاده در اسکریپت‌هایی مانند mktexpk در نظر گرفته شده است؛ بررسی می‌کند که آیا نام زیرفونت مشخص‌شده به یک فایل پیکربندی hbf2gf منتهی می‌شود یا خیر. در صورت موفقیت 0 بازمی‌گرداند و نام آن فایل پیکربندی را چاپ می‌کند (به شرطی که گزینه -q تنظیم نشده باشد). این آزمون کامل و دقیق نیست؛ صرفاً دو نویسه آخر را حذف کرده و بررسی می‌کند که آیا فایل پیکربندی با آن نام وجود دارد یا خیر.

برای جزئیات بیشتر درباره فایل‌های پیکربندی، بخش بعدی را ببینید.

مشخص کردن گزینه --version نسخه فعلی hbf2gf و کتابخانه جستجوی فایل مورد استفاده (مانند kpathsea) را بازمی‌گرداند. اطلاعات نحوه استفاده با پارامتر --help نمایش داده می‌شود. در اینجا یک نمونه فایل پیکربندی (gsfs14.cfg) برای یک قلم چینی 56×56 با کدگذاری GB آمده است؛ توجه داشته باشید که تمام اطلاعات مربوط به قلم در فایل jfs56.hbf قرار دارد. برای آگاهی از نحوهٔ یافتن قلم‌های HBF و فایل‌های پیکربندی hbf2gf بخش FILE SEARCHING را ببینید. برای اطلاع از نحوهٔ تهیه قلم‌های CJK به همراه فایل‌های HBF آن، بخش AVAILABILITY را ببینید:

hbf_header     jfs56.hbf
mag_x          1
threshold      128
comment        jianti fansongti 56x56 pixel font
design_size    14.4
y_offset       -13
nmb_files      -1
output_name    gsfs14
checksum       123456789
dpi_x          300
pk_files       no
tfm_files      yes
coding         codingscheme GuoBiao encoded TeX text
pk_directory   $HBF_TARGET/pk/modeless/gb2312/gsfs14/
tfm_directory  $HBF_TARGET/tfm/gb2312/gsfs14/

یک فایل پیکربندی، یک فایل متنی ساده متشکل از کلمات کلیدی و آرگومان‌های آن‌ها است. یک کلمه کلیدی باید در ابتدای یک خط باشد، در غیر این صورت کل خط نادیده گرفته خواهد شد. اگر کلمه‌ای که خط با آن آغاز می‌شود یک کلمه کلیدی نباشد، آن خط نیز نادیده گرفته خواهد شد. خط‌های خالی نیز نادیده گرفته می‌شوند. جستجو برای کلمات کلیدی به بزرگی و کوچکی حروف حساس نیست؛ در مقابل، آرگومان‌ها دقیقاً همان‌گونه که داده شده‌اند در نظر گرفته می‌شوند (به جز ‘yes’ و ‘no’ که می‌توانند با حروف بزرگ یا کوچک نوشته شوند). هر کلمه کلیدی دارای یک آرگومان است که باید با نویسه‌های فاصله (فاصله یا تب) از کلمه کلیدی جدا شده و در همان خط باشد. طول هیچ خطی نباید بیشتر از ۲۵۶ نویسه باشد.

می‌توانید از متغیرهای محیطی در فایل پیکربندی استفاده کنید. نویسهٔ گریز که آغازگر یک متغیر محیطی در فایل پیکربندی است، همواره ‘$’ است، حتی برای سیستم‌عامل‌هایی مانند DOS که قواعد دیگری دارند. دستور hbf2gf تنها نام‌های متغیرهای محیطی را تشخیص می‌دهد که با یک حرف یا یک خط زیر (underscore) آغاز شوند و در ادامه نویسه‌های الفبایی-عددی یا خط زیر داشته باشند. می‌توانید متغیر را درون آکولاد قرار دهید تا پایان نام متغیر مشخص شود، برای نمونه ${FOO}. برای نوشتن علامت دلار باید ‘$$’ را بنویسید. بسط متغیرهای محیطی در خود hbf2gf (بدون کمک روال‌های جستجوی kpathsea، emtexdir یا MiKTeX) بسیار محدود است؛ این ویژگی از نسخه‌های پیشین منتقل شده است. این قابلیت نمی‌تواند متغیرهای تنظیم‌شده در texmf.cnf را بسط دهد؛ همچنین نمی‌تواند بیش از یک دایرکتوری را به عنوان مقدار متغیر مدیریت کند. از آن جز برای پارامترهای ‘pk_directory’ و ‘tfm_directory’ استفاده نکنید!

این فهرستی از تمام کلمات کلیدی ضروری است:

نام فایل سرآیند HBF برای قلم(های) ورودی. دستور hbf2gf از سازوکار جستجوی مشخص‌شده (kpathsea، emtexdir یا MiKTeX) برای یافتن این فایل استفاده می‌کند.
ریشهٔ نام فایل‌های خروجی. یک شمارهٔ ده‌دهی دورقمی متوالی که از ‘01’ آغاز می‌شود، پیوست خواهد شد. برای قلم‌های Unicode کلمه کلیدی unicode در زیر را ببینید. این مقدار تقریباً در تمام موارد با نام فایل پیکربندی یکسان است.

و اینک تمام کلمات کلیدی اختیاری:

عرض نویسه را افزایش می‌دهد. بر هر دو سمت اعمال می‌شود؛ مقدار پیش‌فرض برای گلیف‌های نچرخیده، مقداری است که در سرآیند HBF (HBF_BITMAP_BOUNDING_BOX) آمده و با design_size (به پیکسل) مقیاس‌بندی شده است.
تمام نویسه‌ها را به بالا یا پایین جابه‌جا می‌کند؛ مقدار پیش‌فرض برای گلیف‌های نچرخیده، مقداری است که در سرآیند HBF (HBF_BITMAP_BOUNDING_BOX) آمده و با design_size (به پیکسل) مقیاس‌بندی شده است.
اندازهٔ طراحی قلم (به پوینت). x_offset و y_offset به این اندازه ارجاع دارند. پیش‌فرض 10.0 است.
میزان کجی قلم (به صورت Delta_x / Delta_y داده می‌شود). تنها مقادیر در بازهٔ 0 ≤ slant ≤ 1 مجاز هستند. پیش‌فرض 0.0 است.
اگر روی ‘yes’ تنظیم شود، تمام گلیف‌ها ۹۰ درجه پادساعت‌گرد چرخانده خواهند شد. آفست‌های پیش‌فرض ارائه‌شده در سرآیند HBF نادیده گرفته می‌شوند (و روی 0 تنظیم خواهند شد). پیش‌فرض ‘no’ است.

مقادیر مقیاس‌بندی نویسه‌ها برای رسیدن به اندازهٔ طراحی. اگر تنها یک بزرگ‌نمایی داده شود، مقادیر x و y برابر فرض می‌شوند. پیش‌فرض mag_x = mag_y = 1.0 است.
مقداری بین ۱ و 254 که آستانه‌ای را برای تبدیل نگاشت خاکستری (graymap) درونی به بیت‌مپ خروجی تعیین می‌کند؛ مقادیر کمتر، پیکسل‌های بیشتری را حذف می‌کنند. مقدار پیش‌فرض 128 است.
توضیحی در توصیف قلم؛ مقدار پیش‌فرض هیچ (none) است.
تعداد زیرقلم‌هایی که باید ایجاد شوند. مقدار پیش‌فرض برای ایجاد همهٔ قلم‌ها -1 است.
اگر ‘yes’ باشد، یک عدد هگزادسیمال دو رقمی به عنوان شمارهٔ متوالی استفاده خواهد شد که با مقدار نخستین بایت از نخستین محدودهٔ کد آغاز می‌شود. پیش‌فرض ‘no’ است.
کمترین مقدار کدگذاری. اگر این مقدار با کمترین کد نویسه در فایل HBF یکسان نباشد، باید آن را برای دریافت آفست‌های درست زیرفایل تنظیم کنید.

تفکیک‌پذیری افقی و عمودی چاپگر (بر حسب dpi). اگر تنها یک تفکیک‌پذیری داده شود، مقادیر x و y یکسان فرض می‌شوند. پیش‌فرض 300 است.
یک چکسام برای تطبیق دادن فایل‌های GF با فایل‌های مناسب TFM. مقدار پیش‌فرض این عدد صحیح ۳۲ بیتی بدون علامت 0 است..TP coding یک توضیح برای توصیف طرح کدگذاری؛ پیش‌فرض هیچ (none) است.
دایرکتوری مقصد فایل‌های PK ؛ پیش‌فرض: هیچ (none). توجه! فایل بچ بررسی نخواهد کرد که آیا این دایرکتوری وجود دارد یا خیر.
دایرکتوری مقصد فایل‌های TFM ؛ پیش‌فرض: هیچ (none). توجه! فایل بچ بررسی نخواهد کرد که آیا این دایرکتوری وجود دارد یا خیر.
تعیین ایجاد شدن یا نشدن فایل‌های PK ؛ پیش‌فرض ‘yes’ است.
تعیین ایجاد شدن یا نشدن فایل‌های TFM ؛ پیش‌فرض ‘yes’ است.
تعیین ایجاد شدن یا نشدن یک فایل OPL ؛ پیش‌فرض ‘no’ است. سپس فایل بچ از ovp2ovf توزیع Omega برای تبدیل آن به یک فایل OFM و یک فایل OVF استفاده خواهد کرد. فایل OPL صرفاً تمام زیرقلم‌ها را دوباره به یک قلم واحد Omega نگاشت می‌کند.
اگر ‘yes’ باشد، فایل‌های PK شامل وضوح در پسوند خواهند بود (مانند gsso1201.300pk). این مورد فقط بر فایل بچ تأثیر می‌گذارد (پیش‌فرض ‘yes’ است).
دستور شل برای حذف فایل‌ها؛ پیش‌فرض: ‘rm’.
دستور شل برای رونوشت فایل‌ها؛ پیش‌فرض: ‘cp’.
پسوند فایل بچ که gftopk و pltotf را برای تبدیل فایل‌های GF و PL به ترتیب به فایل‌های PK و TFM فراخوانی می‌کند؛ پیش‌فرض هیچ (none) است.

hbf2gf برای جستجوی فایل‌ها از یکی از کتابخانه‌های kpathsea، emtexdir، یا MiKTeX استفاده می‌کند (emtexdir تنها روی سیستم‌عامل‌هایی با پیش‌زمینه شبه MS-DOS یعنی MS-DOS، OS/2 و Windows کار خواهد کرد؛ MiKTeX برای سیستم‌های Win32 است). نسخهٔ واقعی kpathsea در صورت اجرای دستور hbf2gf --version روی صفحه نمایش داده می‌شود.

در اینجا جدولی از نوع فایل و متغیرهای متناظر kpathsea آمده است.



.hbf MISCFONTS
.cfg HBF2GFINPUTS

لطفاً برای جزئیات بیشتر دربارهٔ این متغیرها، فایل‌های info مربوط به kpathsea را مطالعه کنید. تصمیم‌گیری دربارهٔ این‌که از کدام طرح نام‌گذاری برای متغیرها استفاده شود، در زمان کامپایل انجام می‌گیرد.

شما باید متغیر TEXMFCNF را روی پوشه‌ای که فایل پیکربندی texmf.cnf شما در آن قرار دارد تنظیم کنید.

در اینجا دستور مناسب برای یافتن مقداری که یک متغیر kpathsea روی آن تنظیم شده آمده است (ما از MISCFONTS به عنوان مثال استفاده می‌کنیم). این روش به ویژه زمانی مفید است که متغیری در texmf.cnf یا در محیط تنظیم نشده باشد، و در نتیجه به مقدار پیش‌فرضی اشاره دارد که به صورت سخت‌کد شده درون کتابخانهٔ kpathsea قرار دارد.


kpsewhich -progname=hbf2gf -expand-var='$MISCFONTS'

ما نام برنامه را نیز انتخاب می‌کنیم چرا که امکان مشخص کردن متغیرهایی وجود دارد که تنها برای یک برنامهٔ خاص جستجو می‌شوند – در مثال ما این متغیر MISCFONTS.hbf2gf خواهد بود.

روشی مشابه اما نه کاملاً یکسان، اجرای دستور زیر است:


kpsewhich -progname=hbf2gf -show-path='misc fonts'

[فهرست کاملی از انواع قالب‌ها را می‌توان با وارد کردن ‘kpsewhich --help’ در خط فرمان به دست آورد.] این دقیقاً روشی است که hbf2gf برای جستجوی فایل‌ها استفاده می‌کند؛ عیب این روش آن است که تمام متغیرها بسط داده می‌شوند که می‌تواند رشته‌های بسیار طولانی ایجاد کند.

در اینجا فهرست پسوندها و متغیرهای محیطی مربوط به آن‌ها که باید در autoexec.bat (یا به ترتیب در config.sys برای OS/2) تنظیم شوند آمده است:



.hbf HBFONTS
.cfg HBFCFG

اگر یکی از متغیرها تنظیم نشده باشد، یک پیام هشدار صادر می‌شود. پوشهٔ جاری همیشه جستجو خواهد شد. طبق معمول، افزودن یک علامت تعجب به انتهای مسیر پوشه باعث جستجوی زیرپوشه‌ها تا یک سطح عمق می‌شود و دو علامت تعجب باعث جستجو در تمام زیرپوشه‌ها می‌گردد. مثال:


HBFONTS=c:\fonts\hbf!!;d:\myfonts\hbf!

ساختارهایی مانند ‘c:\fonts!!\hbf’ امکان‌پذیر نیستند.

لطفاً برای جزئیات بیشتر به مستندات MiKTeX مراجعه کنید.

اندازه خروجی x و y نباید از MAX_CHAR_SIZE، که در زمان کامپایل تعریف می‌شود فراتر رود؛ مقدار پیش‌فرض آن 1023 (پیکسل) است.

ttf2pk(1)

hbf2gf.w:
این کد منبع نوشته شده به زبان CWEB است که می‌تواند با استفاده از cweave به یک سند آراسته TeX تبدیل شود. بسته CJK همچنین شامل یک فایل hbf2gf.pdf از پیش قالب‌بندی‌شده است.

فایل‌های مستندات CJK (hbf2gf.txt).

استاندارد Hanzi Bitmap File (HBF) نسخه 1.3؛ موجود در ftp.ifcss.org.

مستندات Omega موجود در ftp.ens.fr و میزبان‌ها و آینه‌های CTAN.

*.cfg
اسکریپت‌های پیکربندی hbf2gf.
*.hbf
فایل‌های سرآیند HBF که فونت‌های بیت‌مپ با عرض ثابت را توصیف می‌کنند. توجه داشته باشید که نام(های) خود فونت بیت‌مپ مشخص‌شده در فایل‌های سرآیند، برای hbf2gf اهمیتی ندارند.

hbf2gf بخشی از بسته ماکروی CJK برای LaTeX 2e است که در میزبان‌های CTAN و آینه‌های آن در دسترس است.

فونت‌های CJK به همراه فایل‌های سرآیند HBF را می‌توان در ftp.ifcss.org و آینه‌های آن پیدا کرد.

Werner Lemberg <wl@gnu.org>
Ross Paterson (the HBF API) <ross@soi.city.ac.uk>

16-Oct-2021 CJK Version 4.8.5