里飞网

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

使用v0.4转ttf为bin后,显示字符间隔很窄的问题?

[复制链接]

1

主题

4

帖子

37

积分

新手上路

Rank: 1

积分
37
跳转到指定楼层
楼主
发表于 2026-4-21 13:46:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用lvglFontTool 0.4将一个tty文件取特定字符转成bin文件,再加载显示,为什么实际ttf字符间隔在电脑上显示比较宽,而通过bin显示的两个数字间比较窄。例如显示12,电脑上显示1和2间是比较正常的,但通过bin读取显示后1和2是很挨在一起的
回复

使用道具 举报

1

主题

4

帖子

37

积分

新手上路

Rank: 1

积分
37
沙发
 楼主| 发表于 2026-4-21 15:39:19 | 只看该作者
我看官方LVGL定义的字体描述符是adv_w、box_w、box_h分别是uint32_t和uint16_t类型,但lvgl font tool是生成的glyph_dsc_t是uint8_t类型,LVGL font dsc结构体
typedef struct {
#if LV_FONT_FMT_TXT_LARGE == 0
    uint32_t bitmap_index : 20;     /**< Start index of the bitmap. A font can be max 1 MB.*/
    uint32_t adv_w : 12;            /**< Draw the next glyph after this width. 8.4 format (real_value * 16 is stored).*/
    uint8_t box_w;                  /**< Width of the glyph's bounding box*/
    uint8_t box_h;                  /**< Height of the glyph's bounding box*/
    int8_t ofs_x;                   /**< x offset of the bounding box*/
    int8_t ofs_y;                   /**< y offset of the bounding box. Measured from the top of the line*/
#else
    uint32_t bitmap_index;          /**< Start index of the bitmap. A font can be max 4 GB.*/
    uint32_t adv_w;                 /**< Draw the next glyph after this width. 28.4 format (real_value * 16 is stored).*/
    uint16_t box_w;                 /**< Width of the glyph's bounding box*/
    uint16_t box_h;                 /**< Height of the glyph's bounding box*/
    int16_t ofs_x;                  /**< x offset of the bounding box*/
    int16_t ofs_y;                  /**< y offset of the bounding box. Measured from the top of the line*/
#endif
} lv_font_fmt_txt_glyph_dsc_t;
如下是0.4版本工具生成的定义
typedef struct{
    uint8_t adv_w;
    uint8_t box_w;
    uint8_t box_h;
    int8_t  ofs_x;
    int8_t  ofs_y;
    uint8_t r;
}glyph_dsc_t;
是不是uint8_t这个问题导致的?


回复

使用道具 举报

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
板凳
发表于 2026-5-27 14:46:15 | 只看该作者
这个问题解决了吗?我也遇到了中文的符号都会变窄,比如中文的逗号,后面是有一定间隔的,但是显示出来是没有间隔了
回复

使用道具 举报

1

主题

4

帖子

37

积分

新手上路

Rank: 1

积分
37
地板
 楼主| 发表于 2026-8-5 18:00:19 | 只看该作者
没有,好像是要lvglFontTool 转化出来后字体间隔被优化了,估计是要修改lvglFontTool 代码,版主估计也没时间更新
回复

使用道具 举报

45

主题

336

帖子

2990

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2990
5#
发表于 2026-8-5 18:03:00 | 只看该作者
lyzc11 发表于 2026-8-5 18:00
没有,好像是要lvglFontTool 转化出来后字体间隔被优化了,估计是要修改lvglFontTool 代码,版主估计也没时 ...

那你不要要用TTF,把TTF安装到电脑本身,重启软件后,选内置字体,就会有原来的TTF了。
回复

使用道具 举报

1

主题

4

帖子

37

积分

新手上路

Rank: 1

积分
37
6#
 楼主| 发表于 2026-8-7 17:14:50 | 只看该作者
不是,现在的问题是使用lvglFontTool加载ttf文件后转化成bin文件后,程序加载bin文件字体实际2个字符之间的显示字符间隔不存在,几乎是挨在一起显示的,并不是按实际 ttf字体间隔显示出来,很奇怪
回复

使用道具 举报

45

主题

336

帖子

2990

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2990
7#
发表于 2026-8-7 17:49:17 | 只看该作者
lyzc11 发表于 2026-8-7 17:14
不是,现在的问题是使用lvglFontTool加载ttf文件后转化成bin文件后,程序加载bin文件字体实际2个字符之间的 ...

直接加载TTF,是用的QT自带的处理,如果效果不好,还是用非TTF的。工具很多年不搞了,也没有兴趣再优化了呢。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-15 11:34 , Processed in 0.077404 second(s), 5 queries , File On.

Powered by Discuz! X3.3

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

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