fix: 修复多行文本渲染时字号只应用于第一段的bug
当使用 YAML 多行字符串语法定义文本内容时,python-pptx 会自动 将包含换行符的文本分割成多个段落。修改 _render_text 方法使其 遍历所有段落并应用相同的字体样式(大小、粗体、斜体、颜色、对齐)。 主要变更: - renderers/pptx_renderer.py: 将 p = tf.paragraphs[0] 改为 for p in tf.paragraphs - tests/unit/test_renderers/test_pptx_renderer.py: 新增多行文本测试用例 - openspec/specs/element-rendering/spec.md: 更新 spec 文档 - openspec/changes/archive/: 归档完成的变更
This commit is contained in:
@@ -8,7 +8,7 @@ Element rendering系统负责将 YAML 中定义的各类元素(文本、图片
|
||||
|
||||
### Requirement: 系统必须支持文本元素渲染
|
||||
|
||||
系统 SHALL 将 YAML 中定义的文本元素渲染为 PPTX 文本框,并默认启用文字自动换行。
|
||||
系统 SHALL 将 YAML 中定义的文本元素渲染为 PPTX 文本框,并默认启用文字自动换行。当文本内容包含换行符(YAML 多行字符串语法)时,系统必须将所有字体样式(大小、粗体、斜体、颜色、对齐)应用到文本框中的每个段落。
|
||||
|
||||
#### Scenario: 渲染基本文本元素
|
||||
|
||||
@@ -20,6 +20,23 @@ Element rendering系统负责将 YAML 中定义的各类元素(文本、图片
|
||||
- **WHEN** 文本元素定义了 `font: {size: 32, bold: true, color: "#333333"}`
|
||||
- **THEN** 系统将文本设置为 32pt、粗体、颜色为 #333333
|
||||
|
||||
#### Scenario: 多行文本样式应用到所有段落
|
||||
|
||||
- **WHEN** 文本内容包含换行符(如 YAML 多行字符串 `content: |\n 第一行\n 第二行\n 第三行`)且定义了 `font: {size: 12}`
|
||||
- **THEN** 系统将 12pt 字号应用到所有段落(第一行、第二行、第三行)
|
||||
- **AND** 每个段落的字体大小都应一致
|
||||
|
||||
#### Scenario: 多行文本其他样式应用到所有段落
|
||||
|
||||
- **WHEN** 文本内容包含换行符且定义了 `font: {size: 12, bold: true, italic: true, color: "#ff0000", align: center}`
|
||||
- **THEN** 系统将所有样式(大小、粗体、斜体、颜色、对齐)应用到所有段落
|
||||
- **AND** 每个段落的样式都应一致
|
||||
|
||||
#### Scenario: 单行文本样式行为不变
|
||||
|
||||
- **WHEN** 文本内容不包含换行符且定义了 `font: {size: 12}`
|
||||
- **THEN** 系统将 12pt 字号应用到文本(行为与之前相同)
|
||||
|
||||
#### Scenario: 应用文本对齐方式
|
||||
|
||||
- **WHEN** 文本元素定义了 `font: {align: center}`
|
||||
|
||||
Reference in New Issue
Block a user