자동 XFA 리치 캡션
유닛: HPDFXFA, HPDFXFAHeadless와 HPDFHeadlessAppearance
HPDFXFAWriteHeadlessPDF는 저장된 XDP에서 유효한 체크박스·라디오 캡션 값을 바로 소비하고 임베디드 폰트를 갖춘 실제 네이티브 appearance Form을 만듭니다
유효한 캡션 콘텐츠
스칼라 캡션 값과 exData XHTML body 콘텐츠는 네이티브 텍스트가 됩니다. body는 http://www.w3.org/1999/xhtml 네임스페이스를 써야 합니다
부분 반복 인스턴스 폼 오버레이는 대응하는 템플릿 요소의 텍스트와 속성을 바꾸면서 바뀌지 않은 템플릿 형제와 XHTML 네임스페이스를 유지합니다
성공한 exData.loadXML 전체 페이로드 교체는 낡은 템플릿 콘텐츠를 캡션에 다시 섞는 대신 실제 임포트된 body를 공급합니다
주석과 처리 명령은 원본 저장 XDP에는 남지만 렌더링 사본에서는 빠지므로, 그 페이로드가 보이는 캡션 텍스트가 되는 일은 없습니다
렌더링 사본은 노드 4096개, 깊이 64, 오버레이 작업 단계 65536회, 과금되는 소스 및 직렬화 XHTML 1 MiB로 제한됩니다. 네이티브 디코더와 appearance 빌더는 자기만의 run, 글리프, 바이트 한도를 유지합니다
실제 폰트 페이스와 스타일
실제 regular, bold, italic, bold-italic 프로그램과 이름 붙은 패밀리는 CaptionFontFamilies로 공급합니다
기존 네이티브 XHTML 디코더는 인라인 스타일, 문단 경계, 패밀리 목록, 색, 크기, 밑줄과 취소선 서식을 해석합니다. 스칼라 캡션 폰트의 size, weight, posture, typeface, fill 색이 기본 스타일을 제공합니다
요청한 페이스나 글리프가 없으면 준비가 실패합니다. 이 소비자는 bold나 italic appearance를 만들어 내거나 외부 폰트를 찾아 내지 않습니다
측정과 배치
캡션 측정과 그리기는 실제 글리프 진폭, 스타일별 ascent·descent, 공통 행 베이스라인, 줄바꿈을 포함해 동일한 네이티브 리치 레이아웃과 공급된 폰트 프로그램을 씁니다
고정된 left나 right reserve는 텍스트 폭을 제한합니다. 양수인 top이나 bottom reserve는 가용 field 폭 안에서의 줄바꿈을 허용합니다
reserve가 없거나 0 또는 스키마 기본값 -1이면 자동 줄바꿈 없이 자연스러운 캡션 크기를 씁니다. 명시적 문단 경계는 여전히 행바꿈으로 남고, 고정 field 사각형을 넘는 텍스트는 잘립니다
자동 left·right 캡션은 자기 자연 폭을 씁니다. 인라인 캡션은 측정과 배치 양쪽에서 명시적 reserve를 무시합니다
캡션 margin은 실제 텍스트 영역을 줄이고, 캡션 수평·수직 정렬이 결과 appearance 배치를 제어합니다
reserve 동작은 XFA 3.3 caption reserve 정의를 따릅니다
자연 높이는 마지막 폰트 메트릭 행 크기에 양쪽 네이티브 2pt 패딩을 더한 값입니다. 마지막 행 뒤의 쓰이지 않는 후행 leading은 제외합니다
hidden과 inactive 캡션은 영역을 소비하지 않습니다. invisible 캡션은 캡션 글리프를 그리거나 과금하지 않으면서 측정된 영역을 예약합니다
실제 캡션 Form 하나가 같은 위젯의 off·on·neutral 상태에서 공유됩니다. 반복 인스턴스는 독립적인 콘텐츠와 스타일 그래프를 유지합니다
문단 margin과 사용자 정의 line-height CSS, 캡션 이미지 같은 비텍스트 캡션 페이로드, 푸시버튼 리치 캡션, 이후 인터랙티브 appearance 재구축은 별도 소비자 과제로 남아 있습니다
트랜잭션과 검수
성공한 네이티브 프로퍼티 이벤트는 자동 PDF 생성 전에 저장하고 다시 읽을 수 있습니다. 스크립트 실패는 정확한 네이티브 XML 바이트를 복원하고, 준비 예산이나 취소 실패는 대상 바이트, 길이, 위치를 보존합니다
대상에 쓰는 작업은 후보 전체가 성공한 뒤에야 시작합니다. 호출자 자체 스트림 쓰기의 오류는 그 스트림의 의미론을 따르며, 임의의 seek 불가능한 대상에 대해서는 롤백할 수 없습니다
Tests/Linux/XFAHeadlessRichCaptionTests.pas는 실제로 스타일이 적용되고 줄바꿈되고 패밀리가 선택되고 보이지 않는 캡션 PDF를 만듭니다. XFAHeadlessRichCaptionRuntimeTests.pas는 반복 오버레이, XML 전체 교체, 롤백을 다룹니다
XFAHeadlessRichCaptionBudgetTests.pas는 실제 리소스 실패와 선별된 취소 경계를 시험하고, HeadlessTextExtentTests.pas는 측정된 네이티브 행 크기를 드러냅니다
Verify-XFAHeadlessRichCaptions.py는 리더 UI를 열지 않고 저장된 PDF 그래프, 공급된 폰트 프로그램 바이트 그대로, 공유 참조, Unicode 텍스트, raw 텍스트 행렬, fontTools 메트릭, MuPDF 렌더 픽셀을 검사합니다