AskaEth
22f9dab2ce
fix(ncm): 列表首行标题不显示 — 行高按字体行高派生(M12)
根因(真机 seated,非数据/颜色/遮挡):SDK meow_listview 双行渲染把
「2*行高 + 2」的文本块在行内垂直居中,且标题只在 ty >= 视口顶时才画
(meow_ui_widget.c:2061 的越界守卫)。真机 source_han_serif 20px 面
ascent 24 + descent 6 → 行高 30 → 文本块 62px,而 ncm 行高 APP_ROW_H=56
→ ty = 行顶 - 3;首行行顶 == 视口顶 → ty < 视口顶 → 标题被整条跳过,
副标题(ty+32)仍在视口内照画。两类列表同用该路径 + 同一行高,故症状一致。
修复(不动 SDK):ncm_app_internal.h 新增 ncm_row_h()/ncm_row_h_for_line_h(),
行高 = max(56, 2*字体行高 + 2 + 8)(偶数;本机 30 → 70,卡高 62 == 文本块);
home/playlist/queue/cache/search 在 page create 取一次 g_item_h,统一用于
set_item_h 与卡片几何/可见行/页脚/补载视口换算。
回归:
- app/test/test_meow_row_text_fit.c(新):真机字库行高矩阵 14/21/26/27/30
48 断言(文本块 ≤ 行高、首行 ty ≥ 0、卡高 ≥ 文本块、旧 56 哨兵)。
- app/test/test_first_row_title_render.c(新):--wrap 行高=30 驱动真实 SDK
渲染 + 读回 PPM 像素计数:旧 56 → 首行标题 0 像素/副标题 186;新 70 →
标题 84/副标题 100。
- test_meow_row_gap、plpage_sim 全 PASS;ncm_host 7 页出图与改动前逐字节相同
(宿主行高 14 → 行高仍 56,证重构无视觉回归);5 页自检 PASS;0 warning。
- plpage_sim 临时目录改 $TMPDIR(Termux /tmp 不可写,原写死无法运行)。
- REPORT §43:根因/排除方向/修复/验证/真机验收要点。
2026-11-05 19:51:01 +08:00
..
2026-09-02 14:30:04 +08:00
2026-09-02 12:48:34 +08:00
2026-09-01 01:17:21 +08:00
2026-08-31 06:03:36 +08:00
2026-08-31 06:03:36 +08:00
2026-08-31 06:03:36 +08:00
2026-08-31 06:03:36 +08:00
2026-09-02 13:51:36 +08:00
2026-09-02 14:30:04 +08:00
2026-09-03 12:16:01 +08:00
2026-09-02 04:20:46 +08:00
2026-08-31 12:50:32 +08:00
2026-08-31 12:50:32 +08:00
2026-11-05 13:00:32 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 09:00:23 +08:00
2026-11-05 11:54:23 +08:00
2026-11-04 20:02:28 +08:00
2026-09-03 12:16:01 +08:00
2026-09-02 03:43:42 +08:00
2026-09-03 12:16:01 +08:00
2026-11-05 13:00:32 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 09:00:23 +08:00
2026-09-03 12:16:01 +08:00
2026-08-31 15:42:24 +08:00
2026-11-05 11:45:44 +08:00
2026-11-04 21:11:00 +08:00
2026-11-05 11:59:33 +08:00
2026-11-05 19:51:01 +08:00
2026-08-31 17:40:04 +08:00
2026-08-31 17:40:04 +08:00
2026-08-31 17:40:04 +08:00
2026-11-05 13:00:32 +08:00
2026-09-03 12:16:01 +08:00
2026-11-05 11:45:44 +08:00
2026-11-05 11:59:33 +08:00
2026-09-01 20:00:14 +08:00
2026-09-01 14:44:55 +08:00
2026-08-31 12:50:32 +08:00
2026-08-31 12:50:32 +08:00
2026-11-04 20:02:28 +08:00
2026-11-05 11:45:44 +08:00