里飞网

标题: LvglFontTool V0.4生成的bin文件,中文标点符号不能显示 [打印本页]

作者: flyfire    时间: 2022-11-27 11:51
标题: LvglFontTool V0.4生成的bin文件,中文标点符号不能显示
本帖最后由 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);
}


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



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

多次打开文件的问题,希望有人能一起分析下,不然效果太差呵。
作者: 阿里兄    时间: 2022-11-27 15:28
1、字符读取函数要频繁读取正常的很,是你这里没有做对。最好的办法是读文件到RAM,或是用SPI FLASH,提供读取方法,这里打开关闭文件绝对是不允许的,也可以打开文件后不关闭。
2、没有中文标点,是因为你没有加入中文标点来转换字模。
作者: flyfire    时间: 2022-11-27 16:26
阿里兄 发表于 2022-11-27 15:28
1、字符读取函数要频繁读取正常的很,是你这里没有做对。最好的办法是读文件到RAM,或是用SPI FLASH,提供 ...

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

关于多次读取的现象,只是想一起探讨下,我4个汉字,一个中文标点,一个英文标点,打开文件一共302次,看代码,应该是每次只能取一个字节,看来是这个读取的方式不太适合文件方式。或者可以自已开个缓存区,进行部分缓存,优化读取。
作者: cfqdream    时间: 2023-3-8 15:49
要是碰到文字滚动读取字库就会更频繁,我的解决方法是缓存,特别是碰到有相同字比较多的地方,使用效果很好,用offset作为查找关键字;
作者: 阿里兄    时间: 2023-3-8 15:57
cfqdream 发表于 2023-3-8 15:49
要是碰到文字滚动读取字库就会更频繁,我的解决方法是缓存,特别是碰到有相同字比较多的地方,使用效果很好 ...

字模本身就是频繁调用的,缓存少数字是不错;能够全部读到RAM就更好
作者: c4882632    时间: 2024-1-27 20:52
flyfire 发表于 2022-11-27 16:26
标点问题已解决,使用工具自带的一级二级文本,就可以了。初次使用这个转换工具,不太了解特性呵。

关于 ...

你好,我也遇到中文符号无法显示,其他汉字可以显示的问题,请问你是如何解决的?要把中文符号放在txt文件,然后在上位机里面选择导入txt吗?
作者: 阿里兄    时间: 2024-1-27 21:20
c4882632 发表于 2024-1-27 20:52
你好,我也遇到中文符号无法显示,其他汉字可以显示的问题,请问你是如何解决的?要把中文符号放在txt文 ...

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

1、无法显示中文符号,那汉字可以显示吗?先使用内部字体测试是否能显示。
2、如果是字体本身不带中文,那换宋体试试。
作者: c4882632    时间: 2024-1-28 13:47
阿里兄 发表于 2024-1-27 21:20
关于你回复的都是同一个问题,就在这里给你回复,下面的先验证一下。

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

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




欢迎光临 里飞网 (http://dz.lfly.xyz/) Powered by Discuz! X3.3