feat: 实现 DOCX 可编辑字体嵌入

This commit is contained in:
SkyJourney
2026-07-31 16:18:30 +08:00
parent f3847f3e4b
commit 10bc62cee4
32 changed files with 2195 additions and 76 deletions
+22 -2
View File
@@ -232,6 +232,25 @@ Server Playwright 与 Desktop Electron 适配器,按主题 CSS SHA-256
空白正文。下一步按 R2 字体嵌入、R3 PDF 与 DOCX 视觉差异引擎、R4 全主题
深度回归的顺序推进。
阶段 12D-R2 已完成纯 Node.js DOCX 字体嵌入和代表主题验收。主题清单可
声明本地或内置共享的 OTF、TTF、WOFF、WOFF2 字形;引擎使用
`fontverter` 将 Web 字体转为 SFNT,解析字体内部名称、字重和 `fsType`
仅接受可安装或可编辑嵌入权限,再以稳定字体键生成 ODTTF 部件、字体表
关系和内容类型。最终校验会解混淆字体并重新检查 SFNT、权限、字体族、
关系、孤立部件和内容类型。WOFF2 WASM 解码已改为进程内串行调度,避免
并发非重入导致批量字体损坏。内置主题统一前置共享字体 CSS,网页、PDF
和 DOCX 使用同一字体资产,映射过程不按主题 ID 分支。
测试机未安装 Fandol 或 Open Sans。政企正式工作报告、政企红头标准文件
和 Typora Github 分别成功嵌入 2、5、5 个字形面,Word 与 WPS 均能打开、
显示和编辑;Word → WPS → Word 双向编辑 3/3 通过。完整 14 主题矩阵、
全项目测试、类型检查和构建通过。视觉检查确认正式报告和 Github 在
Word/WPS 均为 2 页;红头主题在 Word 为 2 页、WPS 为 3 页,版记被移到
近空白末页,已冻结为 R3 视觉差异引擎的首个回归样例。WPS 默认另存还会
移除嵌入字体,启用字体嵌入后可保留但会扩大互存文件;项目不会因 WPS
写回器产生的 OOXML 顺序问题放宽自身严格门禁。完整记录见
[DOCX 字体嵌入与代表主题验收](V0.6.0_DOCX_FONT_EMBEDDING.md)。
## 2. 已完成
### 2.1 项目骨架
@@ -1168,8 +1187,9 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
- 阶段 12C:已完成通用 Pandoc 结构映射、封面真实分节、标题去重、
表格内容区全宽、分页控制、OOXML 严格性和 14 主题真实 Word/WPS
无修复打开门禁;
- 阶段 12D:依次完成可分发字体嵌入、PDF 与 DOCX 自动视觉差异、14 套
主题真实 Word/WPS 编辑互存和深度视觉回归;
- 阶段 12D-R2:已完成可分发字体嵌入和三套代表主题真实 Word/WPS
编辑互存;下一步 R3 建立 PDF 与 DOCX 自动视觉差异引擎,再由 R4 完成
14 套主题深度视觉回归;
- 阶段 13:完成 Word/WPS 双向互存、外部主题兼容、体积和正式发布验收。
每个阶段验收通过后创建一个独立提交,再进入下一阶段。当前阶段不得混入