Внешние виды экземпляра по умолчанию OpenType CFF2
Нативные билдеры внешних видов plain, rich, shaped и family принимают полный шрифт OpenType OTTO, содержащий контуры CFF2 в его координатах вариаций по умолчанию
Исходный шрифт остаётся источником отображения символов Unicode, индексов глифов, горизонтальных advance-ов и шейпинга; HarfBuzz разрешает его контуры экземпляра по умолчанию, включая контуры, выбранные через несколько font-словарей
Билдер преобразует каждый глиф в статическую CID-keyed программу CFF 1 и встраивает её как FontFile3 с Subtype CIDFontType0C, коллекцией Adobe Identity и CID, равными исходным индексам глифов
Сгенерированные encoding, widths и отображение ToUnicode сохраняют идентичность исходных глифов и логические последовательности Unicode, включая дополнительные символы, лигатуры и комбинируемые знаки
Результатом является программа шрифта PDF 1.7, использующая структуры CFF 1, описанные в ISO 32000-1:2008 9.7 и 9.9; CFF2 напрямую в поток шрифта PDF не встраивается
Требуется библиотека HarfBuzz совпадающей архитектуры, предоставляющая hb_font_draw_glyph и неизменяемые draw-колбэки, в том числе для текста без шейпинга; эти API доступны начиная с HarfBuzz 7, а HOTPDF_HARFBUZZ_LIBRARY выбирает конкретную библиотеку
Сложный шейпинг также использует существующую зависимость FriBidi и существующий контракт целочисленных advance-ов scale-1000; идеальные неквантованные advance-ы при исходном unitsPerEm остаются отдельным ограничением точности
Редактируемые внешние виды требуют разрешения встраивания installable или editable; генерация внешних видов только для чтения допускает разрешение preview-and-print, тогда как restricted и bitmap-only разрешения по-прежнему отклоняются
No-subsetting сохраняет каждый исходный глиф в преобразованной программе, включая неиспользуемые; преобразование меняет формат программы шрифта и не обещает побайтового сохранения исходного контейнера OpenType
Преобразованная программа использует отдельное основное имя и сохраняет читаемые уведомления copyright и license плюс исходные байты name-table
Границы исходного шрифта, рабочего буфера, раскладки полного шрифта, размера объекта, агрегата rich-шрифта, отмены и нативного rendering проверяются до публикации; malformed программы отсутствующего глифа остаются ошибками, а валидные пустые глифы сохраняются
Выход Type 2 имеет точность координат 16.16 и ограниченные дельты операндов, не более 65,535 глифов и не более 65,535 байт на программу глифа
Автономные raw-таблицы CFF2, прямые потоки шрифтов CFF2 в существующих ресурсах внешних видов PDF по умолчанию, выбор осей вариаций, отличный от умолчального, и более широкая раскладка сложного текста находятся вне этого бэкенда
Существующий вход OpenType CFF 1 продолжает использовать компактный бэкенд внешних видов, а встроенные ресурсы аннотаций Type1, Type1C и CIDFontType0C используют исходный raw-font fallback
TryGetCFF2FontTable — это ограниченный запрос возможностей формата, а не полная проверка контуров или разрешений