feat: 完成 DOCX 视觉门禁与字体兼容映射

This commit is contained in:
SkyJourney
2026-07-31 20:13:19 +08:00
parent 10bc62cee4
commit e5da699ea3
32 changed files with 3015 additions and 17 deletions
+28 -1
View File
@@ -251,6 +251,27 @@ Word/WPS 均为 2 页;红头主题在 Word 为 2 页、WPS 为 3 页,版记
写回器产生的 OOXML 顺序问题放宽自身严格门禁。完整记录见
[DOCX 字体嵌入与代表主题验收](V0.6.0_DOCX_FONT_EMBEDDING.md)。
阶段 12D-R3 已完成独立 `packages/document-visual-diff` 视觉差异引擎和
字体兼容收口。引擎通过可替换适配器调用 Word、WPS 或既有 PDF,统一
提取页面、文字与栅格快照,并以页数、纸张、正文相似度、平均像素误差、
变化像素率、墨迹 IoU 和边缘 IoU 生成 JSON/HTML 报告;所有 Office
自动化均使用独立临时输出并在结束后清理。DOCX 样式层将固定 CSS 行高
写为 Word 精确行距,修复 WPS 中红头版记被挤到第三页的问题;字体解析
同时规范可变字体字重,并从 SFNT `OS/2``head``post` 表通用提取
Panose、字符集、字体族、间距和 Unicode/代码页签名,写入
`fontTable.xml`。映射与严格校验均不按主题或字体名称分支,校验器会
拒绝字体表声明与实际嵌入字体不一致的文档。
使用原生静态 TrueType 中文字体资产的两字形面验证中,Word 与 WPS 均
正确使用嵌入字体显示红头版头、标题和页码,文档保持 2 页、可选择和
编辑;Word 导出 PDF 相对基线两页的正文相似度均为 1,第一页 MAE
为 1.986、墨迹/边缘 IoU 为 0.812/0.805,第二页 MAE 为 1.176、
墨迹/边缘 IoU 为 0.786/0.832,未发现裁切、重叠、缺字或异常页眉页脚。
静态字体单面约 14.85 MiB,不进入主安装包;后续如立项字体包,将采用
独立可选安装与运行时发现机制。WPS 默认保存会移除嵌入字体、Word 会
保留使用字形子集,这是客户端写回行为,不影响导出文件的首次打开和
编辑门禁。
## 2. 已完成
### 2.1 项目骨架
@@ -1132,6 +1153,9 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
- `packages/docx-engine` 负责安全读取 Pandoc 默认模板、解析主题 DOCX
样式、发现并校验固定 Pandoc、生成动态 OOXML、执行静态 Lua 媒体替换、
请求级临时转换和最终结构校验。
- `packages/document-visual-diff` 负责 Word/WPS/PDF 页面快照、文本与
栅格差异、可配置视觉门限以及 JSON/HTML 验收报告;该包仅用于开发和
发布验收,不进入应用运行时。
- `packages/application/src/docx-export-service.ts` 负责 DOCX capability、
并发排队、总超时、取消、跨端转换编排、错误码和耗时诊断。
- `apps/desktop/src/desktop-application-controller.ts` 负责 Electron
@@ -1188,7 +1212,10 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
表格内容区全宽、分页控制、OOXML 严格性和 14 主题真实 Word/WPS
无修复打开门禁;
- 阶段 12D-R2:已完成可分发字体嵌入和三套代表主题真实 Word/WPS
编辑互存;下一步 R3 建立 PDF 与 DOCX 自动视觉差异引擎,再由 R4 完成
编辑互存;
- 阶段 12D-R3:已完成独立 PDF/DOCX 视觉差异引擎、精确行距、字体
字重规范化及通用 SFNT 到 Word 字体元数据映射,并通过 Word/WPS
原生视觉与可编辑性验收;下一步先对齐可选字体包架构,再由 R4 完成
14 套主题深度视觉回归;
- 阶段 13:完成 Word/WPS 双向互存、外部主题兼容、体积和正式发布验收。