三特性: 字体分层(gen_font.py --charset + meow_font_reload_tier + font.load_full + 尺寸标记) + 全屏机制/状态栏收合(meow_ui_sys/input) + 通知#6 TF转储(CSV+10MB+开机清板载+内存表)
This commit is contained in:
1 parent
0b4d1d3215
commit
a2673d5922
18 files changed
+819
-80
No files matched your search
@@ -266,6 +266,38 @@ int main(void) {
|
||||
CHECK(distinct == MEOW_MAX_SLOTS, "distinct capped at MEOW_MAX_SLOTS");
|
||||
}
|
||||
|
||||
/* ---- (3) 字体档位分层:meow_font_reload_tier(大字库按档装载/切换)----
|
||||
* 用同两套 stub(lat=common 模拟,cjk=gbk 模拟)+ 一个不会释放的 cjk 大面,验证
|
||||
* tier>0 装载大字库、切换 unload 旧/load 新、失败回退。 */
|
||||
printf("\n== 字体档位分层 meow_font_reload_tier ==\n");
|
||||
/* 档位 0=common/1=gbk/2=full(与 meow_ui.h MEOW_FONT_TIER_* 一致;本测试只链 meow_font.h) */
|
||||
r = meow_font_reload_tier(0, "/tmp/mf_lat.png", "/tmp/mf_lat.idx");
|
||||
CHECK(r == 0, "reload_tier(common, lat) ok");
|
||||
CHECK(meow_font_has_glyph('A') == 1, "reload common -> has_glyph(A)=1");
|
||||
CHECK(meow_font_has_glyph(0x4E2D) == 0, "reload common -> has_glyph(中)=0 (lat no cjk)");
|
||||
CHECK(meow_font_width_text("A", 20) == 10, "reload common -> w(A)=10");
|
||||
/* 切到大字库(cjk 槽):应 unload 旧 lat 再 load cjk → '中' 可用、'A' 缺。 */
|
||||
r = meow_font_reload_tier(1, "/tmp/mf_cjk.png", "/tmp/mf_cjk.idx");
|
||||
CHECK(r == 0, "reload_tier(gbk, cjk) ok");
|
||||
CHECK(meow_font_has_glyph(0x4E2D) == 1, "reload gbk -> has_glyph(中)=1");
|
||||
CHECK(meow_font_has_glyph('A') == 0, "reload gbk -> has_glyph(A)=0 (cjk lacks lat)");
|
||||
CHECK(meow_font_width_text("中", 20) == 30, "reload gbk -> w(中)=30 (cjk slot)");
|
||||
CHECK(meow_font_line_height(20) == 33, "reload gbk -> lh(20)=33 (cjk ascent25+desc8)");
|
||||
/* 切回 common:再 unload cjk / load lat → 'A' 回来。 */
|
||||
r = meow_font_reload_tier(0, "/tmp/mf_lat.png", "/tmp/mf_lat.idx");
|
||||
CHECK(r == 0, "reload_tier(common) again ok");
|
||||
CHECK(meow_font_has_glyph('A') == 1, "reload back common -> has_glyph(A)=1");
|
||||
CHECK(meow_font_has_glyph(0x4E2D) == 0, "reload back common -> has_glyph(中)=0");
|
||||
CHECK(meow_font_width_text("A", 20) == 10, "reload back common -> w(A)=10");
|
||||
/* Full 档(tier=2)同一套 cjk 作为大字库装载也应成功(档仅记录,装载同路径)。 */
|
||||
r = meow_font_reload_tier(2, "/tmp/mf_cjk.png", "/tmp/mf_cjk.idx");
|
||||
CHECK(r == 0, "reload_tier(full, cjk) ok");
|
||||
CHECK(meow_font_has_glyph(0x4E2D) == 1, "reload full -> has_glyph(中)=1");
|
||||
/* 非法参数:NULL/空路径 → 负值(不崩),且字库已被上次 reload 释放(档位装载失败不驻留)。 */
|
||||
r = meow_font_reload_tier(1, NULL, NULL);
|
||||
CHECK(r < 0, "reload_tier(NULL paths) -> negative");
|
||||
CHECK(meow_font_has_glyph('A') == 0, "reload failed -> font unloaded (has_glyph=0)");
|
||||
|
||||
printf("\n%s (%d failures)\n", g_fail ? "RESULT: FAIL" : "RESULT: PASS", g_fail);
|
||||
return g_fail ? 1 : 0;
|
||||
}
|
||||
Reference in new issue
Block a user