里飞网

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

LvglFontTool V0.4生成的bin文件,中文标点符号不能显示

[复制链接]

2

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
跳转到指定楼层
楼主
发表于 2022-11-27 11:51:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 flyfire 于 2022-11-27 12:41 编辑

如题
使用环境:Win VS模拟器
Lvgl版本:8.3.0

启用了文件系统,接口部分代码

static uint8_t __g_font_buf[512];//如bin文件存在SPI FLASH可使用此buff

static uint8_t* __user_font_getdata(int offset, int size) {


    lv_fs_file_t file;
    lv_fs_res_t result;
    static uint32_t icount = 0;

    result = lv_fs_open(&file, "/Font/Bin/SourceHanSans_16.bin", LV_FS_MODE_RD);
    printf("lv_fs_open res:%d,count:%d\r\n", result, ++icount);//测试代码
    if (result != LV_FS_RES_OK)
        return NULL;

    lv_fs_seek(&file, offset, LV_FS_SEEK_CUR);
    uint32_t len;
    lv_fs_read(&file, __g_font_buf, size, &len);
    lv_fs_close(&file);

    return __g_font_buf;
}


测试代码:
void lv_showFont(void)
{
    LV_FONT_DECLARE(SourceHanSans_16);//引入字库
    lv_obj_t* zh_label = lv_label_create(lv_scr_act());//获取默认屏幕
    lv_obj_set_style_text_font(zh_label, &SourceHanSans_16, LV_STATE_DEFAULT);// 设置风格的字体
    lv_label_set_text(zh_label, "你好,中文!");//显示文字
    lv_obj_align(zh_label, LV_ALIGN_TOP_MID, 0, 0);
}


几个中文字符,打开文件几百次,是否正常?中文标点符号也无法找到,会是什么原因?


回复

使用道具 举报

2

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
沙发
 楼主| 发表于 2022-11-27 12:49:54 | 只看该作者
翻看历史贴子,回复中找到了中文标点符号的解决办法。http://dz.lfly.xyz/forum.php?mod ... &extra=page%3D1
主要是链接地址不能直接找开,之前没有看到呵。

多次打开文件的问题,希望有人能一起分析下,不然效果太差呵。
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
板凳
发表于 2022-11-27 15:28:08 | 只看该作者
1、字符读取函数要频繁读取正常的很,是你这里没有做对。最好的办法是读文件到RAM,或是用SPI FLASH,提供读取方法,这里打开关闭文件绝对是不允许的,也可以打开文件后不关闭。
2、没有中文标点,是因为你没有加入中文标点来转换字模。
回复

使用道具 举报

2

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
地板
 楼主| 发表于 2022-11-27 16:26:33 | 只看该作者
阿里兄 发表于 2022-11-27 15:28
1、字符读取函数要频繁读取正常的很,是你这里没有做对。最好的办法是读文件到RAM,或是用SPI FLASH,提供 ...

标点问题已解决,使用工具自带的一级二级文本,就可以了。初次使用这个转换工具,不太了解特性呵。

关于多次读取的现象,只是想一起探讨下,我4个汉字,一个中文标点,一个英文标点,打开文件一共302次,看代码,应该是每次只能取一个字节,看来是这个读取的方式不太适合文件方式。或者可以自已开个缓存区,进行部分缓存,优化读取。
回复

使用道具 举报

0

主题

1

帖子

6

积分

新手上路

Rank: 1

积分
6
5#
发表于 2023-3-8 15:49:58 | 只看该作者
要是碰到文字滚动读取字库就会更频繁,我的解决方法是缓存,特别是碰到有相同字比较多的地方,使用效果很好,用offset作为查找关键字;
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
6#
发表于 2023-3-8 15:57:36 | 只看该作者
cfqdream 发表于 2023-3-8 15:49
要是碰到文字滚动读取字库就会更频繁,我的解决方法是缓存,特别是碰到有相同字比较多的地方,使用效果很好 ...

字模本身就是频繁调用的,缓存少数字是不错;能够全部读到RAM就更好
回复

使用道具 举报

0

主题

4

帖子

30

积分

新手上路

Rank: 1

积分
30
7#
发表于 2024-1-27 20:52:24 | 只看该作者
flyfire 发表于 2022-11-27 16:26
标点问题已解决,使用工具自带的一级二级文本,就可以了。初次使用这个转换工具,不太了解特性呵。

关于 ...

你好,我也遇到中文符号无法显示,其他汉字可以显示的问题,请问你是如何解决的?要把中文符号放在txt文件,然后在上位机里面选择导入txt吗?
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
8#
发表于 2024-1-27 21:20:51 | 只看该作者
c4882632 发表于 2024-1-27 20:52
你好,我也遇到中文符号无法显示,其他汉字可以显示的问题,请问你是如何解决的?要把中文符号放在txt文 ...

关于你回复的都是同一个问题,就在这里给你回复,下面的先验证一下。

1、无法显示中文符号,那汉字可以显示吗?先使用内部字体测试是否能显示。
2、如果是字体本身不带中文,那换宋体试试。
回复

使用道具 举报

0

主题

4

帖子

30

积分

新手上路

Rank: 1

积分
30
9#
发表于 2024-1-28 13:47:30 | 只看该作者
阿里兄 发表于 2024-1-27 21:20
关于你回复的都是同一个问题,就在这里给你回复,下面的先验证一下。

1、无法显示中文符号,那汉字可以 ...

你好,我现在重新弄了一下又可以了,暂时无法复现问题,后面再看看能否找到真正的原因,很感谢你的回复
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 12:10 , Processed in 0.075844 second(s), 5 queries , File On.

Powered by Discuz! X3.3

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

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