feat(ui-font): 字库补 SOE 显示名用字 采/样/恢/效(179→183 字 / 274→278 字形)

单独提交:按字库独占规矩,缺字改动自成一笔,不与功能改动混笔。

用字来源(下一笔提交的 ui_w_soe 显示名映射):事件类型"采样闭锁/
采样恢复/标定复归"与时标行的"时钟无效"。缺字上屏是空白方块、无日志
无报错,只能靠像素回归与门禁照出来。

流程(font-regen 四步,未跳步):
1. extract_cn 扫出 144 字 < 现清单 179 字:35 字源码已不用但不属 KEEP_EXTRA
   那 4 字(异/常/片/芯)——它们是 2026-09 窗口固件写进 /log/selftest.log
   定长记录的历史用字,跨固件持久落盘,静态扫描照不出来。故按并集回填,
   本笔只加 4 字、不做瘦身:瘦身等于让历史审计记录永久渲染空白且不可逆,
   收益(约 35 字 × 27 B RO)与代价完全不对称(同门禁头注"刻意保留 ≠
   未知冗余"的同一判定逻辑)。这 35 字要不要入 KEEP_EXTRA 已回报 Lead
   裁决,不在本道写域。
2. make_font.py 重生成 ui_font_cn_12.c:coverage OK,183 字全覆盖;▶/Ⅰ/Ⅱ/Ⅲ
   补回字形的单码位 cmap 条目未被宽稀疏 range 吞掉(首命中守卫通过)。
3. 像素回归:菜单 8 状态 + 内容页 11 页黄金参考逐字节不变,
   simulator/tests/ref 无 diff → 本笔不产生基线变化,未用 --update 刷参考。
4. 构建:@build 0 错误 0 警告(RO-data 21396→21504,+108 B,1bpp 12px 每字
   约 27 B 含字形描述符);模拟器 0 警告。

计数字段同步(同一事实只改数字,不重复抄流程):
- docs/UI设计/UI_中文字体生成与配置.md:产物说明 + 体积档(含 4 字实测增量)
- docs/UI设计/UI_界面制作流程.md C3 行
- docs/UI设计/UI_设计架构.md 默认字体行
- simulator/README.md 已知坑第 4 条

自查:BOM/CR/U+FFFD/字面量 ASCII 全树核对通过;全量钩子 40 项通过,
仅台账两条待回填(数字随下一笔的 ui-data 提交一起由 Lead 回填)。

gate: only mem-budget/mem-numbers pending lead ledger backfill
This commit is contained in:
2026-10-25 09:56:10 +08:00
parent 13ef0715bb
commit 8cbc7bc6b6
6 changed files with 94 additions and 70 deletions
+1 -1
View File
@@ -262,7 +262,7 @@ UI 改动的自动化门禁脚本(完整流程见 `docs/UI设计/UI_自动化
- `LV_USE_THEME_MONO = 1` 且 `sim_port_init` 中调用了 `lv_theme_mono_init`
- 主循环调用了 `lv_refr_now(NULL)`(PARTIAL 模式保证首帧)
- 没有重复设置 tick(SDL 驱动内部已 `lv_tick_set_cb`,**不要**再 `SDL_AddTimer` + `lv_tick_inc`)
4. **中文显示空白**:字体 `ui_font_cn_12` 是子集字体(当前 179 汉字/符号 + ASCII,共 274 字形),缺字渲染为空白。
4. **中文显示空白**:字体 `ui_font_cn_12` 是子集字体(当前 183 汉字/符号 + ASCII,共 278 字形),缺字渲染为空白。
补字流程见 `docs/UI设计/UI_中文字体生成与配置.md`(`tools/font_gen/` 两步脚本)。
5. **改了 UI 代码但模拟器没变化**:确认改的是 `Drivers/BSP/UI/ui_menu.c`(共享原件)而非本目录副本(本目录无副本),然后重新 `cmake --build`。
6. **编码**:UI 源码为 UTF-8(带 BOM),MSVC 已加 `/utf-8`。**不要**用 PowerShell `Set-Content` 等重写含中文的文件(编码铁律,见根目录 `AGENTS.md`)。