news 2026/9/10 22:23:50

Flipper Zero 中文显示改造:中文字体、本地化、菜单三处动手指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flipper Zero 中文显示改造:中文字体、本地化、菜单三处动手指南

Flipper Zero 中文显示改造:中文字体、本地化、菜单三处动手指南

【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware

BadUSB 脚本里写中文注释,打开后变成一排“?”;NFC 标签贴在设备前,屏幕上的中文标签名是一片空白。Flipper Zero 中文显示默认只覆盖拉丁字符,中文属于非拉丁字符显示里未处理的部分。本文讲清问题卡在显示链哪一层,再按三处动手改造。

中文卡在显示链的哪一层

显示链路可以拆成三层,中文在每层都会卡住。

U8g2 字体层。屏幕文字最终由 u8g2(轻量级 2D 图形库)渲染。内置字体以拉丁和西里尔字符为主,中文字形码点没有位图。这一层卡住时,中文表现为空框或问号。

locale 服务层。locale 服务目前只管三件事:公制与英制单位、12/24 小时制、日期排列顺序。它没有“语言”概念,菜单文案无处挂载。

应用字符串资源层。每个应用自带一套英文文案。就算字体支持中文,字符串仍是英文,屏幕上就还是英文菜单。这一层决定 Flipper Zero 菜单汉化能覆盖哪些条目。

三条路线怎么选

路线改动范围Flash/RAM 代价上手难度适合谁
固件内置中文字体u8g2 字体表随固件编译高:常用字子集也在数百 KB 级,RAM 占用上升想整体汉化系统菜单的固件开发者
应用级自定义字体只改自己的应用和字体数组低:按需嵌入字符子集只想在单个应用里显示中文
汉化字符串资源包只替换各应用文案最低:不新增字体,依赖拉丁字库想让菜单先变中文、字体暂缓

推荐:只在意单个应用显示中文,选应用级自定义字体路线;要汉化系统菜单,先做字符串资源包,再谈字体。

动手改造

U8g2 中文字体怎么挑

选开源许可、支持单色位图的字体。128×64 屏幕优先 12 到 16 像素字高。别追求整部 GB2312,常用字子集就够,字体表也小。

字体格式怎么转

U8g2 需要编译进固件的 C 数组。用 u8g2 的字体转换工具链,从 TTF 生成u8g2_font_xxx字体表,再把数组嵌入应用。用法可参考 example_custom_font 示例:调用canvas_set_custom_u8g2_font()后,canvas_draw_str()就能渲染中文。

⚠️ 字体表是纯位图数据,多一个字形就多占 Flash,务必控制子集规模。

字符串资源怎么挂中文

给目标应用新增一套中文字符串表,用宏或编译开关替换原英文文案。改动集中在字符串定义层,绘制逻辑不用动。这是 Flipper Zero 固件汉化的主体工作。汉化系统设置时,入口在时钟设置等 settings 应用。

设置菜单怎么加语言切换

locale 服务现在只有单位、时间、日期三个枚举。照 locale.c 里现有项的存法,走 furi_hal RTC 通道新增一个“语言”枚举并持久化,再在设置子菜单挂一个条目,上机就能看到切换项。

上机验证清单

先克隆仓库:

git clone https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware

编译完成后走 USB 烧录:

./fbt ./fbt flash_usb

上机逐项核对:

  • 主菜单无空框、无问号
  • 时钟设置里时间格式切换后显示正确
  • 自有应用中文无缺字
  • 语言切换过程无崩溃
  • 重启后设置仍然保留

踩坑速查

中文显示为空框或问号。现象:字形变成方块;原因:字体表不含对应中文码点;处置:补齐字符子集重新转换,别动字号。

中文断行或重叠。现象:字距错乱、笔画互相压盖;原因:字高与基线设置不匹配,或字号过大;处置:调低字高重新转换,再微调绘制 y 坐标。

只有部分应用出中文,系统菜单没变。现象:自研应用正常,主菜单仍乱码;原因:自定义字体只作用于应用本身,系统菜单用内置字体绘制;处置:先上字符串资源包,再升级内置字体。

编译报字体符号错误。现象:链接阶段报符号未找到;原因:字体数组命名不一致或未加入编译列表;处置:对照示例文件检查数组定义与 SConscript 源文件列表。

继续深挖

  • 本地化服务源码:applications/services/locale/
  • 画布与字体 API:applications/services/gui/
  • u8g2 移植层:lib/u8g2/
  • 应用开发文档:documentation/app_dev/

下一步行动:给时钟设置应用挂一组中文字符串和一个语言切换项,验证通过后再把同一套做法推进到主菜单。

【免费下载链接】flipperzero-firmwareFlipper Zero firmware source code项目地址: https://gitcode.com/GitHub_Trending/fl/flipperzero-firmware

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 22:21:07

Windows 11一键精简:tiny11builder 快速上手指南

Windows 11一键精简:tiny11builder 快速上手指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 实测下来,用 tiny11builder 构建的 Windo…

作者头像 李华
网站建设 2026/9/10 22:17:38

3 分钟装好、5 分钟定位异常:k9s k8s 终端运维实战指南

3 分钟装好、5 分钟定位异常:k9s k8s 终端运维实战指南 【免费下载链接】k9s 🐶 Kubernetes CLI To Manage Your Clusters In Style! 项目地址: https://gitcode.com/GitHub_Trending/k9s/k9s k9s 是一款面向 Kubernetes 集群管理的终端工具&…

作者头像 李华
网站建设 2026/9/10 22:12:58

PLC在洗衣机控制系统中的应用与设计实践

1. 洗衣机控制系统的核心需求解析在传统家电领域,洗衣机控制系统经历了从机械式到电子式的演进过程。现代中高端洗衣机普遍采用可编程逻辑控制器(PLC)作为核心控制单元,这种方案相比单片机控制具有显著优势:抗干扰能力…

作者头像 李华
网站建设 2026/9/10 22:12:13

Ventoy启动盘工具:3步把U盘变多系统启动盘的完整教程

Ventoy启动盘工具:3步把U盘变多系统启动盘的完整教程 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy 又要为了装个系统把U盘重新格式化一遍?这种日子可以结束了。开源免费的Ven…

作者头像 李华