里飞网

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

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

  [复制链接]

0

主题

3

帖子

14

积分

新手上路

Rank: 1

积分
14
楼主
发表于 2021-10-14 17:47:02 | 显示全部楼层
LZ,我们使用的 LVGL 8.0.0 版本,运行在 Linux 系统中,使用 LvglFontTool V0.4 生成的 XBF 外部 BIN 文件,设置一行有中文、字母、数字的 label, 发现只有中文不能显示。如果使用的是 XBF 数组,就能正常显示。
以下为 __user_font_getdata 函数的实现。

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

  2.         static uint8_t tmp[10] = {0};
  3.         static uint8_t *font_data = NULL;
  4.        
  5.         if(NULL == font_data){
  6.                
  7.                 long len = get_file_size("/tmp/1.bin");
  8.                 if(-1 == len){
  9.                         printf("get file size failed.\n");
  10.                         return tmp;
  11.                 }
  12.                
  13.                 font_data = (uint8_t*)malloc(len);
  14.                 if(NULL == font_data){
  15.                         printf("malloc %d byte failed.\n", len);
  16.                         return tmp;
  17.                 }
  18.                
  19.                 FILE *fp = fopen("/tmp/1.bin", "rb");
  20.                 if(NULL == fp){
  21.                         printf("open file failed.\n");
  22.                         return tmp;
  23.                 }
  24.                 int bytes = fread(font_data, 1, len, fp);
  25.                 fclose(fp);
  26.                 printf("load font success:  len:%ld  bytes:%d\n", len, bytes);
  27.                
  28.         }
  29.        
  30.     return font_data+offset;
  31. }
复制代码
回复

使用道具 举报

0

主题

3

帖子

14

积分

新手上路

Rank: 1

积分
14
沙发
发表于 2021-10-15 17:03:38 | 显示全部楼层
阿里兄 发表于 2021-10-14 17:52
代码看起来没有问题,你是转换的全字库吗,bin文件是多大

“所有汉字”、“常用汉字”、自定义汉字,都试过,不行。
回复

使用道具 举报

0

主题

3

帖子

14

积分

新手上路

Rank: 1

积分
14
板凳
发表于 2021-10-16 11:19:50 | 显示全部楼层
阿里兄 发表于 2021-10-15 17:08
bin格式没有问题的,很多人都在用;你的不显示肯定是哪里没对,选的字库是否带汉字,BIN文件的读取是否正 ...

感谢大佬,原因是因为所选的字体不包含中文。按照大佬说的话,带中文至少 1M 以上。大伙如果也有遇到这种情况,可以选择系统自带的字库(如新宋体)确认一下。

复盘一下我的问题:

1. 可以显示数字,英文,但是无法显示汉字,只显示口字。
   点阵:无论是外部 bin 文件还是内部数字都不行
   矢量:使用 freetype 也不行

2. 使用 LVGL 内部字库可以正常显示中文。
    使用的是 lv_font_simsun_16_cjk 字库。

3. 排查过源文件的编码格式
    无论是 UTF-8 还是 ANSI 都不行,正确的是 UTF-8。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 04:14 , Processed in 0.069844 second(s), 4 queries , File On.

Powered by Discuz! X3.3

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

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