LVGL 字体
一、LVGL 内置字体
LVGL有几种不同大小的内置字体,可以通过 LV_FONT_MONTSERRAT_X 定义在 lv_conf.h 中启用。
普通字体
包含所有ASCII字符,度数符号(U + 00B0),项目符号(U + 2022)和内置符号,可以根据自己的需要选择定义 如下所示:#define LV_FONT_MONTSERRAT_8 0
#define LV_FONT_MONTSERRAT_10 0
#define LV_FONT_MONTSERRAT_12 0
#define LV_FONT_MONTSERRAT_14 1
#define LV_FONT_MONTSERRAT_16 0
#define LV_FONT_MONTSERRAT_18 0
#define LV_FONT_MONTSERRAT_20 0
#define LV_FONT_MONTSERRAT_22 0
#define LV_FONT_MONTSERRAT_24 0
#define LV_FONT_MONTSERRAT_26 0
#define LV_FONT_MONTSERRAT_28 0
#define LV_FONT_MONTSERRAT_30 0
#define LV_FONT_MONTSERRAT_32 0
#define LV_FONT_MONTSERRAT_34 0
#define LV_FONT_MONTSERRAT_36 0
#define LV_FONT_MONTSERRAT_38 0
#define LV_FONT_MONTSERRAT_40 0
#define LV_FONT_MONTSERRAT_42 0
#define LV_FONT_MONTSERRAT_44 0
#define LV_FONT_MONTSERRAT_46 0
#define LV_FONT_MONTSERRAT_48 0特殊字体
LV_FONT_MONTSERRAT_12_SUBPX 0 // 与常规12像素字体相同,但具有亚像素渲染
LV_FONT_MONTSERRAT_28_COMPRESSED 0 // 与普通的28 px字体相同,但压缩字体为3 bpp
LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0 // 正常范围内的16像素字体+希伯来语,阿拉伯语,Perisan字母及其所有形式
LV_FONT_SIMSUN_16_CJK 0 // 16 px字体,具有正常范围+ 1000个最常见的CJK部首
LV_FONT_UNSCII_8 0 // 仅包含ASCII字符的8 px像素完美字体
LV_FONT_UNSCII_16 0 // 仅包含ASCII字符的16 px像素完美字体
内置符号

二、使用外部字体
在使用外部字体时,需要了解字体编码定义范围,见这么博主的文章:【LVGL(6)】显示中文设置,制作中文字库。
字体显示和图片一样,需要外部定义像素,所以我们也可以使用工具将字体转换成程序可以使用的变量,如下所示:
使用字体在线转换工具
LVGL 在线字体转换:https://lvgl.io/tools/fontconverter转换文字

将生成的文件导入工程中
三、字体使用
内部字体使用
lv_obj_t *test_label = lv_label_create(lv_scr_act());
lv_label_set_text(test_label, "test");
内置符号使用
lv_obj_t *test_label = lv_label_create(lv_scr_act());
lv_label_set_text(test_label, LV_SYMBOL_OK); // 正常显示,则应显示一个 ✓ 字符。
外部字体使用
在使用之前需要LV_FONT_DECLARE() 声明字体。
注意:想要使声明的字体全局可以,则在 lv_conf.h 文件中的 LV_FONT_CUSTOM_DECLARE 宏声明,如下图所示:

外部字体使用程序
/* 加载字体样式 */
static lv_style_t font_label_style;
lv_style_init(&font_label_style);
lv_style_set_text_font(&font_label_style, &test_font); lv_obj_t *test_label = lv_label_create(lv_scr_act());
lv_obj_add_style(test_label , &font_label_style, 0);
lv_label_set_text(test_label , "测试字体");
改变字体颜色小技巧
当值改变字体颜色时,不需要创建样式即可改变颜色,如下所示/* 其中 #ff0000 ...# 表示设置的颜色 */
lv_label_set_text(tcs_view_label, "#ff0000 TCS34725 device cannot be opened#");
/* 记得使能文本重绘色 */
lv_label_set_recolor(tcs_view_label, true);
LVGL 字体的更多相关文章
- LVGL库入门教程04-样式
LVGL样式 LVGL样式概述 创建样式 在 LVGL 中,样式都是以对象的方式存在,一个对象可以描述一种样式.每个控件都可以独立添加样式,创建的样式之间互不影响. 可以使用 lv_style_t 类 ...
- AIR32F103(十) 在无系统环境和FreeRTOS环境集成LVGL
目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告 AIR32F103(二) Linux环境和LibOpenCM3项目模板 AIR32F103(三) Linux环境基于标准外 ...
- BL808:【M1s DOCK开发板】与LVGL 使用体验
前言 念春时已夏,恋冬雪已融. 总是感叹时光匆匆,便努力在在平凡中挣扎,在平庸中努力,在平淡中积累.奈何时代飞速发展,时间又被工作占用,外加生活中的诱惑又太多了,很多想学.想做.想超越的事,都被抛之一 ...
- 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- Linux 桌面系统字体配置要略
字体显示效果测试 这一段是为了测试宋体字的显示效果,包括宋体里面自带的英文字体,“This is english,how does it look like?”.这一行是小字.后面几个字是加粗的宋体. ...
- 在 Ubuntu 14.10 中借用 Windows 的字体
在前一篇随笔中,我详细讨论了字体的分类及用途,也以 Fedora 20 为例,展示了字体配置的思路和方法.我在配置 Fedora 20 系统字体的时候,采用的是一种釜底抽薪的方法,完全抛开了系统原有的 ...
- TODO:一不顺眼就换字体Go之代码篇
TODO:一不顺眼就换字体Go之代码篇 image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述:新增字体font,进行 ...
- TODO:一不顺眼就换字体Go之应用篇
TODO:一不顺眼就换字体Go之应用篇 字体,文字的外在形式特征.就是文字的风格,是文字的外衣.好的字体让人看得舒服,让人更有看.写的欲望哦.2016-11-16 GO官方博客发布了同名Go字体,并没 ...
- TODO:Go语言同名Go字体发布
TODO:Go语言同名Go字体发布 2016-11-16 Go语言官方博客发布了一款同名字体–Go字体.此字体族包括正常.粗体和斜体渲染,支持比例和等宽字体.此字体已经经过用于编程方面的技术测试,使用 ...
- Android SearchView 自定义SearchIcon和字体颜色大小
自定义SearchView的搜索图标和字体属性相对复杂一些,记下来. 一.自定义SearchIcon 1.API版本低于21:版本小于21时,要修改SearchIcon比较复杂,需要先获取到Searc ...
随机推荐
- [MAUI]集成高德地图组件至.NET MAUI Blazor项目
@ 目录 前期准备:注册高德开发者并创建 key 登录控制台 创建 key 获取 key 和密钥 创建项目 创建JS API Loader 配置权限 创建定义 创建模型 创建地图组件 创建交互逻辑 项 ...
- 解密prompt系列25. RLHF改良方案之样本标注:RLAIF & SALMON
上一章我们主要唠了RLHF训练相关的方案,这一章我们主要针对RLHF的样本构建阶段,引入机器标注来降低人工标注的成本.主要介绍两个方案:RLAIF,和IBM的SALMON. RLAIF RLAIF: ...
- js判断对象数组等是否为空
//是否为空 /** * null undefined NaN false " " {} [] 为空 * 为空 true 不为空 false * @param {*} value ...
- KingbaseES错误分析 -- “requested character too large”
一.适用于: 本文档使用于KingbaseES所有版本. 二.问题现象: 使用从其他数据库迁移到KingbaseES数据库的自定义函数.存储过程.Package包..出现以下错误信息: 错误:所请求的 ...
- KingbaseES V8R6运维案例之---MySQL和KingbaseES字符串排序规则对比
案例说明: 相同数据排序后查询,在MySQL和KingbaseES下得到的排序顺序不一致,本案例从MySQL和KingbaseES的排序规则分析,两种数据库排序的异同点. 适用版本: Kingbase ...
- 渗透项目1-GoldenEye
靶机地址:https://www.vulnhub.com/entry/goldeneye-1,240/ 靶机难度:中等(CTF) 目标:得到root权限&找到flag.txt 信息收集 收集目 ...
- scala入门输出hello world!
官网下载scala 2.12.11 版zip包,解压到自定义目录并配置环境变量.
- JavaScript二代公民身份证号验证
身份证号码中的校验码是身份证号码的最后一位,是根据[中华人民共和国国家标准GB 11643-1999]中有关公民身份号码的规定, 根据精密的计算公式计算出来的,公民身份号码是特征组合码,由十七位数字本 ...
- C++设计模式 - 代理模式(Proxy)
接口隔离模式 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案. 典型模式 Facade P ...
- openGauss社区入门(openGauss-定时任务)
为什么要使用定时任务 在一个固定的时间点活间隔一段时间需要频繁触发某一动作,为了使用便捷,有了定时任务,极大的减少了工作的重复性,提高了效率. 定时任务的内容 基于定时任务产生的背景,定时任务内容包括 ...