问题:SDK 位图字库(meow_font)只有离散字号档位,全字形 atlas 稳态 17.3MiB (27MB 整机装不下)→ 大字库/大字号必出豆腐。阅读器 R1/R2 的 FreeType 管线已真机验证 (MiSans OTF),本 commit 将其上收 SDK,让任意 App 用上无级字号 + CJK 全字形。 设计(追加式,与位图字库并存): - meow_ui_ft.c(独立 .o):meow_ft_load/unload/loaded/text/width/line_height/ ascender/descender/cache_set_slots/cache_slots/cache_used。底层按 READER_ENGINE_NOTES §5: FT_New_Face(path) 按需读文件(零整载 anon);灰阶 FT_LOAD_RENDER|NO_HINTING|TARGET_LIGHT; glyph LRU key=(px<<32)|cp,默认 512(~0.46MB),可配 256/1024;测宽不栅格化。 - meow_ui_gfx.c 只加两个薄封装 meow_gfx_ft_blend_px/dirty(写 back_buf + 标脏), 使 meow_ui_ft.o 不引入新依赖——「不调 meow_ft_* 的 App 零增量」(freetype 不拉入,已验证)。 - 降级:加载失败/无卡 → meow_ft_loaded()==0 → meow_ft_text 自动改走 meow_ui_text(位图字库, 5x7 兜底),绝不豆腐不崩;meow_ft_width/line_height 降级位图字库度量。 - FreeType 2.14.3 vendor 进 patch_v2/sdk/vendor/(gitignore)+ build_sdk.sh 可复现拉取+裁剪 构建(-DFT_DISABLE_ZLIB/BZIP2/PNG/HARFBUZZ/BROTLI=TRUE,静态 musl),freetype .o 编入 meow_ui.a,App 链接命令不变(meow_ui.a libz.a -lpthread)。 验证: - 宿主 test_meow_ui_ft 5 项全 PASS(加载/渲染像素非空/宽度测量/LRU 淘汰/降级回退)。 - 全量 SDK 回归:widgets/sdk_fixes/dispatch/notif_gesture/overlay_suppress/listvirt/box/anim/ scroll/ime_fix/pinyin/notif_open/sb_collapse/theme/notify_ipc/audio_host/vol/str/config/ sdk_input_keys 全 PASS。 - 交叉 -Wall -Wextra 全 SDK TU 0 warning;qemu-mipsel 冒烟 PASS(mipsel FreeType 真光栅化)。 - meow_ui.a 新 md5 6ff5be9455f9e197b35fa120be012041(未重链不部署 App,四 App 免重链)。 MEOW_APP_SDK.md 补 §10.1 矢量字一节 + 公共头索引/§9 构建约定更新;.gitignore 忽略 patch_v2/sdk/vendor/ 与 test_meow_ui_ft 二进制。
100 lines
3.0 KiB
Plaintext
100 lines
3.0 KiB
Plaintext
# === 大文件 / 可再生产物(不入库) ===
|
||
# 固件镜像(可由 build_*.sh 从 rootfs 树重新打包)
|
||
*.upt
|
||
# TF 卡/NAND 全量备份
|
||
backups/
|
||
# 固件组装的 rootfs 树(可重新打包,勿入库;.upt 已排除)
|
||
fw_apps/
|
||
fw_ssh/
|
||
fw_ssh*/
|
||
# repack/round-trip 测试产物
|
||
repack_test/
|
||
# Rust 交叉编译工程(target/ 等体积大;如需保留源码可手动最小化)
|
||
ncm_mips_smoke/
|
||
# 旧 patch 演示/遗留超大树
|
||
patch_demo/
|
||
# 解包的 squashfs / rootfs
|
||
unpacked/
|
||
unpacked_v14/
|
||
# QEMU 全系统仿真(含 qemu-src、rootfs 镜像)
|
||
qemu_env/
|
||
# 交叉工具链(zig/musl.cc 大件,从 .tools 下的小脚本引用,重装可复原)
|
||
.tools/
|
||
# 设备 fb 原始帧 dump
|
||
*.raw
|
||
# 外部克隆的社区仓库(各自独立 git)
|
||
hiby_os_crack/
|
||
hiby-mods/
|
||
CNMPlayer/
|
||
# 旧 patch 实验/遗留(含大量 5.4MB hiby_player 变体二进制,可重新生成)
|
||
patch_v2_me/
|
||
patch_demo/
|
||
# 播放器二进制变体(stock/patched,可由 apply_patch 脚本+stock 重生成;勿入库)
|
||
patch_v2/hiby_player_*
|
||
patch_v2/cave_4b_*
|
||
# 临时/编译中间物
|
||
__pycache__/
|
||
*.pyc
|
||
*.o
|
||
*.a
|
||
# 大图(字库 atlas 生成物,可从 font/gen 重新生成)
|
||
font/atlas/
|
||
# SSH 私钥/认证(绝不入库;.pub 公钥可留但这里一并忽略,按需手动 add)
|
||
ssh_keys/
|
||
# .mpk 签名私钥(Ed25519,离线维护者侧;绝不入库)
|
||
.keys/
|
||
# 二进制备份(*.bak 由 build/升级流程生成,勿入库)
|
||
*.bak
|
||
*.orig
|
||
*.rej
|
||
|
||
# === 编译中间物 / 临时文件(不入库) ===
|
||
*.new
|
||
*.tmp
|
||
*.o
|
||
*.a
|
||
# 宿主测试产物 / 真机截图(device_test 下可再生产物)
|
||
device_test/*.png
|
||
device_test/*.rgb565_*.png
|
||
device_test/host_*.c
|
||
device_test/gesture_host_test.c
|
||
device_test/meow_ui_demo.c
|
||
device_test/meow_ime_demo.c
|
||
# SSH 密钥/认证(绝不入库)
|
||
ssh_keys/
|
||
|
||
# 本地开发文档(Analysis/Notes/Test/device_test/docs-plan,仅本地保留,不入库)
|
||
devdocs/
|
||
scripts/build/
|
||
fonts_lib/
|
||
|
||
# 字体源文件(体积大,不进库;产物在 TF 卡)
|
||
font/src/**/*.otf
|
||
font/src/**/*.ttf
|
||
font/src/**/*.ttc
|
||
patch_v2/sdk/test_p1p2p3_repro
|
||
|
||
# ncm_app vendor 源码与构建产物(体积大;版本/获取方式见 VENDOR_NOTES.md,构建脚本可复现)
|
||
# 例外:dr_flac 单头文件入库(§19 FLAC 解码依赖,532KB 单文件可入库)
|
||
patch_v2/ncm_app/vendor/*
|
||
!patch_v2/ncm_app/vendor/dr_flac/
|
||
patch_v2/ncm_app/out/
|
||
patch_v2/sdk/test_sdk_fixes
|
||
|
||
# SDK 矢量字(§10.1):FreeType vendor 源码/构建产物(体积大;版本 2.14.3,build_sdk.sh 可复现
|
||
# 拉取+裁剪构建 -DFT_DISABLE_* 静态 musl)与宿主测试二进制
|
||
patch_v2/sdk/vendor/
|
||
patch_v2/sdk/test_meow_ui_ft
|
||
|
||
# 诊断工具构建产物(源码入库,二进制免)
|
||
patch_v2/tools/sndprobe
|
||
patch_v2/tools/tonepcm
|
||
patch_v2/tools/tonepcm2
|
||
patch_v2/ncm_app/cache_evict_sim
|
||
patch_v2/ncm_app/pagination_sim
|
||
patch_v2/ncm_app/audiod_chain_sim
|
||
patch_v2/ncm_app/window_sim
|
||
patch_v2/ncm_app/cover_chain_sim
|
||
patch_v2/ncm_app/player_flow_sim
|
||
patch_v2/ncm_app/degrade_sim
|