XFA 리치 텍스트 속성 재정의

exData 드로잉의 네이티브 평탄화는 현재 데이터셋 occurrence에 대해 폰트와 문단 속성을 풀며, 일반 JavaScript나 FormCalc 이벤트가 만든 재정의도 포함합니다

const label = xfa.resolveNode("main.row[1].label");
label.font.typeface = "Helvetica";
label.font.size = "18pt";
label.font.weight = "bold";
label.font.posture = "italic";
label.font.underline = "1";
label.font.fill.color.value = "0,128,255";
label.para.hAlign = "right";
label.para.spaceAbove = "3pt";
label.para.lineHeight = "30pt";

const span = label.value.exData.body.p.span;
span.setAttribute("color:#FFFF00", "style");
span.value = "Updated text";

폰트와 문단 리졸루션

typeface, size, weight, posture, underline, 폰트 fill 색은 유효 인스턴스 속성과 지원 스키마 기본값에서 리치 텍스트 run 스타일을 초기화합니다

텍스트 측정 콜백은 유효 typeface, size, bold·italic 플래그를 받으므로, 측정과 발행된 run 스타일이 같은 인스턴스 값을 씁니다

Windows PDF 프로듀서는 논리 Courier, Helvetica, Times 패밀리를 측정과 드로잉 출력에서 일관되게 Courier New, Arial, Times New Roman으로 풀어, Windows가 논리 이름을 설치된 페이스로 노출하지 않을 때도 의도한 패밀리를 유지합니다

문단 hAlign, marginLeft, marginRight, textIndent, spaceAbove, spaceBelow, lineHeight는 run 배치에 영향을 줍니다. lineHeight는 텍스트가 요구하는 높이보다 행 간격을 줄일 수 없습니다

인식된 인라인 CSS는 상속된 폰트·문단 값을 재정의합니다. 문단 마진 하나만 바꾸는 선언은 다른 상속 마진을 유지합니다

인라인 run은 서로 다른 폰트 크기에서 공통 텍스트 베이스라인을 공유하고, 인접 문단 간격은 앞선 spaceBelow와 뒤의 spaceAbove 중 큰 값을 씁니다. 리치 텍스트 문단 지오메트리 참고

인라인 내용과 영속화

선언된 XHTML 속성 노드의 유효 style·href 속성은 리치 텍스트 처리에 참여하고, 유효 scalar 텍스트 재정의는 대응하는 리프 내용을 대체합니다

속성 재정의를 만들면 그 노드의 템플릿 scalar 내용이 지워지지 않고 유지됩니다. 명시적인 빈 scalar 값은 주변 내용을 보존한 채 리프 run을 생략합니다

레거시 속성 전용 폼 노드는 계속 템플릿 텍스트를 상속합니다. 명시적인 빈 CDATA 내용 노드는 직렬화 후 scalar 지우기와 생략된 body의 구분을 유지합니다

재정의는 네이티브 폼 패킷에 영속화되고 반복 occurrence 사이에서 독립적이며, XDP 저장·재로드에서 살아남습니다. 실패한 이벤트는 정확히 이전 네이티브 문서를 복원합니다

커버리지

이 동작은 리치 텍스트 래핑 파이프라인과 인식된 CSS 선언에 적용됩니다. 추가 CSS 속성, 완전한 위젯 리치 텍스트 편집, 없는 속성 노드의 암시적 생성은 별도 대상으로 진행됩니다

폰트 underline 활성화는 현재 run 렌더러를 씁니다. 완전한 이중줄과 추가 text-decoration 지오메트리는 별도 렌더링 대상으로 남습니다

관련 API

네이티브 XFA Property DOM, 스키마 기본값, HPDFXFAResolveFormInstanceProperty, ApplyXFAAsAcroForm