资讯动态

Flipper Zero 固件中文显示实战:3 步搞定 u8g2 中文字体与 locale 本地化

发布时间:2026/9/10 17:26:14 来源:尧图企业网站定制
Flipper Zero 固件中文显示实战3 步搞定 u8g2 中文字体与 locale 本地化【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware在 Flipper Zero 固件flipperzero-firmware上显示中文核心障碍是屏幕字体不含汉字字形其次是 locale 服务只管度量单位和日期格式、不碰语言文案。本文按选字体 → 写渲染 → 编译烧录的顺序带你把中文界面跑起来。动手前备齐这 3 样东西Linux 或 macOS 环境装有 Git 和构建依赖仓库自带fbt构建脚本一台通过 USB 连接的 Flipper Zero仓库本地副本git clone https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware先摸清两处关键模块中文显示要动两块代码字体层显示系统基于 U8g2 库位于 lib/u8g2/。字形数据以u8g2_font_xxx数组形式存放在u8g2_fonts.c渲染时由 GUI 服务applications/services/gui/调用。本地化层locale 服务 定义在locale.h提供locale_format_time、locale_format_date等函数负责时间/日期/单位的格式切换。一个容易被忽略的结论你不需要从零造轮子——u8g2_fonts.c里已经内置了文泉驿系列中文字体如u8g2_font_wqy12_t_gb2312及按chinese1等切分的精简版12~16 号字均有。选择或转换中文字体优先方案直接用内置字体。在代码中引用现成符号即可canvas_set_custom_u8g2_font(canvas, u8g2_font_wqy12_t_gb2312); canvas_draw_str(canvas, 0, 40, 中文测试);次选方案转换自己的字体。若内置字形不够用用 U8g2 官方的fontconv工具把 TTF 转成字形数组fontconv -f WenQuanYiMicroHei.ttf -s 12 -o my_font.c转换时建议用-x参数只导出目标字符集全量 GB2312 字库约 200KB会明显挤占 Flash 空间。写一个最小渲染 Demo仓库里有现成参考example_custom_font。照着它改三处把字体数组替换为你要用的u8g2_font_wqy*符号在绘制回调中调canvas_set_custom_u8g2_font设置字体用canvas_draw_str输出 UTF-8 编码的中文——源文件请统一保存为 UTF-8否则字形会错位128×64 的屏幕上 12 号字每行约能放下 10 个汉字排版时先按这个宽度规划文案。一键编译并烧录到设备在仓库根目录执行./fbt ./fbt flash_usb第一条命令构建固件耗时较长属正常现象第二条通过 USB 把固件刷入设备完成后设备自动重启。若只做增量验证也可用./fbt dist先产出固件包再手动拷贝。排障速查现象原因处理中文显示为方块或空白当前渲染用的字体不含该字形换用wqy系列字体确认canvas_set_custom_u8g2_font已生效中文变成乱码字符源文件编码非 UTF-8将.c文件统一转为 UTF-8 无 BOM 后重新编译编译报 Flash 溢出全量字库太大改用chinese1精简版或字库切分时间/日期格式没随设置变化只改了字体层没走 locale调用locale_get_time_format读取配置后再格式化完成烧录后在设备上确认中文正常渲染接下来不妨打开applications/services/locale/源码看看能否为菜单加一个语言切换入口——那正是这套本地化体系留下的扩展空间。【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价