轻松搞定嵌入式中文显示:u8g2_wqy 中文字体库完整上手指南
2026/8/21 1:37:45 网站建设 项目流程

轻松搞定嵌入式中文显示:u8g2_wqy 中文字体库完整上手指南

【免费下载链接】u8g2_wqy适合 u8g2 的中文字体,采用文泉驿点阵宋体作为源本,提供 12x12、13x13、14x14、15x15 和 16x16 点阵字库。项目地址: https://gitcode.com/gh_mirrors/u8/u8g2_wqy

去年夏天,我在一个 ESP32 温控器项目里被中文显示卡住了整整两周。OLED 屏要显示"当前温度:25.5℃",可 u8g2 自带的字体一个汉字都没有;自己写脚本逐字抠位图,字是出来了,却糊成一团,8 个汉字就吞掉 6KB Flash,想加个进度条都得精打细算。直到我在仓库里翻到 u8g2_wqy——一套专为 u8g2 图形库准备的中文字体库——困扰才真正解除。

u8g2_wqy 以文泉驿点阵宋体为源本,提供 12x12 到 16x16 共 5 种点阵尺寸、6 档字符集,把"嵌入式中文显示"从两周的苦力活变成三分钟的配置。它适合所有用 u8g2 驱动 OLED/LCD、需要在低资源 MCU 上显示中文的开发者,和"自己抠字模"或"购买商业字库"的方案相比,开源免费、即拷即用、体积可控是它最大的区别。

30 秒认识核心能力

  • ⚡️ 5 种点阵尺寸(12-16px),从 128x32 小屏到 160x128 大屏都能匹配
  • ✅ 6 档字符集,从 411 字精简版到 7539 字完整 GB2312
  • 源码即字库:src/下两个文件拷进工程就能编译,零额外依赖
字体配置字符数12px 字节占用
wqy12_t_chinese14119,491
wqy12_t_chinese399325,038
wqy12_t_gb23127,539208,228

其他尺寸(13-16px)下 chinese2、gb2312a、gb2312b 的完整字节数,README 里都一一列好了。

三步完成接入:最小可行路径

拿到手立刻能用,全程不超过十分钟:

  1. 获取代码:git clone https://gitcode.com/gh_mirrors/u8/u8g2_wqy
  2. src/u8g2_wqy.hsrc/u8g2_font_wqy.c放进工程,#include "u8g2_wqy.h"
  3. 设置字体后正常绘制即可
#include "u8g2_wqy.h" u8g2.setFont(u8g2_font_wqy12_t_chinese1); u8g2.drawStr(0, 12, "你好,世界");

字体名里的12是点阵尺寸、chinese1是字符集代号,调用方式与 u8g2 其他字体完全一致,不需要学习任何新 API。

进阶玩法:按需定制你的汉字库

按 Flash 余量选字符集。Flash 紧张的设备选chinese1,411 个最高频汉字足够覆盖日常提示语;功能型产品用chinese3(993 字)在覆盖与体积间取平衡;需要完整 GB2312 简体中文编码、又不惧 200KB 占用的大 Flash 设备,才上gb2312全集。

用源文件重新生成。仓库保留了 bdf 目录下的 5 个点阵源文件(9pt 到 13px)、maps 目录的字符映射表,以及转换工具 bdfconv.exe。想换尺寸、想调整字符组合,跑一遍 bdf + maps 的转换流程即可,genmaps.sh 演示了映射表的生成方式,全程可控。

内存占用不用操心。头文件里对 AVR 平台自动启用.progmem段、对 ESP8266 使用.text段,字库数据默认落在 Flash 而非 RAM,开发者无需手动干预。

常见误区与避坑:如何避免存储爆满

误区一:字库越大越好。有人一上来就选 7539 字的 gb2312 全集,208KB 直接撑爆小容量 Flash。正确做法是先列清要显示的文案,从 chinese3 起步,缺字再逐级升级。

误区二:忽略 gb2312a 的标点限制。gb2312a不含这类全角标点,必须用半角!?代替;需要全角标点就选gb2312b或完整版gb2312

误区三:不看体积就切字体。字库是整体编进固件的常量数组,切换前先对照 README 的字节表,建议至少预留 20% Flash 余量,避免后期加功能时无空间可用。

常见问题快速解答

Q:必须搭配 u8g2 使用吗?A:是的,这套数据是 u8g2 格式的字体,需配合 u8g2 图形库调用,主控型号不限。

Q:显示乱码怎么排查?A:先确认字符串是 UTF-8 编码、setFont 在 drawStr 之前调用;再确认字符落在所选字符集内,GB2312 之外的生僻字任何档位都显示不了。

Q:bdf 源文件只有 5 个,怎么对应 5 档输出尺寸?A:bdf 目录的 9pt、10pt、11pt、12pt、13px 源文件经 bdfconv.exe 转换后,对应生成 12 到 16px 五档字库。

Q:chinese 系列和 gb2312 系列是什么关系?A:chinese1/2/3 是 u8g2 官方推荐的高频小字符集,体积小、够日常用;gb2312 系列覆盖完整简体中文编码,字符全但占用大,按需求二选一即可。

Q:想加自定义字符怎么办?A:用 bdf 源文件配合 maps 映射表重新走一遍生成流程,仓库里的工具链已经齐备。

下一步:跑起来比想象中简单

一句话总结:u8g2_wqy 让嵌入式中文显示回归"配置"而不是"造轮子"。

现在就 clone 一份,先拿chinese1+ 12px 在你的板子上跑出"你好,世界",再按实际文案和 Flash 余量逐步升级字符集。跑通之后你会发现,以前那些因为"显示不了中文"而砍掉的需求,其实都还来得及捡回来。

【免费下载链接】u8g2_wqy适合 u8g2 的中文字体,采用文泉驿点阵宋体作为源本,提供 12x12、13x13、14x14、15x15 和 16x16 点阵字库。项目地址: https://gitcode.com/gh_mirrors/u8/u8g2_wqy

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询