| FONTS-CONF(5) | FONTS-CONF(5) |
نام (NAME)
fonts.conf - پروندههای پیکربندی قلم
خلاصه دستور (SYNOPSIS)
/etc/fonts/fonts.conf /etc/fonts/fonts.dtd /etc/fonts/conf.d $XDG_CONFIG_HOME/fontconfig/conf.d $XDG_CONFIG_HOME/fontconfig/fonts.conf ~/.fonts.conf.d ~/.fonts.conf
توضیحات (DESCRIPTION)
کتابخانهٔ Fontconfig برای ارائهٔ پیکربندی، سفارشیسازی و دسترسی به قلمها در سطح سامانه برای برنامهها طراحی شده است.
نمای کلی عملکرد (FUNCTIONAL OVERVIEW)
کتابخانهٔ Fontconfig از دو بخش اساسی تشکیل شده است: بخش پیکربندی که یک پیکربندی درونی را بر اساس پروندههای XML میسازد، و بخش تطبیق که الگوهای قلم را دریافت کرده و نزدیکترین قلم منطبق را برمیگرداند.
پیکربندی قلم (FONT CONFIGURATION)
بخش پیکربندی شامل نوعدادهٔ FcConfig، کتابخانهٔ libexpat و تابع FcConfigParse است که درخت XML را پیمایش کرده و پیکربندی را با دادههای یافتشده در آن تکمیل میکند. از دیدگاه بیرونی، پیکربندی کتابخانه شامل تولید یک درخت معتبر XML و ارسال آن به FcConfigParse است. تنها سازوکار دیگری که برای تغییر پیکربندی در حال اجرا به برنامهها ارائه شده، افزودن قلمها و شاخهها به فهرست پروندههای قلم ارائهشده توسط برنامه است.
هدف این است که پیکربندیهای قلم نسبتاً ایستا بوده و میان بیشترین تعداد برنامههای ممکن به اشتراک گذاشته شوند. امید میرود که این کار به گزینش پایدارتر قلم در زمان انتقال نامها از یک برنامه به برنامهٔ دیگر منجر شود. XML به عنوان قالب پروندهٔ پیکربندی انتخاب شد زیرا قالبی را فراهم میکند که ویرایش آن برای ابزارهای خارجی آسان است و همزمان ساختار و نحو صحیح را حفظ میکند.
پیکربندی قلم از تطبیق قلم جدا است؛ برنامههایی که نیاز به انجام تطبیق اختصاصی خود دارند میتوانند به قلمهای موجود در کتابخانه دسترسی داشته باشند و تطبیق خصوصی را انجام دهند. هدف این است که به برنامهها اجازه داده شود قابلیتهای مناسب را از کتابخانه انتخاب کنند، به جای آنکه مجبور شوند میان این کتابخانه و یک سازوکار پیکربندی خصوصی یکی را برگزینند. امید است که این امر متمرکز شدن پیکربندی قلمها برای همهٔ برنامهها را در یک مکان تضمین کند. متمرکز کردن پیکربندی قلم، نصب و سفارشیسازی قلمها را ساده و منظم خواهد کرد.
ویژگیهای قلم (FONT PROPERTIES)
اگرچه الگوهای قلم میتوانند اساساً شامل هر ویژگی باشند، اما برخی ویژگیهای شناختهشده با انواع دادهٔ مشخص وجود دارند. Fontconfig از برخی از این ویژگیها برای تطبیق و تکمیل قلم استفاده میکند. سایر موارد برای تسهیل سازوکار رندر برنامهها ارائه شدهاند.
ویژگی نوع توضیحات
--------------------------------------------------------------
family String نامهای خانواده قلم
familylang String زبانهای متناظر با هر خانواده
style String سبک قلم؛ بر وزن (weight) و شیب (slant) تقدم دارد
stylelang String زبانهای متناظر با هر سبک
fullname String نامهای کامل قلم (اغلب شامل سبک است)
fullnamelang String زبانهای متناظر با هر نام کامل
slant Int ایتالیک (italic)، اریب (oblique) یا رومی (roman)
weight Int نازک (light)، متوسط (medium)، نیمهپررنگ (demibold)، پررنگ (bold) یا سیاه (black)
width Int فشرده (condensed)، عادی (normal) یا باز (expanded)
size Double اندازه به پوینت (point size)
aspect Double کشیدگی افقی گلیفها پیش از هینتینگ
pixelsize Double اندازه به پیکسل
spacing Int متناسب (proportional)، عرض دوگانه (dual-width)، تکعرض (monospace) یا خانه نویسه (charcell)
foundry String نام شرکت سازنده قلم (foundry)
antialias Bool آیا گلیفها میتوانند هموارسازی (antialiased) شوند
hintstyle Int سبک هینتینگ خودکار
hinting Bool آیا رسترساز باید از هینتینگ استفاده کند
verticallayout Bool استفاده از چیدمان عمودی
autohint Bool استفاده از هینتر خودکار به جای هینتر معمولی
globaladvance Bool استفاده از دادههای پیشروی سراسری قلم (منسوخ شده)
file String نام پرونده حاوی قلم
index Int نمایه قلم در داخل پرونده
ftface FT_Face استفاده از شیء FreeType face مشخصشده
rasterizer String کدام رسترساز در حال استفاده است (منسوخ شده)
outline Bool آیا گلیفها برداری (outline) هستند
scalable Bool آیا گلیفها برداری هستند یا رنگی
dpi Double تعداد نقاط در اینچ هدف (DPI)
rgba Int ناشناخته (unknown)، rgb، bgr، vrgb، vbgr،
none - هندسه زیرپیکسل
scale Double ضریب مقیاس برای تبدیل پوینت به پیکسل (منسوخ شده)
minspace Bool حذف فاصله سرخط از فاصله خطوط
charset CharSet نویسههای یونیکد کدگذاریشده توسط قلم
lang String فهرست زبانهای سبک RFC-3066 که این قلم پشتیبانی میکند
fontversion Int شماره نسخه قلم
capability String فهرست قابلیتهای چیدمان در قلم
fontformat String نام رشتهای قالب قلم
embolden Bool رسترساز باید قلم را به صورت مصنوعی پررنگ کند
embeddedbitmap Bool استفاده از بیتمپ جاسازیشده به جای طرح برداری
decorative Bool آیا سبک یک گونهٔ تزیینی است
lcdfilter Int نوع فیلتر LCD
namelang String نام زبان مورد استفاده برای مقدار پیشفرض
familylang، stylelang و fullnamelang
fontfeatures String فهرست برچسبهای ویژگیهای OpenType جهت فعالسازی
prgname String نام برنامه در حال اجرا
postscriptname String نام خانواده قلم در PostScript
color Bool آیا گلیفی دارای رنگ است
symbol Bool آیا قلم از کدگذاری نماد مایکروسافت استفاده میکند
fontvariations String رشته جدا شده با کاما از محورها در قلم متغیر
variable Bool آیا قلم از نوع قلم متغیر (Variable Font) است
fonthashint Bool آیا قلم دارای هینتینگ است
order Int شماره ترتیب قلم
desktop String نام میزکار فعلی
namedinstance Bool آیا قلم یک نمونه نامگذاریشده (named instance) است
fontwrapper String قالب بستهبندی قلم، مقادیر فعلی WOFF، WOFF2،
SFNT برای سایر قلمهای SFNT، و CFF برای قلمهای مستقل CFF هستند.
genericfamily Int نوع خانواده عمومی (Generic Family)
تطبیق قلم (FONT MATCHING)
کتابخانهٔ Fontconfig تطبیق را با سنجش فاصله از یک الگوی ارائهشده تا تمام قلمهای موجود در سامانه انجام میدهد. نزدیکترین قلم منطبق انتخاب میشود. این امر تضمین میکند که همواره یک قلم بازگردانده خواهد شد، اما تضمین نمیکند که دقیقاً شبیه به الگوی درخواستی باشد.
تطبیق قلم با یک الگوی ساختهشده توسط برنامه آغاز میشود. ویژگیهای مورد نظر برای قلم نهایی در یک الگو جمعآوری میشوند. هر ویژگی الگو میتواند شامل یک یا چند مقدار باشد؛ این مقادیر بر اساس اولویت مرتب شدهاند؛ مواردی که در ابتدای فهرست قرار دارند "نزدیکتر" از موارد بعدی تلقی میشوند.
الگوی اولیه با اعمال فهرستی از دستورالعملهای ویرایش ویژهٔ الگوها که در پیکربندی یافت میشوند تغییر مییابد؛ هر یک شامل یک شرط تطبیق و مجموعهای از عملیات ویرایش است. این دستورالعملها به ترتیبی که در پیکربندی ظاهر شدهاند اجرا میشوند. هر تطبیق موجب اعمال توالی متناظر عملیات ویرایش میگردد.
پس از ویرایش الگو، توالیای از جایگزینیهای پیشفرض برای استانداردسازی مجموعه ویژگیهای موجود انجام میشود؛ این کار از نیاز لایههای پایینی به ارائه مداوم مقادیر پیشفرض برای ویژگیهای مختلف قلم در هنگام رندر جلوگیری میکند.
الگوی استانداردشدهٔ قلم سرانجام با تمام قلمهای موجود مقایسه میشود. فاصله الگو تا قلم برای چندین ویژگی سنجیده میشود: foundry، charset، family، lang، spacing، pixelsize، style، slant، weight، antialias، rasterizer و outline. این فهرست بر اساس اولویت مرتب شده است -- نتایج مقایسه عناصر ابتدایی این فهرست وزن بیشتری نسبت به عناصر بعدی دارند.
یک حالت خاص برای این قاعده وجود دارد؛ نامهای خانواده به دو پیوند قوی (strong) و ضعیف (weak) تقسیم میشوند. به نامهای خانواده قوی در تطبیق اولویت بیشتری نسبت به عناصر lang داده میشود، در حالی که نامهای خانواده ضعیف اولویت کمتری نسبت به عناصر lang دریافت میکنند. این امر به زبان سند اجازه میدهد تا در صورت عدم دسترسی به قلم مشخصشده در سند، هدایت انتخاب قلم را بر عهده بگیرد.
الگوی نمایندهٔ آن قلم گسترش مییابد تا شامل هر ویژگی موجود در الگو باشد که در خود قلم یافت نشده است؛ این به برنامه اجازه میدهد تا دستورالعملهای رندر یا هر دادهٔ دیگری را از طریق سامانه تطبیق منتقل کند. سرانجام، فهرست دستورالعملهای ویرایش ویژهٔ قلمها که در پیکربندی موجود است بر الگو اعمال میشود. این الگوی تغییریافته به برنامه بازگردانده میشود.
مقدار بازگشتی حاوی اطلاعات کافی برای مکانیابی و رسترسازی قلم، از جمله نام پرونده، اندازه پیکسلی و سایر دادههای رندر است. از آنجا که هیچیک از این اطلاعات وابسته به کتابخانه FreeType نیست، برنامهها آزادند از هر موتور رسترسازی استفاده کنند یا مستقیماً به پرونده قلم شناساییشده دسترسی داشته باشند.
توالیهای تطبیق/ویرایش در پیکربندی طی دو مرحله انجام میشوند، زیرا اساساً دو عملیات مختلف لازم است -- نخستین عملیات اصلاح نحوه انتخاب قلمها است؛ نامهای مستعار خانوادهها و افزودن پیشفرضهای مناسب. دومین عملیات اصلاح نحوه رسترسازی قلمهای انتخابشده است. این موارد باید روی قلم انتخابشده اعمال شوند، نه الگوی اولیه، زیرا تطبیقهای نادرست مکرراً رخ میدهند.
نامهای قلم (FONT NAMES)
کتابخانهٔ Fontconfig یک نمایش متنی برای الگوها فراهم میکند که هم میتواند آن را دریافت کند و هم تولید نماید. این نمایش از سه بخش تشکیل شده است: ابتدا فهرستی از نامهای خانواده، سپس فهرستی از اندازههای پوینت و در نهایت فهرستی از ویژگیهای اضافی:
<families>-<point sizes>:<name1>=<values1>:<name2>=<values2>...
مقادیر موجود در یک فهرست با کاما جدا میشوند. نام لزوماً نباید شامل خانواده یا اندازه پوینت باشد؛ این موارد را میتوان حذف کرد. علاوه بر این، ثوابت نمادینی وجود دارند که همزمان یک نام و یک مقدار را مشخص میکنند. در اینجا چند نمونه آورده شده است:
نام معنی
----------------------------------------------------------
Times-12 قلم Times Roman با اندازه ۱۲ پوینت
Times-12:bold قلم Times Bold با اندازه ۱۲ پوینت
Courier:italic قلم Courier Italic در اندازه پیشفرض
Monospace:matrix=1 .1 0 1 قلم تکعرض ترجیحی کاربر
همراه با اریبسازی مصنوعی
نویسههای '\'، '-'، ':' و ',' در نامهای خانواده باید با یک نویسهٔ '\' همراه شوند تا از تفسیر اشتباه آنها جلوگیری شود. بهطور مشابه، مقادیر حاوی '\'، '='، '_'، ':' و ',' نیز باید با نویسهٔ '\' همراه شوند. هنگام خوانده شدن نام قلم، نویسههای '\' از نام خانواده و مقادیر حذف میشوند.
اشکالزدایی برنامهها (DEBUGGING APPLICATIONS)
برای کمک به عیبیابی مشکلات قلم و برنامهها، fontconfig همراه با مقدار زیادی قابلیت اشکالزدایی داخلی فعال ساخته شده است. این قابلیت از طریق متغیر محیطی FC_DEBUG کنترل میشود. مقدار این متغیر به عنوان یک عدد تفسیر میشود و هر بیت در آن مقدار، پیامهای اشکالزدایی متفاوتی را کنترل میکند.
نام مقدار معنی --------------------------------------------------------- MATCH 1 اطلاعات مختصر درباره تطبیق قلم MATCHV 2 اطلاعات تفصیلی تطبیق قلم EDIT 4 نظارت بر اجرای تطبیق/آزمون/ویرایش (match/test/edit) FONTSET 8 ردیابی بارگذاری اطلاعات قلم هنگام راهاندازی CACHE 16 مشاهده پروندههای حافظه پنهان در حال نوشتن CACHEV 32 اطلاعات تفصیلی نوشتن پرونده حافظه پنهان PARSE 64 (دیگر استفاده نمیشود) SCAN 128 مشاهده پروندههای قلم هنگام پویش برای ساخت حافظه پنهان SCANV 256 اطلاعات تفصیلی پویش پروندههای قلم MEMORY 512 نظارت بر مصرف حافظه fontconfig CONFIG 1024 نظارت بر پروندههای پیکربندی بارگذاریشده LANGSET 2048 نمایش مجموعههای نویسه برای ساخت مقادیر lang MATCH2 4096 نمایش تبدیلهای تطبیق قلم در الگوها
مقادیر سطوح اشکالزدایی مورد نظر را با هم جمع کرده و مقدار حاصل را (در مبنای ۱۰) پیش از اجرای برنامه به متغیر محیطی FC_DEBUG اختصاص دهید. خروجی این گزارشها به خروجی استاندارد (stdout) ارسال میشود.
برچسبهای زبان (LANG TAGS)
هر قلم در پایگاه داده شامل فهرستی از زبانهایی است که پشتیبانی میکند. این مقدار با مقایسه پوشش یونیکد قلم با شیوه نگارش هر زبان محاسبه میشود. زبانها با استفاده از نامگذاری سازگار با RFC-3066 برچسبگذاری میشوند و از دو بخش تشکیل شدهاند -- برچسب زبان بر اساس ISO 639 به همراه یک خط تیره و سپس کد کشور بر اساس ISO 3166. خط تیره و کد کشور میتوانند حذف شوند.
کتابخانهٔ Fontconfig شیوههای نگارش چندین زبان را بهصورت درونساخت داراست. به جز بازسازی کتابخانه، سازوکاری برای افزودن موارد جدید در نظر گرفته نشده است. این کتابخانه در حال حاضر از ۱۲۲ زبان از ۱۳۹ زبان نامبرده در ISO 639-1، ۱۴۱ زبان دارای کد دوحرفی از ISO 639-2 و ۳۰ زبان دیگر که تنها کد سهحرفی دارند پشتیبانی میکند. زبانهایی که دارای هر دو کد دو و سهحرفی هستند تنها با کد دوحرفی ارائه شدهاند.
برای زبانهایی که در چندین سرزمین با مجموعههای نویسه بهشدت متفاوت استفاده میشوند، fontconfig شیوههای نگارش مجزا به ازای هر سرزمین را در بر دارد. این موارد شامل آذربایجانی، کردی، پشتو، تیگرینیا و چینی است.
قالب پرونده پیکربندی (CONFIGURATION FILE FORMAT)
پروندههای پیکربندی fontconfig در قالب XML ذخیره میشوند؛ این قالب نوشتن ابزارهای پیکربندی خارجی را آسانتر کرده و اطمینان میدهد که آنها پروندههای پیکربندی با نحو صحیح تولید میکنند. از آنجا که پروندههای XML متن ساده هستند، کاربران پیشرفته میتوانند آنها را با ویرایشگر متن نیز ویرایش کنند.
تعریف نوع سند (DTD) کتابخانهٔ fontconfig در موجودیت خارجی "fonts.dtd" قرار دارد؛ این پرونده معمولاً در شاخه پیشفرض پیکربندی قلم (/etc/fonts) ذخیره میشود. هر پرونده پیکربندی باید ساختار زیر را داشته باشد:
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> ... </fontconfig>
<FONTCONFIG>
این عنصر، عنصر سطح بالا برای یک پیکربندی قلم است و میتواند شامل عناصر <dir>، <cachedir>، <include>، <match> و <alias> با هر ترتیبی باشد.
<DIR PREFIX= DEFAULT" SALT="">"
این عنصر حاوی نام یک شاخه است که برای یافتن پروندههای قلم جهت افزودن به مجموعه قلمهای در دسترس پویش میشود.
اگر 'prefix' روی "default" یا "cwd" تنظیم شود، شاخه کاری جاری به عنوان پیشوند مسیر قبل از مقدار اضافه میشود. اگر 'prefix' روی "xdg" تنظیم شود، مقدار متغیر محیطی XDG_DATA_HOME به عنوان پیشوند مسیر اضافه خواهد شد؛ لطفاً برای جزئیات بیشتر به مشخصات XDG Base Directory مراجعه کنید. اگر 'prefix' روی "relative" تنظیم شود، مسیر پرونده جاری قبل از مقدار اضافه میشود.
ویژگی 'salt' بر تعیین نام پرونده حافظه پنهان تأثیر میگذارد. این ویژگی برای نمونه هنگام داشتن مجموعههای متفاوتی از قلمها در مسیر یکسان در کانتینر و اشتراکگذاری قلمها از میزبان در مسیر قلم متفاوت مفید است.
<CACHEDIR PREFIX= DEFAULT">"
این عنصر حاوی نام شاخهای است که قرار است حافظه پنهان اطلاعات قلم در آن ذخیره یا از آن خوانده شود. اگر چندین عنصر در پرونده پیکربندی مشخص شده باشد، شاخهای که در فهرست ابتدا قابل دسترسی باشد برای ذخیره پروندههای حافظه پنهان استفاده خواهد شد. اگر با '~' آغاز شود، به شاخهای در شاخه خانگی کاربر اشاره دارد. اگر 'prefix' روی "xdg" تنظیم شود، مقدار متغیر محیطی XDG_CACHE_HOME به عنوان پیشوند مسیر اضافه میشود. شاخه پیشفرض ``$XDG_CACHE_HOME/fontconfig'' است و شامل پروندههای حافظه پنهانی با نام ``<hash value>-<architecture>.cache-<version>'' است، که در آن <version> شماره نسخه پرونده حافظه پنهان fontconfig است (در حال حاضر ۱۲).
<INCLUDE IGNORE_MISSING= NO" PREFIX="DEFAULT">"
این عنصر حاوی نام یک پرونده یا شاخه پیکربندی اضافی است. در صورت شاخه بودن، هر پرونده درون آن شاخه که با یک رقم اسکی (U+0030 - U+0039) شروع شده و به رشته ``.conf'' ختم شود به ترتیب مرتبشده پردازش میشود. هنگامی که نوع داده XML توسط FcConfigParse پیمایش میشود، محتویات پرونده(ها) نیز با ارسال نام پرونده(ها) به FcConfigLoadAndParse در پیکربندی ادغام میشود. اگر 'ignore_missing' به جای مقدار پیشفرض "no" روی "yes" تنظیم شود، گم شدن پرونده یا شاخه هیچ پیام هشداری از سوی کتابخانه صادر نخواهد کرد. اگر 'prefix' روی "xdg" تنظیم شود، مقدار متغیر محیطی XDG_CONFIG_HOME به عنوان پیشوند مسیر اضافه خواهد شد.
<CONFIG>
این عنصر مکانی را برای یکپارچهسازی اطلاعات پیکربندی اضافی فراهم میکند. عنصر <config> میتواند شامل عناصر <blank> و <rescan> با هر ترتیبی باشد.
<DESCRIPTION DOMAIN= FONTCONFIG-CONF">"
این عنصر برای نگهداری رشتههایی است که کاربرد یک پیکربندی را توصیف میکنند. این رشته میتواند از طریق gettext ترجمه شود. ویژگی 'domain' باید روی نام مناسب تنظیم شود تا اعمال گردد. کتابخانهٔ fontconfig تلاش خواهد کرد ترجمهها را با 'domain' از gettext دریافت کند.
<BLANK>
قلمها اغلب شامل گلیفهای "خراب" هستند که در کدگذاری ظاهر میشوند اما روی صفحه بهصورت خالی رسم میشوند. درون عنصر <blank>، هر نویسه یونیکد را که باید خالی باشد در یک عنصر <int> قرار دهید. نویسههای خارج از این مجموعه که بهصورت خالی رسم شوند، از مجموعه نویسههای پشتیبانیشده توسط قلم حذف خواهند شد.
<REMAP-DIR PREFIX= DEFAULT" AS-PATH="" SALT="">"
این عنصر حاوی نام شاخهای است که به عنوان مسیر 'as-path' در اطلاعات حافظه پنهان نگاشت خواهد شد. این ویژگی زمانی مفید است که نام شاخه یک نام مستعار (از طریق bind mount یا پیوند نمادین) به شاخه دیگری در سامانه باشد که اطلاعات قلم در حافظه پنهان آن احتمالاً از پیش موجود است.
ویژگی 'salt' مانند عنصر <dir> بر تعیین نام پرونده حافظه پنهان اثر میگذارد.
<RESET-DIRS />
این عنصر تمام شاخههای قلم که توسط عناصر <dir> اضافه شدهاند را حذف میکند. این ویژگی برای بازنویسی شاخههای قلم سامانه و استفاده انحصاری از شاخههای قلم اختصاصی مفید است.
<RESCAN>
عنصر <rescan> یک عنصر <int> را در بر دارد که فاصله زمانی پیشفرض بین بررسیهای خودکار برای تغییرات پیکربندی قلم را مشخص میکند. Fontconfig تمام پروندهها و شاخههای پیکربندی را اعتبارسنجی کرده و با سپری شدن این بازه زمانی، ساختارهای داده داخلی را بهطور خودکار بازسازی میکند.
<SELECTFONT>
این عنصر برای قرار دادن قلمها در فهرست مجاز/غیرمجاز جهت فهرست شدن یا تطبیق استفاده میشود. این عنصر شامل عناصر acceptfont و rejectfont است. این فهرست تنها یکبار هنگام بارگذاری حافظه پنهان اعمال میشود؛ بنابراین اگر میخواهید با الگوهایی فیلتر کنید، الگوها تنها با موارد موجود در حافظه پنهان ارزیابی میشوند. به عبارت دیگر، الگوهای هدف به جز "scan" هیچ اثری نخواهند داشت.
<ACCEPTFONT>
قلمهای منطبق با یک عنصر acceptfont "مجاز" تلقی میشوند؛ چنین قلمهایی صریحاً در مجموعه قلمهای مورد استفاده برای پاسخ به درخواستهای فهرست و تطبیق گنجانده میشوند؛ گنجاندن آنها در این فهرست از "غیرمجاز" شدن آنها توسط یک عنصر rejectfont محافظت میکند. عناصر acceptfont شامل عناصر glob و pattern هستند که برای تطبیق قلمها به کار میروند.
<REJECTFONT>
قلمهای منطبق با یک عنصر rejectfont "غیرمجاز" تلقی میشوند؛ چنین قلمهایی از مجموعه قلمهای مورد استفاده برای پاسخ به درخواستهای فهرست و تطبیق حذف میشوند، گویی در سامانه وجود ندارند. عناصر rejectfont شامل عناصر glob و pattern هستند که برای تطبیق قلمها به کار میروند.
<GLOB>
عناصر glob الگوهای تطبیق نام پرونده به سبک پوسته (شامل ? و *) را نگه میدارند که قلمها را بر اساس مسیر کامل آنها مطابقت میدهد. اگر با '~' آغاز شود، به شاخهای در شاخه خانگی کاربر اشاره دارد. این عنصر میتواند برای حذف مجموعهای از شاخهها (/usr/share/fonts/uglyfont*) یا انواع خاصی از پروندههای قلم (*.pcf.gz) استفاده شود، اما سازوکار اخیر به شدت به قراردادهای نامگذاری پرونده وابسته است که قابل اتکا نیستند. توجه داشته باشید که globها فقط برای شاخهها اعمال میشوند، نه قلمهای تکی.
<PATTERN>
عناصر pattern تطبیق به سبک فهرست را روی قلمهای ورودی انجام میدهند؛ یعنی شامل فهرستی از عناصر و مقادیر متناظر هستند. اگر همهٔ آن عناصر دارای مقدار منطبق باشند، الگو با قلم مطابقت دارد. این روش میتواند برای انتخاب قلمها بر اساس ویژگیهای قلم (scalable، bold و غیره) استفاده شود که سازوکاری قابلاعتمادتر از پسوندهای پرونده است. عناصر pattern شامل عناصر patelt هستند.
<PATELT NAME= PROPERTY">"
عناصر patelt یک عنصر الگوی منفرد و فهرستی از مقادیر را نگه میدارند. آنها باید یک ویژگی 'name' داشته باشند که نام عنصر الگو را مشخص میکند. عناصر patelt شامل عناصر int، double، string، matrix، bool، charset و const هستند.
<MATCH TARGET= PATTERN">"
این عنصر ابتدا فهرستی (احتمالاً خالی) از عناصر <test> و سپس فهرستی (احتمالاً خالی) از عناصر <edit> را نگه میدارد. الگوهایی که با تمام آزمونها مطابقت داشته باشند مشمول تمام ویرایشها میشوند. اگر 'target' به جای مقدار پیشفرض "pattern" روی "font" تنظیم شود، این عنصر به جای الگوی قلمِ در حال تطبیق، بر نام قلم حاصل از یک تطبیق اعمال میشود. اگر 'target' روی "scan" تنظیم شود، این عنصر هنگام پویش قلم برای ساخت پایگاه داده fontconfig اعمال میگردد.
<TEST QUAL= ANY" NAME="PROPERTY" TARGET="DEFAULT" COMPARE="EQ">"
این عنصر شامل یک مقدار منفرد است که با ویژگی "property" هدف ('pattern'، 'font'، 'scan' یا 'default') مقایسه میشود. 'compare' میتواند یکی از مقادیر "eq"، "not_eq"، "less"، "less_eq"، "more"، "more_eq"، "contains" یا "not_contains" باشد. 'qual' میتواند مقدار پیشفرض "any" باشد (که در آن صورت اگر هر مقداری مرتبط با ویژگی با مقدار آزمون مطابقت داشته باشد تطبیق موفق است) یا "all" باشد (که در این صورت تمام مقادیر مرتبط با ویژگی باید با مقدار آزمون مطابقت داشته باشند). 'ignore-blanks' یک مقدار بولی میگیرد؛ اگر روی "true" تنظیم شود، فاصلههای خالی در رشته هنگام مقایسه نادیده گرفته میشوند. این گزینه تنها زمانی مؤثر است که compare="eq" یا compare="not_eq" باشد. هنگامی که در یک عنصر <match target="font"> استفاده میشود، ویژگی target= در عنصر <test> مشخص میکند که تطبیق روی الگوی اصلی انجام شود یا روی قلم. مقدار "default" همان هدفی را انتخاب میکند که عنصر <match> بیرونی انتخاب کرده است.
<EDIT NAME= PROPERTY" MODE="ASSIGN" BINDING="WEAK">"
این عنصر حاوی فهرستی از عناصر عبارت (هر یک از عناصر مقدار یا عملگر) است. عناصر عبارت در زمان اجرا ارزیابی شده و ویژگی "property" را تغییر میدهند. این تغییر بستگی به این دارد که آیا "property" توسط یکی از عناصر <test> مرتبط تطبیق داده شده است یا خیر؛ در این صورت، تغییر ممکن است نخستین مقدار منطبق را تحت تأثیر قرار دهد. هر مقداری که در ویژگی درج شود پیوند مشخصشده ("strong"، "weak" یا "same") را دریافت میکند که در پیوند "same" از مقدار عنصر الگوی منطبق استفاده میشود. مقدار 'mode' یکی از موارد زیر است:
Mode With Match Without Match --------------------------------------------------------------------- "assign" جایگزینی مقدار منطبق جایگزینی تمام مقادیر "assign_replace" جایگزینی تمام مقادیر جایگزینی تمام مقادیر "prepend" افزودن پیش از مقدار منطبق افزودن به ابتدای فهرست "prepend_first" افزودن به ابتدای فهرست افزودن به ابتدای فهرست "append" افزودن پس از مقدار منطبق افزودن به انتهای فهرست "append_last" افزودن به انتهای فهرست افزودن به انتهای فهرست "delete" حذف مقدار منطبق حذف تمام مقادیر "delete_all" حذف تمام مقادیر حذف تمام مقادیر
<INT>, <DOUBLE>, <STRING>, <BOOL>
این عناصر یک مقدار منفرد از نوع مشخصشده را نگه میدارند. عناصر <bool> مقدار true یا false را نگه میدارند. یک محدودیت مهم در پردازش اعداد اعشاری وجود دارد -- fontconfig نیاز دارد که بخش اعشاری با یک رقم آغاز شود نه با ممیز؛ بنابراین برای مقادیر کاملاً کسری یک صفر در ابتدا درج کنید (مثلاً از 0.5 به جای .5 و از -0.5 به جای -.5 استفاده کنید). همچنین ویژگی xsi:nil برای نشان دادن عنصر خالی پشتیبانی میشود.
<MATRIX>
این عنصر چهار عبارت عددی از یک تبدیل همگن (affine transformation) را نگه میدارد. در سادهترین حالت اینها چهار عنصر <double> خواهند بود اما میتوانند عبارات پیچیدهتری نیز باشند.
<RANGE>
این عنصر دو عنصر <int> برای نمایش یک بازه را در بر دارد.
<CHARSET>
این عنصر شامل حداقل یک یا چند عنصر <int> برای کدنویسهٔ یونیکد است. ویژگی xsi:nil نیز برای نشان دادن عنصر خالی پشتیبانی میشود.
<LANGSET>
این عنصر حداقل یک یا چند عنصر <string> از زبانهای به سبک RFC-3066 را نگه میدارد. ویژگی xsi:nil نیز برای نشان دادن عنصر خالی پشتیبانی میشود.
<NAME>
نام یک ویژگی را نگه میدارد. به نخستین مقدار از ویژگی الگو ارزیابی میشود. اگر ویژگی 'target' وجود نداشته باشد، به طور پیشفرض روی 'default' تنظیم میشود که در این صورت در طول تطبیق target="font" ویژگی از الگوی قلم و در طول تطبیق target="pattern" از الگو بازگردانده میشود. این ویژگی همچنین میتواند مقادیر 'font' یا 'pattern' را بگیرد تا به صراحت مشخص کند کدام الگو استفاده شود. استفاده از هدف 'font' در تطبیقی که دارای target="pattern" است خطا محسوب میشود.
<CONST>
نام یک مقدار ثابت را نگه میدارد. ویژگی xsi:nil نیز برای نشان دادن عنصر خالی پشتیبانی میشود؛ این ثوابت همواره اعداد صحیح هستند و به عنوان نامهای نمادین برای مقادیر رایج قلم به کار میروند:
Constant Property Value ------------------------------------- thin weight 0 extralight weight 40 ultralight weight 40 light weight 50 demilight weight 55 semilight weight 55 book weight 75 regular weight 80 normal weight 80 medium weight 100 demibold weight 180 semibold weight 180 bold weight 200 extrabold weight 205 ultrabold weight 205 black weight 210 heavy weight 210 extrablack weight 215 ultrablack weight 215 roman slant 0 italic slant 100 oblique slant 110 ultracondensed width 50 extracondensed width 63 condensed width 75 semicondensed width 87 normal width 100 semiexpanded width 113 expanded width 125 extraexpanded width 150 ultraexpanded width 200 proportional spacing 0 dual spacing 90 mono spacing 100 charcell spacing 110 unknown rgba 0 rgb rgba 1 bgr rgba 2 vrgb rgba 3 vbgr rgba 4 none rgba 5 lcdnone lcdfilter 0 lcddefault lcdfilter 1 lcdlight lcdfilter 2 lcdlegacy lcdfilter 3 hintnone hintstyle 0 hintslight hintstyle 1 hintmedium hintstyle 2 hintfull hintstyle 3 serif genericfamily 1 sans-serif genericfamily 2 monospace genericfamily 3 cursive genericfamily 4 fantasy genericfamily 5 system-ui genericfamily 6 ui-serif genericfamily 7 ui-sans-serif genericfamily 8 ui-monospace genericfamily 9 ui-rounded genericfamily 10 emoji genericfamily 11 math genericfamily 12 fangsong genericfamily 13
<OR>, <AND>, <PLUS>, <MINUS>, <TIMES>, <DIVIDE>
این عناصر عملیات مشخصشده را روی فهرستی از عناصر عبارت انجام میدهند. عناصر <or> و <and> منطقی (بولی) هستند، نه بیتی.
<EQ>, <NOT_EQ>, <LESS>, <LESS_EQ>, <MORE>, <MORE_EQ>, <CONTAINS>, <NOT_CONTAINS>
این عناصر دو مقدار را با یکدیگر مقایسه کرده و یک نتیجه بولی تولید میکنند.
<NOT>
ارزش بولی تکعنصر عبارت خود را معکوس میکند.
<IF>
این عنصر سه عنصر عبارت را میگیرد؛ اگر مقدار اولی true باشد، مقدار دومی را تولید میکند، در غیر این صورت مقدار سومی را بازمیگرداند.
<ALIAS>
عناصر alias نماد خلاصهشدهای برای مجموعهای از عملیات تطبیق رایج جهت جایگزینی یک خانواده قلم با خانواده دیگر ارائه میدهند. آنها شامل یک عنصر <family> و به دنبال آن عناصر اختیاری <prefer>، <accept> و <default> هستند. قلمهای منطبق با عنصر <family> طوری ویرایش میشوند که فهرست خانوادههای <prefer> پیش از <family> منطبق اضافه شده، خانوادههای <accept> بعد از <family> منطبق درج گردند و خانوادههای <default> به انتهای فهرست خانواده اضافه شوند.
<FAMILY>
یک نام منفرد از خانواده قلم را نگه میدارد.
<PREFER>, <ACCEPT>, <DEFAULT>
این عناصر فهرستی از عناصر <family> را برای استفاده توسط عنصر <alias> نگهداری میکنند.
مثالها (EXAMPLES)
پرونده پیکربندی سامانه (SYSTEM CONFIGURATION FILE)
این نمونهای از یک پرونده پیکربندی سراسری در سطح سامانه است:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<!-- پرونده /etc/fonts/fonts.conf برای پیکربندی دسترسی به قلمهای سامانه -->
<fontconfig>
<!--
یافتن قلمها در این شاخهها
-->
<dir>/usr/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts</dir>
<!--
پذیرش نام مستعار منسوخ 'mono' و جایگزینی آن با 'monospace'
-->
<match target="pattern">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="family" mode="assign">
<string>monospace</string>
</edit>
</match>
<!--
اختصاص 'sans-serif' به نامهایی که شامل هیچ نام مستعار شناختهشدهای نیستند
-->
<match target="pattern">
<test qual="all" name="family" compare="not_eq">
<string>sans-serif</string>
</test>
<test qual="all" name="family" compare="not_eq">
<string>serif</string>
</test>
<test qual="all" name="family" compare="not_eq">
<string>monospace</string>
</test>
<edit name="family" mode="append_last">
<string>sans-serif</string>
</edit>
</match>
<!--
بارگذاری پرونده سفارشیسازی کاربر، بدون خطا در صورت عدم وجود
-->
<include ignore_missing="yes" prefix="xdg">
fontconfig/fonts.conf
</include>
<!--
بارگذاری پروندههای سفارشیسازی محلی، بدون خطا در صورت عدم وجود
-->
<include ignore_missing="yes">conf.d</include>
<include ignore_missing="yes">local.conf</include>
<!--
نام مستعار قلمهای شناختهشده به قلمهای موجود TrueType.
این جایگزینی چهرههای TrueType به جای Type1 مشابه ظاهر صفحه را بهبود میبخشد.
-->
<alias>
<family>Times</family>
<prefer>
<family>Times New Roman</family>
</prefer>
<default>
<family>serif</family>
</default>
</alias>
<alias>
<family>Helvetica</family>
<prefer>
<family>Arial</family>
</prefer>
<default>
<family>sans-serif</family>
</default>
</alias>
<alias>
<family>Courier</family>
<prefer>
<family>Courier New</family>
</prefer>
<default>
<family>monospace</family>
</default>
</alias>
<!--
ارائه نامهای مستعار لازم برای نامهای استاندارد.
این کار پس از پرونده پیکربندی کاربر انجام میشود تا نامهای مستعار کاربر در اولویت باشند.
-->
<alias>
<family>serif</family>
<prefer>
<family>Times New Roman</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Arial</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Andale Mono</family>
</prefer>
</alias>
<!--
نمونهای از نیازمندیهای عملگر OR؛
اگر 'family' شامل 'Courier New' یا 'Courier' باشد، 'monospace' به عنوان جایگزین افزوده شود
-->
<match target="pattern">
<test name="family" compare="eq">
<string>Courier New</string>
</test>
<edit name="family" mode="prepend">
<string>monospace</string>
</edit>
</match>
<match target="pattern">
<test name="family" compare="eq">
<string>Courier</string>
</test>
<edit name="family" mode="prepend">
<string>monospace</string>
</edit>
</match>
</fontconfig>
پرونده پیکربندی کاربر (USER CONFIGURATION FILE)
این نمونهای از پرونده پیکربندی برای هر کاربر است که در $XDG_CONFIG_HOME/fontconfig/fonts.conf قرار میگیرد:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<!--
پرونده $XDG_CONFIG_HOME/fontconfig/fonts.conf برای پیکربندی قلم کاربر
-->
<fontconfig>
<!--
شاخه اختصاصی قلمها
-->
<dir prefix="xdg">fonts</dir>
<!--
استفاده از ترتیب زیرپیکسل rgb برای بهبود ظاهر گلیفها در نمایشگرهای LCD.
تغییراتی که روی رندر اثر میگذارند نه تطبیق، همیشه باید از target="font" استفاده کنند.
-->
<match target="font">
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>
<!--
استفاده از قلم WenQuanYi Zen Hei هنگامی که برای زبان چینی serif درخواست میشود
-->
<match>
<!--
اگر نمیخواهید از قلم WenQuanYi Zen Hei برای zh-tw و غیره استفاده کنید،
میتوانید از zh-cn به جای zh استفاده کنید.
توجه داشته باشید حتی اگر zh-cn را تنظیم کنید، باز هم با zh تطبیق داده میشود.
اگر مایل به این رفتار نیستید، میتوانید از compare="eq" به جای compare="contains" استفاده کنید.
-->
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend">
<string>WenQuanYi Zen Hei</string>
</edit>
</match>
<!--
استفاده از قلم VL Gothic هنگامی که برای زبان ژاپنی sans-serif درخواست میشود
-->
<match>
<test name="lang" compare="contains">
<string>ja</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="prepend">
<string>VL Gothic</string>
</edit>
</match>
</fontconfig>
فایلها (FILES)
fonts.conf شامل اطلاعات پیکربندی کتابخانه fontconfig است که از شاخههای مورد جستجو برای یافتن اطلاعات قلم و همچنین دستورالعملهای ویرایش الگوهای مشخصشده توسط برنامه قبل از تطبیق با قلمهای موجود تشکیل شده است. این پرونده در قالب XML است.
conf.d نام مرسوم برای شاخهای از پروندههای پیکربندی اضافی است که توسط برنامههای خارجی یا مدیر محلی سامانه مدیریت میشوند. نام پروندههایی که با ارقام دهدهی آغاز میشوند به ترتیب واژگانی مرتب شده و به عنوان پروندههای پیکربندی اضافی استفاده میشوند. تمام این پروندهها در قالب XML هستند. پرونده اصلی fonts.conf از طریق یک دستور <include> به این شاخه ارجاع میدهد.
fonts.dtd یک DTD است که قالب پروندههای پیکربندی را توصیف میکند.
$XDG_CONFIG_HOME/fontconfig/conf.d و ~/.fonts.conf.d نامهای مرسوم برای شاخه پیکربندیهای اختصاصی هر کاربر (معمولاً تولیدشده به صورت خودکار) هستند، اگرچه مکان واقعی در پرونده سراسری fonts.conf مشخص میشود. لطفاً توجه داشته باشید که ~/.fonts.conf.d اکنون منسوخ شده است و در نسخههای آینده به طور پیشفرض خوانده نخواهد شد.
$XDG_CONFIG_HOME/fontconfig/fonts.conf و ~/.fonts.conf مکان مرسوم برای پیکربندی قلم اختصاصی هر کاربر هستند، اگرچه مکان واقعی در پرونده سراسری fonts.conf مشخص میشود. لطفاً توجه داشته باشید که ~/.fonts.conf اکنون منسوخ شده است و در نسخههای آینده به طور پیشفرض خوانده نخواهد شد.
$XDG_CACHE_HOME/fontconfig/*.cache-* و ~/.fontconfig/*.cache-* مخزن مرسوم اطلاعات قلم است که در حافظه پنهان مربوط به هر شاخه یافت نمیشود. این پرونده به صورت خودکار توسط fontconfig نگهداری میشود. لطفاً توجه داشته باشید که ~/.fontconfig/*.cache-* اکنون منسوخ شده است و در نسخههای آینده به طور پیشفرض خوانده نخواهد شد.
محیط (ENVIRONMENT)
FONTCONFIG_FILE برای بازنویسی و تغییر پرونده پیکربندی پیشفرض استفاده میشود.
FONTCONFIG_PATH برای بازنویسی و تغییر شاخه پیکربندی پیشفرض استفاده میشود.
FONTCONFIG_SYSROOT برای تعیین شاخه ریشه سامانه (sysroot) پیشفرض استفاده میشود.
FC_DEBUG برای خروجی دادن پیامهای تفصیلی اشکالزدایی استفاده میشود. برای جزئیات بیشتر به بخش «اشکالزدایی برنامهها» مراجعه کنید.
FC_DBG_MATCH_FILTER برای فیلتر کردن الگوها استفاده میشود. این متغیر فهرستی از نامهای شیء جدا شده با کاما را دریافت میکند و تنها زمانی اثر دارد که FC_DEBUG شامل MATCH2 باشد. برای جزئیات بیشتر به بخش «اشکالزدایی برنامهها» مراجعه کنید.
FC_LANG برای مشخص کردن زبان پیشفرض به عنوان پیوند ضعیف در پرسوجو استفاده میشود. اگر تنظیم نشده باشد، زبان پیشفرض از محلی (locale) جاری سامانه تعیین میشود.
FONTCONFIG_USE_MMAP برای کنترل استفاده از mmap(2) برای پروندههای حافظه پنهان در صورت وجود استفاده میشود. این متغیر یک مقدار بولی میگیرد. کتابخانه Fontconfig بررسی میکند که آیا پروندههای حافظه پنهان روی سامانهپروندهای ذخیره شدهاند که استفاده از mmap(2) برای آن امن است یا خیر. تنظیم صریح این متغیر محیطی موجب نادیده گرفتن این بررسی و اجبار به استفاده یا عدم استفاده از mmap(2) میشود.
SOURCE_DATE_EPOCH برای اطمینان از اینکه fc-cache(1) پروندهها را به صورت قطعی و تکرارپذیر جهت پشتیبانی از ساختهای تکرارپذیر (reproducible builds) تولید میکند استفاده میشود. هنگامی که روی یک نمایش عددی از برچسب زمان یونیکس (UNIX timestamp) تنظیم شود، fontconfig این مقدار را بر استفاده از برچسبهای زمانی تغییر پروندههای ورودی ترجیح میدهد تا تشخیص دهد کدام پروندههای حافظه پنهان نیاز به بازتولید دارند. اگر SOURCE_DATE_EPOCH تنظیم نشده باشد (یا جدیدتر از mtime شاخه باشد)، رفتار پیشین بدون تغییر باقی میماند.
FONTCONFIG_WARN_INVALID_ATTRS برای فعالسازی مجدد هشدارهای ویژگیهای نامعتبر در پروندههای پیکربندی استفاده میشود.
همچنین ببینید (SEE ALSO)
fc-cat(1), fc-cache(1), fc-list(1), fc-match(1), fc-query(1), SOURCE_DATE_EPOCH <URL:https://reproducible-builds.org/specs/source-date-epoch/>.
نسخه (VERSION)
Fontconfig نسخه 2.18.3
| 23 August 2026 |