Windows 공급 패밀리 리치 폰트 폴백

Windows 파일 작업과 hpdf_document_execute_json_v1은 리치 FDF/XFDF 임포트와 원본 타입화 리치 run을 위해 호출자가 공급한 폰트 패밀리 사이의 옵트인 폴백을 지원합니다. 폴백은 리치 스타일 경계를 넘는 부분을 포함해 그래핌 전체를 커버하는 패밀리를 고릅니다

기본값은 여전히 엄격합니다. fallbackFontFamilies는 false이고 필요한 글리프가 없으면 평범하게 실패합니다. 목록을 공급한다고 설치된 시스템 폰트가 조용히 선택되지는 않습니다

타입화 요청

{
  "schemaVersion": 1,
  "type": "forms.fill",
  "fontFamilies": ["Primary", "Sans", "Serif"],
  "fallbackFontFamilies": true,
  "fields": [{"name": "Input", "richTextRuns": [
    {"text": "A\u03a9a\u0301", "fontStyle": "regular",
     "fontFamilyCandidates": ["Unavailable", "Primary", "Serif", "Sans"]}
  ]}]
}

fontFamilies는 서로 다른 설정 레이블 1~16개를 담습니다. ASCII 글자는 대소문자 없이 비교하고 다른 Unicode 코드 포인트는 정확히 비교합니다. field 수준 fontFamilies와 fallbackFontFamilies는 forms.fill의 연산 기본값을 덮어씁니다

설정 패밀리 폴백이 켜져 있으면 타입화 run은 순서 있는 fontFamilyCandidates 1~16개를 지정할 수 있습니다. 모르는 이름은 작성된 메타데이터에 남고 공급 프로그램 해석 때 건너뛰어집니다. fontFamily가 없으면 설정된 선언 후보 중 첫 번째가 run 패밀리가 됩니다

선언된 후보 목록이 설정 패밀리 순서보다 우선권을 통제합니다. 이 예에서 Omega가 없는 Primary 폰트는 공급된 대안 둘 다 그래핌 전체를 커버할 때 Sans보다 Serif를 먼저 고릅니다

리치 XML 임포트

forms.import에는 연산 수준 fontFamilies와 fallbackFontFamilies 프로퍼티를 쓰세요. 유한한 XHTML 디코더는 인라인 CSS font-family 목록을 각각 유지하고 실제 appearance 작곡기가 공급된 폰트 프로그램에 그 순서를 적용합니다

<span style="font-family:Primary,Serif,Sans;font-weight:bold">AΩá</span>

FDF RV 문자열과 XFDF value-richtext 모두 이 경로를 씁니다. 기존 inline-xhtml-font-families-v1 프로파일은 그대로이고 실제 폴백 동작은 별도로 보고됩니다

실제 폰트 바이트

기존 THPDFCABIFormDataOperationV1 폰트 콜백은 정규 설정 패밀리 레이블과 regular, bold, italic, boldItalic 스타일 식별자를 받습니다. 원래의 유한 read-IO 테이블을 반환하면 그 바이트가 소유 스토리지로 복사됩니다

파일 작업은 기존 fonts 객체에서 같은 패밀리/스타일 프로그램을 읽습니다. 쓰이는 리치 스타일마다 바인딩이 트랜잭션 준비 전에 설정된 후보 프로그램을 로드하고, 일치하는 에셋은 타입화 field 사이에서 공유됩니다

V1 IO와 연산 레이아웃, 기존 export 심볼은 그대로입니다. 에셋, 폰트 바이트, 메모리, field, 객체, 결과, 출력 집계 예산도 계속 적용됩니다. 콜백 실패는 여전히 끈적하게 남고 취소 체크포인트는 파싱, 로딩, 준비, 발행을 커버합니다

트랜잭션과 한도

AES 인증, 서명 리비전 보존, DocMDP, field 잠금, 읽기 전용 검사는 기존 인증 트랜잭션을 씁니다. 같은 입력의 리치 값, 스타일, 폰트, appearance 의미론은 읽기 전용 field를 포함해 바이트 단위로 동일한 no-op를 만들 수 있습니다

현재 컨텍스트가 바뀌기 전에 PDF와 JSON 콜백이 둘 다 성공해야 합니다. 0이 아닌 상태가 나오면 내보낸 후보 바이트를 버리세요. 파일 작업은 대상을 교체하기 전에 후보 전체를 준비합니다

formDataExchange.suppliedFamilyFallback은 default=false, richOnly=true, wholeGrapheme=true, fontFamilyCandidates=true, maxCandidates=16, candidateOrder=declared-before-configured를 보고합니다

이 기능은 리치 콘텐츠에 적용됩니다. 평범한 스칼라, 선택 레이블, 버튼 캡션 폴백은 별도 기능으로 남습니다. 예컨대 체크박스 캡션 글리프가 없는 서브셋 우선 폰트에는 적절한 스칼라 폰트나 미래의 스칼라 폴백 지원이 여전히 필요합니다

직접 로드 작업 리치 채우기, 구식 작업 핸들/폰트 콜백 확장, 임의 CSS 레이아웃, 외부 스타일시트, 더 많은 FDF/XFDF 주석·파일·액션·증분 교환은 별도 작업으로 남아 있습니다

관련 주제

원본 타입화 리치 채우기, Windows 폼 데이터 교환, 버전화된 폰트 전송, 네이티브 공급 패밀리