跳到正文

ADR-0045:组件字体角色与固定纯富文本 ​

  • 日期:2026-10-16
  • 状态:接受
  • 范围:GAP-04 的标准编写入口

问题 ​

固定页区已有完整角色上下文,但标准文字组件选择注册字体仍需可信自定义委托。品牌页眉包含多种字号、颜色和真实字体时,也缺少通用固定富文本组件。

决策 ​

新增 FontRoleScope(Component, String),布局时解析完整 FontGroup 并委托既有 FontScope。保持原 FontScope.fonts() 非空契约与既有文字 record 形状,不逐一增加角色分量。未知角色先失败;四个布局入口均传播相同默认字体选择、区域流和语义。

新增原子 RichTextComponent(List<InlineText>, ParagraphStyle, TextInheritance)。运行全部显式,经共享 StyledSpan → ParagraphLayouter → TextLayoutPainter 测量和绘制。段落继承只控制行框、缩进、对齐和断行,不推测运行的空角色、黑色或字号是否“未设置”。Builder 因此不提供全局颜色或字号 setter。

固定输入预算为 4,096 运行/100,000 码点,空运行计费;输入列表取快照,校验和循环检查取消。非空外链和对象标记在入口拒绝;固定组件不提前承载延迟字段或交互语义。

影响 ​

调用方可以直接组合页码字体和多样式页区,标准组件不依赖具体后端。没有新增依赖、资源或模块。窄组件、初始短区、缺字策略及语义来源通过委托保持。

新增入口不等于连续富文本分页、XML 页区或完整主题级联。强类型子组件入口仍接受原类型。字形轮廓、阅读器搜索与选择继续沿用现有公开限制。验证见阶段三十八。