字体回退和竖排文本

HotPDF 可以按 Unicode 脚本选择回退字体,报告仍然未解析的码位,并通过真正的竖排 CID 书写模式输出 CJK 文本

文档级回退链

THotPDF.SetFontFallbackChain 为某个 THPDFFontScript 类别存储一个有序的字体列表

THPDFPage.TextOutWithFallback 对照所选字体、其脚本链和公共链解析每一个 Unicode 标量,然后将使用相同字体的相邻标量作为一个文本走向输出

可操作的诊断

AnalyzeUnresolvedGlyphs 执行只读的覆盖审计,而 TextOutWithFallback 记录在输出期间遇到的未解析标量

每个 THPDFUnresolvedGlyphInfo 包含标量码位、主字体、已分类的脚本,以及一个以分号分隔的回退建议列表

GetUnresolvedGlyphs 返回当前文档报告,ClearUnresolvedGlyphs 开始一个新的报告间隔

THotPDF.ResolveFontForCodePoint 和 THotPDF.AnalyzeUnresolvedGlyphs 的显式样式重载接受 TFontStyles,预检得以检查与输出相同的字型;原重载仍检查常规字型

文本框、SVG 内嵌文本和已加载文本外观会在回退排版中保留带样式的字族,而不是把 PDF 内部字体名当作系统字族,也不是把每个走向都切换成常规字型

竖排 CJK 书写

THPDFPage.TextOutVertical 选择当前字体的竖排变体,并输出一个 Identity-V 文本走向,而不是手动定位每一个字符

示例

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;

相关 API