XFA 富文本属性覆写
exData 绘制的原生扁平化会为当前数据集实例解析字体与段落属性,包括由通用 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 与字体填充色基于生效的实例属性和受支持的 schema 默认值初始化富文本 run 样式
文本度量 Callback 收到生效的 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 的较大值;参见 Rich Text Paragraph Geometry
内联内容与持久化
已声明 XHTML 属性节点上生效的 style 与 href 属性参与富文本处理,生效的标量文本覆写替换对应的叶内容
创建属性覆写会保留该节点的模板标量内容而不是抹掉文本;显式的空标量值会省略叶 run,同时保留周围内容
只支持属性的旧式表单节点继续继承模板文本;显式空的 CDATA 内容节点在序列化后仍能区分“清空标量”与“省略 body”
覆写持久保存在原生表单包中,在重复出现实例之间彼此独立,并在 XDP 保存与重新加载后继续存在;失败的事件按字节精确还原之前的原生文档
覆盖范围
此行为作用于富文本折行 Pipeline 及其受识别的 CSS 声明;更多 CSS 属性、完整的控件富文本编辑与缺失属性节点的隐式创建仍是独立目标
字体下划线激活使用当前 run renderer;完整的双线与更多 text-decoration 几何仍是独立的渲染目标
相关 API
原生 XFA Property DOM, Schema 默认值, HPDFXFAResolveFormInstanceProperty 与 ApplyXFAAsAcroForm