# Proposal: 模板库元数据与跨域字体引用 ## Why 当前系统中,文档可以定义 metadata.fonts 来管理字体主题,但模板库缺乏相应的元数据结构,导致: 1. 模板库无法定义自己的字体配置,限制了模板的独立性和复用性 2. 模板中的元素无法引用统一的字体配置 3. 文档和模板库之间缺乏明确的字体引用关系规范 本变更旨在统一文档和模板库的元数据结构,建立清晰的跨域字体引用规则。 ## What Changes - **模板库增加 metadata 结构** - 模板库必须包含 metadata 字段,与文档使用相同的结构 - metadata.size 必填,必须是 "16:9" 或 "4:3" - 其他字段(version、author、description、fonts、fonts_default)可选 - 模板库的 fonts 定义模板级别的字体配置 - **文档 metadata 扩展** - 新增 version 字段(可选) - 新增 author 字段(可选) - **跨域字体引用规则** - 文档元素和内联模板元素:优先引用文档 fonts,文档没有时可引用模板库 fonts - 外部模板元素:只能引用模板库 fonts,不能引用文档 fonts - 文档 fonts 的 parent:可引用文档内部或模板库 fonts - 模板库 fonts 的 parent:只能引用模板库内部 fonts - **fonts_default 级联规则** - 模板元素未定义 font 时:优先使用文档 fonts_default,文档没有则使用模板库 fonts_default - **size 一致性校验** - 文档的 size 必须与模板库的 size 一致 - 不一致时抛出 ERROR 级别错误 ## Capabilities ### New Capabilities ### Modified Capabilities - `template-library`: 扩展模板库能力,支持 metadata 结构和字体配置 - `font-theme`: 扩展字体主题能力,支持跨域引用(文档引用模板库) ## Impact ### 受影响的代码模块 - `loaders/yaml_loader.py`: 添加模板库 metadata 验证逻辑 - `validators/validator.py`: 添加 size 一致性校验 - `core/presentation.py`: 解析和存储模板库 metadata.fonts - `core/template.py`: 模板渲染时应用字体引用规则 - `utils/font_resolver.py`: 扩展字体解析器,支持跨域引用 ### API 变更 - `validate_template_library_yaml()` 增加 metadata 验证 - `Template` 类增加字体解析上下文(是文档作用域还是模板库作用域) - `FontResolver` 增加跨域引用检测逻辑 ### 破坏性变更 - 模板库必须包含 metadata 字段且 size 必填 - 需要清理旧的模板库相关测试,重新设计新测试 ### 测试影响 - 清理旧的模板库验证测试 - 重新设计模板库 metadata 相关测试 - 新增跨域字体引用测试 - 新增 size 一致性校验测试 - 新增 fonts_default 级联测试