Внешние виды аннотаций и полей 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