Fallback de fuentes enriquecidas con familias suministradas en Windows

Los file jobs de Windows y hpdf_document_execute_json_v1 soportan fallback opt-in entre familias de fuentes suministradas por el llamador para importaciones FDF/XFDF enriquecidas y runs tipados enriquecidos originales; el fallback selecciona una familia que cubre el grapheme completo, incluidas las partes que cruzan límites de estilos enriquecidos

El valor por defecto sigue siendo estricto: fallbackFontFamilies es false y un glifo requerido ausente falla normalmente; suministrar una lista no selecciona silenciosamente fuentes instaladas del sistema

Solicitud tipada

{
  "schemaVersion": 1,
  "type": "forms.fill",
  "fontFamilies": ["Primary", "Sans", "Serif"],
  "fallbackFontFamilies": true,
  "fields": [{"name": "Input", "richTextRuns": [
    {"text": "A\u03a9a\u0301", "fontStyle": "regular",
     "fontFamilyCandidates": ["Unavailable", "Primary", "Serif", "Sans"]}
  ]}]
}

fontFamilies contiene de una a dieciséis etiquetas configuradas distintas; las letras ASCII se comparan sin distinguir mayúsculas y los demás puntos de código Unicode se comparan exactamente; el fontFamilies y fallbackFontFamilies a nivel de campo sobrescriben sus valores por defecto de la operación para forms.fill

Un run tipado puede especificar de una a dieciséis fontFamilyCandidates ordenadas cuando el fallback de familias configuradas está activo; los nombres desconocidos permanecen en los metadatos escritos y se omiten durante la resolución de programas suministrados; si fontFamily está ausente, el primer candidato declarado configurado se convierte en la familia del run

Una lista de candidatos declarados controla la preferencia antes que el orden de familias configuradas; en este ejemplo, una fuente Primary sin Omega selecciona Serif antes que Sans cuando ambas alternativas suministradas cubren el grapheme completo

Importación de XML enriquecido

Para forms.import, usa las propiedades fontFamilies y fallbackFontFamilies a nivel de operación; el decoder XHTML acotado preserva cada lista CSS font-family inline y el compositor real de apariencias aplica ese orden a los programas de fuentes suministrados

<span style="font-family:Primary,Serif,Sans;font-weight:bold">AΩá</span>

Tanto los strings RV de FDF como los value-richtext de XFDF usan esta ruta; el perfil inline-xhtml-font-families-v1 existente permanece sin cambios, mientras que el comportamiento real de fallback se reporta por separado

Bytes reales de fuentes

El callback de fuentes existente de THPDFCABIFormDataOperationV1 recibe cada etiqueta canónica de familia configurada y el identificador de estilo regular, bold, italic o boldItalic; devuelve la tabla original acotada de read-IO y sus bytes se copian a almacenamiento propio

Los file jobs leen los mismos programas de familia/estilo de su objeto fonts existente; para cada estilo enriquecido usado, el binding carga los programas candidatos configurados antes de preparar la transacción; los assets coincidentes se comparten entre campos tipados

Los layouts V1 de IO y operación y los símbolos exportados existentes permanecen sin cambios; los presupuestos agregados de assets, bytes de fuentes, memoria, campos, objetos, resultados y salidas siguen aplicándose; los fallos de callbacks siguen siendo sticky y los checkpoints de cancelación cubren parsing, carga, preparación y publicación

Transacciones y límites

La autenticación AES, la preservación de revisiones firmadas, DocMDP, los locks de campos y las verificaciones de solo lectura usan la transacción autenticada existente; valores enriquecidos, estilos, fuentes y semántica de apariencia de la misma entrada pueden producir un no-op byte-idéntico, incluidos los campos de solo lectura

Los callbacks de PDF y JSON deben tener éxito ambos antes de que el contexto actual cambie; descarta los bytes del candidato emitidos después de cualquier estado distinto de cero; los file jobs preparan el candidato completo antes de reemplazar el destino

formDataExchange.suppliedFamilyFallback reporta default=false, richOnly=true, wholeGrapheme=true, fontFamilyCandidates=true, maxCandidates=16 y candidateOrder=declared-before-configured

Esta función se aplica al contenido enriquecido; el fallback ordinario escalar, de etiquetas de choice y de captions de botones sigue siendo una capacidad separada; por ejemplo, una primera fuente subset sin el glifo del caption del checkbox todavía necesita una fuente escalar apropiada o soporte futuro de fallback escalar

El llenado enriquecido directo de jobs cargados, la extensión anterior de handle de job/callback de fuentes, el layout CSS arbitrario, las hojas de estilo externas y el intercambio adicional de anotaciones, archivos, acciones o incremental FDF/XFDF siguen siendo trabajo separado

Temas relacionados

Llenado tipado enriquecido original, Intercambio de datos de formulario en Windows, Transporte versionado de fuentes, Familias suministradas nativas