1
0
Files
PPTX/openspec/changes/archive/2026-03-05-font-theme-system/specs/element-rendering/spec.md
lanyuanxiaoyao bd12fce14b feat: 实现字体主题系统和东亚字体支持
实现完整的字体主题系统,支持可复用字体配置、预设类别和扩展属性。
同时修复中文字体渲染问题,确保 Source Han Sans 等东亚字体正确显示。

核心功能:
- 字体主题配置:metadata.fonts 和 fonts_default
- 三种引用方式:整体引用、继承覆盖、独立定义
- 预设字体类别:sans、serif、mono、cjk-sans、cjk-serif
- 扩展字体属性:family、underline、strikethrough、line_spacing、
  space_before、space_after、baseline、caps
- 表格字体字段:font 和 header_font 替代旧的 style.font_size
- 引用循环检测和属性继承链
- 模板字体继承支持

东亚字体修复:
- 添加 _set_font_with_eastasian() 方法
- 同时设置拉丁字体、东亚字体和复杂脚本字体
- 修复中文字符使用默认字体的问题

测试:
- 58 个单元测试覆盖所有字体系统功能
- 3 个集成测试验证端到端场景
- 移除旧语法相关测试

文档:
- 更新 README.md 添加字体主题系统使用说明
- 更新 README_DEV.md 添加技术文档
- 创建 4 个示例 YAML 文件
- 同步 delta specs 到主 specs

归档:
- 归档 font-theme-system 变更到 openspec/changes/archive/

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

2.5 KiB
Raw Blame History

Element Rendering (Delta)

Purpose

本增量规范更新表格元素的字体渲染方式,新增 font 和 header_font 字段支持完整字体配置,移除旧语法 style.font_size 和 style.header_color。

MODIFIED Requirements

Requirement: 系统必须支持表格元素渲染

系统 SHALL 将 YAML 中定义的表格元素渲染为 PPTX 表格对象。表格元素支持 font 和 header_font 字段用于字体配置style 字段仅用于非字体样式(如背景色)。

Scenario: 渲染基本表格

  • WHEN 元素定义为 {type: table, position: [1, 2], data: [["A", "B"], ["C", "D"]], col_widths: [2, 2]}
  • THEN 系统在 (1, 2) 位置创建 2×2 表格,列宽各为 2 英寸

Scenario: 表格定义整体字体

  • WHEN 表格定义 font: {family: "Arial", size: 14, color: "#333333"}
  • THEN 系统将数据单元格和表头都应用该字体样式

Scenario: 表格定义表头字体

  • WHEN 表格定义 header_font: {bold: true, color: "#ffffff"}
  • THEN 系统将表头应用该字体样式,数据单元格继承 font 或使用默认字体

Scenario: 表头字体继承表格字体

  • WHEN 表格定义 font: {size: 14}header_font: {parent: "@font", bold: true}
  • THEN 表头继承 size: 14覆盖 bold: true

Scenario: 表格仅定义 header_font

  • WHEN 表格仅定义 header_font: {bold: true}
  • THEN 表头应用 bold: true数据单元格使用 fonts_default 或系统默认字体

Scenario: 表格定义背景样式

  • WHEN 表格定义 style: {header_bg: "#4a90e2"}
  • THEN 系统将表头背景色设置为 #4a90e2

Scenario: 表格同时定义字体和背景样式

  • WHEN 表格定义 font: {size: 14}style: {header_bg: "#4a90e2"}
  • THEN 系统同时应用字体样式和背景色

Scenario: 表格数据为空时报错

  • WHEN 表格的 data 字段为空数组
  • THEN 系统抛出错误,提示表格数据不能为空

Scenario: 表格列宽不匹配时报错

  • WHEN col_widths 数组长度与表格列数不一致
  • THEN 系统抛出错误,要求列宽数量与列数匹配

REMOVED Requirements

Requirement: 系统必须支持表格样式中的字体属性

Reason: 被 font 和 header_font 字段取代,提供更完整和统一的字体配置方式

Migration: 使用新的 font 和 header_font 字段替代 style.font_size 和 style.header_color

  • FROM: style: {font_size: 14, header_color: "#ffffff"}
  • TO: font: {size: 14}, header_font: {color: "#ffffff"}