ADR-0014:行内语义字段与注释锚点
- 状态:已接受
- 日期:2026-10-14
背景
块级引用与段末注释已能生成报告,但正文句子中缺少动态页码、编号引用和脚注标记。直接在分页后替换普通文字会改变行宽和分页,可能导致页码反复变化,并破坏原文诊断位置。
决策
增加模型值 InlineField,以一个 U+FFFC 和显式固定宽度参加公共图文排版。文本布局保存中立 FieldBox,记录原文位置、行内 X 偏移与逻辑轮廓槽。分页按完整行保留这些盒子;后端不解析字段,也不决定断行。
正文、脚注和目录页数确定后,由组件编排解析当前显示页码、总物理页数、目标页码、编号和注释标记。生成值使用同一显式字体角色和缺字策略塑形,必须放进预留框。只替换轮廓及逻辑文字,保持来源范围和布局几何。未知目标、无编号目标或宽度不足立即失败,不进行动态字段重排。
显式注释标记必须唯一对应同一段落的 Note。脚注的每轮预留都查找标记所在行,而不是段落末片段;没有显式标记的旧调用保留自动段末上标。长注释继续使用既有行级续页及容量规则。
外部超链接矩形在替换前按原文计算,内部字段引用在最终页偏移确定后生成。两种链接共享总交互预算。正文警告保留原始 UTF-16 范围;生成字段警告保留生成值局部范围,并通过上下文中的原始标记位置区分来源。
后果和边界
固定宽度避免字段引入分页循环,但调用方需要选择合适宽度。含字段的段落使用物理 OpenType 轮廓,ActualText 的通用阅读器搜索/选择兼容尚未确认。
保留 Paragraph、TextLine 的旧构造器,新增 record 组件和 sealed 子类型仍可能影响反射、序列化、二进制与穷尽 switch。不新增模块和第三方依赖。表格、组件内字段和 DOCX 映射留作独立扩展,入口明确拒绝,禁止静默降级。
验收覆盖最终页偏移/页码重置、向前编号引用、几何不变、原文 UTF-16 警告、注释实际归属、长注释、错误拒绝、交互预算、独立 PDF 坐标和全部新页渲染,详见字段 API与阶段十验收。