HPDFShapeHeadlessText
function HPDFShapeHeadlessText(const Text: UnicodeString;
const FontBytes: SysUtils.TBytes; MaximumGlyphs: Integer;
CancellationToken: THPDFCancellationToken;
MaximumLineAdvance: Double = 0; CharacterAdvance: Double = 0;
WordAdvance: Double = 0): THPDFHeadlessShapedGlyphs;
호출자가 공급한 OpenType 폰트를 HarfBuzz로 쓰고 Unicode 시각 run을 FriBidi로 풀며, 1000단위 폰트 좌표로 클러스터와 positioning을 유지합니다
CR/LF 문단은 독립적으로 셰이핑됩니다. 양의 MaximumLineAdvance는 마지막 셰이핑 패스 전에 논리 클러스터 래핑을 요청합니다
자동 물리 행은 원본 온전한 문단의 방향성 임베딩, 오버라이드, 아이솔레이트, 짝 지은 괄호를 상속합니다. 각 행은 자신의 공백 재설정, 시각 재정렬, HarfBuzz 접합 컨텍스트를 갖습니다
문단 순서는 한 번 풀어 물리 행 사이에서 바꾸지 않고 재사용합니다. 실제 CR/LF 구분자는 새 문단을 시작하고 제어 상태를 재설정합니다
자동 래핑이 텍스트를 바꿀 때 SourceOffset은 삽입된 U+000A 행바꿈과 기존 break space 제거를 포함해 정규화된 래핑 논리 시퀀스 기준으로 남습니다. 글리프 UnicodeText, 필드 값, PDF ActualText는 기존 논리 계약을 유지합니다
CharacterAdvance와 WordAdvance는 같은 1000단위 폰트 좌표의 선택적 유한 어드밴스입니다. 문자 어드밴스는 Unicode 방향 제어만 담은 클러스터를 제외하고 마지막 클러스터를 포함해 셰이핑된 클러스터마다 한 번 적용되고, 단어 어드밴스는 U+0020 클러스터에 적용되며 둘 다 논리 래핑과 반환 글리프 어드밴스에 반영됩니다
입력·생성 글리프는 삽입된 행바꿈 레코드를 포함해 같은 총 MaximumGlyphs로 한정됩니다. 잘못된 서러게이트와 없는 필수 글리프는 실패하고, 취소는 문단·run·캐시 행 리졸루션·래핑 체크포인트 사이에서 검사됩니다
Linux는 libharfbuzz.so.0과 libfribidi.so.0을 쓰고, Windows는 아키텍처가 일치하는 라이브러리가 필요합니다. HOTPDF_HARFBUZZ_LIBRARY와 HOTPDF_FRIBIDI_LIBRARY로 명시적 경로를 줄 수 있습니다
PDF 폰트 권한, CID 객체, ToUnicode, appearance 링크, 증분 출력에는 HPDFBuildHeadlessTextAppearance나 문서 appearance 메서드를 쓰세요
Windows 네이티브 복합 텍스트는 일치하는 프로세스 아키텍처와 런타임 의존성 검색 경로를 설명합니다
선택한 스타일 항목을 주변 문단 컨텍스트로 셰이핑하려면 HPDFShapeHeadlessTextSpan을, 실제 Unicode 시각 위치를 살피려면 HPDFResolveHeadlessTextOrder를 쓰세요