Linux+LVGL+freetype

现在想实现在linux下LVGL制作的UI显示中文,由于.c的方案不适用于动态的改变字体大小,其他字体类型,tiny-ttf生成的字体效率又很慢,果断放弃,所以使用了freetype的方法,参考了lvgl.io文档编译成功了freetype,且在程序运行是freetype init成功+.ttf文件创建字体成功(通过没有返回错误认为创建成功了)代码如下

 void lv_example_freetype_1(void)
{
    /*Create a font*/
    lv_font_t * font = lv_freetype_font_create("/data/Font/AlibabaPuHuiTi-3-55-Regular.ttf",
                                               LV_FREETYPE_FONT_RENDER_MODE_BITMAP,//,
                                               16,
                                               LV_FREETYPE_FONT_STYLE_BOLD);//LV_FREETYPE_FONT_STYLE_NORMAL);

    if(!font) {
        LV_LOG_ERROR("freetype font create failed.");
        return;
    }

    LV_LOG_USER("freetype font create SUCCESS.");


    



    /*Create style with the new font*/
    static lv_style_t style;
    lv_style_init(&style);
    lv_style_set_text_font(&style, font);
    lv_style_set_text_align(&style, LV_TEXT_ALIGN_CENTER);

    /*Create a label with the new style*/
    lv_obj_t * label = lv_label_create(lv_screen_active());
    lv_obj_add_style(label, &style, 0);

    lv_label_set_text(label, "I'm a font created with FreeType 123——你好");
    lv_obj_center(label);
}

但是在屏幕上没有显示任何数据;有大佬老师帮忙看一下嘛 :pray: .tff通过tiny_ttf创建的字体可以正常显示(个人认为这说明ttf文件没问题)

先使用lvgl内置的字体文件与示例代码测试看看,路径: lvgl\examples\libs\freetype

视频教程:https://www.bilibili.com/video/BV1Ya411r7K2?p=54

我的是LVGL9.1也可以参考这个视频吗?由于我是下到板子里去运行的所以我试过原始的内置字体文件跟我使用AlibabaPuHuiTi-3-55-Regular.ttf的效果是一致,当然我这个路径是适配开发板了,且我再win上面试过这个实例得出的结论是这个原始的ttf有问题能创建字体但是显示不了文字,然后换成了AlibabaPuHuiTi-3-55-Regular.ttf就没问题了,但是现在在linux环境下两个创建字体都ok,但都显示不了文字

已完成 之前的freetype只支持8.x不支持9.1,重新编译了个freetype最新版就都支持了

1 Like

你好,我也遇到了类似的问题,所以如果是用旧的freeype库的话,用LVGL9.1 字体也是可以创建成功的?但是显示不了?只要换成最新的freetype库,在linux环境上面就能成功显示啦?