- meow_ui.h(922 行)改为伞头:只做 #include 聚合 + 模块索引,不定义新 API。 - 新增 patch_v2/sdk/include/ 16 个子头(types/draw/image/theme/ime/widgets/input/ activity/zorder/statusbar/dialog/log/notify/config/font/audio),各自自洽可单独 include, 依赖最小化(不透明句柄前向声明 + 必要模块互引)。 - 验证:meow_ui.a md5 与主树完全一致(4786158d…,头重组 .o 逐字节等价); SDK .c 用 mipsel -Wall -Wextra 0 warning;hello/files 全量重编链接通过 (-Wall -Wextra 0 warning);宿主 test_p1p2p3_repro(P1c/P2/P3 ALL PASS) + 15 个 SDK/宿主测试 PASS;16 子头自洽编译 0 warning;伞头完整性回归 test_umbrella.c 0 warning;ncm 5 个含 meow_ui.h TÜ mipsel 交叉编译到 .o 0 warning。 - meow_ui_internal.h 及 view/nav/media/sys/vol 子头未动;build_sdk.sh 无需改。 - MEOW_APP_SDK.md 头部新增「公共头模块索引」。分支 sdk-header-split。
77 lines
4.3 KiB
C
77 lines
4.3 KiB
C
/*
|
||
* meow_ui_font.h — SDK 字体:应用可读 TF 卡字体列表(§5.7)+ 字体分层/大字库(§10)。
|
||
*
|
||
* 原 meow_ui.h 拆分的一部分(font 模块)。字库权威列表 = launcher 扫描落盘的持久文件
|
||
* MeowOS/config/fonts/index(CSV);App 只经本接口读该列表。字体「档位」由 launcher 按
|
||
* app.json 声明的 "fonts:<档>" 注入 MEOW_FONT_TIER;SDK 据档选库(meow_font_reload_tier)。
|
||
*/
|
||
#ifndef MEOW_UI_FONT_H
|
||
#define MEOW_UI_FONT_H
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/* ============================================================ */
|
||
/* §5.7 应用可读 TF 卡字体列表(M2.58:字体索引 / 查列表 / 丢失降级默认) */
|
||
/* ============================================================ */
|
||
/* 系统字体管理器的面向应用接口(规格 §5.7.1/§5.7.2):
|
||
* - 权威列表 = launcher 扫描 MeowOS/fonts/<family>/<weight>/ 后落盘的持久文件
|
||
* MeowOS/config/fonts/index(CSV:family,weight,path,label,tier,glyph_count)。
|
||
* app 只经本接口读该列表(不直接拼路径、不依赖 launcher 内存数组)。
|
||
* - 渲染仍走 env MEOW_FONT_PNG/MEOW_FONT_IDX(launcher 注入的「当前生效字体」,
|
||
* 选中字体那一套);本节的 get_available_count/enumerate 只负责「列有哪些库」,
|
||
* select_by_id 负责「app 会话内固定用哪套」。两路明确。
|
||
* - 无卡 / 无 index → 仅 1 项板载默认(family=default)。 */
|
||
#ifndef MEOW_FONT_INFO_DEFINED
|
||
#define MEOW_FONT_INFO_DEFINED
|
||
typedef struct meow_font_info {
|
||
char family[64]; /* family slug = MeowOS/fonts/<family>/ 一级目录名 */
|
||
char name[64]; /* 显示名(index 无单列 → 回退 family) */
|
||
char weight[32]; /* weight slug(regular|bold|…,缺省 regular) */
|
||
char tier[8]; /* 档位 common|gbk|full(info 用) */
|
||
int glyph_count; /* font.json glyph_count(info 用) */
|
||
char label[128]; /* index 显示名(含字重 + 尺寸标记) */
|
||
int size_list[16]; /* 原生字号表(index 无 → 空) */
|
||
int size_count; /* 有效字号数 */
|
||
int bit_depth; /* 4|8(index 无 → 0) */
|
||
char path_png[320]; /* 卡根相对 MeowOS/fonts/<family>/<weight>/font.png */
|
||
} meow_font_info;
|
||
#endif
|
||
|
||
/* 可用字库数(含默认;无卡 → 1)。 */
|
||
int meow_font_get_available_count(void);
|
||
/* 按序号取:idx=0=默认行(family=default);越界返回 0。 */
|
||
int meow_font_enumerate(int idx, meow_font_info *out);
|
||
/* 选该套为 app 会话默认字体:id=0 跟随系统默认(font.file,经 env);id>0 固定用该套。
|
||
* 该套字库缺失 → 降级默认(不丢请求)+ WARN(meow_log→app 日志)。成功 0,越界负值。 */
|
||
int meow_font_select_by_id(int id);
|
||
|
||
/* ============================================================ */
|
||
/* §10 字体分层 / 大字库(M2.5x:基座声明 + font 域已实现按档装载) */
|
||
/* ============================================================ */
|
||
/* 字体「档位」概念:launcher 按 app.json 声明的字库档("fonts":<档>)向 app 注入
|
||
* MEOW_FONT_TIER=<0|1|2>;SDK(meow_ui_gfx / meow_font 大字库加载)据档选库:
|
||
* MEOW_FONT_TIER_COMMON=0 默认 4K 常用字库;
|
||
* MEOW_FONT_TIER_GBK =1 大字库 GBK;
|
||
* MEOW_FONT_TIER_FULL =2 Full(全字符集)。
|
||
* 大字库生成由 font/gen/gen_font.py --charset 按档产出;按档装载由 meow_font_reload_tier()
|
||
* 实现(先 unload 旧再 load 新,释放旧 atlas 防大字库双驻留)。launcher 经
|
||
* meow_font_effective_paths_tiered() 按档解析大字库绝对路径并注入 MEOW_FONT_PNG/IDX。
|
||
* 既有 meow_font_* 符号(class_of/has_glyph/load_slot/config_multifont…)保留不动。
|
||
* 判缺字:meow_font_has_glyph(cp) 预判当前字库是否含该码位。 */
|
||
#define MEOW_FONT_TIER_COMMON 0
|
||
#define MEOW_FONT_TIER_GBK 1
|
||
#define MEOW_FONT_TIER_FULL 2
|
||
|
||
/* 设当前字体档(0/1/2,越界 clamp 到合法值),返回生效档。
|
||
* meow_ui_gfx.c 定义并触发 meow_font_reload_tier() 真重载(大字库切换释放旧 atlas)。 */
|
||
int meow_font_set_tier(int tier);
|
||
/* 当前字体档(初始 = MEOW_FONT_TIER_COMMON;meow_ui_init 时读 MEOW_FONT_TIER env 对齐)。 */
|
||
int meow_font_tier(void);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
#endif /* MEOW_UI_FONT_H */
|