Какво е CFF2 файл?
Файловият формат CFF2 е версия 2.0 на файловия формат CFF и позволява ефективно съхранение на контури на глифове и метаданни, подобни на файловия формат CFF. CFF2 се различава от CFF по това, че е предназначен да се използва в контекста на OpenType шрифт като таблица „sfnt“ с етикет CFF2. Не може да се използва като самостоятелна програма и зависи от данните в други OpenType таблици.
CFF2 файлов формат
Спецификациите на файловия формат CFF2 съдържат подробности за вътрешното оформление на данните, типовете данни, таблиците и друга вътрешна информация за файловия формат. Може да бъде препоръчан за справка на разработчика. Някои от подробностите за тях са както следва.
Оформление на данните
Двоичните данни във файлов формат CFF2 са логически организирани като няколко отделни структури от данни. Оформлението в рамките на двоичните данни е както е показано в следващата таблица.
Запис | Коментари |
---|---|
Заглавие | Фиксирано местоположение |
Най-горе DICT | Фиксирано местоположение |
Глобален подИНДЕКС | Фиксирано местоположение |
Вариация | Магазин |
FDSelect | Присъства само ако има повече от един Font DICT в Font DICT INDEX. |
Шрифт DICT INDEX | |
Масив от шрифт DICT | Включено във Font DICT INDEX. |
Частен DICT | Един на шрифт DICT. |
Само първите три структури са базирани на фиксирани местоположения. Останалите се достигат чрез компенсации, като подреждането им може да се променя.
Типове данни
Файловият формат CFF2 използва следните типове данни.
Име | Диапазон | Описание |
---|---|---|
uint8 | 0 до 255 | 8-битово число без знак |
uint16 | 0 до 65535 | 16-битово число без знак |
uint32 | 0 до 4294967295 | 32-битово неподписано число |
Офсет | варира | 1, 2, 3 или 4 байта отмествания (посочени от полето OffSize в индексна таблица) |
Извънразмер | 1 до 4 | 1-байтово число без знак указва размера на поле или полета за отместване |
Съхранява всички многобайтови цифрови данни и полета за отместване в ред на байтовете в голям ред. Форматът CFF2 не съдържа байтове за допълване, тъй като не спазва никакви ограничения за подравняване.
DICT данни
CFF2 файловете съдържат данните от речника на шрифта като двойки ключ-стойност в компактен токенизиран формат. Ключовете на речника са кодирани като 1 или 2 байтови оператори, а стойностите на речника са кодирани като числови операнди с променлив размер. Има три структури, които използват формата на DICT данни: Top DICT
, Font DICT
и Private DICT
. Дефинират се редица типове цели числа операнди с различни размери и се кодират, както е показано в следващата таблица (първият байт на операнда е b0, вторият е b1 и т.н.).
Размер | b0 диапазон | Стойност диапазон | Изчисляване на стойност |
---|---|---|---|
1 | 32 до 246 | -107 до +107 | b0 - 139 |
2 | 247 до 250 | +108 до +1131 | (b0 - 247) * 256 + b1 + 108 |
2 | 251 до 254 | -1131 до -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 | minorVersion | Форматиране на второстепенна версия. Задаване на нула. |
uint8 | headerSize | Размер на заглавието (байтове). |
uint16 | topDictLength | Дължина на горната DICT структура в байтове. |