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>
This commit is contained in:
47
README.md
47
README.md
@@ -482,10 +482,21 @@ slides:
|
||||
创建模板库文件 `templates.yaml`:
|
||||
|
||||
```yaml
|
||||
# 模板库元数据(可选)
|
||||
description: "公司标准模板库"
|
||||
version: "1.0.0"
|
||||
author: "设计团队"
|
||||
# 模板库元数据(必需)
|
||||
metadata:
|
||||
size: "16:9" # 必需:模板库尺寸,必须与使用它的文档一致
|
||||
description: "公司标准模板库" # 可选:描述信息
|
||||
fonts: # 可选:模板库字体主题
|
||||
template-title:
|
||||
family: "cjk-sans"
|
||||
size: 44
|
||||
bold: true
|
||||
color: "#2c3e50"
|
||||
template-body:
|
||||
family: "sans"
|
||||
size: 20
|
||||
color: "#34495e"
|
||||
fonts_default: "@template-body" # 可选:模板库默认字体
|
||||
|
||||
# 模板定义(必需)
|
||||
templates:
|
||||
@@ -501,15 +512,13 @@ templates:
|
||||
- type: text
|
||||
box: [1, 2, 8, 1]
|
||||
content: "{title}"
|
||||
font:
|
||||
size: 44
|
||||
bold: true
|
||||
align: center
|
||||
font: "@template-title" # 引用模板库字体
|
||||
- type: text
|
||||
box: [1, 3.5, 8, 0.5]
|
||||
content: "{subtitle}"
|
||||
visible: "{subtitle != ''}"
|
||||
font:
|
||||
parent: "@template-title"
|
||||
size: 24
|
||||
align: center
|
||||
|
||||
@@ -525,15 +534,31 @@ templates:
|
||||
box: [1, 1, 8, 0.8]
|
||||
content: "{title}"
|
||||
font:
|
||||
parent: "@template-title"
|
||||
size: 32
|
||||
bold: true
|
||||
- type: text
|
||||
box: [1, 2, 8, 3]
|
||||
content: "{content}"
|
||||
font:
|
||||
size: 20
|
||||
# 未指定 font 时使用 fonts_default
|
||||
```
|
||||
|
||||
**重要说明**:
|
||||
|
||||
1. **metadata 字段是必需的**:
|
||||
- `metadata.size` 必须指定("16:9" 或 "4:3")
|
||||
- 模板库的 size 必须与使用它的文档 size 一致,否则会报错
|
||||
|
||||
2. **字体主题系统**:
|
||||
- 模板库可以定义自己的字体主题(`metadata.fonts`)
|
||||
- 文档可以引用模板库的字体(跨域引用)
|
||||
- 模板库不能引用文档的字体(单向引用)
|
||||
- 模板库的 `fonts_default` 只能引用模板库内部字体
|
||||
|
||||
3. **字体级联规则**:
|
||||
- 模板元素未指定字体时,使用模板库的 `fonts_default`
|
||||
- 如果模板库没有 `fonts_default`,使用文档的 `fonts_default`
|
||||
- 如果都没有,使用系统默认字体
|
||||
|
||||
#### 使用外部模板库
|
||||
|
||||
在命令行中指定模板库文件:
|
||||
|
||||
Reference in New Issue
Block a user