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:
@@ -55,7 +55,7 @@ scanned 13 files; unique non-ASCII chars: 78
|
||||
-> D:\Code\DTU Code\STM32F4-Base\ui_cn_chars.txt
|
||||
```
|
||||
|
||||
产物 `ui_cn_chars.txt` 为本工程实际显示的汉字清单(当前 179 字,含 ▶/,/: 等符号;其中 60 字为 2026-10-25 按页面扩充规划显示串预置,源码未用前由 font-charset 门禁记 WARN 放行),可留作字符集记录。
|
||||
产物 `ui_cn_chars.txt` 为本工程实际显示的汉字清单(当前 183 字,含 ▶/,/: 等符号;其中 60 字为 2026-10-25 按页面扩充规划显示串预置,同日道E 落 SOE 记录显示名映射时新用 采/样/恢/效 4 字;清单里源码暂未在用的字由 font-charset 门禁记 WARN 放行),可留作字符集记录。
|
||||
|
||||
---
|
||||
|
||||
@@ -152,7 +152,7 @@ OK 58192 bytes -> ...\Drivers\BSP\UI\ui_font_cn_12.c
|
||||
1. **1bpp 细笔画发虚**:宋体在 1bpp 下可能丢像素。若上板/客户端中文偏淡,把第 4 节 `--bpp` 改为 `2` 重生成即可(子集小,体积可接受)。
|
||||
2. **字符集变更**:以后新增中文菜单项,须重跑第 3、4 节(重新提取 `ui_cn_chars.txt` 并生成),否则新字显示为方框。
|
||||
3. **编码**:UI 源文件须为 **UTF-8(带 BOM)**,LVGL 按 UTF-8 解码中文串;字体 `.c` 为纯 ASCII,无编码风险。当前 Keil 已加 Misc Controls 抑制项,无需额外 `--locale=english`。
|
||||
4. **字体体积**:12px + 1bpp + 179 字(含 ASCII/符号,共 274 字形)源文件 ≈ 56.8KB;ROM 增量以 `.map` 为准(2026-10-25 扩 60 字实测 `RO-data` +1,528 B、RAM 0);改 bpp 2 约翻倍,仍在 F407 Flash 余量内。
|
||||
4. **字体体积**:12px + 1bpp + 183 字(含 ASCII/符号,共 278 字形)源文件 ≈ 57.8KB;ROM 增量以 `.map` 为准(2026-10-25 扩 60 字实测 `RO-data` +1,528 B、RAM 0;同日 SOE 显示名再用 4 字实测 `RO-data` +108 B、RAM 0——1bpp 12px 一个字约 27 B,含字形描述符);改 bpp 2 约翻倍,仍在 F407 Flash 余量内。
|
||||
5. **换字体**:黑体用 `simhei.ttf`(单文件免抽取);其余字体同理替换 `--font` 路径后重生成。
|
||||
|
||||
---
|
||||
|
||||
@@ -48,7 +48,7 @@ flowchart TD
|
||||
|---|---|---|---|
|
||||
| C1 | 屏幕 | 160×160,1bpp 单色(`LV_COLOR_FORMAT_I1`),无物理屏(远端客户端显示) | `ui_port.h` |
|
||||
| C2 | 字体 | **唯一**:`ui_font_cn_12`(宋体 12px 1bpp)。汉字 12px/字,ASCII 6px/字,行高 13px。需要其他字号 = 大工程(新字体 + 双端 `lv_conf.h`),默认禁止 | `ui_font_cn_12.c` |
|
||||
| C3 | 字符集 | 子集字体(当前 179 汉字/符号 + ASCII 0x20-0x7E,共 274 字形);**缺字显示空白**;新字必须重生成字体 | `tools/font_gen/` |
|
||||
| C3 | 字符集 | 子集字体(当前 183 汉字/符号 + ASCII 0x20-0x7E,共 278 字形);**缺字显示空白**;新字必须重生成字体 | `tools/font_gen/` |
|
||||
| C4 | LVGL 内存池 | 16KB(`LV_MEM_SIZE`,2026-10-15 由 40KB 收缩;实测峰值 6,568 B = 池的 40%);任一时刻只放"当前导航路径 + 当前内容页" | `Lib/lv_conf.h` |
|
||||
| C5 | 文本 | 一律静态字符串(`lv_label_set_text_static`),禁止动态字符串/strdup | 架构文档 |
|
||||
| C6 | 编码 | `Drivers/BSP/UI/*`、`ui_task.c`、`Lib/lv_conf.h` 为 **UTF-8 带 BOM**;改动只用 Edit 工具,**禁止** PowerShell/cmd 整文件重写(U+FFFD 不可逆) | AGENTS.md 铁律 |
|
||||
|
||||
@@ -38,7 +38,7 @@ MCU **无物理屏幕**:LVGL 做 160×160 **1bpp 单色离屏渲染**,帧缓
|
||||
| LVGL 内存池 | 16 KB(`LV_MEM_SIZE`,2026-10-15 由 40 KB 收缩;实测峰值 6,568 B = 池的 40%) | `Lib/lv_conf.h` |
|
||||
| 刷新周期 | 10 ms(`ui_port_step(10)` + `osDelay(10)`) | `ui_task.c` |
|
||||
| 推流端口 | 7003(TCP,与 DTU-RemoteLCD 客户端对齐) | `ui_net_sink.h` |
|
||||
| 默认字体 | `ui_font_cn_12`(12px 1bpp,179 汉字/符号 + ASCII 0x20–0x7E,共 274 字形) | `Lib/lv_conf.h` |
|
||||
| 默认字体 | `ui_font_cn_12`(12px 1bpp,183 汉字/符号 + ASCII 0x20–0x7E,共 278 字形) | `Lib/lv_conf.h` |
|
||||
| uiTask 栈 | 16384 words(BelowNormal) | `Src/freertos.c` |
|
||||
|
||||
### 1.4 硬约束(改 UI 必须遵守)
|
||||
|
||||
Reference in New Issue
Block a user