阿里兄 发表于 2020-2-17 17:33:11

LvglFontTool字体工具更新V0.3版本

LvglFontTool更新V0.3
V0.3
1、增加AWESOME图标的支持。
2、增加导入文本文件。
3、修复使用XBF外部FLASH字体出错的BUG。
4、去除字模上下空白内容,节省了空间。


Awesome使用说明:
1、鼠标选中图标,双击添加到右测,或选中后使用下方添加选中图标按钮。
2、删除图标可以直接在右测编辑删除。
3、最终转换的是右测添加的图标。
4、Awesome版本更新时可以更换awesome目录下的2个文件即可更新。
5、调用方法是直接用图标对应的编码,如

   "\uF000","ABC\uF001","中\uF003国"。












lovelessing 发表于 2020-5-26 11:19:38

不知道7.0的字体有没有改什么内容

阿里兄 发表于 2020-5-26 11:28:59

lovelessing 发表于 2020-5-26 11:19
不知道7.0的字体有没有改什么内容

字体应该没有改变,你可以测试一下,论坛可能回复不及时,如需急回复可以直接联系我QQ

Spirit 发表于 2020-7-8 11:59:01

阿里兄,您好!
首先为您这个工具点个赞!
然后提个BUG——转换几个汉字,截取部分内容:
static const uint16_t unicode_list_1[] = {
    0x4e2a,        /*(个)*/
    0x51e0,        /*(几)*/
    0x5b57,        /*(字)*/
    0x6d4b,        /*(测)*/
    0x8bd5,        /*(试)*/
    0x0000,    /*End indicator*/
};


static const lv_font_fmt_txt_cmap_t cmaps[] = {
    {
      .range_start = 20010,
      .range_length = 5,
      .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY,
      .glyph_id_start = 0,
      .unicode_list = unicode_list_1,
      .glyph_id_ofs_list = NULL,
      .list_length = 5,
    }
};
您的cmap里,range_length和list_length均为5,这是不对的。
list_length是索引表的长度,有5个汉字,这没问题。
range_length,LVGL源码中注释: Number of Unicode characters related to this range.   Last Unicode character = range_start + range_length - 1
所以range_start 应该是0x3DA9。

请知悉

阿里兄 发表于 2020-7-8 12:47:33

Spirit 发表于 2020-7-8 11:59
阿里兄,您好!
首先为您这个工具点个赞!
然后提个BUG——转换几个汉字,截取部分内容:


非常感谢您的意见,只是__user_font_get_glyph_dsc和__user_font_get_bitmap是我自己实现的函数,里面用到的变量等符合我的方法才是关键,range_length我并没有用到,所以它为什么值都没有关系的。

lzyeedog 发表于 2020-8-11 20:48:32

阿里兄,我测试了一下自定义中文,勾选自动加入英文和数字,XBF字体内部大数组方式(此方式输出英文正常,但是中文不能输出显示)。

PS:此软件非常好用!!!

阿里兄 发表于 2020-8-12 09:00:36

lzyeedog 发表于 2020-8-11 20:48
阿里兄,我测试了一下自定义中文,勾选自动加入英文和数字,XBF字体内部大数组方式(此方式输出英文正常, ...



测试没有问题,估计你是没有启用UTF8编码吧,使用中文的C文件必需是UTF8编码,另如果是 VS模拟器仿真,加入预编译指令解决#pragma execution_character_set("utf-8")

阿里兄 发表于 2020-8-12 09:07:51

http://www.armbbs.cn/forum.php?m ... 03&highlight=VS2019

VS的问题也可以参考硬汉兄这里设置的方法。

lzyeedog 发表于 2020-8-12 10:47:50

阿里兄 发表于 2020-8-12 09:00
测试没有问题,估计你是没有启用UTF8编码吧,使用中文的C文件必需是UTF8编码,另如果是 VS模拟器仿真, ...

我没用模拟器,使用内部字体方式是可以正常显示中英文的。但是使用xbf大数组方式,中文不行。至于UTF8那个,lv_conf.h已经配置了UTF8编码。显示字符串的没有使用UTF8编码,我使用转义字符方式

vdadvs 发表于 2020-12-24 09:38:26

你好,麻烦问下在tab中怎么显示中文,我用的是LVGL6,在label可以正常显示,在tab就不行,属性我也设置了

阿里兄 发表于 2020-12-24 09:43:31

vdadvs 发表于 2020-12-24 09:38
你好,麻烦问下在tab中怎么显示中文,我用的是LVGL6,在label可以正常显示,在tab就不行,属性我也设置了 ...

你设置默认字体为中文能不能显示,我这些例子显示都是直接改默认字体为中文的,tab设对字体应该也能显示的。

vdadvs 发表于 2020-12-24 09:48:56

阿里兄 发表于 2020-12-24 09:43
你设置默认字体为中文能不能显示,我这些例子显示都是直接改默认字体为中文的,tab设对字体应该也能显示 ...

麻烦问下,这个是修改哪个配置参数,谢谢

vdadvs 发表于 2020-12-24 09:53:30

阿里兄 发表于 2020-12-24 09:43
你设置默认字体为中文能不能显示,我这些例子显示都是直接改默认字体为中文的,tab设对字体应该也能显示 ...

我看网上说是修改LV_FONT_SIMSUN_16_CJK这个参数,LVGL6这版好像没有这个参数

阿里兄 发表于 2020-12-24 10:01:44

vdadvs 发表于 2020-12-24 09:53
我看网上说是修改LV_FONT_SIMSUN_16_CJK这个参数,LVGL6这版好像没有这个参数

改默认字体在lv_conf.h配置文件里面,如下:

实际如何更改tab的字体,你就得在网上再找找了。

vdadvs 发表于 2020-12-24 10:40:06

阿里兄 发表于 2020-12-24 10:01
改默认字体在lv_conf.h配置文件里面,如下:

实际如何更改tab的字体,你就得在网上再找找了。


是可以的,感谢

vdadvs 发表于 2020-12-25 11:24:49

你好,再请教下,我现在LVGL是v7版本,我把默认字体改成了中文,可以正常显示中文,但是在使用键盘的时候键盘上的图标都没了,想问下您是否知道这个问题,还是我的设置有问题,我的设置是如下:
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(myFont)
#define LV_THEME_DEFAULT_FONT_NORMAL      &myFont

阿里兄 发表于 2020-12-25 11:34:37

vdadvs 发表于 2020-12-25 11:24
你好,再请教下,我现在LVGL是v7版本,我把默认字体改成了中文,可以正常显示中文,但是在使用键盘的时候键 ...

这是因为你做的字体没有增加图标啊。

wucq 发表于 2021-6-21 10:30:11

本帖最后由 wucq 于 2021-6-21 11:12 编辑

阿里哥,我现在用vs2019跑V7.20版本的LVGL,用V0.3版本的字体工具生成字库文件来显示中文,结果没有显示中文出来。代码如下:
LV_FONT_DECLARE(myFont_10)

#define LV_THEME_DEFAULT_FONT_NORMAL      &myFont_10

#pragma execution_character_set("utf-8")

const char* str1 = "hello长风破浪会有时直挂云帆济沧海";
lv_obj_t* lable_week = lv_label_create(img_bp, NULL);
lv_label_set_text(lable_week, str1);
lv_obj_set_pos(lable_week, 170, 114);
lv_obj_set_style_local_text_color(lable_week, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
lv_obj_set_style_local_text_font(lable_week, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_theme_get_font_normal());

这个执行只显示了hello这个英文,中文没有显示,请教还缺少哪些处理呢?中文字符所在c文件我有转成UTF-8.

但是我在keil里面却实现了中文的显示。代码是一样的。

阿里兄 发表于 2021-6-21 14:47:19

wucq 发表于 2021-6-21 10:30
阿里哥,我现在用vs2019跑V7.20版本的LVGL,用V0.3版本的字体工具生成字库文件来显示中文,结果没有显示中 ...

LVGL 7设置字体的方式和6有很大的不同,你的基本是没有设置对字体。给一个参考,LVGL我基本没有使用过,怎么用字体你还是参考官方的例程了。
lv_theme_t * th = lv_theme_material_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_pos(label1,0,0); /* 设置控件的坐标 */
    lv_label_set_text(label1,"里飞网:你好"); /* 设置文字 */
    lv_obj_align(label1,NULL,LV_ALIGN_IN_TOP_MID,0,100); /* 设置控件的对齐方式-相对坐标 */

小脑虎 发表于 2021-9-1 22:48:25

阿里兄 发表于 2021-6-21 14:47
LVGL 7设置字体的方式和6有很大的不同,你的基本是没有设置对字体。给一个参考,LVGL我基本没有使用过, ...

阿里哥,您好我现在用lvgl7.11然后用的咱们0.3生成字库,在用内部调用,不显示汉字呢,就是使用您的这个程序。
lv_style_init(&label_style);
    lv_style_set_bg_opa(&label_style, LV_STATE_DEFAULT, LV_OPA_COVER);
    lv_style_set_text_font(&label_style, LV_STATE_DEFAULT, &myFont);

    lv_theme_t * th = LV_THEME_DEFAULT_INIT(LV_COLOR_BLACK, LV_COLOR_BLACK,
                                                 0, &myFont, &myFont,
                                                 &myFont, &myFont);
    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); /* 设置控件的对齐方式-相对坐标 */

阿里兄 发表于 2021-9-1 22:52:54

小脑虎 发表于 2021-9-1 22:48
阿里哥,您好我现在用lvgl7.11然后用的咱们0.3生成字库,在用内部调用,不显示汉字呢,就是使用您的这个 ...

1、注意软件上面的帮助-说明。
2、使用汉字的这个C文件是否为UTF8编码,LVGL只能使用UTF8编码。
3、MDK无需更换编码,使用ANSI即可。具体看软件上面的帮助-说明。

小脑虎 发表于 2021-9-2 15:30:45

阿里兄 发表于 2021-9-1 22:52
1、注意软件上面的帮助-说明。
2、使用汉字的这个C文件是否为UTF8编码,LVGL只能使用UTF8编码。
3、MDK无 ...

是的啊,我用正点的程序跑使用出来的代码就可以显示,我把他的程序lvgl移植了7.11,一点汉字都没有。您帮忙看看

小脑虎 发表于 2021-9-2 15:47:13

小脑虎 发表于 2021-9-2 15:30
是的啊,我用正点的程序跑使用出来的代码就可以显示,我把他的程序lvgl移植了7.11,一点汉字都没有。您帮 ...

感谢阿里哥帮我解决,使用的文件要改成UFT8的
页: [1]
查看完整版本: LvglFontTool字体工具更新V0.3版本