一、LVGL 内置字体

LVGL有几种不同大小的内置字体,可以通过 LV_FONT_MONTSERRAT_X 定义在 lv_conf.h 中启用。

  1. 普通字体

    包含所有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
  2. 特殊字体

    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像素完美字体
  3. 内置符号

二、使用外部字体

在使用外部字体时,需要了解字体编码定义范围,见这么博主的文章:【LVGL(6)】显示中文设置,制作中文字库

字体显示和图片一样,需要外部定义像素,所以我们也可以使用工具将字体转换成程序可以使用的变量,如下所示:

  1. 使用字体在线转换工具

    LVGL 在线字体转换:https://lvgl.io/tools/fontconverter

  2. 转换文字

  3. 将生成的文件导入工程中

三、字体使用

  1. 内部字体使用

    lv_obj_t *test_label = lv_label_create(lv_scr_act());
    lv_label_set_text(test_label, "test");
  2. 内置符号使用

    lv_obj_t *test_label = lv_label_create(lv_scr_act());
    lv_label_set_text(test_label, LV_SYMBOL_OK); // 正常显示,则应显示一个 ✓ 字符。
  3. 外部字体使用

    在使用之前需要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 , "测试字体");
  4. 改变字体颜色小技巧

    当值改变字体颜色时,不需要创建样式即可改变颜色,如下所示

    /* 其中 #ff0000 ...# 表示设置的颜色 */
    lv_label_set_text(tcs_view_label, "#ff0000 TCS34725 device cannot be opened#");
    /* 记得使能文本重绘色 */
    lv_label_set_recolor(tcs_view_label, true);

LVGL 字体的更多相关文章

  1. LVGL库入门教程04-样式

    LVGL样式 LVGL样式概述 创建样式 在 LVGL 中,样式都是以对象的方式存在,一个对象可以描述一种样式.每个控件都可以独立添加样式,创建的样式之间互不影响. 可以使用 lv_style_t 类 ...

  2. AIR32F103(十) 在无系统环境和FreeRTOS环境集成LVGL

    目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告 AIR32F103(二) Linux环境和LibOpenCM3项目模板 AIR32F103(三) Linux环境基于标准外 ...

  3. BL808:【M1s DOCK开发板】与LVGL 使用体验

    前言 念春时已夏,恋冬雪已融. 总是感叹时光匆匆,便努力在在平凡中挣扎,在平庸中努力,在平淡中积累.奈何时代飞速发展,时间又被工作占用,外加生活中的诱惑又太多了,很多想学.想做.想超越的事,都被抛之一 ...

  4. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  5. Linux 桌面系统字体配置要略

    字体显示效果测试 这一段是为了测试宋体字的显示效果,包括宋体里面自带的英文字体,“This is english,how does it look like?”.这一行是小字.后面几个字是加粗的宋体. ...

  6. 在 Ubuntu 14.10 中借用 Windows 的字体

    在前一篇随笔中,我详细讨论了字体的分类及用途,也以 Fedora 20 为例,展示了字体配置的思路和方法.我在配置 Fedora 20 系统字体的时候,采用的是一种釜底抽薪的方法,完全抛开了系统原有的 ...

  7. TODO:一不顺眼就换字体Go之代码篇

    TODO:一不顺眼就换字体Go之代码篇 image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述:新增字体font,进行 ...

  8. TODO:一不顺眼就换字体Go之应用篇

    TODO:一不顺眼就换字体Go之应用篇 字体,文字的外在形式特征.就是文字的风格,是文字的外衣.好的字体让人看得舒服,让人更有看.写的欲望哦.2016-11-16 GO官方博客发布了同名Go字体,并没 ...

  9. TODO:Go语言同名Go字体发布

    TODO:Go语言同名Go字体发布 2016-11-16 Go语言官方博客发布了一款同名字体–Go字体.此字体族包括正常.粗体和斜体渲染,支持比例和等宽字体.此字体已经经过用于编程方面的技术测试,使用 ...

  10. Android SearchView 自定义SearchIcon和字体颜色大小

    自定义SearchView的搜索图标和字体属性相对复杂一些,记下来. 一.自定义SearchIcon 1.API版本低于21:版本小于21时,要修改SearchIcon比较复杂,需要先获取到Searc ...

随机推荐

  1. CMake使用Boost

    cmake_minimum_required(VERSION 2.8) set(Boost_INCLUDE_DIR /usr/local/src/boost_1_46_1) set(Boost_LIB ...

  2. B站框框老师+宋浩老师概率论视频课笔记,宋浩老师数理统计视频课笔记

    只做理解类记录,哪个知识点忘了去看视频.前四章是概率,看的框框老师. 概率论 1.随机试验:可重复性.可预知性.不确定性 2.样本空间:随机试验E的所有可能结果,记为S或Ω 3.样本点:样本空间中的每 ...

  3. ElasticSearch分页查询的实现

    1.设置mapping PUT /t_order { "settings": { "number_of_shards": 1, "number_of_ ...

  4. SpringBoot 常用注解总结

    核心注解 1. @SpringBootApplication 主要用于开启自动配置,它也是一个组合注解,主要组合了 @SpringBootConfiguration.@EnableAutoConfig ...

  5. Linux安装Oracle12C及一些参考

    目录 安装 系统配置 安装前装备 安装依赖包 创建用户和组 修改内核参数 修改系统资源限制 创建安装目录及设置权限 设置oracle环境变量 安装Oracle 一些参考 compat-libstdc+ ...

  6. Zookeeper学习笔记-安装

    zookeeper官网地址https://zookeeper.apache.org/ 1.卸载CentOS自带的open jdk,安装oracle jdk(1.8) 2.时间同步 #安装ntpdate ...

  7. FineReport 常用日期公式

    获取当前月份最后一天 DATEINMONTH(today(), -1) 获取当前月份第一天 DATEINMONTH(today(), 1) 获取上个月最后一天 DATEINMONTH(MONTHDEL ...

  8. Python爬虫初步---jupyterNptebook使用

    学习视频笔记:

  9. #ST表,单调栈#洛谷 5648 Mivik的神力

    题目 分析 考虑答案应该是一段单调不下降的序列, 考虑预处理出每个点往后第一个大于这个点的位置, 那么答案应该是左端点到区间内最大的位置以及这个位置到右端点的贡献 那么区间最大的位置可以用ST表做,然 ...

  10. Java处理关键字进行脱敏操作

    1.通过表头获取需要处理的下标列 注:此处导出表格时对关键字进行脱敏处理 /** * . * 对表头进行过滤判断 * * @param headers 表头 * @return 对应的下标列及方法名 ...