Fallback dei font per rich text forniti

Imposta THPDFHeadlessTextAppearanceOptions.FallbackFontFamilies a True per risolvere i glifi rich text mancanti dalle famiglie fornite a HPDFBuildHeadlessRichTextFamilyAppearance o SetRichTextFieldValueWithFamilies

Il default è False, preservando la selezione stretta di ogni famiglia e stile autoriali; il text builder a font singolo non cerca altre famiglie

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

Selezione e shaping

Il resolver usa confini completi di grapheme estesi Unicode 17 attraverso run di stile autoriali adiacenti e cuciture di run vuoti dentro ogni paragrafo; una decisione di famiglia non spezza mai una coppia di surrogati, una sequenza combining, una variation sequence o un cluster di joiner

Quando il primo run interessato fornisce FontFamilyCandidates, il suo ordine dichiarato ha precedenza e ogni candidato configurato deve coprire ogni parte con stile del grapheme completo; se nessuno si qualifica, si applicano le regole di fallback esistenti per famiglia selezionata e array fornito descritte sotto

Se i programmi selezionati coprono l'intero grapheme, le loro famiglie autoriali restano in uso; altrimenti il resolver prova prima la famiglia del primo run interessato, seguita dalle famiglie fornite in ordine di array, selezionando una famiglia che copra ogni parte con stile del grapheme completo con il corrispondente programma reale regular, bold, italic o bold-italic

I programmi di stile mancanti vengono saltati come candidati, mentre un programma malformato che deve essere ispezionato produce un errore tipizzato di font non valido; i controlli di layout e shaping non richiedono glifi cmap visibili; un grapheme che nessuna famiglia fornita copre produce haMissingGlyph

Shaping contestuale esistente, ordinamento bidirezionale, posizionamento cross-style dei mark, wrapping, interruzioni di paragrafo esplicite e rotazione dei widget si applicano ai run di aspetto risolti

Valori e transazioni

I run di fallback esistono solo durante la preparazione degli aspetti; i run del chiamante restano invariati e il documento memorizza il valore plain originale e il markup rich autoriale in V e RV

Le dimensioni in punti tipizzate e le componenti RGB passano direttamente al layout dell'aspetto senza essere ricostruite dal valore rich serializzato, la cui rappresentazione testuale canonica ha la propria precisione

Le importazioni FDF e XFDF family-aware accettano la stessa opzione e conservano i loro contratti esistenti di sorgente immutabile, firma, sicurezza, no-op semantico e pubblicazione

Limiti e dipendenze

Il limite aggregato MaxFontBytes conta ogni programma famiglia/stile ispezionato durante il fallback, inclusi candidati validi non alla fine incorporati; l'aspetto incorpora solo gli stili selezionati

I budget esistenti su input UTF-16, glifi, oggetti e byte restano in vigore, e la risoluzione può produrre al massimo 4096 run con stile; la cancellazione viene controllata durante selezione font e copertura scalare oltre che durante layout e pubblicazione

Lo shaping complesso conserva le dipendenze esistenti HarfBuzz e FriBidi; il fallback usa solo byte font forniti, senza discovery implicita di font di sistema, alias generici, font scaricati o style sheet scaricati; le liste esplicite ordinate di candidati font conservano l'ordine supportato delle famiglie CSS inline

Le API native di famiglia espongono questa opzione; il JSON Linux a famiglie nominate accetta lo stesso flag opt-in e prepara programmi candidati reali; il caricamento fallback via callback Windows resta lavoro separato

Collaudo

Sei target compilatori nativi superano ciascuno 199 controlli su 30 PDF salvati e 1098 controlli indipendenti su valori, font incorporati, glifi, shaping, precisione, righe e pixel visibili; programmi font subset e full reali coprono tutti e quattro gli stili, mark combining cross-style, giunzioni arabe, ebraico, joiner supplementari, candidati famiglia ordinati, AES R5/R6, FDF/XFDF, budget tipizzati e otto checkpoint di cancellazione selezionati incluso il checkpoint finale

Le interfacce C++Builder aggiornate compilano entrambe le architetture; l'evidenza reale rilasciata di glifi mancanti e la prova riuscita del glifo widget primary/fallback/primary reale vengono conservate separatamente

Famiglie nominate · Opzioni di aspetto