原生富文本字段

SetRichTextFieldValueWithAppearance 为每个既有 widget 写入同步的纯文本 V、规范化 XHTML RV、RichText 字段标志和实际外观

每个 run 提供 Unicode 文本、字体样式、正的点大小、RGB 颜色、可选的下划线或删除线、段落分隔,以及左、中、右对齐;四种样式字体由调用方提供 Unicode TrueType 程序,并沿用既有的编辑与嵌入检查

run 默认使用 12pt 常规黑色样式;段落对齐取自它的第一个 run,未指定时默认左对齐

外观使用真实嵌入的样式字体、glyph 映射和经过测量的单词片段,同一行共享基线;同一 widget 内重复出现的片段共享各自的样式字体程序

显式的 CR、LF、CRLF、NEL、LINE SEPARATOR 和 PARAGRAPH SEPARATOR 换行以及段落切换要求字段为多行类型;测量的折行、widget 旋转与裁剪使用实际的 widget 矩形

类型化更新可以在纯文本字段上启用富文本,而 password、file-select 和 comb 组合会在变更前被拒绝

只读、MaxLen、已认证签名文档策略、加密表单填写权限、取消,以及对象、字体、glyph 和输出预算仍然生效

所有富文本更新都会在改动文档之前先准备好 V、RV、Ff 和 AP 覆盖;保存的字符串和流保留原有的 AES-256 R5 或 R6 策略

样式数组、布局行和绘制片段各有 4096 项的上限,配置的文档限制之上再叠加这一层;样式字体字节按总量计费

对既有富文本字段调用普通的 SetTextFieldValueWithAppearance,会用给定的纯样式替换其内容并同步 RV;只写值的 SetTextFieldValue 调用同样同步 RV 并保留 NeedAppearances=true

GetRichTextFieldValue 读取实际存储的 XHTML 文本字符串或 UTF-8 文本流,包括继承值

每个段落的第一个 run 决定其对齐方式,即使该 run 文本为空;行内样式变化和显式换行不会改变段落对齐

折行多行字段中的超宽单词在 Unicode 17 扩展字形簇边界处拆分,保留组合序列、增补标量、emoji 序列以及原始 V/RV 文本;一个不可再分且宽于字段的簇保持完整并被裁剪

矩形与圆形边框在内容裁剪之前绘制,选中的多行行会按每条富文本行实测的 ascent、descent 和行距绘制真实的蓝色背景

Native JSON ABI

{"schemaVersion":1,"type":"forms.fill","fields":[
  {"name":"Input","fontFamily":"DejaVu Sans Mono","richTextRuns":[
    {"text":"Regular Unicode text "},
    {"text":"Bold red text","fontStyle":"bold","fontSize":20,"color":[1,0,0]},
    {"text":"Next paragraph","fontStyle":"italic","paragraphBreakBefore":true,
     "alignment":"center","underline":true}
  ]}
]}

richTextRuns 是对象数组,必填 text,可选 fontStyle、fontSize、color、underline、strikeOut、paragraphBreakBefore 和 alignment;fontStyle 接受 regular、bold、italic 或 boldItalic

可选的 fontFamilies 数组通过 fontFamily 为每个 run 选择真实命名字体程序,编辑级数组覆盖操作级数组,省略的 run 标签选用第一个字族

省略的 run fontSize 在操作 fontSize 为正时沿用之,否则取 12;可选的 value 必须与从 run 推导出的纯文本完全一致,显式段落之间用回车分隔

带样式的 run 要求 appearance=true;forms.read 对富文本字段返回实际存储的 XHTML 于 richText

ABI 保留既有操作布局,并在提交新加载上下文之前先准备完整的 binary 与 result 输出;写入失败或取消会保留原字段

验收与剩余工作

Tests/Linux/Run-HeadlessRichTextAcceptance.sh 与 Tests/Linux/HotPDFHeadlessRichTextTests.pas 针对真实保存的 PDF 进行验证;Verify-HeadlessRichText.py 独立检查 XHTML、值、四个真实字体程序、glyph 映射、装饰路径和可见 widget 像素

这套 API 接受类型化 run,并在完整段落上消费默认的 Unicode 17 断行机会,跨样式变化保留单词、不换行空格、标点和数字组;放得下一整行的组会带着各自实测的样式字体 advance 一起移动

样式组折行同样为混合点大小保留共享基线,并在实际布局和规范化 XHTML 中跨样式接缝合并 CRLF

跨样式的字形簇排版把完整的超宽逻辑簇分配到同一物理行,保留真实的字体、颜色和大小片段,并对宽于矩形的不可分簇沿用既有裁剪行为

上下文连字使用周围 Unicode 文本判断,每条实际物理行保留段落方向,同时对跨类型样式的混合 bidi 与文字项排序

跨样式标记对真实的基字、连字和前置标记 glyph 使用真正的 GPOS 附加,保留各自的样式字体、点大小、颜色以及可见的 glyph 出头

富 FDF 与 XFDF 交换把受支持的受限 XHTML 样式档案解码为真实嵌入字体和已保存外观

显式的方向嵌入、覆盖、隔离和成对括号上下文在跨类型样式的自动折行中得以保留;一个共享的逻辑段落顺序同时供给独立的物理行重排和原生上下文 glyph shaping

只含 Unicode 方向控制符的簇不消耗字符间距,并保留原始逻辑值和选区文本;可见簇与普通空格保留其配置的 advance

段落推导的行序与 缓存的行重排保留完整的 UTF-16 标量边界,并在不改写共享段落记录的前提下重置物理行尾随空白

命名字体族提供显式的类型化 run 和受限 XHTML 选择,配以真实族字体、独立 advance 和识别字族的表单导入

任意 XHTML 与 CSS、逐 glyph 回退、样式表和通用布局仍是进行中的工作

原生富文本字段行为 · Document API