공급 리치 텍스트 폰트 폴백

THPDFHeadlessTextAppearanceOptions.FallbackFontFamilies를 True로 두면 HPDFBuildHeadlessRichTextFamilyAppearance나 SetRichTextFieldValueWithFamilies에 공급한 패밀리에서 없는 리치 텍스트 글리프를 해석합니다

기본값은 False이며 작성된 패밀리와 스타일의 엄격한 선택을 유지합니다. 단일 폰트 텍스트 빌더는 다른 패밀리를 찾지 않습니다

Options:= THPDFHeadlessTextAppearanceOptions.Default;
Options.FallbackFontFamilies:= True;
Document.SetRichTextFieldValueWithFamilies(FieldIndex, Runs, Families, Options);

선택과 셰이핑

리졸버는 인접한 작성 스타일 run과 문단 안의 빈 run 이음새를 가로지르는 완전한 Unicode 17 확장 그래핌 경계를 씁니다. 패밀리 결정은 서러게이트 쌍, 결합 시퀀스, 변형 시퀀스, 조인터 클러스터를 절대 쪼개지 않습니다

첫 번째 영향받은 run이 FontFamilyCandidates를 공급하면 선언된 순서가 우선하고, 설정된 후보 각각은 완전한 그래핌의 스타일 적용 부분 전부를 커버해야 합니다. 자격이 되는 게 없으면 아래의 기존 선택 패밀리·공급 배열 폴백 규칙이 적용됩니다

선택된 프로그램이 그래핌 전체를 커버하면 작성된 패밀리가 계속 쓰입니다. 그렇지 않으면 리졸버가 첫 번째 영향받은 run의 패밀리를 먼저 시도하고 배열 순서대로 공급 패밀리를 따라가며, 완전한 그래핌의 스타일 적용 부분 전부를 대응하는 실제 regular, bold, italic, bold-italic 프로그램으로 커버하는 패밀리 하나를 고릅니다

없는 스타일 프로그램은 후보에서 건너뛰지만, 반드시 들여다봐야 하는 잘못된 프로그램은 타입화된 invalid-font 오류를 냅니다. 레이아웃과 셰이핑 제어에는 보이는 cmap 글리프가 필요하지 않습니다. 공급된 어떤 패밀리도 커버하지 못하는 그래핌은 haMissingGlyph를 냅니다

기존 문맥 셰이핑, 쌍방향 순서, 교차 스타일 마크 배치, 줄바꿈, 명시적 문단 나눔, 위젯 회전은 해석된 appearance run에 적용됩니다

값과 트랜잭션

폴백 run은 appearance 준비 중에만 존재합니다. 호출자의 run은 그대로이고 문서는 원본 평문 값과 작성된 리치 마크업을 V와 RV에 저장합니다

타입화된 포인트 크기와 RGB 구성 요소는 직렬화된 리치 값에서 재구성되지 않고 곧장 appearance 레이아웃으로 넘어갑니다. 그 값의 정규 텍스트 표현에는 자기만의 정밀도가 있습니다

패밀리 인식 FDF·XFDF 임포트는 같은 옵션을 받고 기존 불변 소스, 서명, 보안, 의미적 no-op, 발행 계약을 유지합니다

한도와 의존성

집계 MaxFontBytes 한도는 폴백 중 들여다본 패밀리/스타일 프로그램마다 세어 들이며, 결국 임베드되지 않은 유효 후보도 포함입니다. appearance는 선택된 스타일만 임베드합니다

기존 UTF-16 입력, 글리프, 객체, 바이트 예산은 계속 적용되고, 해석은 스타일 적용 run을 최대 4096개까지 만들 수 있습니다. 취소는 레이아웃과 발행뿐 아니라 폰트 선택과 스칼라 커버리지 중에도 검사합니다

복잡한 셰이핑은 기존 HarfBuzz와 FriBidi 의존을 유지합니다. 폴백은 공급된 폰트 바이트만 쓰며, 암시적 시스템 폰트 탐색, 일반 별칭, 내려받은 폰트나 스타일시트가 없습니다. 명시적 순서화 폰트 후보 목록은 지원되는 인라인 CSS 패밀리 순서를 유지합니다

네이티브 패밀리 API는 이 옵션을 노출합니다. Linux 이름 붙은 패밀리 JSON은 같은 옵트인 플래그를 받고 실제 후보 프로그램을 준비합니다. Windows 콜백 폴백 로딩은 별도 작업으로 남습니다

검수

여섯 네이티브 컴파일러 타깃이 저장된 PDF 30개에 걸친 검사 199개와 독립적인 값·임베디드 폰트·글리프·셰이핑·정밀도·행·가시 픽셀 검사 1098개를 각자 통과합니다. 실제 서브셋과 풀 폰트 프로그램은 네 스타일 전부, 교차 스타일 결합 마크, 아랍어 접합, 히브리어, 보충 조인터, 순서화 패밀리 후보, AES R5/R6, FDF/XFDF, 타입화 예산, 마지막 체크포인트를 포함한 여덟 개 선별 취소 체크포인트를 커버합니다

새 C++Builder 인터페이스는 두 아키텍처 모두 컴파일됩니다. 실제 릴리스된 missing-glyph 증거와 성공한 실제 primary/fallback/primary 위젯 글리프 증명은 별도로 보존됩니다

이름 붙은 패밀리 · appearance 옵션