aspose.info
RU

CFF2 — компактный формат файла шрифта, версия 2

Обновлено

.CFF2 вариант №

Формат файла CFF2 представляет собой версию 2.0 формата файла CFF и позволяет эффективно хранить контуры глифов и метаданные, аналогичные формату файла CFF. CFF2 отличается от CFF тем, что он предназначен для использования в контексте шрифта OpenType в качестве таблицы ‘sfnt’ с тегом CFF2. Его нельзя использовать как отдельную программу, и он зависит от данных в других таблицах OpenType.

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

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

Макет данных

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

ЗаписьКомментарии
ЗаголовокФиксированное местоположение
Верхний DICTФиксированное местоположение
Global Subr INDEXФиксированное местоположение
ВариацияМагазин
FDSelectПрисутствует, только если в ИНДЕКСЕ DICT шрифтов имеется более одного DICT шрифта.
Шрифт DICT INDEX
Массив шрифтов DICTВключено в Font DICT INDEX.
Частный DICTОдин на каждый шрифт DICT.

Только первые три структуры основаны на фиксированных местоположениях. Остальные достигаются через смещения, и их порядок можно изменить.

Типы данных

Формат файла CFF2 использует следующие типы данных.

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

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

Данные DICT

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

РазмерДиапазон b0Диапазон значенийВычисление значения
1от 32 до 246от -107 до +107b0 - 139
2от 247 до 250от +108 до +1131(b0 - 247) * 256 + b1 + 108
2от 251 до 254от -1131 до -108-(b0 - 251) * 256 - b1 - 108
328от -32768 до +32767б1 « 8
529-(2^31) до +(2^31 - 1)b1 « 24 | b2 « 16 | b3 « 8 | b4

Заголовок

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

ТипИмяОписание
uint8основная версияФормат основной версии. Установите на 2.
uint8младшая версияФормат минорной версии. Установить на ноль.
uint8размер заголовкаРазмер заголовка (байты).
uint16длина верхнего словаДлина структуры Top DICT в байтах.

использованная литература

См. также