让 Flipper Zero 固件显示中文的 3 步完整部署教程
【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware
你在 Flipper Zero 应用里输入中文,屏幕只剩一排小方块,因为内置 u8g2 字体库只带了拉丁字符位图。本文拿 Flipper Zero 固件仓库里的示例应用做载体,带你把中文字体转成 u8g2 字体数据,让设备画出中文。读完本文,你将能在自己的应用里挂载自定义中文字体,并让 128×64 屏正常显示。
方案速览:字体替换三步走
固件的文字渲染走 canvas.h 里的 Canvas 接口,内置字体数据在 lib/u8g2/u8g2_fonts.c,其中没有中文。整件事就是三步:造一份含中文的 u8g2 字体数组,让应用在绘制时切到它,编译刷进设备。
| 步骤 | 做什么 | 得到什么 |
|---|---|---|
| 1 | 克隆仓库,运行./fbt | 工具链就绪,固件编译通过 |
| 2 | 把中文字体转成 u8g2 C 数组 | 一份含汉字的字体数据 |
| 3 | 示例应用里替换字体数组,编译并写入设备 | 屏幕上出现中文 |
动手前检查
- Linux 或 macOS 电脑(Windows 走 WSL)
- Git 与终端可用
- Flipper Zero 设备通过 USB 连接(或 Devboard)
- 一份含中文的 TTF 字体文件,如文泉驿微米黑
- 设备已装好 SD 卡,用于存放应用
分步实施 🔧
步骤 1:克隆固件仓库并初始化编译环境
目的:拿到可编译的 Flipper Zero 固件源码和工具链。
操作:在终端克隆仓库并进入目录:
git clone https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware cd flipperzero-firmware然后执行首次编译,fbt 会自动下载交叉编译工具链,等待其跑完即可:
./fbt确认:终端末尾没有error,仓库根目录生成dist/,里面有各目标平台的固件镜像。
步骤 2:把中文字体转成 u8g2 格式的 C 数组
目的:TTF 固件无法直接使用,u8g2 只认自己的字体数据格式,先做转换。
操作:用 u8g2 官方字体转换脚本(u8g2 仓库中的 font build 工具)转换你的 TTF,三个关键参数:
- 字级选 4x6 或 6x8,小屏装不下大字号
- 字符集选含中文的子集,避免全量字形
- 输出形式选 C 源数组,命名
u8g2_font_xxx
产出的数组格式和 u8g2_fonts.c 里的u8g2_font_4x6_t_cyrillic完全一致,直接拷进你的代码即可。
确认:转换工具打印字体名和字形数,如Glyphs: 50/50,即覆盖了你需要的汉字数。
步骤 3:在示例应用里换上中文字体
目的:照着官方示例改两行,让固件真正调用你的字体绘制。
操作:打开 example_custom_font.c,关键在第 77 行:
canvas_set_custom_u8g2_font(canvas, u8g2_font_4x6_t_cyrillic);把参数换成步骤 2 生成的中文数组,并把下方canvas_draw_str里的字符串改成要显示的中文。该示例还演示了如何注册 view port 全屏绘制,流程可原样复用。
确认:文件只改字体数组与字符串两处,数组以const uint8_t定义在文件顶部。
步骤 4:编译应用并写入设备
目的:只编译这一个应用并送达设备,比全量固件编译快得多。
操作:
./fbt example_custom_font编译通过后,把应用写入 SD 卡:
./fbt run_app确认:编译输出无报错,fbt 提示应用已写入 SD 卡/apps/目录。
验证结果
在设备应用列表里打开 "Example: custom font",屏幕上应出现你写入的中文文本,按返回键退出。若整条链路正常,说明字体数据、绘制调用、编译刷写三处都通了。
踩坑速查 ⚡
- 现象:编译报内存不足或应用体积超限。原因:全量汉字位图达数 MB,超出应用内存预算。处理:改用 4x6 小字级,或只保留所需几十到几百个字的子集字体。
- 现象:中文挤成一团或被裁掉一半。原因:字体高度与绘制坐标不匹配,y 值偏小。处理:核对转换器输出的字体高度,调大
canvas_draw_str的 y 参数(示例里是 6)。 - 现象:
flash_usb提示找不到设备。原因:设备未进 bootloader,或串口工具占着端口。处理:断电后按住中键再插 USB,并关掉占用串口的调试工具。 - 现象:设备应用列表里看不到新应用。原因:
.fap没真正落到 SD 卡,或列表未刷新。处理:检查 SD 卡/apps/目录,然后重启设备。
收尾
四步做完,你的 Flipper Zero 就能渲染自定义中文字体了。想继续看绘制接口,从 canvas.h 入手;应用开发全流程可参考 app_dev_gui.md。字体数据本身只是一份 C 数组,补一份中文字体数据,就是你参与这个项目的最短路径。
【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考