Fallback de fuentes de rich text suministradas
Pon THPDFHeadlessTextAppearanceOptions.FallbackFontFamilies en True para resolver los glifos de rich text ausentes a partir de las familias suministradas a HPDFBuildHeadlessRichTextFamilyAppearance o SetRichTextFieldValueWithFamilies
El valor por defecto es False, preservando la selección estricta de cada familia y estilo escritos; el builder de texto de fuente única no busca otras familias
Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;
Document.SetRichTextFieldValueWithFamilies(FieldIndex, Runs, Families, Options);
Selección y shaping
El resolvedor usa límites completos de extended graphemes de Unicode 17 a través de runs de estilo adyacentes escritos y de las costuras de runs vacíos dentro de cada párrafo; una decisión de familia nunca parte un par suplente, una secuencia combinante, una secuencia de variación ni un clúster de joiners
Cuando el primer run afectado suministra FontFamilyCandidates, su orden declarado toma precedencia y cada candidato configurado debe cubrir cada parte con estilo del grapheme completo; si ninguno califica, se aplican las reglas existentes de familia seleccionada y fallback de array suministrado descritas abajo
Si los programas seleccionados cubren el grapheme completo, sus familias escritas siguen en uso; de lo contrario, el resolvedor prueba primero la familia del primer run afectado, seguida de las familias suministradas en orden de array, seleccionando una familia que cubra cada parte con estilo del grapheme completo con el programa real correspondiente regular, bold, italic o bold-italic
Los programas de estilo ausentes se omiten como candidatos, mientras que un programa malformado que deba inspeccionarse produce un error tipado de fuente inválida; los controles de layout y shaping no exigen glifos visibles de cmap; un grapheme que ninguna familia suministrada cubre produce haMissingGlyph
El shaping contextual existente, el ordenamiento bidireccional, la colocación de marcas entre estilos, el wrapping, los saltos de párrafo explícitos y la rotación de widgets se aplican a los runs de apariencia resueltos
Valores y transacciones
Los runs de fallback existen solo durante la preparación de la apariencia; los runs del llamador permanecen sin cambios y el documento almacena el valor plano original y el markup enriquecido escrito en V y RV
Los tamaños de punto tipados y los componentes RGB pasan directamente al layout de apariencia sin reconstruirse desde el valor enriquecido serializado, cuya representación canónica de texto tiene su propia precisión
Las importaciones FDF y XFDF conscientes de familias aceptan la misma opción y retienen sus contratos existentes de fuente inmutable, firmas, seguridad, no-op semántico y publicación
Bounds y dependencias
El límite agregado MaxFontBytes cuenta cada programa de familia/estilo inspeccionado durante el fallback, incluidos los candidatos válidos que finalmente no se embeben; la apariencia embebe solo los estilos seleccionados
Los presupuestos existentes de entrada UTF-16, glifos, objetos y bytes siguen vigentes, y la resolución puede producir como máximo 4096 runs con estilo; la cancelación se comprueba durante la selección de fuentes y la cobertura escalar, además de durante el layout y la publicación
El shaping complejo retiene las dependencias existentes de HarfBuzz y FriBidi; el fallback usa únicamente bytes de fuentes suministrados, sin descubrimiento implícito de fuentes del sistema, aliases genéricos, fuentes descargadas ni hojas de estilo descargadas; las listas explícitas ordenadas de candidatos de fuentes retienen el orden de familias CSS inline soportado
Las APIs nativas de familias exponen esta opción; el JSON de familias con nombre de Linux acepta el mismo flag opt-in y prepara programas candidatos reales; la carga de fallback por callbacks en Windows sigue siendo trabajo separado
Aceptación
Seis targets nativos del compilador pasan cada uno 199 checks sobre 30 PDFs guardados y 1098 checks independientes de valores, fuentes embebidas, glifos, shaping, precisión, líneas y píxeles visibles; programas de fuentes reales subset y completos cubren los cuatro estilos, marcas combinantes entre estilos, unión árabe, hebreo, joiners suplementarios, candidatos de familias ordenados, AES R5/R6, FDF/XFDF, presupuestos tipados y ocho checkpoints de cancelación seleccionados incluido el checkpoint final
Las interfaces frescas de C++Builder compilan ambas arquitecturas; la evidencia real de release de glifo ausente y la prueba exitosa real de glifos primary/fallback/primary del widget se conservan por separado