feat: 建立可选字体包协议与安全注册器

This commit is contained in:
SkyJourney
2026-07-31 20:36:22 +08:00
parent e5da699ea3
commit c76454be9d
14 changed files with 1083 additions and 4 deletions
+23 -2
View File
@@ -272,6 +272,21 @@ Panose、字符集、字体族、间距和 Unicode/代码页签名,写入
保留使用字形子集,这是客户端写回行为,不影响导出文件的首次打开和
编辑门禁。
阶段 12D-FP1 已建立独立 `packages/font-pack-registry`,冻结可选字体包
协议和安全发现边界。字体包使用
`root/<pack-id>/<semver>/font-pack.json` 固定布局,清单声明应用兼容
区间、许可文件、字体目标家族、别名、字重、样式以及同源 Web WOFF2 和
DOCX 静态 TrueType 资源。注册器按根目录顺序和最高兼容版本确定可用包,
使用完整 SemVer 比较,并对清单、普通文件、路径包含关系、符号链接、
单资源/总容量、许可文件和 SHA-256 执行严格校验;实际读取资源时会再次
验证大小与哈希,避免注册后文件被替换。候选解析按字体家族或别名、字重
和斜体精确匹配,支持调用方显式指定字体包优先级;根目录缺失、版本不
兼容、资源损坏、版本覆盖和字体面未提供均返回结构化诊断,缺少字体包
不会阻断后续安全降级。当前尚未接入主题、Preview/PDF、DOCX、Desktop
安装器或 DockerFP2 将让 Web WOFF2 与 DOCX TTF 进入同一主题字体解析
结果,并把字体包指纹纳入缓存和导出诊断。全仓 454 项测试、类型检查和
生产构建通过。
## 2. 已完成
### 2.1 项目骨架
@@ -1156,6 +1171,9 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
- `packages/document-visual-diff` 负责 Word/WPS/PDF 页面快照、文本与
栅格差异、可配置视觉门限以及 JSON/HTML 验收报告;该包仅用于开发和
发布验收,不进入应用运行时。
- `packages/font-pack-registry` 负责可选字体包协议、版本兼容、安全发现、
资源哈希与容量门禁、确定性版本选择和逻辑字体面匹配;FP1 尚未将它
接入应用服务或发行包。
- `packages/application/src/docx-export-service.ts` 负责 DOCX capability、
并发排队、总超时、取消、跨端转换编排、错误码和耗时诊断。
- `apps/desktop/src/desktop-application-controller.ts` 负责 Electron
@@ -1215,8 +1233,11 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
编辑互存;
- 阶段 12D-R3:已完成独立 PDF/DOCX 视觉差异引擎、精确行距、字体
字重规范化及通用 SFNT 到 Word 字体元数据映射,并通过 Word/WPS
原生视觉与可编辑性验收;下一步先对齐可选字体包架构,再由 R4 完成
14 套主题深度视觉回归;
原生视觉与可编辑性验收;
- 阶段 12D-FP1:已完成可选字体包协议、安全注册器、版本/根目录优先级、
资源双重校验和字体候选匹配;下一步 FP2 接入 Preview/PDF 与 DOCX
同源字体解析,FP3 再实现独立 NSIS 字体包与 Docker 可选挂载,最终由
R4 完成 14 套主题深度视觉回归;
- 阶段 13:完成 Word/WPS 双向互存、外部主题兼容、体积和正式发布验收。
每个阶段验收通过后创建一个独立提交,再进入下一阶段。当前阶段不得混入