LVGL 字体

一、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);
posted @   浇筑菜鸟  阅读(2469)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示