Apariencias de instancia predeterminada OpenType CFF2
Los builders de apariencias nativos plain, rich, shaped y family aceptan una fuente OpenType OTTO completa que contiene contornos CFF2 en sus coordenadas de variación predeterminadas
La fuente original sigue siendo la fuente del mapeo de caracteres Unicode, índices de glifos, avances horizontales y shaping; HarfBuzz resuelve sus contornos de instancia predeterminada, incluidos los contornos seleccionados a través de múltiples diccionarios de fuente
El builder convierte cada glifo en un programa CFF 1 estático con clave CID y lo incrusta como FontFile3 con Subtype CIDFontType0C, una colección Adobe Identity y CIDs iguales a los índices de glifo originales
El encoding, los widths y el mapeo ToUnicode generados retienen la identidad del glifo original y las secuencias Unicode lógicas, incluidos caracteres suplementarios, ligaduras y combining marks
Esto produce un programa de fuente PDF 1.7 que usa las estructuras CFF 1 descritas por ISO 32000-1:2008 9.7 y 9.9; no incrusta CFF2 directamente en un stream de fuente PDF
Se requiere una librería HarfBuzz de arquitectura coincidente que exponga hb_font_draw_glyph y callbacks de dibujo inmutables, incluso para texto sin shaping; estas APIs están disponibles desde HarfBuzz 7, y HOTPDF_HARFBUZZ_LIBRARY selecciona una librería explícita
El shaping complejo también usa la dependencia FriBidi existente y el contrato existente de avance entero scale-1000; los avances ideales sin cuantizar en el unitsPerEm original son una limitación de precisión separada
Las apariencias editables requieren permiso de incrustación installable o editable; la generación de apariencias read-only permite permiso preview-and-print, mientras que el permiso restricted y bitmap-only sigue rechazándose
No-subsetting retiene cada glifo original en el programa convertido, incluidos los glifos sin usar; la conversión cambia el formato del programa de fuente y no promete retención byte a byte del contenedor OpenType original
El programa convertido usa un nombre primario distinto y retiene avisos de copyright y licencia legibles más los bytes originales de la name-table
Los bounds de fuente origen, buffer de trabajo, layout de fuente completa, tamaño de objeto, agregado de fuente rich, cancelación y rendering nativo se verifican antes de publicar; los programas malformed de glifo faltante siguen siendo errores mientras que los glifos vacíos válidos se retienen
La salida Type 2 tiene precisión de coordenadas 16.16 y deltas de operandos acotados, como máximo 65,535 glifos y como máximo 65,535 bytes por programa de glifo
Las tablas CFF2 raw independientes, los streams de fuente CFF2 directos en recursos de apariencia predeterminada PDF existentes, la selección de ejes de variación no predeterminada y un layout de texto complejo más amplio quedan fuera de este backend
La entrada OpenType CFF 1 existente sigue usando el backend de apariencias compactas, mientras que los recursos de anotación incrustados Type1, Type1C y CIDFontType0C usan el fallback de fuente raw original
TryGetCFF2FontTable es una consulta acotada de capacidad de formato, no una validación completa de contornos o permisos
Consulte HPDFBuildHeadlessTextAppearance y THPDFTrueTypeData