尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

嵌入式中文显示不再抓狂:u8g2_wqy中文字体库,让OLED小屏也能字正腔圆

嵌入式中文显示不再抓狂:u8g2_wqy中文字体库,让OLED小屏也能字正腔圆 嵌入式中文显示不再抓狂u8g2_wqy中文字体库让OLED小屏也能字正腔圆【免费下载链接】u8g2_wqy适合 u8g2 的中文字体采用文泉驿点阵宋体作为源本提供 12x12、13x13、14x14、15x15 和 16x16 点阵字库。项目地址: https://gitcode.com/gh_mirrors/u8/u8g2_wqy凌晨一点你刚点亮一块 128x64 的 OLED 屏本该显示温度25.5℃的位置爬满了歪歪扭扭的乱码。别急着怀疑屏幕坏了——你只是撞上了嵌入式中文显示的经典难题。u8g2_wqy 中文字体库正是为这类场景准备的它把文泉驿点阵宋体翻译成 u8g2 图形库能直接调用的字体数据五档点阵、六套字符集从 9KB 到 318KB 丰俭由人。一块小屏为什么连个汉字都显示不出来先回答一个扎心的问题你的屏幕硬件没有任何毛病问题出在字体上。u8g2 自带的字体几乎全是西文和数字想显示汉字就必须把汉字的点阵位图以 u8g2 认识的格式塞进 Flash。于是三个坑依次出现第一个坑是存储。一个 16x16 的汉字点阵要占 32 字节常用字按三千个算就是接近 100KB。对动辄 4MB Flash 的 ESP32 来说还算轻松可到了以 KB 计量的 ATmega 上直接劝退。第二个坑是清晰度。很多人从网上扒来万能中文字库结果 8x8 点阵的汉字糊成一团横竖撇捺全黏在一起。小屏不是不能显示中文而是得选对点阵尺寸。第三个坑是选型。GB2312 编码标准里躺着 6763 个汉字全都要还是只要高频的那几百个没人告诉你该怎么权衡。这三个坑其实是同一个问题的三面如何在有限的 Flash 里用合适的点阵显示够用的汉字。u8g2_wqy 就是冲着这个答案来的。u8g2_wqy 是什么一句话讲清它是 u8g2 的配套中文字体库源本是文泉驿点阵宋体WenQuanYi Bitmap Song提供 12x12、13x13、14x14、15x15、16x16 五档点阵每一档又按字符集拆成六个版本。翻译成人话它把字典按需印好了你只管按页码挑。从零到一三行代码让屏幕开口说中文第一步把字体库搬进项目git clone https://gitcode.com/gh_mirrors/u8/u8g2_wqy克隆下来后你只需要两个文件src/u8g2_font_wqy.c和src/u8g2_wqy.h。前者是所有字体数据的实体后者是声明头文件拷进你的工程即可。第二步选一套字符集一句 setFont 完事#include u8g2_wqy.h // 声明全部中文字体 u8g2.setFont(u8g2_font_wqy12_t_chinese3); // 12点阵、993个高频汉字 u8g2.drawStr(0, 14, 当前温度25.5℃); // 直接画字符串第一行引入头文件它会自动帮你打开U8G2_USE_LARGE_FONTS宏不开的话大字体根本编译不过第二行是核心——字体名里的wqy12表示 12 点阵chinese3表示这套 993 字的常用字符集第三行直接输出文本u8g2 会自动按编码查表描点。如果你用的是 AVR 或 ESP8266 这类单片机也别慌——头文件里已经用U8X8_FONT_SECTION把字体放进了 progmem 或.text段不会白白吃掉你宝贵的 RAM。第三步想换字号只改一个数字觉得 12 点阵太小把wqy12换成wqy16其余代码一行不用动。同样的 API、同样的流程这就是这套库最省心的地方。数据说了算六套字符集到底怎么挑与其拍脑袋不如看账本。下表是 12 点阵各字符集的字符数与体积其他档位按比例放大字体名字符数占用字节一句话定位u8g2_font_wqy12_t_chinese14119,491传感器读数、开关机提示u8g2_font_wqy12_t_chinese257413,701日常问候语级别的覆盖面u8g2_font_wqy12_t_chinese399325,038家用场景的稳妥之选u8g2_font_wqy12_t_gb2312a4,041111,359基础汉字区无全角标点u8g2_font_wqy12_t_gb2312b4,531120,375在 a 的基础上多了些符号u8g2_font_wqy12_t_gb23127,539208,228完整 GB2312产品化首选看完这张表结论其实很直白先算你的 Flash 预算再定字符集。比如 ATmega328P 只有 32KB Flash208KB 的完整 GB2312 想都别想老老实实上 chinese3 的 25KB而 ESP32 想显示完整中文直接上 gb2312 全量集彻底杜绝字库里没这个字的尴尬。点阵档位的选择同理128x64 的小屏12 或 13 点阵每行能排下 10 来个字屏幕更大、对颜值有要求16 点阵的笔画细节明显更耐看。记住一个原则——先够用再好看。过来人的三个翻车点写码路上我替你踩过几个坑提前说给你听翻车点一gb2312a 没有全角标点。它只覆盖 GB2312 的 01、02、16 到 55 区像这样的全角符号查不到。补救很简单用半角!顶替或者直接换 gb2312b。翻车点二小点阵配低分屏别指望漂亮。12 点阵在 128x32 上够用但想看清笔画就得升 16 点阵——前提是你的屏幕像素够多。分辨率不够还硬上大字号只会换来更严重的糊。翻车点三Flash 被撑爆却找不到原因。别忘了 u8g2 的其他字体、图标、你自己的常量也在抢空间。建议按 25% 的余量预留别把盘子盛到溢出来。下一步该做什么这套库能出现在哪里物联网设备上那句当前温度25.5℃工业面板上的操作提示智能手表上的本地化界面——凡是 u8g2 能画的屏它都能补上中文这块拼图。往后做动态字体加载也可以顺着它的字符集体系按需裁剪。现在别让那行乱码继续趴在屏幕上。git clone拉下来把src/里的两个文件拖进工程挑一套字符集十分钟内你就能看到第一行清晰的中文。动手吧你的 OLED 已经等这句话很久了。【免费下载链接】u8g2_wqy适合 u8g2 的中文字体采用文泉驿点阵宋体作为源本提供 12x12、13x13、14x14、15x15 和 16x16 点阵字库。项目地址: https://gitcode.com/gh_mirrors/u8/u8g2_wqy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表