# 字体主题系统 字体主题系统允许你定义可复用的字体配置,统一管理演示文稿的字体样式。 ## 定义字体主题 在 `metadata.fonts` 中定义命名字体配置: ```yaml metadata: size: "16:9" fonts: title: family: "cjk-sans" size: 44 bold: true color: "#2c3e50" body: family: "sans" size: 18 color: "#34495e" line_spacing: 1.5 fonts_default: "@body" # 默认字体(可选) slides: - elements: - type: text content: "标题文本" box: [1, 1, 8, 1] font: "@title" # 引用字体主题 - type: text content: "正文内容" box: [1, 2.5, 8, 2] # 未定义 font 时使用 fonts_default ``` ## 预设字体类别 系统提供五种预设字体类别,自动映射到跨平台通用字体: | 类别 | 映射字体 | 说明 | |------|---------|------| | `sans` | Arial | 西文无衬线 | | `serif` | Times New Roman | 西文衬线 | | `mono` | Courier New | 等宽字体 | | `cjk-sans` | Microsoft YaHei | 中文无衬线 | | `cjk-serif` | SimSun | 中文衬线 | ### 使用预设类别 ```yaml metadata: fonts: body: family: "cjk-sans" # 自动映射到 Microsoft YaHei size: 18 ``` ## 字体引用方式 ### 1. 整体引用 完全使用定义的字体配置: ```yaml font: "@title" ``` ### 2. 继承覆盖 继承字体配置并覆盖特定属性: ```yaml font: parent: "@title" size: 60 # 覆盖字号 color: "#ff0000" # 覆盖颜色 ``` ### 3. 独立定义 完全自定义字体: ```yaml font: family: "SimSun" size: 24 bold: true ``` ## 扩展字体属性 除了基础属性(size、bold、italic、color、align),还支持: ### 字体样式 - `family`:字体族名称或预设类别 - `underline`:下划线(true/false) - `strikethrough`:删除线(true/false) ### 段落属性 - `line_spacing`:行距倍数(如 1.5) - `space_before`:段前间距(磅) - `space_after`:段后间距(磅) ### 高级属性 - `baseline`:基线位置(normal/superscript/subscript) - `caps`:大小写转换(normal/allcaps/smallcaps) ## 完整示例 ```yaml metadata: size: "16:9" fonts: heading: family: "cjk-sans" size: 32 bold: true color: "#2c3e50" line_spacing: 1.2 space_after: 12 body: family: "sans" size: 18 color: "#34495e" line_spacing: 1.5 fonts_default: "@body" slides: - elements: - type: text content: "章节标题" box: [1, 1, 8, 1] font: "@heading" - type: text content: "正文内容\n支持多行文本" box: [1, 2, 8, 2] font: parent: "@body" underline: true - type: table position: [1, 4] col_widths: [3, 3] data: - ["列1", "列2"] - ["数据1", "数据2"] font: "@body" header_font: parent: "@body" bold: true color: "#ffffff" style: header_bg: "#3498db" ``` ## 跨域引用 ### 文档元素引用模板库字体 ```yaml # templates.yaml(模板库) metadata: size: "16:9" fonts: template-title: family: "cjk-sans" size: 44 bold: true # presentation.yaml(文档) metadata: size: "16:9" slides: - elements: - type: text content: "标题" font: "@template-title" # 文档元素可以引用模板库字体 ``` ### 引用规则 - 文档元素 → 文档字体 - 文档元素 → 模板库字体 - 模板元素 → 模板库字体 ## 相关文档 - [外部模板库](templates/external-library.md) - 模板库字体配置 - [作用域系统](../development/scope-system.md) - 字体作用域详细规则 [返回文档索引](../README.md)