aspose.info
UK

CFF2 - компактний формат файлу шрифту версії 2

Оновлено

Що таке файл CFF2?

Формат файлу CFF2 є версією 2.0 формату файлу CFF і дозволяє ефективно зберігати контури гліфів і метадані, подібні до формату файлу CFF. CFF2 відрізняється від CFF тим, що він призначений для використання в контексті шрифту OpenType як таблиці «sfnt» з тегом CFF2. Його не можна використовувати як окрему програму та залежить від даних в інших таблицях OpenType.

Формат файлу CFF2

Специфікації формату файлу CFF2 містять відомості про внутрішній макет даних, типи даних, таблиці та іншу внутрішню інформацію про формат файлу. Його можна передати для довідки розробника. Нижче наведено деякі подробиці про це.

Макет даних

Двійкові дані формату файлу CFF2 логічно організовані як кілька окремих структур даних. Розташування двійкових даних показано в наведеній нижче таблиці.

ЗаписКоментарі
ЗаголовокФіксоване розташування
Верхній DICTФіксоване розташування
Глобальний підіндексФіксоване розташування
ВаріантЗберігати
FDSelectПрисутній, лише якщо в індексі Font DICT INDEX є більше ніж один шрифт DICT.
Шрифт DICT INDEX
Масив шрифтів DICTВключено до шрифту DICT INDEX.
Приватний DICTОдин на шрифт DICT.

Лише перші три структури базуються на фіксованих місцях. Решта досягаються через зміщення, і їх порядок можна змінити.

Типи даних

Формат файлу CFF2 використовує такі типи даних.

НайменуванняДіапазонОпис
uint8від 0 до 2558-розрядне число без знака
uint16від 0 до 6553516-розрядне число без знаку
uint32від 0 до 429496729532-розрядне число без знаку
Зміщеннязмінюється1, 2, 3 або 4-байтові зсуви (зазначені полем OffSize у таблиці Index)
OffSizeвід 1 до 41-байтове число без знаку вказує розмір поля або полів зсуву

Він зберігає всі багатобайтові числові дані та поля зсуву в порядку байтів у порядку старшого. Формат CFF2 вільний від заповнення байтами, оскільки він не дотримується жодних обмежень щодо вирівнювання.

Дані DICT

Файли CFF2 містять дані словника шрифтів як пари ключ-значення в компактному токенізованому форматі. Ключі словника кодуються як 1 або 2-байтові оператори, а значення словника кодуються як числові операнди змінного розміру. Існує три структури, які використовують формат даних DICT: Top DICT, Font DICT і Private DICT. Визначається ряд цілочисельних типів операндів різного розміру, які кодуються, як показано в наступній таблиці (перший байт операнда — b0, другий — b1 і так далі).

РозмірДіапазон b0Діапазон значеньРозрахунок значення
1від 32 до 246від -107 до +107b0 - 139
2247 до 250від +108 до +1131(b0 - 247) * 256 + b1 + 108
2251 до 254-1131 до -108-(b0 - 251) * 256 - b1 - 108
328-32768 до +32767b1 « 8
529-(2^31) до +(2^31 - 1)b1 « 24 | b2 « 16 | b3 « 8 | b4

Заголовок

Двійкові дані починаються із заголовка, який має формат, наведений у таблиці нижче.

ТипНайменуванняОпис
uint8majorVersionВідформатувати основну версію. Встановити 2.
uint8minorVersionВідформатувати додаткову версію. Встановити нуль.
uint8headerSizeРозмір заголовка (байти).
uint16topDictLengthДовжина верхньої структури DICT у байтах.

Список літератури

Див. також