跳到正文

ADR-0067:按实际栏宽换行 ​

状态:已接受。

决定 ​

保留固定宽度 RegionFlow 的原契约,新增可选 WidthAwareRegionFlow。ContinuousColumns 通过正权重分配实际栏宽;未显式提供权重时继续原等宽路径。变宽调用须有真实实现,不把普通固定宽度结果缩放、截断或冒充重新换行。

文字由每个区域高度与固定行框计算行槽,将每个输出行映射到实际栏宽。ParagraphLayouter 新增同步确定性的行宽回调,简单与自适应 OpenType 路径共用原始完整字符串及 UTF-16 范围;显式 OpenTypeText 复用原逐行宽度测量。一次测量中不切割源字符串,不在续栏重新应用首行缩进。平衡可重新执行完整测量,最多 24 次,并保持页数和已跳过的首页。

混合 FlowColumn 将剩余高度和按当前区域旋转的宽度传入子流,逐区扣内边距并重置间距。FontScope/FontRoleScope/StyleScope 保留相同宽度序列。普通组件按实际区域宽度整块测量;结果验证在试排异常捕获之外,非法尺寸、顺序和预算不能伪装为栏高不足。

边界与兼容 ​

变宽文字当前使用默认最低一行策略。最低多行策略需要跨宽度的回溯规则,表格需要另行定义行格重测及来源续排;这些情况明确失败,不套用固定宽度缓存。等宽的既有多行策略与表格路径保持。

ContinuousColumns 的三/四参数源码构造器保留,record 新增权重分量不保证二进制兼容。行宽回调为可信同步代码,不提供沙箱或隐式线程。组件多栏没有 DOCX 语义映射。

验证 ​

固定字体测试检查实际 1∶3 宽度、短/零首区、跨页来源、缺字 UTF-16、组合字符与双向原文、局部作用域、嵌套内边距、整块内容唯一性、权重快照、非法参数与未支持策略拒绝。新样例、隔离调用方、实际字形推进、SVG 及全部 PDF 页双渲染见阶段五十九。