Appearances de instancia por defecto OpenType CFF2

Los builders nativos de appearances plain, rich, shaped y family aceptan una fuente OpenType OTTO completa que contenga contornos CFF2 en sus coordenadas de variación por defecto

La fuente original sigue siendo la fuente del mapeo de caracteres Unicode, índices de glifo, avances horizontales y shaping; HarfBuzz resuelve sus contornos de instancia por defecto, 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 CID-keyed y lo incrusta como FontFile3 con Subtype CIDFontType0C, una colección Adobe Identity y CIDs iguales a los índices de glifo originales

La encoding, widths y el mapeo ToUnicode generados retienen la identidad de glifo original y las secuencias Unicode lógicas, incluidos caracteres suplementarios, ligaduras y signos combinantes

Esto produce un programa de fuente PDF 1.7 usando 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, también 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 avances enteros a escala 1000; los avances ideales sin cuantizar en el unitsPerEm original son una limitación de precisión aparte

Las appearances editables requieren permiso de incrustación instalable o editable; la generación de appearances de solo lectura permite el permiso preview-and-print, mientras que los permisos restricted y bitmap-only siguen rechazándose

La opción 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 los avisos legibles de copyright y licencia más los bytes de la name table original

Los límites de fuente de origen, buffer de trabajo, layout de fuente completa, tamaño de objeto, agregado de fuentes rich, cancelación y bounds de rendering nativo se comprueban antes de la publicación; los programas de glifo ausente mal formados 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 operando acotados, 65.535 glifos como máximo y 65.535 bytes por programa de glifo como máximo

Las tablas CFF2 crudas independientes, los streams de fuente CFF2 directos en recursos de default-appearance existentes del PDF, la selección de ejes de variación no por defecto y el layout de texto complejo más amplio quedan fuera de este backend

La entrada OpenType CFF 1 existente sigue usando el backend de appearances compactas, mientras que los recursos de anotación incrustados Type1, Type1C y CIDFontType0C usan el fallback de fuente cruda original

TryGetCFF2FontTable es una consulta acotada de capacidad de formato, no una validación completa de contornos ni de permisos

Vea HPDFBuildHeadlessTextAppearance y THPDFTrueTypeData