u8g2字体库命名规则及符号库的使用

news/2024/11/11 4:43:23/文章来源:https://www.cnblogs.com/FBsharl/p/18353980

u8g2字体命名规则

<prefix> '_' <name> '_' <purpose> <char set>

prefix:基本上都是 u8g2;
name:一般会挂钩上字符像素使用量,比如5X7
purpose: t(transparent)\h(height)\m(monospace)\8(8x8pixe)

<purpose> Description
t Transparent font, Do not use a background color.
h All glyphs have common height.
m All glyphs have common height and width (monospace).
8 All glyphs fit into a 8x8 pixel box.

char set: f(256)/r(regular)/u(uppercase)/n(numers)

<char set> Description
f The font includes up to 256 glyphs.
r Only glyphs on the range of the ASCII codes 32 to 127 are included in the font.
u Only glyphs on the range of the ASCII codes 32 to 95 (uppercase chars) are included in the font.
n Only numbers and extra glyphs for writing date and time strings are included in the font.
... Other custom character list.

示例:
我想要显示天气符号,根据字符大小等要素找到了

通过以下代码便可输出最后一个晴天符号:

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);void setup(void) {u8g2.begin();
}void loop(void) {u8g2.clearBuffer();                   // clear the internal memoryu8g2.setFont(u8g2_font_open_iconic_weather_6x_t);u8g2.drawGlyph(0,48,0x0045);u8g2.sendBuffer();                    // transfer internal memory to the displaydelay(1000);  
}

符号前的0040为十六进制数,需要加0x,0x0040表示第一个符号,0x0041表示第二个符号......

本文简单讲解了u8g2库使用font 绘制各种图形的方法,各位可以举一反三找到自己想要的符号.

 
 
扩展: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 Wqy (Chinese Font)

u8g2_font_wqy12_t_chinese2 Wqy (Chinese Font)

u8g2_font_wqy12_t_chinese3 Wqy (Chinese Font)

u8g2_font_wqy12_t_gb2312 Wqy (Chinese Font)

u8g2_font_wqy12_t_gb2312a Wqy (Chinese Font)

u8g2_font_wqy12_t_gb2312b Wqy (Chinese Font)

u8g2_font_wqy13_t_chinese1 Wqy (Chinese Font)

u8g2_font_wqy13_t_chinese2 Wqy (Chinese Font)

u8g2_font_wqy13_t_chinese3 Wqy (Chinese Font)

u8g2_font_wqy13_t_gb2312 Wqy (Chinese Font)

u8g2_font_wqy13_t_gb2312a Wqy (Chinese Font)

u8g2_font_wqy13_t_gb2312b Wqy (Chinese Font)

u8g2_font_wqy14_t_chinese1 Wqy (Chinese Font)

u8g2_font_wqy14_t_chinese2 Wqy (Chinese Font)

u8g2_font_wqy14_t_chinese3 Wqy (Chinese Font)

u8g2_font_wqy14_t_gb2312 Wqy (Chinese Font)

u8g2_font_wqy14_t_gb2312a Wqy (Chinese Font)

u8g2_font_wqy14_t_gb2312b Wqy (Chinese Font)

u8g2_font_wqy15_t_chinese1 Wqy (Chinese Font)

u8g2_font_wqy15_t_chinese2 Wqy (Chinese Font)

u8g2_font_wqy15_t_chinese3 Wqy (Chinese Font)

u8g2_font_wqy15_t_gb2312 Wqy (Chinese Font)

u8g2_font_wqy15_t_gb2312a Wqy (Chinese Font)

u8g2_font_wqy15_t_gb2312b Wqy (Chinese Font)

u8g2_font_wqy16_t_chinese1 Wqy (Chinese Font)

u8g2_font_wqy16_t_chinese2 Wqy (Chinese Font)

u8g2_font_wqy16_t_chinese3 Wqy (Chinese Font)

u8g2_font_wqy16_t_gb2312 Wqy (Chinese Font)

u8g2_font_wqy16_t_gb2312a Wqy (Chinese Font)

u8g2_font_wqy16_t_gb2312b Wqy (Chinese Font)

u8g2_font_unifont_t_chinese1 Unifont

u8g2_font_unifont_t_chinese2 Unifont

u8g2_font_unifont_t_chinese3 Unifont

 

在上述字体中,可以发现,文泉驿有的是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("机器人平台");

 

然后,是图标。

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

例如:

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

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

在Unicode字符集中,包含有很多图标的字符集。比如上述状态栏中的图标,就来源于:

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

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

fntlistallplain · olikraus/u8g2 Wiki (github.com)

 

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

 

参考文章:

1. 《u8g2字体库》链接:https://www.jianshu.com/p/cf1f6a2fd017/

作者:单走一个6
来源:简书

 
2. [经验分享] 【2022得捷创新设计大赛】U8g2中的字体应用
https://m.eeworld.com.cn/bbs/forum.php?mod=viewthread&tid=1223466&page=1
 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/781453.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 虚拟环境安装flask框架 Read timed out.

cmd 输入workon env_name 激活 pip install flask 升级pip: python -m pip install --upgrade pip -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 下载包:以flask-sqlalchemy为例: 方案一:pip install Flask 方案二:pip install flask-sqlalchemy -i…

web渗透—sql注入

一:union联合注入 1、万能密码and优先级高于or,先执行and; 则username = "用户提交" and password ="1"为假;or后面的条件恒为真;则where条件为真;输出admin表中所有的信息select * from admin where username = "用户提交" and password =…

一个好用的消息推送服务【Server 酱】

今天给大家介绍一个好用的消息推送服务Server 酱 Server 酱简介 Server 酱是什么 「Server 酱」,英文名「ServerChan」,是一款「手机」和「服务器」、「智能设备」之间的通信软件。 说人话?就是从服务器、路由器等设备上推消息到手机的工具。 开通并使用上它,只需要一分钟:…

数据接口安全风险监测技术

数据接口: 信息系统之间进行数据传输和交换的一种机制,它描述了一个由接口服务端和客户端端共同遵守的合约,通常会约定数据的格式、通信协议、传输结构等。 风险源: 可能导致危害数据的保密性、完整性、可用性和数据处理合理性等事件的威胁、脆弱性、问题、隐患等。 一、数…

USB协议详解第6讲(USB描述符-端点描述符)

1.USB描述符 USB描述符有设备描述符、标准配置描述符、接口描述符、端点描述符、字符串描述符,HID设备有HID描述符、报告描述符和物理描述符。今天主要是学习USB端点描述符的组成。 2.端点描述符组成 前面讲了设备描述符、标准配置描述符、接口描述符,本篇我们讲解端点描述符…

【Web API 】渗透测试指南

一、概述1.1 API的基本概念1.2 API的作用1.3 API的类型二、Web API 渗透测试2.1 测试工具2.2 信息收集2.2.1 目录扫描2.2.2 网络流量分析2.2.3 使用互联网资源2.3 漏洞检测2.4 实战案例2.4.1 接口枚举2.4.2 参数枚举2.4.3 用户名枚举2.4.4 暴力破解2.4.5 错误信息泄露2.4.6 CRL…

栈和队列part02

今天学习了队列的常见题型:滑动窗口最大值,先进先出不难想到队列,最大值可以考虑优先队列,但是此题还是典型的单调队列(需要自己实现) 前k个高频元素,维护最大值常用优先队列,注意选的最小堆7. 239滑动窗口最大值(队列) 题目:给你一个整数数组 nums,有一个大小为 k…

栈和队列part03

今天学习了队列的常见题型:滑动窗口最大值,先进先出不难想到队列,最大值可以考虑优先队列,但是此题还是典型的单调队列(需要自己实现) 前k个高频元素,维护最大值常用优先队列,注意选的最小堆7. 239滑动窗口最大值(队列) 题目:给你一个整数数组 nums,有一个大小为 k…

【1.0版】【MYSQL安全】导入导出相关操作

主题 导入导出相关操作一、load_file()二、into outfile一、load_file() load_file(file_name):读取文件并返回该文件的内容作为一个字符串使用条件:A、 必须有权限读取并且文件必须完全可读 and (select count() from mysql.user)>0 #如果结果返回正常,说明具有读写权限。…

栈和队列part01

今天学习了栈和队列的第一部分。基础知识 用栈模拟队列(双栈) 用队列模拟栈(一个队列,但是需要重复将队头元素写到队尾) 栈的基本应用(括号匹配、删除重复项、逆波兰表达式)1. 基础知识栈和队列是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(…

2-梯度下降算法

梯度下降算法只能保证找到的是局部最优,不是全局最优平常我们经过大量实验,发现局部最优点不是很多,所以可以使用梯度下降算法。 但是还要提防鞍点下面进行实现梯度下降算法点击查看代码 import numpy as np import matplotlib.pyplot as pltx_data = [1.0, 2.0, 3.0] y_dat…