LVGL 字体转换与支持

作者: 罗蓁蓁 | 来源:发表于2022-05-20 14:50 被阅读0次

    1.前言

    在LVGL中,自带了中英文字体,英文字体倒是挺全的,字号从8到48都有。而中文字体呢,则只有16号字体的lv_font_simsun_16,更严重的是,包含的汉字还不全。。。
    本文章主要讲两个方面。

    1. 一是如何使用LVGL自带的字体
    2. 二是当自带字体不满足需求时,如何定制自己想要的字体

    2.使用LVGL自带字体

    对于使用LVGL自带的字体,很简单。主要两个步骤,一是把LVGL自带的字体文件加入编译系统中去,二是使用它。
    在OneOS-Lite中,我们通过配置的方式,使能指定字体。
    [图片上传失败...(image-59b26d-1653029420350)]

    如此,我们可以把对应的字体宏打开,保证其加入编译系统中去。举个栗子:英文26字号对应的需要打开的宏是:LV_FONT_MONTSERRAT_26。

    其次,则是使用,示例代码如下:

       char *text = "hello world";
        lv_obj_t *label = lv_label_create(lv_scr_act());
        lv_obj_set_style_text_font(label,&lv_font_montserrat_26,0);
        lv_label_set_text(label,text);
    

    3.定制字体

    对于中文字体,很多时候,LVGL自带字体是无法满足的,这时候就需要使用LVGL的字体在线转换工具了。
    首先进入LVGL官网,右上角找到字体工具:Font convertor。
    [图片上传失败...(image-e7900c-1653029420350)]

    如何使用官网字体转换工具?

    1. 为要输出字体命名。例如“lv_font_songti_bold”
    2. 以 px为单位指定高度(字体大小)
    3. 设置bpp (bit-per-piel)。值越高,字体越平滑(抗锯齿)
    4. 选择TTF 或 WOFF 格式字体文件
    5. 设置要包含在字体中的 Unicode 字符范围或在符号字段中列出字符
    6. 可以同时选择多个字体文件转换,并为其指定范围和/或符号。这些字符将被合并转换到同一个文件中。
    7. 单击转换按钮以下载转换出来的 lv_font_songti_bold.c 文件。

    4.使用定制字体

    建议把该文件放到项目工程文件夹里面,然后使用我们的CUBE工具,输入命令scons --ide=mdk5 -s把它加入编译系统中去。或者,自己使用keil手动添加也是可以的。
    其次,就是如何使用自己的定制字体,代码如下:

        char *text = "中移物联网OneOS-Lite";
        extern lv_font_t lv_font_songti_bold;
        lv_obj_t *label = lv_label_create(lv_scr_act());
        lv_obj_set_style_text_font(label,&lv_font_songti_bold,0);
        lv_label_set_text(label,text);
    

    和LVGL自带字体的使用方法对比,也就是多了一个:
    extern lv_font_t lv_font_songti_bold;或者也可以这么写LV_FONT_DECLARE(lv_font_songti_bold)

    5. 附言

    以上就是LVGL字体转换与支持,字体转换工具除了官网在线版,也有官方离线版,另外第三方的工具也有很多,这里讲其一,以供交流。

    6.关注&&联系

    开源轻量操作系统: https://gitee.com/cmcc-oneos/OneOS-Lite

    docs文档中心: https://oneos-lite.com/

    知知乎乎:蓁蓁

    相关文章

      网友评论

        本文标题:LVGL 字体转换与支持

        本文链接:https://www.haomeiwen.com/subject/yhpfprtx.html