フォントフォールバックと縦書きテキスト

HotPDF は Unicode スクリプトによりフォールバックフェイスを選択し、未解決のコードポイントを報告し、実際の縦書き CID 書き込みモードで CJK テキストを出力できます

ドキュメントレベルのフォールバックチェーン

THotPDF.SetFontFallbackChain は1つの THPDFFontScript カテゴリに対して順序付けられたフェイスリストを保存します

THPDFPage.TextOutWithFallback は各 Unicode スカラーを選択されたフェイス、そのスクリプトチェーン、共通チェーンに対して解決し、同じフェイスを持つ隣接スカラーを1つのテキストランとして出力します

実行可能な診断

AnalyzeUnresolvedGlyphs は読み取り専用のカバレッジ監査を実行し、TextOutWithFallback は出力中に遭遇した未解決スカラーを記録します

各 THPDFUnresolvedGlyphInfo にはスカラーコードポイント、プライマリフェイス、分類されたスクリプト、およびセミコロン区切りのフォールバック提案リストが含まれます

GetUnresolvedGlyphs は現在のドキュメントレポートを返し、ClearUnresolvedGlyphs は新しい報告間隔を開始します

THotPDF.ResolveFontForCodePoint と THotPDF.AnalyzeUnresolvedGlyphs の明示スタイル付きオーバーロードは TFontStyles を受け付けるため、プリフライトで出力時に使われるのと同じフェイスを検査できます。元のオーバーロードは引き続き regular フェイスを検査します

テキストボックス、SVG 埋め込みテキスト、ロード済みテキストの外観は、PDF 内部のフォント名をシステムファミリーとして扱ったり、すべてのランを regular フェイスに切り替えたりすることなく、フォールバックレイアウトを通じてスタイル付きフォントファミリーを保持します

縦書き CJK

THPDFPage.TextOutVertical は現在のフェイスの縦書きバリアントを選択し、文字ごとに手動配置する代わりに 1 つの 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