Fallback de polices de rich text fournies

Réglez THPDFHeadlessTextAppearanceOptions.FallbackFontFamilies à True pour résoudre les glyphes de rich text manquants depuis les familles fournies à HPDFBuildHeadlessRichTextFamilyAppearance ou SetRichTextFieldValueWithFamilies

La valeur par défaut est False, préservant la sélection stricte de chaque famille et style rédigés ; le builder de texte à police unique ne cherche pas d'autres familles

Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;
Document.SetRichTextFieldValueWithFamilies(FieldIndex, Runs, Families, Options);

Sélection et shaping

Le résolveur utilise des frontières complètes de graphèmes étendus Unicode 17 à travers les runs de styles rédigés adjacents et les coutures de runs vides dans chaque paragraphe ; une décision de famille ne coupe jamais une paire surrogate, une séquence combinante, une séquence de variation ou un cluster de joiners

Quand le premier run affecté fournit FontFamilyCandidates, son ordre déclaré prime et chaque candidat configuré doit couvrir chaque partie stylée du graphème complet ; si aucun ne qualifie, les règles de fallback existantes de famille sélectionnée et de tableau fourni ci-dessous s'appliquent

Si les programmes sélectionnés couvrent le graphème entier, leurs familles rédigées restent en usage ; sinon le résolveur essaie d'abord la famille du premier run affecté, puis les familles fournies dans l'ordre du tableau, en sélectionnant une famille qui couvre chaque partie stylée du graphème complet avec le véritable programme correspondant regular, bold, italic ou bold-italic

Les programmes de styles manquants sont sautés comme candidats, tandis qu'un programme malformé qui doit être inspecté produit une erreur typée de police invalide ; les contrôles de mise en page et de shaping n'exigent pas de glyphes cmap visibles ; un graphème qu'aucune famille fournie ne couvre produit haMissingGlyph

Le shaping contextuel existant, l'ordre bidirectionnel, le placement de marques entre styles, le retour à la ligne, les sauts de paragraphes explicites et la rotation de widgets s'appliquent aux runs d'apparences résolus

Valeurs et transactions

Les runs de fallback n'existent que pendant la préparation des apparences ; les runs de l'appelant restent inchangés et le document stocke la valeur brute d'origine et le markup riche rédigé dans V et RV

Les tailles en points typées et les composants RGB passent directement à la mise en page d'apparence sans être reconstruits depuis la valeur riche sérialisée, dont la représentation textuelle canonique a sa propre précision

Les imports FDF et XFDF conscients des familles acceptent la même option et conservent leurs contrats existants de source immuable, de signatures, de sécurité, de no-op sémantique et de publication

Bornes et dépendances

La limite globale MaxFontBytes compte chaque programme famille/style inspecté pendant le fallback, y compris les candidats valides qui ne sont pas finalement embarqués ; l'apparence n'embarque que les styles sélectionnés

Les budgets existants d'entrée UTF-16, de glyphes, d'objets et d'octets restent en vigueur, et la résolution peut produire au plus 4096 runs stylés ; l'annulation est vérifiée pendant la sélection de polices et la couverture scalaire aussi bien que pendant la mise en page et la publication

Le shaping complexe conserve les dépendances HarfBuzz et FriBidi existantes ; le fallback n'utilise que les octets de polices fournis, sans découverte implicite de polices système, d'alias génériques, de polices téléchargées ou de feuilles de style téléchargées ; les listes explicites ordonnées de candidats de polices conservent l'ordre des familles CSS inline pris en charge

Les APIs natives de familles exposent cette option ; le JSON à familles nommées Linux accepte le même flag opt-in et prépare de véritables programmes candidats ; le chargement de fallback par callbacks Windows reste un travail séparé

Acceptation

Six cibles de compilation natives passent chacune 199 vérifications sur 30 PDF enregistrés et 1098 vérifications indépendantes de valeurs, de polices embarquées, de glyphes, de shaping, de précision, de lignes et de pixels visibles ; de véritables programmes de polices subset et complets couvrent les quatre styles, les marques combinantes entre styles, la ligature arabe, l'hébreu, les joiners supplémentaires, les candidats de familles ordonnés, AES R5/R6, FDF/XFDF, les budgets typés et huit checkpoints d'annulation sélectionnés y compris le checkpoint final

De nouvelles interfaces C++Builder compilent les deux architectures ; les preuves réelles de glyphes manquants publiées et la preuve réussie de glyphe de widget primaire/fallback/primaire réelle sont conservées séparément

Familles nommées · Options d'apparence