里飞网

 找回密码
 立即注册
查看: 5664|回复: 11
打印 上一主题 下一主题

LVGL7.11 加载中文字库,无法正常显示

[复制链接]

2

主题

9

帖子

34

积分

新手上路

Rank: 1

积分
34
跳转到指定楼层
楼主
发表于 2022-1-2 17:08:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 feihongkld 于 2022-1-2 17:09 编辑


/* Optionally declare your custom fonts here.
* You can use these fonts as default font too
* and they will be available globally. E.g.
* #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) \
*                                LV_FONT_DECLARE(my_font_2)
*/
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(myFont1)        //myfont1是字体名

/* Enable it if you have fonts with a lot of characters.


#define LV_USE_THEME_MONO        1

#define LV_THEME_DEFAULT_INCLUDE            <stdint.h>      /*Include a header for the init. function*/
#define LV_THEME_DEFAULT_INIT               lv_theme_material_init
#define LV_THEME_DEFAULT_COLOR_PRIMARY      lv_color_hex(0x01a2b1)
#define LV_THEME_DEFAULT_COLOR_SECONDARY    lv_color_hex(0x44d1b6)
#define LV_THEME_DEFAULT_FLAG               LV_THEME_MATERIAL_FLAG_LIGHT
#define LV_THEME_DEFAULT_FONT_SMALL         &lv_font_montserrat_16
#define LV_THEME_DEFAULT_FONT_NORMAL        &myFont1
#define LV_THEME_DEFAULT_FONT_SUBTITLE      &lv_font_montserrat_16
#define LV_THEME_DEFAULT_FONT_TITLE         &lv_font_montserrat_16

/*=================


已经设置了,可是无法正常显示,


void lv_ex_get_started_1(void)
{
          const char* str1 = "测试按钮";
          static lv_style_t style1;  //style变量不能是局部变量,否则函数退出将销毁,绘制将会不正确
       
    lv_obj_t * btn = lv_btn_create(lv_scr_act(), NULL);     /*Add a button the current screen*/
    lv_obj_set_pos(btn, 150, 10);                            /*Set its position*/
    lv_obj_set_size(btn, 120, 50);                          /*Set its size*/
    lv_obj_set_event_cb(btn, btn_event_cb);                 /*Assign a callback to the button*/

       
    lv_obj_t * label = lv_label_create(btn, NULL);          /*Add a label to the button*/
          lv_label_set_text(label, str1);
       
          lv_style_init(&style1);
    lv_style_set_text_font(&style1, LV_STATE_DEFAULT, &myFont1);
    lv_obj_add_style(label, LV_LABEL_PART_MAIN, &style1);
}

void lv_chinest_test(void)
{
        static lv_style_t style2;
        lv_obj_t * label2;
       
        label2 =lv_label_create(lv_scr_act(), NULL);
        lv_obj_set_pos(label2, 250, 10);                            /*Set its position*/
        lv_obj_set_size(label2, 120, 50);                          /*Set its size*/

       
        lv_style_init(&style2);
        lv_style_set_text_font(&style2, LV_STATE_DEFAULT, &myFont1);
        lv_obj_add_style(label2, LV_LABEL_PART_MAIN, &style2);
        lv_label_set_text(label2, "中文测试");

}

回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
沙发
发表于 2022-1-2 19:04:53 | 只看该作者
本帖最后由 阿里兄 于 2022-1-2 19:07 编辑

LVGL 7版本,应该是你没有正确设置字体,给个参考,你也可以参考LV的例程。
  1. #include "lvgl/lvgl.h"

  2. LV_FONT_DECLARE(myFont)

  3. static lv_style_t style_label;

  4. void lvgl_test(void)
  5. {
  6. //    lv_obj_t *scr = lv_disp_get_scr_act(NULL);/* 获取当前屏幕 */
  7. //    lv_obj_t *image = lv_img_create(scr,NULL);/* 创建 image 控件 */
  8. //    lv_img_set_src(image,&img_human); /* 为控件设置图片 */
  9. //    lv_obj_align(image,NULL,LV_ALIGN_IN_TOP_MID,0,0);/* 设置控件的对齐方式,相对坐标 */

  10.     lv_style_init(&style_label);
  11.     lv_style_set_bg_opa(&style_label, LV_STATE_DEFAULT, LV_OPA_COVER);
  12.     lv_style_set_text_font(&style_label, LV_STATE_DEFAULT, &myFont);

  13.     lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_COLOR_BLACK, LV_COLOR_BLACK,
  14.                                                  0, &myFont, &myFont,
  15.                                                  &myFont, &myFont);
  16.     lv_theme_set_act(th);

  17.     lv_obj_t *scr = lv_disp_get_scr_act(NULL);/* 获取当前屏幕 */
  18.     lv_scr_load(scr);

  19.     lv_obj_t *label1 = lv_label_create(scr,NULL); /* 创建 label 控件 */
  20.     //lv_obj_set_style(label1,&style_label); /* 为控件设置新的 style */
  21.     lv_obj_set_pos(label1,0,0); /* 设置控件的坐标 */
  22.     lv_label_set_text(label1,"Hello你好世界"); /* 设置文字 */
  23.     lv_obj_align(label1,NULL,LV_ALIGN_IN_TOP_MID,0,100); /* 设置控件的对齐方式-相对坐标 */
  24. }
复制代码


回复

使用道具 举报

2

主题

9

帖子

34

积分

新手上路

Rank: 1

积分
34
板凳
 楼主| 发表于 2022-1-4 13:44:23 | 只看该作者
测试了,还是不行,void lvgl_test(void)
{
    lv_style_init(&style_label);
    lv_style_set_bg_opa(&style_label, LV_STATE_DEFAULT, LV_OPA_COVER);
    lv_style_set_text_font(&style_label, LV_STATE_DEFAULT, &myFont1);

    lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_COLOR_BLACK, LV_COLOR_BLACK,
                                                 0, &myFont1, &myFont1,
                                                 &myFont1, &myFont1);
    lv_theme_set_act(th);
    lv_obj_t *scr = lv_disp_get_scr_act(NULL);/* 获取当前屏幕 */
    lv_scr_load(scr);

    lv_obj_t *label1 = lv_label_create(scr,NULL); /* 创建 label 控件 */
    //lv_obj_set_style(label1,&style_label); /* 为控件设置新的 style */
    lv_obj_set_pos(label1,0,0); /* 设置控件的坐标 */
    lv_label_set_text(label1,"Hello你好世界"); /* 设置文字 */
    lv_obj_align(label1,NULL,LV_ALIGN_IN_TOP_MID,0,100); /* 设置控件的对齐方式-相对坐标 */
}
结果见附件图片,是不是我中文字库的问题,能否把你的中文字库.C文件发给我一下我试试[img][/img]

1.jpg (168.59 KB, 下载次数: 901)

1.jpg
回复

使用道具 举报

2

主题

9

帖子

34

积分

新手上路

Rank: 1

积分
34
地板
 楼主| 发表于 2022-1-4 13:47:35 | 只看该作者
这是我用工具4.0生成的字库文件,

myFont1.rar

3.37 MB, 下载次数: 1269

回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
5#
发表于 2022-1-4 13:48:07 | 只看该作者
feihongkld 发表于 2022-1-4 13:44
测试了,还是不行,void lvgl_test(void)
{
    lv_style_init(&style_label);

你可以转一个内部字体测试一下先,字体工具用起来很简单的
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
6#
发表于 2022-1-4 13:59:57 | 只看该作者
feihongkld 发表于 2022-1-4 13:47
这是我用工具4.0生成的字库文件,

字体测试没有问题,完整测试代码和运行效果如下:
  1. void lvgl_test(void)
  2. {
  3.     lv_obj_t *scr = lv_disp_get_scr_act(NULL);/* 获取当前屏幕 */

  4.     lv_theme_t * th = lv_theme_material_init(LV_COLOR_BLACK, LV_COLOR_BLACK,0,
  5.                                              &myFont1, &myFont1,
  6.                                              &myFont1, &myFont1);
  7.     lv_theme_set_act(th);

  8.     lv_scr_load(scr);

  9.     lv_obj_t *label1 = lv_label_create(scr,NULL); /* 创建 label 控件 */
  10.     lv_obj_set_pos(label1,0,0); /* 设置控件的坐标 */
  11.     lv_label_set_text(label1,"你好,里飞网:www.lfly.xyz\n参数\n配置\n维护"); /* 设置文字 */
  12.     lv_obj_align(label1,NULL,LV_ALIGN_IN_TOP_MID,0,240); /* 设置控件的对齐方式-相对坐标 */
  13. }
复制代码



回复

使用道具 举报

2

主题

9

帖子

34

积分

新手上路

Rank: 1

积分
34
7#
 楼主| 发表于 2022-1-4 14:05:49 | 只看该作者
    0x007a,        /*(z)*/
    0x007b,        /*({)*/
    0x007c,        /*(|)*/
    0x007d,        /*(})*/
    0x007e,        /*(~)*/
    0x007f,        /*()*/
    0x516c,        /*(公)*/
    0x5229,        /*(利)*/
    0x53f8,        /*(司)*/
    0x5929,        /*(天)*/
    0x5f00,        /*(开)*/
    0x6d25,        /*(津)*/
    0x8fbe,        /*(达)*/
    0x0000,    /*End indicator*/
};
中文,英文都不能显示了 ,是什么原因呢

myFont1.rar

2.46 KB, 下载次数: 1244

回复

使用道具 举报

2

主题

9

帖子

34

积分

新手上路

Rank: 1

积分
34
8#
 楼主| 发表于 2022-1-4 14:09:21 | 只看该作者
能否把你的这个字库文件发给我一下,或者把你的工程文件发给我测试一下,我是7.11版本,谢谢!
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
9#
发表于 2022-1-4 14:10:04 | 只看该作者
feihongkld 发表于 2022-1-4 14:05
0x007a,        /*(z)*/
    0x007b,        /*({)*/
    0x007c,        /*(|)*/

字模有问题,字体选择不对,不要勾TTF,这样使用就会简单一些,转换的是否正常,一看字模就能知道。
回复

使用道具 举报

2

主题

9

帖子

34

积分

新手上路

Rank: 1

积分
34
10#
 楼主| 发表于 2022-1-4 14:14:52 | 只看该作者
本帖最后由 feihongkld 于 2022-1-4 14:16 编辑

/* 司 */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x30,0x00,  //...................+....
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8e,0xe8,0x00,  //..................+@@+..
0x00,0x00,0xaf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x30,  //....%@@@@@@@@@@@@@@@@@..
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaf,0xe5,0x00,  //..................%@@+..
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8a,0x00,0xaf,0xe5,0x00,  //..............+%..%@@+..
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xef,0xc0,0xaf,0xe5,0x00,  //..............@@%.%@@+..
0x05,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xaf,0xe5,0x00,  //.+@@@@@@@@@@@@@@@%%@@+..
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaf,0xe5,0x00,  //..................%@@+..
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaf,0xe5,0x00,  //..................%@@+..
0x00,0x00,0x8c,0xa3,0x00,0x00,0xcc,0x50,0x00,0xaf,0xe5,0x00,  //....+%%.....%%+...%@@+..
0x00,0x00,0x8e,0xff,0xff,0xff,0xff,0xfa,0x00,0xaf,0xe5,0x00,  //....+@@@@@@@@@@%..%@@+..
0x00,0x00,0x8e,0xe3,0x00,0x03,0xef,0xc0,0x00,0xaf,0xe5,0x00,  //....+@@.....@@%...%@@+..
0x00,0x00,0x8e,0xe3,0x00,0x03,0xef,0xc0,0x00,0xaf,0xe5,0x00,  //....+@@.....@@%...%@@+..
0x00,0x00,0x8e,0xe3,0x00,0x03,0xef,0xc0,0x00,0xaf,0xe5,0x00,  //....+@@.....@@%...%@@+..
0x00,0x00,0x8e,0xe3,0x00,0x03,0xef,0xc0,0x00,0xaf,0xe5,0x00,  //....+@@.....@@%...%@@+..
0x00,0x00,0x8e,0xff,0xff,0xff,0xff,0xc0,0x00,0xaf,0xe5,0x00,  //....+@@@@@@@@@%...%@@+..
0x00,0x00,0x8e,0xe3,0x00,0x03,0xef,0xc0,0x00,0xaf,0xe5,0x00,  //....+@@.....@@%...%@@+..
0x00,0x00,0x8e,0xe3,0x00,0x03,0x85,0x00,0x00,0xaf,0xe5,0x00,  //....+@@.....++....%@@+..
0x00,0x00,0x35,0x00,0x00,0x00,0x03,0x33,0x00,0xaf,0xe5,0x00,  //.....+............%@@+..
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x8c,0xff,0xff,0xe3,0x00,  //..............+%@@@@@...
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x8e,0xff,0xc0,0x00,  //................+@@@%...
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0xe8,0x00,0x00,  //.................@@+....

};

英文显示正常了,中文还是不显示 ,中文编码对吗
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
11#
发表于 2022-1-4 14:16:38 | 只看该作者
feihongkld 发表于 2022-1-4 14:14
英文显示正常了,中文还是不显示 ,中文编码对吗

MDK使用ANSI编码,C文件使用UTF8编码,具体请看工具里面的帮助说明。就这样吧。
回复

使用道具 举报

2

主题

9

帖子

34

积分

新手上路

Rank: 1

积分
34
12#
 楼主| 发表于 2022-1-4 14:21:51 | 只看该作者
本帖最后由 feihongkld 于 2022-1-4 14:24 编辑

明白了,我一直以为字体库文件是UTF8编码就OK,而其他调用的C文件 没有注意是不是UTF8,  谢谢!测试OK了,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|里飞网  

GMT+8, 2024-11-27 08:00 , Processed in 0.105791 second(s), 16 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表