Listas ordenadas de fuentes candidatas para rich text

El rich text puede conservar una lista ordenada explícita de familias y usar ese orden al seleccionar los programas de fuente suministrados reales para un grafema Unicode completo

Run:= THPDFHeadlessRichTextRun.Default;
Run.Text:= 'A' + WideChar($03A9) + 'B';
Run.FontFamily:= 'Primary';
SetLength(Run.FontFamilyCandidates, 3);
Run.FontFamilyCandidates[0]:= 'Primary';
Run.FontFamilyCandidates[1]:= 'Serif';
Run.FontFamilyCandidates[2]:= 'Sans';
Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;

Los programas reales de familia y estilo se suministran a través de las APIs de familia con nombre existentes; las etiquetas de FontFamilyCandidates no descubren ni descargan fuentes

Selección y conservación

El primer run escrito afectado aporta la lista para un grafema completo, incluidas las costuras de estilo y las marcas combinantes; cada candidato configurado debe cubrir todas las partes con estilo con su programa real regular, bold, italic o bold-italic

Las etiquetas desconocidas y los candidatos al que les falte el programa de estilo se saltan; si ningún candidato declarado cubre el grafema, se aplican las reglas de fallback existentes de familia seleccionada y array suministrado

FontFamily debe coincidir con la primera etiqueta configurada en una lista de candidatos no vacía cuando existe; omitir un FontFamily tipado en JSON selecciona esa coincidencia automáticamente

El fallback solo cambia la preparación de la apariencia: el valor plano escrito, el tamaño y color tipados precisos y el orden original de los candidatos permanecen en V y RV; el resolver nunca reescribe los runs del llamante

XHTML inline e intercambio

Establece THPDFHeadlessRichTextDecodeOptions.PreserveFontFamilyLists a True con FontFamilyNames configuradas para conservar las declaraciones inline font-family separadas por comas que estén soportadas, incluida la herencia y la prioridad important por propiedad

Las importaciones FDF y XFDF conscientes de familias activan esta conservación cuando sus opciones de apariencia activan FallbackFontFamilies; la decodificación estricta por defecto mantiene la selección existente de la primera familia configurada

Las listas contienen como máximo dieciséis etiquetas, cada una limitada a 128 unidades de código UTF-16 con Unicode válido, sin caracteres de control, espacios en blanco perimetrales, comillas, contrabarras, comas ni puntos y comas; las etiquetas declaradas duplicadas y desconocidas conservan su orden original

Native Linux JSON

{"schemaVersion":1,"type":"forms.fill",
 "fontFamilies":["Primary","Sans","Serif"],"fallbackFontFamilies":true,
 "fields":[{"name":"Input","richTextRuns":[
   {"text":"A\u03a9B","fontFamily":"Primary",
    "fontFamilyCandidates":["Primary","Serif","Sans"]}
 ]}]}

El orden declarado Serif antes que Sans controla el fallback incluso cuando la operación configura Sans antes que Serif; el proveedor Fontconfig existente suministra los programas con nombre reales bajo los mismos límites agregados de fuente y memoria

Los arrays de candidatos tipados de run exigen fontFamilies configuradas y fallbackFontFamilies activado; arrays o etiquetas mal formados, cobertura incompleta del grafema, presupuestos agotados y cancelación fallan transaccionalmente antes del commit del contexto

La capacidad formData.richFontFamilyCandidates y maxFontFamilyCandidates=16 anuncian esta opción acotada a través de los callbacks V1 sin cambios y las versiones de símbolos exportados

Los rellenos de formulario encadenados con éxito y las importaciones FDF/XFDF equivalentes conservan su documento confirmado y la instantánea de origen; los fallos del callback de salida o de resultado preservan la revisión confirmada previa

Alcance

Este perfil cubre etiquetas candidatas suministradas y declaraciones inline soportadas; las hojas de estilo externas, el layout CSS arbitrario, el descubrimiento de familias genéricas y la carga de fallback por callback en Windows siguen siendo trabajo aparte

Comportamiento de fallback · Registro tipado de run · Opciones de decodificación · Binding nativo de Linux