فایل CFF2 چیست؟
CFF2 file format is the version 2.0 of the CFF file format and allows efficient storage of glyph outlines and metadata similar to the CFF file format. CFF2 differs from CFF in that it is intended to be used in the context of an OpenType font as a ‘sfnt’ table with the tag CFF2. نمی توان از آن به عنوان یک برنامه مستقل استفاده کرد و به داده های دیگر جداول OpenType بستگی دارد.
فرمت فایل CFF2
CFF2 file format specifications حاوی جزئیاتی در مورد طرحبندی دادههای داخلی، انواع دادهها، جداول و سایر اطلاعات داخلی در مورد قالب فایل است. می توان آن را برای مرجع توسعه دهنده ارجاع داد. برخی از جزئیات این موارد به شرح زیر است.
طرح بندی داده ها
داده های باینری فرمت فایل CFF2 به طور منطقی به عنوان تعدادی ساختار داده جداگانه سازماندهی شده اند. طرح بندی درون داده های باینری مطابق جدول زیر است.
ورودی | نظرات |
---|---|
سربرگ | محل ثابت |
برترین DICT | مکان ثابت |
شاخص زیرمجموعه جهانی | مکان ثابت |
تنوع | فروشگاه |
FDSelect | فقط در صورتی ارائه شود که بیش از یک فونت DICT در Font DICT INDEX وجود داشته باشد. |
قلم DICT INDEX | |
آرایه فونت DICT | شامل فونت DICT INDEX. |
دیکت خصوصی | یکی در هر فونت DICT. |
فقط سه ساختار اول بر اساس مکان های ثابت هستند. باقیمانده از طریق آفست بدست می آید و ترتیب آنها قابل تغییر است.
انواع داده
فرمت فایل CFF2 از انواع داده های زیر استفاده می کند.
نام | محدوده | توضیحات |
---|---|---|
uint8 | 0 تا 255 | شماره بدون علامت 8 بیت |
uint16 | 0 تا 65535 | شماره بدون علامت 16 بیتی |
uint32 | 0 تا 4294967295 | شماره بدون علامت 32 بیتی |
افست | متغیر | افست های 1، 2، 3 یا 4 بایتی (مشخص شده توسط فیلد OffSize در جدول Index) |
OffSize | 1 تا 4 | عدد بدون علامت 1 بایتی اندازه یک فیلد Offset یا فیلدهای |
تمام دادههای عددی چند بایتی و فیلدهای آفست را به ترتیب بایت بزرگ ذخیره میکند. فرمت CFF2 عاری از بایت های padding است زیرا هیچ گونه محدودیت تراز را رعایت نمی کند.
داده DICT
فایلهای CFF2 حاوی دادههای فرهنگ لغت فونت بهعنوان جفتهای کلید-مقدار در قالب توکنسازی فشرده هستند. کلیدهای فرهنگ لغت به عنوان عملگرهای 1 یا 2 بایتی و مقادیر فرهنگ لغت به عنوان عملوندهای عددی با اندازه متغیر کدگذاری می شوند. سه ساختار وجود دارد که از فرمت DICT Data استفاده میکنند: Top DICT، Font DICT و Private DICT. تعدادی از انواع عملوند اعداد صحیح با اندازههای مختلف تعریف شدهاند و همانطور که در جدول زیر نشان داده شده است کدگذاری میشوند (بایت اول عملوند b0، دومی b1 و غیره).
اندازه | محدوده b0 | محدوده ارزش | محاسبه ارزش |
---|---|---|---|
1 | 32 تا 246 | -107 تا +107 | b0 - 139 |
2 | 247 to 250 | +108 to +1131 | (b0 - 247) * 256 + b1 + 108 |
2 | 251 to 254 | -1131 to -108 | -(b0 - 251) * 256 - b1 - 108 |
3 | 28 | -32768 به +32767 | b1 « 8 |
5 | 29 | -(2^31) به +(2^31 - 1) | b1 « 24 | b2 « 16 | b3 « 8 | b4 |
سرتیتر
داده های باینری با هدر با فرمت نشان داده شده در جدول زیر شروع می شود.
نوع | نام | توضیحات |
---|---|---|
uint8 | نسخه اصلی | فرمت نسخه اصلی روی 2 تنظیم کنید. |
uint8 | نسخه کوچک | فرمت نسخه جزئی روی صفر تنظیم کنید. |
uint8 | headerSize | اندازه سربرگ (بایت). |
uint16 | topDictLength | طول ساختار Top DICT بر حسب بایت. |