981378640 发表于 2021-10-27 09:47:44

LVGL8下汉字显示错位不全

本帖最后由 981378640 于 2021-10-27 14:11 编辑

我这边使用的LVGL8+freetype加载ttf字体,实际内容是“软件正在升级,请勿断电断网!”,但显示效果如下图,不是每次都是显示的如下结果,只是偶尔几次出现如下的结果,请求大神指点一下什么原因,附上代码
void lv_gui_upgrade_display(int type)
{
    lv_obj_t *upgrade_bg_container = lv_obj_create(lv_scr_act()); // 基于屏幕创建了一个容器
    if (upgrade_bg_container == NULL)
    {
      printf("[%s:%d] create upgrade_bg_container failed\n", __FUNCTION__, __LINE__);
      return;
    }

    static lv_style_t style;
    lv_style_reset(&style);
    lv_style_init(&style); // 初始化样式
    lv_style_set_radius(&style, 0); // 设置样式的圆角弧度
    lv_style_set_border_width(&style, 0); // 设置边框宽度
    lv_style_set_bg_opa(&style, LV_OPA_COVER); // 设置样式背景的透明度,不透明
    lv_style_set_bg_color(&style, lv_color_hex(0x355EDC)); // 设置样式的背景色
    lv_style_set_pad_all(&style, 0); // 设置样式内部padding填充宽度
    lv_obj_add_style(upgrade_bg_container, &style, 0);// 给对象添加样式
    lv_obj_set_size(upgrade_bg_container, LV_PCT(100), LV_PCT(100));
    lv_obj_center(upgrade_bg_container); // 对象居屏幕中间显示

    lv_obj_t *text_label = lv_label_create(upgrade_bg_container);
    if (text_label == NULL)
    {
      printf("[%s:%d] create text_label obj failed\n", __FUNCTION__, __LINE__);
      return;
    }

    lv_obj_set_style_text_color(text_label, lv_color_white(), 0);
    lv_obj_set_style_text_font(text_label, (const lv_font_t *)(ft_info_40.font), 0);
    lv_obj_center(text_label);

    switch (type)
    {
    case SOFTWARE_UPGRADE_START:
      lv_label_set_text(text_label, "软件正在升级,请勿断电断网!"); // 设置文本内容
      break;
   
    case SOFTWARE_UPGRADE_START_ENG:
      lv_label_set_text(text_label, "Software is upgrading, do not power off!"); // 设置文本内容
      break;

    case OTA_UPGRADE_START:
      lv_label_set_text(text_label, "系统正在OTA升级,请勿断电断网!"); // 设置文本内容
      break;

    case OTA_UPGRADE_START_ENG:
      lv_label_set_text(text_label, "System is OTA upgrading, do not power off!"); // 设置文本内容
      break;

    default:
      break;
    }
}


981378640 发表于 2021-10-27 09:51:39

本帖最后由 981378640 于 2021-10-27 14:09 编辑

附上ttf字体文件

阿里兄 发表于 2021-10-27 10:32:05

981378640 发表于 2021-10-27 09:51
附上ttf字体文件

这个应该是你哪里没有移植好,换官方字库有没有问题。

981378640 发表于 2021-10-27 14:12:32

阿里兄 发表于 2021-10-27 10:32
这个应该是你哪里没有移植好,换官方字库有没有问题。

阿里兄,ttf字体文件附件已上传,麻烦帮我看下

阿里兄 发表于 2021-10-27 15:00:42

981378640 发表于 2021-10-27 14:12
阿里兄,ttf字体文件附件已上传,麻烦帮我看下
使用你的TTF文件,生成XBF全字库BIN测试,LVGL8模拟,使用你提供的代码测试。很正常,完全没问题。

注意要删除对象,lv_obj_del(upgrade_bg_container);,不能一直创建不删除啊。



981378640 发表于 2021-10-28 15:09:43

阿里兄 发表于 2021-10-27 15:00
使用你的TTF文件,生成XBF全字库BIN测试,LVGL8模拟,使用你提供的代码测试。很正常,完全没问题。

注意 ...

好的,我试试,多谢阿里兄
页: [1]
查看完整版本: LVGL8下汉字显示错位不全