Font Fallback and Vertical Text

HotPDF는 Unicode script별로 fallback 폰트를 고르고, 미해결 code point를 보고하고, 실제 세로 CID writing mode로 CJK 텍스트를 기록할 수 있습니다

문서 수준 폴백 체인

THotPDF.SetFontFallbackChain은 THPDFFontScript 범주 하나에 대한 순서 있는 글꼴 패밀리 목록을 저장합니다

THPDFPage.TextOutWithFallback는 각 Unicode scalar를 선택 폰트, 그 script 체인, 공용 체인으로 해석한 뒤 같은 폰트의 인접 scalar를 하나의 텍스트 run으로 출력합니다

Actionable diagnostics

AnalyzeUnresolvedGlyphs는 읽기 전용 커버리지 감사를 수행하고, TextOutWithFallback은 출력 중 만난 미해결 scalar를 기록합니다

각 THPDFUnresolvedGlyphInfo에는 scalar code point, 기본 폰트, 분류된 script, 세미콜론 구분 폴백 제안 목록이 담깁니다

GetUnresolvedGlyphs는 현재 문서 보고서를 반환하고, ClearUnresolvedGlyphs는 새 보고 구간을 시작합니다

THotPDF.ResolveFontForCodePoint와 THotPDF.AnalyzeUnresolvedGlyphs의 explicit-style overload는 TFontStyles를 받아 preflight가 출력에 쓰이는 것과 같은 서체를 검사할 수 있습니다. 기존 overload는 계속 regular 서체를 검사합니다

텍스트 박스, SVG 내장 텍스트, 로드된 text appearance는 폴백 레이아웃 전체에서 스타일이 적용된 글꼴 패밀리를 유지합니다. PDF 내부 글꼴 이름을 시스템 패밀리처럼 다루거나 모든 run을 regular 서체로 바꾸지 않습니다

Vertical CJK writing

THPDFPage.TextOutVertical는 현재 폰트의 세로 변형을 골라 모든 문자를 수동 배치하는 대신 Identity-V 텍스트 run 하나를 출력합니다

예제

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