Listes ordonnées de polices candidates pour rich text

Le rich text peut conserver une liste explicite ordonnée de familles et utiliser cet ordre pour sélectionner les véritables programmes de polices fournis pour un graphème Unicode complet

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;

Fournissez les programmes réels de famille et de style via les API de familles nommées existantes ; les libellés dans FontFamilyCandidates ne découvrent ni ne téléchargent de polices

Sélection et préservation

Le premier run rédigé concerné fournit la liste pour un graphème entier, y compris les jointures de style et les caractères combinants ; chaque candidate configurée doit couvrir chaque partie stylée avec son programme réel regular, bold, italic ou bold-italic

Les libellés inconnus et les candidates sans programme de style sont ignorés ; si aucune candidate déclarée ne couvre le graphème, les règles de fallback existantes par famille sélectionnée et tableau fourni s'appliquent

FontFamily doit correspondre au premier libellé configuré d'une liste de candidates non vide quand elle existe ; omettre un FontFamily typé en JSON sélectionne automatiquement cette correspondance

Le fallback ne change que la préparation d'apparence : la valeur simple rédigée, la taille typée précise et la couleur, ainsi que l'ordre d'origine des candidates restent dans V et RV ; le resolver ne réécrit jamais les runs de l'appelant

XHTML inline et échange de données

Définissez THPDFHeadlessRichTextDecodeOptions.PreserveFontFamilyLists à True avec FontFamilyNames configuré pour conserver les déclarations font-family inline séparées par des virgules et prises en charge, y compris l'héritage et la priorité important par propriété

Les imports FDF et XFDF sensibles aux familles activent cette préservation quand leurs options d'apparence activent FallbackFontFamilies ; le décodage strict par défaut conserve la sélection existante de la première famille configurée

Les listes contiennent au plus seize libellés, chacun borné à 128 unités de code UTF-16 avec un Unicode valide, sans caractères de contrôle, espaces environnants, guillemets, antislashs, virgules ni points-virgules ; les libellés déclarés dupliqués ou inconnus conservent leur ordre de rédaction

JSON Linux natif

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

L'ordre déclaré Serif avant Sans contrôle le fallback même quand l'opération configure Sans avant Serif ; le fournisseur Fontconfig existant fournit les programmes nommés réels sous les mêmes limites globales de polices et de mémoire

Les tableaux de candidates typés par run exigent des fontFamilies configurées et un fallbackFontFamilies activé ; les tableaux ou libellés malformés, la couverture de graphème incomplète, les budgets épuisés et l'annulation échouent transactionnellement avant le commit du contexte

La capacité formData.richFontFamilyCandidates et maxFontFamilyCandidates=16 annoncent cette option bornée à travers les callbacks V1 inchangés et les versions de symboles exportés

Les remplissages de formulaires chaînés réussis et les imports FDF/XFDF équivalents conservent leur document commité et l'instantané source ; les échecs de callbacks de sortie ou de résultat préservent la révision commitée précédente

Périmètre

Ce profil couvre les libellés candidats fournis et les déclarations inline prises en charge ; les feuilles de style externes, le layout CSS arbitraire, la découverte de familles génériques et le chargement de fallback par callback sous Windows restent des travaux séparés

Comportement de fallback · Record de run typé · Options de décodage · Binding Linux natif