将 README.md 拆分为多个专题文档,减少认知负荷: - 用户文档迁移到 docs/ (用户指南、元素、模板、参考等) - 开发文档迁移到 docs/development/ (架构、模块、规范) - README.md 精简至 ~290 行,仅保留概览和导航 - 删除 README_DEV.md,内容已迁移 - 归档 OpenSpec 变更 refactor-docs-progressive-disclosure
199 lines
3.8 KiB
Markdown
199 lines
3.8 KiB
Markdown
# 字体主题系统
|
||
|
||
字体主题系统允许你定义可复用的字体配置,统一管理演示文稿的字体样式。
|
||
|
||
## 定义字体主题
|
||
|
||
在 `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)
|