HPDFShapeHeadlessTextStyledSpan
function HPDFShapeHeadlessTextStyledSpan(const Context: UnicodeString;
FirstUnit, UnitCount: Integer; const Order: THPDFHeadlessTextOrder;
const FontBytes: SysUtils.TBytes; MaximumGlyphs: Integer;
CancellationToken: THPDFCancellationToken;
CharacterAdvance, WordAdvance: Double;
CSSLetterSpacing, CSSWordSpacing: Boolean): THPDFHeadlessShapedGlyphs;
HPDFHeadlessShaping에 선언된 이 함수는 완전한 주위 컨텍스트와 이전에 해석된 시각 순서, 공급된 HarfBuzz·FriBidi 런타임과 폰트 바이트로 UTF-16 스팬을 셰이핑합니다
FirstUnit은 0 기반 UTF-16 오프셋이고 UnitCount는 요청된 스팬을 선택합니다. 호출자는 호환되는 순서 데이터와 양수 MaximumGlyphs 예산을 공급해야 합니다
CharacterAdvance와 WordAdvance는 PDF 포인트가 아니라 정규화된 1000 폰트 유닛 전진을 씁니다. 호출 전에 points * 1000 / fontSize로 포인트 간격을 변환하세요
원시 전진은 유한해야 하고 절대값이 최대 1000000000000000이어야, 지원되는 최소 양수 폰트 크기에서도 네이티브 포인트 예산이 들어갑니다. appearance 빌더는 자기만의 작성·계산 포인트 한도를 별도로 강제합니다
CSSLetterSpacing은 타이포그래피 유닛 tracking과 선택적 라이게이처 처리를 켭니다. CSSWordSpacing은 구분자 마크를 포함해 SPACE와 NBSP 클러스터 주위의 절반 간격을 켜고, 제한된 간격 프로파일을 따릅니다
반환된 글리프 전진과 오프셋은 요청된 간격을 포함합니다. SpacingAdvance는 그 기여를 기록하고, TypographicUnit, CursiveUnit, WordSeparator는 리치 물리 줄 작성기에 경계 메타데이터를 제공합니다
취소는 분류와 셰이핑 중 검사되고, 글리프 예산이나 잘못된 입력 실패는 기존 셰이핑 예외 계약을 씁니다. 이 함수는 PDF를 발행하지 않고 호출자의 폰트 바이트나 토큰을 소유하지도 않습니다
기존 셰이핑 진입점은 이전 의미론을 유지합니다. Pascal과 C++Builder 소비자는 매칭되는 공개 글리프 레코드와 생성된 헤더로 다시 빌드하세요