Резервни шрифтове и вертикален текст
HotPDF може да избира резервни начертания по Unicode скрипт, да отчита кодови точки, които остават неразрешени, и да пише CJK текст чрез истински вертикален режим на CID писане
Вериги от резервни шрифтове на ниво документ
THotPDF.SetFontFallbackChain съхранява подреден списък с начертания за една категория THPDFFontScript
THPDFPage.TextOutWithFallback разрешава всеки Unicode скалар спрямо избраното начертание, неговата скриптна верига и общата верига, след това издава съседни скалари със същото начертание като една текстова поредица
- Веригите от резервни шрифтове са настройки на документа и остават достъпни между страниците
- Дублиращите се и празните имена на начертания се премахват, докато редът на извикващия се запазва
- Проверката за инсталирани начертания отхвърля мълчалива GDI замяна, преди да приеме покритието
- Скаларите от допълнителната равнина се декодират от UTF-16 сурогатни двойки преди класификация
- Всяка резервна поредица използва съществуващия вграден Type0 шрифт, подразделянето,
ToUnicodeи споделения път на шрифта между страниците - Подредбата с резервни шрифтове проверява инсталираните семейства с поисканото bold и italic начертание, запазва всички настройки за стил на шрифта, charset, размер и посока на писане през поредиците и възстановява шрифта на извикващия след това
Практическа диагностика
AnalyzeUnresolvedGlyphs изпълнява одит на покритието само за четене, докато TextOutWithFallback записва неразрешените скалари, срещнати по време на извеждането
Всеки THPDFUnresolvedGlyphInfo включва кодовата точка на скалара, основното начертание, класифицирания скрипт и разделен със точка и запетая списък с предложения за резервни шрифтове
GetUnresolvedGlyphs връща текущия отчет на документа, а ClearUnresolvedGlyphs стартира нов интервал за отчитане
Претоваренията с изричен стил на THotPDF.ResolveFontForCodePoint и THotPDF.AnalyzeUnresolvedGlyphs приемат TFontStyles, така че preflight може да инспектира същото начертание, използвано за изхода; оригиналните им претоварения продължават да инспектират regular начертания
Текстовите кутии, вграденият SVG текст и appearance-ите на зареден текст задържат стилизираните шрифтови семейства през подредбата с резервни шрифтове, вместо да третират вътрешните PDF имена на шрифтове като системни семейства или да превключват всяка поредица на regular начертание
Вертикално CJK писане
THPDFPage.TextOutVertical избира вертикалния вариант на текущото начертание и издава една вертикална текстова поредица Identity-V, вместо да позиционира всеки знак ръчно
- Наследственият CID шрифт съдържа стойности по подразбиране
/DW2и записи/W2за конкретни знаци - OpenType
vheaиvmtxподават вертикални advance-и и горни side bearing-и; TrueType началата се извеждат от огъващата кутияglyfна всеки глиф, докатоVORGподава авторитетните CFF начала по подразбиране и изключенията - Шрифтове без вертикални таблици използват конфигурируеми настройки по подразбиране: advance 1000 единици и начало 880 единици
- С
sfVerticalAlternatesпълният GSUB участък, запазващ дължината, използваvrt2, когато е обявен, и иначе се връща къмvert, запазвайки активния избор на писменост и език - Когато шрифт пропуска замяна на пунктуация, но преобразува Unicode вертикални presentation forms, запетаите, точките, скобите, тиретата, многоточията и свързаната пунктуация използват тези глифове, докато
ToUnicodeзапазва източниковия текст - Съществуващите характеристики
vert,vrt2и вертикалните GPOS остават достъпни чрезShapingFeatures GetVerticalTextAdvanceвръща напредването в потребителското пространство, необходимо за позициониране на следващата вертикална поредица
Пример
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;