Внешние виды аннотаций и полей OpenType CFF

Нативные билдеры внешних видов принимают шрифты OpenType OTTO с контурами CFF 1 наряду с существующим входом TrueType

Текстовые внешние виды plain, rich, shaped и family встраивают полный исходный файл OpenType через FontFile3 с Subtype OpenType и потомком CIDFontType0

CFF с ключом по имени использует индексы глифов как CID, тогда как CID-keyed CFF сохраняет свои фактические Registry, Ordering, Supplement и отображение charset из индексов глифов в CID

Сгенерированный Encoding CMap отображает коды символов текста в фактические CID; widths используют эти CID, ToUnicode сохраняет логический текст, а CIDFontType0 не получает CIDToGIDMap

Позиции и extents глифов используют метрики OpenType из HarfBuzz, включая границы rich-фрагментов и комбинируемых знаков; rich-фрагменты разделяют неизменяемые font-reader-ы на стиль и один встроенный ресурс шрифта

Метрики CFF требуют библиотеку HarfBuzz совпадающей архитектуры, даже когда ShapeComplexText равен False; HOTPDF_HARFBUZZ_LIBRARY выбирает явный путь, а сложный шейпинг дополнительно использует существующую зависимость FriBidi

Видимая аннотация FreeText без normal-внешнего вида может использовать валидный ресурс default-appearance, содержащий полный шрифт OpenType CFF; применяются существующие приоритет ресурсов, clipping, цвета и политика встраивания только для чтения

Генерация редактируемых полей по-прежнему требует разрешения installable или editable; fallback только для чтения допускает разрешение preview-and-print, тогда как restricted- или bitmap-only-контуры остаются отклонёнными, а no-subsetting сохраняет каждый байт исходного шрифта

Бюджеты байтов шрифта, глифов, размера объекта, агрегата rich-шрифта, отмены и нативного render остаются в силе; malformed смещения CFF INDEX, словари, диапазоны charset, дублирующиеся CID и отсутствующие строки коллекции отклоняются до публикации

Отображение формата следует ISO 32000-1:2008 9.7.4.2 и 9.9, включая явное отображение charset CID-keyed OpenType

Нативный rendering, MuPDF и Ghostscript проходят fixture-ы sparse-CID OpenType; у протестированных бэкендов Poppler есть отдельная несовместимость отображения sparse-CID OpenType, тогда как контрольные Poppler identity-CID OpenType и sparse raw CIDFontType0C рендерятся корректно

Независимые читалки могут синтезировать отсутствующий внешний вид аннотации иначе; явно сгенерированные внешние виды проверяются отдельно от fallback-поведения каждой читалки

Отсутствующие внешние виды аннотаций могут также сохранять исходные ресурсы bare Type1, Type1C и CIDFontType0C через исходный путь raw-font-аннотаций; вход OpenType CFF2 использует отдельный статический бэкенд внешних видов экземпляра по умолчанию с явным преобразованием формата, а не встраивает CFF2 напрямую в поток шрифта PDF 1.7

См. HPDFBuildHeadlessTextAppearance и TryGetCompactFontTable