ADR-0023:组件默认样式与显式声明
后续 ADR-0030 扩展六项具名覆盖/恢复入口,保留本记录的完整 .style(...) 与颜色语义;本记录中的初始范围不等同于当前完整 API。
问题
语义 Document.Builder.bodyFormat 为后续正文保存格式,但组件 Builder 各自默认 12 pt,导致嵌套报告反复传入相同样式。用数值相等推断“未设置”会改变显式 12 pt 的含义;只在公开布局入口解析又会遗漏拆分网格和绕排的直接测量路径。
决策
核心 ComponentContext 增加完整默认段落样式和文字颜色;viewport、withFonts 保留它们。旧上下文构造器继续使用 12 pt/18 pt 和黑色。核心自有 TextInheritance 分别记录样式和颜色是否未设置,不包含组件或后端类型。
受支持文字组件的 Builder 默认记录未设置状态。样式、颜色 setter 只将对应属性标为显式;恢复继承方法清除该标记。旧构造器中的所有实参均显式,toBuilder 保留声明状态。对象保存具体本地值与继承标记,不保留回调,也不读取全局可变样式。
StyleScope 是组件模块中的区域流包装器,通过派生上下文提供默认值。内层作用域只覆盖自身显式声明的属性;显式子文字优先。完整 ParagraphStyle 是一个继承单元,颜色是另一个;本批不实现逐属性级联。作用域不得吞掉语义插槽、诊断、短初始区或旧分页组件的原子片段。
Documents.bodyFormat 同步保存语义格式,并为随后通过 .component/.column/.grid 加入的内容封装排版默认值。只映射组件可表达的六类文字属性;间距和相邻策略保持语义。.add(Block) 及已构建语义表格不在运行期重写。
网格格默认值保存声明快照,通过相同作用域作用于标准文字和自定义格子后代。拆分网格 PreparedCellFlow 在直接测量前解析文字,并展开样式作用域。浮动绕排在计算行带前解析文字行距;解析后使用原测量、分片与绘制算法。
边界与兼容
不新增依赖、字体或第三方资源。旧公开构造调用保持源码兼容,旧 record 解构模式需要调整,反射分量和结构输出也改变;不承诺二进制兼容。组件相等性包含继承意图和本地配置值,因为同一数值可在不同作用域下产生不同布局。
本批不扩展为 CSS 级联、样式主题、AcroForm 默认外观、DOCX 嵌套、目录默认值或任意自定义组件的自动识别。固定行框、缺字策略和资源所有权保持原契约。独立验收见阶段十九;未覆盖的格式项保留在 GAP-04。