6417|2

253

帖子

3

TA的资源

纯净的硅(初级)

楼主
 

【2022得捷创新设计大赛】U8g2中的字体应用 [复制链接]

 

知道上面这个U8g2的人,都说U8g2是一个好东西。

U8g2 是用于嵌入式设备的单色图形库,支持单色 OLED 和 LCD,其中包括但不限于以下控制器:SSD1305、SSD1306、SSD1309、SSD1312、SSD1316、SSD1318、SSD1320、SSD1322、SSD1325、SSD1327、SSD1329、SSD1606、SSD1607、SH1106、SH1107、SH1108、SH1122、T6963、RA8835、LC7981、PCD8544、PCF1107、SH1108、SH1122、T6963、RA8835、LC7981、PCD8544、PCFf。 8812, HX1230, UC1601, UC1604, UC1608, UC1610, UC1611, UC1617, UC1638, UC1701, ST7511, ST7528, ST7565, ST7567, ST7571, ST7586, ST7588, ST75160, ST75256, ST75320, NT7534, ST7920, IST3020, IST3088, IST7920, LD7032, KS0108, KS0713, HD44102, T7932, SED1520, SBN1661, IL3820, MAX7219, GP1287, GP1247, GU800

 

可以说,常见的嵌入式设备上用的单色OLED和LCD,基本上都支持上了。

 

通常,是在Arduino中使用U8g2,可以从 Arduino IDE 的库管理器安装。因为这个库是开源的,所以有很多牛人移植到了各种不同的平台和系统上。

 

但这篇分享,不是讲U8g2具体如何使用的,是单说U8g2中的字体的。

 

U8g2除了能够处理例如划线、画框、等图形处理,另一个强大的地方,就是支持Unicode字符,可以很方便的通过U8g2在显示设备上,显示所需要的字符。

 

首先,是我们最常用的:中文。

通常,我们要在单色 OLED 和 LCD显示中文,要么显示设备自带字体,要么我们的程序自带字体点阵数据。

例如著名的 字模取模工具PCtoLCD ,就是帮助我们做这个工作的。

 

而在U8g2中,默认支持多种中文字体,包括:

  • 文泉驿12号、13号、14号、15号、16号字体
  • GNU Unifont字体

不过,为了节省资源,毕竟单片机的资源不是敞着用的,所以U8g2中的中文字体,仅支持常用的几百个汉字,一般如下:

所以,当你信心满满的用U8g2输出中文的时候,可能发现:

  1. 啥都没有输出
  2. 缺字

例如:输出 “机器人控制平台“,控制的控,就没有了

 

在实际中,可以使用的中文字体包括:

u8g2_font_wqy12_t_chinese1 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy12_t_chinese2 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy12_t_chinese3 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy12_t_gb2312 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy12_t_gb2312a 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy12_t_gb2312b 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy13_t_chinese1 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy13_t_chinese2 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy13_t_chinese3 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy13_t_gb2312 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy13_t_gb2312a 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy13_t_gb2312b 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy14_t_chinese1 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy14_t_chinese2 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy14_t_chinese3 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy14_t_gb2312 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy14_t_gb2312a 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy14_t_gb2312b 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy15_t_chinese1 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy15_t_chinese2 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy15_t_chinese3 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy15_t_gb2312 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy15_t_gb2312a 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy15_t_gb2312b 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy16_t_chinese1 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy16_t_chinese2 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy16_t_chinese3 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy16_t_gb2312 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy16_t_gb2312a 

链接已隐藏,如需查看请登录或者注册

u8g2_font_wqy16_t_gb2312b 

链接已隐藏,如需查看请登录或者注册

u8g2_font_unifont_t_chinese1 

链接已隐藏,如需查看请登录或者注册

u8g2_font_unifont_t_chinese2 

链接已隐藏,如需查看请登录或者注册

u8g2_font_unifont_t_chinese3 

链接已隐藏,如需查看请登录或者注册

 

在上述字体中,可以发现,文泉驿有的是chinese、有的是gb2312,有什么差别呢?

如果是chinese的,则为Unicode字符集,包含的字符范围更广,但是汉字数偏少。

如果是gb2312,则包含的字符范围偏少,但是汉字数更多。

可以根据实际情况使用。

 

以下为实际显示的情况:

U8G2::setFont(u8g2_font_unifont_t_chinese2); // 中文字体

U8G2::setFontMode(1); // 使用 u8g2 透明模式(默认)

U8G2::setCursor(30, 35);

U8G2::print("二自由度");

U8G2::setCursor(25, 55);

U8G2::print("机器人平台");

 

 

 

在Arduino中,驱动SSD1306 OLED,通常使用Adafruit_SSD1306,则可以应用U8g2_for_Adafruit_GFX,将Adafruit_SSD1306和U8G2连接起来,使用下面的调用方式:

u8g2_for_adafruit_gfx.setFont(u8g2_font_unifont_t_chinese2); // 中文字体

u8g2_for_adafruit_gfx.setFontMode(1); // 使用 u8g2 透明模式(默认)

u8g2_for_adafruit_gfx.setCursor(30, 35);

u8g2_for_adafruit_gfx.print("二自由度");

u8g2_for_adafruit_gfx.setCursor(25, 55);

u8g2_for_adafruit_gfx.print("机器人平台");

 

 

然后,是图标。

有时候,我们需要在界面上,显示一些图标,这样子方便理解。

例如:

 要显示图标,通常需要先找到对应的图片,然后提取其点阵数据,在需要的时候,呈现出来。

然而,使用U8G2,可以很方便的显示图标。

在Unicode字符集中,包含有很多图标的字符集。

例如:

 

而上述状态栏中的图标,则来源于:

 

实际调用如下:

u8g2_for_adafruit_gfx.setFont(u8g2_font_siji_t_6x10); // icon字体

u8g2_for_adafruit_gfx.setFontMode(1); // 使用 u8g2 透明模式(默认)

u8g2_for_adafruit_gfx.drawGlyph(0, 12, 0x0e200); // 电源图标

u8g2_for_adafruit_gfx.drawGlyph(128 - 16, 12, 0x0e21a); // WiFi图标

 

 

U8g2中,支持多种icon字体,用于显示图标。也有部分字体中,包含有特殊的字符,也可以当做图标来显示。

包含icon的字体很多,可以在如下页面,搜索icon获取:

链接已隐藏,如需查看请登录或者注册

 

以上小小的分享,是U8G2自身就能够提供的功能了,如果还不满足的话,还可以通过U8G2提供的otf2bdf工具,来自己添加自定义的字体,这样就更能方便我们的使用了。

 

 

最新回复

U8g2中的字体,可以很方便的显示图标,生成bdf字库在哪里存放,,, otf2bdf工具是U8g2自带的么   详情 回复 发表于 2022-11-5 10:00
点赞 关注
 
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

U8g2中的字体,可以很方便的显示图标,生成bdf字库在哪里存放,,,

otf2bdf工具是U8g2自带的么

点评

字体实际就是个c头文件引用就成啊。 工具自带。     另外,自制字体的教程很多,搜索一下哦  详情 回复 发表于 2022-11-6 17:06
 
 
 

回复

253

帖子

3

TA的资源

纯净的硅(初级)

板凳
 
Jacktang 发表于 2022-11-5 10:00 U8g2中的字体,可以很方便的显示图标,生成bdf字库在哪里存放,,, otf2bdf工具是U8g2自带的么

字体实际就是个c头文件引用就成啊。

工具自带。

 

 

另外,自制字体的教程很多,搜索一下哦

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表