PDF CJK 字体 — 融合方案:系统字体智能引用(无嵌入、无 fallback)
真实任务不变:PDF 座位表必须正确显示中文姓名。生成端枚举系统字体按质量优先级选取(一定有可用字体),PDF 按字体名引用(体积 0);查看端缺字体时由 PDF 查看器自动替换;选中字体质量偏低时导出警告,不阻断。
决策依据(评审修正):任何可运行 GUI 的设备必有 CJK 字体;PDF 查看器(Acrobat/预览/手机阅读器)缺指定字体时按 Unicode 自动替换——v1 的座位号 fallback 是生成端缺陷,本方案从根源消除。不嵌入、不 fallback 座位号。安装包 5–20MB gate 无压力。
✓
融合目标形态
字体选择链:生成端按质量优先级取系统字体;PDF 字体名引用;质量不佳时警告。
第 1 排
学生丁001
学生丅005
学生上010
学生下011
体积 +0 · 不嵌入无需 fallback
PingFang SC(已选用)→
Noto Sans CJK SC→
Microsoft YaHei→
SimSun→
任意 CJK 字体
查看端(家长手机/打印店)缺指定字体时,由 PDF 查看器用自身字体按 Unicode 自动替换——主流查看器均支持。
| 设计要点 | 说明 |
|---|---|
| 字体选择 | 生成端枚举系统字体(macOS 字体目录 / Windows Fonts / Linux fontconfig),按质量优先级序列选取 |
| PDF 引用 | 字体名引用(不嵌入);查看端由查看器自动替换 |
| 质量警告 | 选中字体表现不佳(如仅宋体)时导出警告「效果可能不及预期」,不阻断 |
| 基础设施复用 | 字体发现模块与 D13 PNG 光栅化共用(一次投入两处受益) |
| schema/API 影响 | Rust 新增系统字体枚举/选择模块;PDF writer 支持字体名引用 |
待研究(不冻结):
- 字体优先级序列完整清单与质量分级标准
- 警告文案与触发阈值
- 主要查看器(Acrobat/预览/Edge/手机)字体替换实测矩阵