1
0
Files
PPTX/openspec/changes/archive/2026-03-05-template-metadata-and-font-ref/proposal.md
lanyuanxiaoyao 98098dc911 feat: 实现模板库metadata和跨域字体引用系统
实现了统一的metadata结构和字体作用域系统,支持文档和模板库之间的单向字体引用。

主要变更:
- 模板库必须包含metadata字段(包括size、fonts、fonts_default)
- 实现文档和模板库的size一致性校验
- 实现字体作用域系统(文档可引用模板库字体,反之不可)
- 实现跨域循环引用检测
- 实现fonts_default级联规则(模板库→文档→系统默认)
- 添加错误代码常量(SIZE_MISMATCH、FONT_NOT_FOUND等)
- 更新文档和开发者指南

测试覆盖:
- 新增33个测试(单元测试20个,集成测试13个)
- 所有457个测试通过

Breaking Changes:
- 模板库文件必须包含metadata字段
- 模板库metadata.size为必填字段
- 文档和模板库的size必须一致

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-05 18:12:05 +08:00

74 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 级联测试