# Font Preset ## Purpose 预设字体类别提供系统内置的字体类别名称,用户可以直接使用这些类别名称引用推荐的字体,无需指定具体字体名称。系统将预设类别映射到跨平台通用的推荐字体。 ## Requirements ### Requirement: 系统必须支持五种预设字体类别 系统 SHALL 支持以下预设字体类别:sans、serif、mono、cjk-sans、cjk-serif。 #### Scenario: 使用 sans 类别 - **WHEN** 元素定义 font: {family: "sans"} - **THEN** 系统使用 "Arial" 作为字体族 #### Scenario: 使用 serif 类别 - **WHEN** 元素定义 font: {family: "serif"} - **THEN** 系统使用 "Times New Roman" 作为字体族 #### Scenario: 使用 mono 类别 - **WHEN** 元素定义 font: {family: "mono"} - **THEN** 系统使用 "Courier New" 作为字体族 #### Scenario: 使用 cjk-sans 类别 - **WHEN** 元素定义 font: {family: "cjk-sans"} - **THEN** 系统使用 "Microsoft YaHei" 作为字体族 #### Scenario: 使用 cjk-serif 类别 - **WHEN** 元素定义 font: {family: "cjk-serif"} - **THEN** 系统使用 "SimSun" 作为字体族 ### Requirement: 预设类别映射必须使用跨平台通用字体 预设字体类别 SHALL 映射到跨平台通用性最高的字体,确保在不同操作系统上都有较好的显示效果。 #### Scenario: sans 类别映射到 Arial - **WHEN** 系统解析 family: "sans" - **THEN** 映射到 "Arial"(Windows/macOS/Linux 通用) #### Scenario: serif 类别映射到 Times New Roman - **WHEN** 系统解析 family: "serif" - **THEN** 映射到 "Times New Roman"(Windows/macOS/Linux 通用) #### Scenario: mono 类别映射到 Courier New - **WHEN** 系统解析 family: "mono" - **THEN** 映射到 "Courier New"(Windows/macOS/Linux 通用) #### Scenario: cjk-sans 类别映射到微软雅黑 - **WHEN** 系统解析 family: "cjk-sans" - **THEN** 映射到 "Microsoft YaHei"(Windows 常用中文字体) #### Scenario: cjk-serif 类别映射到宋体 - **WHEN** 系统解析 family: "cjk-serif" - **THEN** 映射到 "SimSun"(Windows 常用中文字体) ### Requirement: 预设类别必须在 family 字段中识别 系统 SHALL 仅在 font 或 header_font 的 family 字段中识别预设类别名称。 #### Scenario: family 字段使用预设类别 - **WHEN** 元素定义 font: {family: "sans"} - **THEN** 系统识别 "sans" 为预设类别,映射到 "Arial" #### Scenario: 其他字段不解析预设类别 - **WHEN** 元素定义 font: {size: "sans"} - **THEN** 系统将 "sans" 作为字符串值,不进行预设类别映射 #### Scenario: 直接使用字体名称 - **WHEN** 元素定义 font: {family: "SimSun"} - **THEN** 系统使用 "SimSun" 作为字体族,不进行预设类别映射 ### Requirement: 预设类别不进行字体验证 系统 SHALL 不验证预设类别映射的字体是否在系统中存在。 #### Scenario: 预设类别字体不存在时行为 - **WHEN** 系统中不存在 Arial 字体 - **THEN** 系统仍将 "sans" 映射到 "Arial",不报错 #### Scenario: PowerPoint 处理字体回退 - **WHEN** PowerPoint 打开包含不存在字体的 PPTX 文件 - **THEN** PowerPoint 自动回退到系统默认字体 ### Requirement: 预设类别可以与 fonts 配置结合使用 用户可以在 fonts 配置中使用预设类别,也可以在元素 font 中直接使用。 #### Scenario: fonts 配置中使用预设类别 - **WHEN** metadata 定义 fonts: {body: {family: "sans", size: 18}} - **THEN** 系统将 family: "sans" 解析为 "Arial" #### Scenario: 元素直接使用预设类别 - **WHEN** 元素定义 font: {family: "cjk-sans", size: 24} - **THEN** 系统将 family: "cjk-sans" 解析为 "Microsoft YaHei" #### Scenario: 预设类别与引用结合 - **WHEN** fonts.title 定义 family: "sans",元素定义 font: "@title" - **THEN** 元素使用 family: "Arial"(通过 title 配置)