原生富文本 run 间距

富外观在整形、行适配、物理行重排、对齐和绘制期间应用编写的字符与字间距,使用指定的字体和既有的设界富文本布局

<p style="letter-spacing:.12em;word-spacing:-1.25pt">A spaced paragraph</p>

设界的内联 CSS profile 接受 normal、inherit、initial、unset、带符号的 pt、px(96 dpi)、pc、in、cm、mm 和 em 长度,外加无单位零;em 按其声明元素最终级联字号计算,子元素继承该计算出的 point 长度

字符与字间距有独立的声明顺序和 important 优先级,font 简写保留两个分量;不支持或非法的声明按解码器既有的忽略行为处理

显式 normal 把对应的全局外观间距重置为零;省略的原生模式保留既有的全局 CharacterSpacing 和 WordSpacing 行为,包括其尾随字符步进

显式字符间距激活某段落时,视觉重排之后每个内部边界上的可见排版单位各得相邻样式值的一半,物理行边缘省略外侧一半;标记和不可见格式控制符不单独消耗间距

SPACE 和 NBSP 在其整形聚类两侧各得一半字间距,分隔符后跟组合标记的情况也不例外;其他 Unicode 词分隔符不属于本设界 profile

非零显式 tracking 禁用可选的 liga、clig、dlig 和 hlig 替换,保留必需连字和 kerning;相邻的阿拉伯文、Rohingya、Mandaic、蒙古文、N'Ko、Phags-pa 和叙利亚文草写单元,在本实现无法安全拉伸连接处会抑制 tracking

负间距参与真实字形墨迹边界和前缀适配,不假设更长的前缀一定更宽;自动适配把绝对 point 间距与字号一起缩放,编写的 em 因子保持相对

软换行的行对齐使用可见内容 advance,与编码 advance 分开计算;放得下的尾随空格片段会连同其源偏移和 ToUnicode 映射保留下来,不会为了居中或右对齐而被删掉

ASCII 软分隔符可以跨样式边界或空 run,而 NBSP 仍是不断行聚类,显式段落断行保留各自独立的 CRLF 处理;变换后的注释排版见FreeText 默认外观

类型化 run 保留原始 Double 值,V 保留编写的 plain 文本,RV 以往返精度写入计算出的 point 间距;原生只读更新比较结果富值与外观语义

间距十进制转换对有限 Double 使用 round-to-nearest、ties-to-even;规范 RV 值把负零规范化为零,二次解码和序列化后保持不变

在本设界 profile 内,显式 normal 和显式零算出相同的 point 间距和规范 RV,使语义等价的只读更新成为 no-op;版本化 JSON 操作保留原始源字节,省略的 legacy 模式依然可区分,因为它继承全局外观选项

自 2.943.1 起,原生 SaveRichTextFieldUpdatesToFile 在所有更新无变化且已加载图没有待处理编辑时,同样发布精确的原始字节,包括既有 AES 加密和已签名修订版;即使字段更新数为零,待处理图编辑也保留在发布的候选中

Pascal 和 C++Builder 消费方请用匹配的 rich-run 与 shaped-glyph 记录和生成的头文件重新构建;版本化 C 回调结构与导出符号不变

本 profile 遵循 CSS 2.2 的间距模型,以及 CSS Text letter spacing 和 CSS Text word spacing 中的行边缘、排版单位与整形规则,并带上述设界的分隔符与草写覆盖范围

间距模式 · 类型化 JSON · 样式化整形 span

有限数值运算支持 calc、min、max、clamp 长度表达式以及 q、rem 和显式配置的视口单位;带符号的计算长度进入同样的整形、行适配、绘制和规范富值行为