硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2490|回复: 4
收起左侧

[emWin] 显示汉字时在显示正常字符串之后多显示一些数字或者乱码的情况?

[复制链接]

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2019-4-23 12:34:20 | 显示全部楼层 |阅读模式
软件版本:5.32版本STemWin
字库生成软件FontCvt
生成了汉字库之后,在使用的时候会在显示正常的汉字之后多了一些数字乱码之类的,在vs上模拟的时候是正常的。这像是把字符串后面内存里面的字给显示出来了,没有在0x00结束。
这个情况在需要显示几个汉字测试时一般不会出现,当项目上要使用过多汉字的时候就会出现。
以前在使用ucgui3.98的时候也出现过这样的情况后来改过源码GUICharM、GUIChar中如下面图片
如果使用等宽字体外部gb2312字库的方式来做的话就没有这种情况,就是等宽字体不能使用微软雅黑有点丑。外部gb2312字库的方式应该是在gui_uc_encodenone.c里面处理了这种情况,如下面的函数:
static int _GetCharSize(const char GUI_UNI_PTR * s) {
  GUI_USE_PARA(s);
  if((*s) > 0xA0)
{
return 2;
}
return 1;
}
现在就想问下有没有办法在使用fontcvt生成的字库能正常使用汉字呢。麻烦版主有没有碰到过类似的情况。
1.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-4-23 18:21:31 | 显示全部楼层
不好意思,回复晚了。

方便的话,发一下你乱码情况的相关代码,我测测
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2019-8-21 21:14:13 | 显示全部楼层
找到原因了,特意登陆回复一下。是在GUI_UC_EncodeNone.c这个文件里面,按照以前ucgui的方法实现的外部全字库。里面有个结构体GUI_UC_None现在的版本应该是在库里实现了,如果不调用GUI_UC_SetEncodeNone这个函数还不会报重复定义的错误,所以一直没有找到。
Snipaste_2019-08-21_21-10-27.jpg
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2019-8-21 22:31:10 | 显示全部楼层
屏蔽这个结构体之后,就不能使用外部gb2312字库的方式了。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2019-8-21 23:11:13 | 显示全部楼层
应该是默认的编码格式是一个字节一个字节取的,现在又不想改掉GUI_pUC_API。所有把GUI_Type.h里面定义给改了一下,然后发现取的gbk码大小端和原来相反了。再把取字库的偏移地址重新算了一下解决了这个冲突。这是在没有源码的情况下一个个给试出来的
2.jpg
1.jpg
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-18 05:15 , Processed in 1.068316 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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