Fallback de fonturi și text vertical
HotPDF poate selecta fețe de fallback după scriptul Unicode, poate raporta punctele de cod care rămân nerezolvate și poate scrie text CJK printr-un mod real de scriere CID vertical
Lanțuri de fallback la nivel de document
THotPDF.SetFontFallbackChain stochează o listă ordonată de fețe pentru o categorie THPDFFontScript
THPDFPage.TextOutWithFallback rezolvă fiecare scalar Unicode în raport cu fața selectată, lanțul său de script și lanțul comun, apoi emite scalar-adiacente cu aceeași față ca o singură execuție de text
- Lanțurile de fallback sunt setări la nivel de document și rămân disponibile între pagini
- Numele de fețe duplicate și goale sunt eliminate, păstrându-se ordinea apelantului
- Probarea fețelor instalate respinge substituirea GDI silențioasă înainte de a accepta acoperirea
- Scalar-ii din planurile suplimentare sunt decodați din perechi de surrogate UTF-16 înainte de clasificare
- Fiecare execuție de fallback utilizează fontul Type0 încorporat existent, subsetarea,
ToUnicodeși calea comună de font între pagini - Așezarea fallback verifică familiile de fonturi instalate cu fața bold și italic cerută, păstrează toate setările de stil de font, de set de caractere, de dimensiune și de direcție de scriere între execuții și restaurează fontul apelantului la final
Diagnosticare acționabilă
AnalyzeUnresolvedGlyphs efectuează un audit de acoperire în mod doar-citire, în timp ce TextOutWithFallback înregistrează scalar-ii nerezolvați întâlniți în timpul generării
Fiecare THPDFUnresolvedGlyphInfo include punctul de cod scalar, fața principală, scriptul clasificat și o listă de sugestii de fallback separatate prin punct și virgulă
GetUnresolvedGlyphs returnează raportul curent al documentului, iar ClearUnresolvedGlyphs pornește un nou interval de raportare
Overload-urile cu stil explicit ale THotPDF.ResolveFontForCodePoint și THotPDF.AnalyzeUnresolvedGlyphs acceptă TFontStyles, astfel încât preflight-ul poate inspecta aceeași față folosită la output; overload-urile lor originale continuă să inspecteze fețele regular
Casetele de text, textul SVG încorporat și aspectele de text încărcate păstrează familiile de fonturi cu stil de-a lungul așezării fallback, în loc să trateze numele interne de fonturi PDF ca familii de sistem sau să treacă fiecare execuție pe o față regular
Scriere CJK verticală
THPDFPage.TextOutVertical selectează varianta verticală a feței curente și emite o singură execuție de text Identity-V în loc să poziționeze fiecare caracter manual
- Fontul descendent CID conține valorile implicite
/DW2și intrări/W2specifice fiecărei glife - Tabelele OpenType
vheașivmtxfurnizează avansurile verticale și spațierile superioare laterale; originile TrueType sunt derivate din caseta încadratoare a fiecărei glifeglyf, în timp ceVORGfurnizează valorile implicite autoritare de origine CFF și excepțiile - Fonturile fără tabele verticale folosesc avans implicit configurabil de 1000 unități și origine implicită de 880 unități
- Cu
sfVerticalAlternates, rularea GSUB completă care conservă lungimea foloseștevrt2când este anunțat, altfel cade pevert, păstrând selecția activă de script și limbă - Când un font omite o substituție de punctuație dar mapează formele de prezentare verticale Unicode, virgulele, punctele, parantezele, liniuțele, elipsele și punctuația înrudită folosesc acele glife, în timp ce
ToUnicodepăstrează textul sursă - Funcționalitățile
vert,vrt2și GPOS vertical existente rămân disponibile prinShapingFeatures GetVerticalTextAdvancereturnează avansul în spațiul utilizatorului necesar pentru a poziționa următoarea execuție verticală
Exemplu
PDF.SetFontFallbackChain(hfsCJK,
['Microsoft YaHei UI', 'Yu Gothic UI', 'Malgun Gothic']);
PDF.SetFontFallbackChain(hfsEmoji, ['Segoe UI Emoji']);
PDF.CurrentPage.SetFont('Arial', [], 12);
PDF.CurrentPage.TextOutWithFallback(72, 72, 0, Text);
PDF.CurrentPage.SetFont('Yu Gothic UI', [], 14);
PDF.CurrentPage.TextOutVertical(420, 72, VerticalText);
Missing := PDF.GetUnresolvedGlyphs;