硬汉嵌入式论坛

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

[emWin] emWin模拟器中文显示(不需要U2C)

[复制链接]

12

主题

134

回帖

170

积分

初级会员

积分
170
发表于 2019-3-14 14:42:39 | 显示全部楼层 |阅读模式
本帖最后由 xiaosir 于 2019-3-14 20:12 编辑

第一种方法:

第一步:使用FontCvt软件生成字体文件。
生成的方法不多做介绍,参考armfly的emWin教程。
附赠常用6763个常用汉字字库文件:楷体16、24、32号字体。
第二步:

GUI_Init();
后面添加下面语句启用自定义字体支持
GUI_UC_SetEncodeUTF8(); // Enable UTF8 decoding //设置自定义字体支持

第三步:重点

将带有中文字符显示的C文件保存为Unicode(UTF-8 无签名)格式
VS中操作方法:选择要编辑的文件 - 点左上角 文件 -  选择  高级保存选项 - 编码 - Unicode(UTF-8 无签名
Notepad++: 编码 -  转为 UTF-8 无BOM 编码格式


捕获.PNG

第二种方法:(推荐)
第一种方法使用中发现VS编译器对非BOM的UTF-8格式支持不好,出现很多问题。
现在在参考楼下allyzc 及 硬汉大哥的提示,使用ANSI字库更完美,在此感谢@allyzc @eric2013两位大哥的指点。
附上调试的工程,内有使用UcguiFont生成的16,24,32号字库文件。

具体参考硬汉大哥以前的贴子:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=423

http://www.armbbs.cn/forum.php?mod=viewthread&tid=21302

效果展示:

捕获1.PNG
国标常用汉字6763个.txt (13.21 KB, 下载次数: 20)







SeggerEval_WIN32_MSVC_MinGW_GUI_V548.7z (31.11 MB, 下载次数: 88)



SeggerEval_WIN32_MSVC_MinGW_GUI_V548(ANSI字库).7z

31.26 MB, 下载次数: 85

评分

参与人数 1金币 +50 收起 理由
eric2013 + 50 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-3-14 14:46:53 | 显示全部楼层
VC6.0好像保存不了,后面我试试,非常感谢楼主分享
回复

使用道具 举报

9

主题

140

回帖

187

积分

初级会员

积分
187
QQ
发表于 2019-3-14 16:15:40 | 显示全部楼层
eric2013 发表于 2019-3-14 14:46
VC6.0好像保存不了,后面我试试,非常感谢楼主分享

VC6.0是不支持UTF8编码,使用VC6.0模拟器时,不需要GUI_UC_SetEncodeUTF8();,直接做ANSI字库就能显示的
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2019-3-14 16:18:10 | 显示全部楼层
allyzc 发表于 2019-3-14 16:15
VC6.0是不支持UTF8编码,使用VC6.0模拟器时,不需要GUI_UC_SetEncodeUTF8();,直接做ANSI字库就能显示的

最新的模拟器不支持VC6.0吧?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-3-14 16:18:32 | 显示全部楼层
allyzc 发表于 2019-3-14 16:15
VC6.0是不支持UTF8编码,使用VC6.0模拟器时,不需要GUI_UC_SetEncodeUTF8();,直接做ANSI字库就能显示的

对,的确是这样的,现在一直用的ANSI的。
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2019-3-14 16:19:27 | 显示全部楼层
eric2013 发表于 2019-3-14 14:46
VC6.0好像保存不了,后面我试试,非常感谢楼主分享

碰到新问题,有些字符会报这个错误:error C2001: 常量中有换行符,后面加英文的.可以解决。
原因: 非BOM的UTF-8格式
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-3-15 01:41:48 | 显示全部楼层
xiaosir 发表于 2019-3-14 16:19
碰到新问题,有些字符会报这个错误:error C2001: 常量中有换行符,后面加英文的.可以解决。
原因:  ...

好的
回复

使用道具 举报

3

主题

105

回帖

114

积分

初级会员

积分
114
发表于 2019-3-15 12:20:50 | 显示全部楼层
这是只能用于VC编译器的用法,到了单片机的编译器上就行不通了;有啥意义呢?
回复

使用道具 举报

12

主题

134

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2019-3-15 14:12:57 | 显示全部楼层
公仆 发表于 2019-3-15 12:20
这是只能用于VC编译器的用法,到了单片机的编译器上就行不通了;有啥意义呢?

这样是为了让仿真更贴近于产品,代码大的时候,编译器编译时间太长了。
如果只是做界面调试,那等待时间太痛苦了,反复烧录也很麻烦....
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-17 23:59 , Processed in 0.285481 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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