Fallback de Fuentes Rich Text Suministradas

Establece THPDFHeadlessTextAppearanceOptions.FallbackFontFamilies en True para resolver glifos de rich-text ausentes desde las familias suministradas a HPDFBuildHeadlessRichTextFamilyAppearance o SetRichTextFieldValueWithFamilies

El valor por defecto es False, preservando la selección estricta de cada familia y estilo originales; el constructor 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 fronteras completas de extended grapheme de Unicode 17 a través de runs de estilo adyacentes originales y de las uniones de runs vacíos dentro de cada párrafo; una decisión de familia nunca parte un surrogate pair, una secuencia combinante, una secuencia de variación ni un clúster de joiners

Cuando el primer run afectado suministra FontFamilyCandidates, su orden declarado tiene prioridad y cada candidato configurado debe cubrir todas las partes con estilo del grapheme completo; si ninguno cualifica, se aplican las reglas existentes de familia seleccionada y de fallback del array suministrado descritas abajo

Si los programas seleccionados cubren el grapheme completo, sus familias originales siguen en uso; en caso 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 todas las partes con estilo del grapheme completo con el programa real regular, bold, italic o bold-italic correspondiente

Los programas de estilo ausentes se saltan como candidatos, mientras que un programa mal formado que deba inspeccionarse produce un error tipado de fuente inválida; los controles de layout y shaping no exigen glifos cmap visibles; un grapheme que ninguna familia suministrada cubre produce haMissingGlyph

El shaping contextual existente, el orden bidireccional, la colocación de marks 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 del fallback existen solo durante la preparación de la apariencia; los runs del llamador permanecen sin cambios y el documento almacena el valor plain original y el markup rich original en V y RV

Los tamaños en puntos tipados y los componentes RGB pasan directamente al layout de apariencia sin reconstruirse desde el valor rich 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 conservan sus contratos existentes de fuente inmutable, firma, seguridad, no-op semántico y publicación

Límites 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 en vigor, 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 conserva las dependencias existentes de HarfBuzz y FriBidi; el fallback usa solo bytes de fuentes suministradas, 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 conservan el orden de familias CSS en línea soportado

Las APIs nativas de familias exponen esta opción; el JSON de familias con nombre de Linux acepta el mismo flag de opt-in y prepara programas candidatos reales; la carga de fallback por callbacks en Windows sigue siendo trabajo separado

Aceptación

Seis targets nativos de 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, combining marks entre estilos, joining árabe, hebreo, joiners suplementarios, candidatos de familia ordenados, AES R5/R6, FDF/XFDF, presupuestos tipados y ocho checkpoints de cancelación seleccionados incluido el checkpoint final

Las interfaces C++Builder nuevas se compilan en ambas arquitecturas; la evidencia real liberada de glifos ausentes y la prueba exitosa real de glifos de widget primary/fallback/primary se preservan por separado

Named families · Appearance options