ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Flipper Zero 固件中文显示彻底修复:字体到语言表一次搞定

Flipper Zero 固件中文显示彻底修复:字体到语言表一次搞定 Flipper Zero 固件中文显示彻底修复字体到语言表一次搞定【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware打开 Flipper Zero 固件源码准备在界面上显示一句中文结果屏幕上一排豆腐块□□□菜单也全是英文——这是你最先卡住的地方。本文带你把中文显示整条链路一次改通。一、方案全貌只改三处不动核心思路是字库进渲染层、文案进语言表、选择落存储共三处lib/u8g2/ 字体渲染层、应用侧的语言表头文件以及 applications/services/locale/ 语言服务与 applications/settings/desktop_settings/ 设置应用。fork 仓库后按下面三阶段动手。git clone https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware二、分阶段实操1. 把 TTF 中文字体转成设备能读的 C 数组目的Flipper Zero 屏只有 128×64设备吃不了 TTF得预转成 u8g2 点阵数组。用 u8g2 官方 font converterpython3 u8g2_font.py \ -f wqy-microhei.ttf -r U0020-U007E,U4E00-U9FFF \ -c font_cjk.c -t 2预期结果生成font_cjk.c内含可直接编译的uint8_t数组。注意范围只留界面真用得到的几百个汉字全量 CJK 塞不进 SRAM。2. 把中文字库接到 Canvas 渲染层目的让所有canvas_draw_str都走你的字库。把数组当全局常量放进应用源码声明写法见 applications/examples/example_custom_font/example_custom_font.c然后在绘制回调里接上canvas_clear(canvas); canvas_set_custom_u8g2_font(canvas, font_cjk); canvas_draw_str(canvas, 0, 6, 主菜单); canvas_draw_str(canvas, 0, 12, 已连接 · 电量 80%);预期结果运行测试视图中文逐字成型不再是方框。字体数组在 lib/u8g2/u8g2_fonts.c 的注册逻辑里查找。3. 让语言表接管文案并记住你的选择目的把硬编码英文换成查表。先建一个lang_zh.h用 UTF-8 字面量替换界面文案#define L_MAIN_MENU 主菜单 #define L_CONNECTED 已连接 #define L_BATTERY 电量再把语言选择写进 SD 卡重启也不丢storage_write(path, lang, 1); /* 1中文 */ if(!storage_read(path, lang, 1)) lang 0;完整读写示例见 lib/fatfs/。改完编译烧录./fbt firmware ./fbt flash_usb预期结果firmware.elf重新生成USB 刷入后开机即生效。三、验收与调优改完你应该看到三样东西测试视图里主菜单三个字成型、无重影开机进系统语言选择停留在中文而不是回弹英文flash_usb日志走完 flashing 步骤且设备自动重启。如果没生效优先检查这 3 处字体数组是否真的被链接进了 elf搜一下符号名canvas_set_custom_u8g2_font是否在你当前这个视图的绘制回调里跨视图不会继承开机流程是否真的读到了 SD 卡上的设置文件四、高频坑点豆腐块 → 子集范围没覆盖该码位 → 补进 U 范围重跑转换器一行中文挤成一团 → 把 UTF-8 字节当 ASCII 宽度算 → 用canvas_get_string_width走 UTF-8 路径编译报字库数组溢出 → 子集太大 → 砍到 500 字以内或换-t 2更小字号社区 FAP 里中文照样错乱 → 第三方插件自带字串和默认字体你的系统字库管不到 → 等作者适配或自己打包 fork 版主菜单依旧是英文 → 正常locale服务只管日期、单位没有语言位 → 属上游待加功能把改动整理成 patch 提到上游仓库的 issue附上字体子集脚本能帮locale语言位更快落地。【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表