WhyCan Forum(哇酷论坛)

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2020-02-11 17:19:16

5761193jia
会员
注册时间: 2018-02-09
累计积分: 15

图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

情况如下:
1、emwin模拟环境用为codeblocks,模拟运行时,ttf字体(xh.ttf)和图标ttf字体(ALiIconfont.ttf)都能正常显示;
2、目标板为裸板运行,文件系统采用新唐自带的;
3、目标板显示ttf字体正常,但显示图标ttf字体为方格。经比较:目标板运行时读图标ttf文件的内容与emwin 模拟环境下读取的图标ttf文件内容是一致的,排除文件系统的问题。(我也不知道有没更好的方法去核对)
4、查GUI_TTF_CreateFontAA()函数返回是成功;
上传了相关源文件(程序有点乱,误拍砖哈!),麻烦哪位哪位大神能否指点一下方向,一样的程序在emwin模拟器运行正常,但目标板上图标ttf字体不显示。是不是用在目标板时有特别要注意的地方?
GUIDEMO_Start目标板.rarGUIDEMO_Start(emwin模拟环境).rar
emwin环境.jpg

最近编辑记录 5761193jia (2020-02-11 17:40:23)

离线

#2 2020-02-11 17:20:24

5761193jia
会员
注册时间: 2018-02-09
累计积分: 15

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

文件好像没上传成功

离线

#3 2020-02-11 17:42:06

Jmhh247
会员
注册时间: 2018-12-21
累计积分: 202

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

按你的描述,可能是编码问题

试试:把相关C文件转为UTF-8-BOM,用notepad++就行

离线

#4 2020-02-12 10:41:48

5761193jia
会员
注册时间: 2018-02-09
累计积分: 15

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

不好意思,目标板的代码发错了,以这个为准!谢谢
GuiStart(目标板).rar

离线

#5 2020-02-12 10:48:18

5761193jia
会员
注册时间: 2018-02-09
累计积分: 15

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

Jmhh247 说:

按你的描述,可能是编码问题

试试:把相关C文件转为UTF-8-BOM,用notepad++就行

谢谢Jmhh247:
转了MainTask()所在的C文件GuiStart.c,还是不行。不知道是否还有别的文件也要格式转换。

离线

#6 2020-02-12 12:47:40

Jmhh247
会员
注册时间: 2018-12-21
累计积分: 202

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

不在电脑旁,没法看代码。
只用改设置字体的c文件就行。

我只用过MDK编译,不知道和编译器是否有关

可以试试不带bom的utf8格式

离线

#7 2020-02-12 15:57:22

5761193jia
会员
注册时间: 2018-02-09
累计积分: 15

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

@Jmhh247,谢谢您。两种格式都试过还是不行,MDK4.74编译。板子上运行的照片我也拍了一下,如下图。另外 TTF_FontCreate()的C文件在以下附件中,不知哪位大神有时间能否帮忙看看?谢谢啦!
CreateFont_ttf.rar
_20200212153611.jpg
pic.jpg

离线

#8 2020-02-12 16:26:01

notepad--
会员
注册时间: 2019-12-07
累计积分: 24

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

没看出什么问题, 要不把 \u 改成 \x 试一试呗, 死马做活马医。


\ue631  改成  \xu6\x31

最近编辑记录 notepad-- (2020-02-12 16:29:13)

离线

#9 2020-02-12 17:04:22

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,939

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

GUI_UC_SetEncodeUTF8()


//GUI_DispStringAt("\ue631",200,200);  //改为下行:
GUI_DispStringAt("\xEE\x98\xB1",200,200);

按上面修改先试一试。

参考: https://www.cnblogs.com/fancyop/p/emWin_Chinese_Show_Tutorial.html

离线

#10 2020-02-13 09:32:17

5761193jia
会员
注册时间: 2018-02-09
累计积分: 15

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

晕哥 说:
GUI_UC_SetEncodeUTF8()


//GUI_DispStringAt("\ue631",200,200);  //改为下行:
GUI_DispStringAt("\xEE\x98\xB1",200,200);

按上面修改先试一试。

参考: https://www.cnblogs.com/fancyop/p/emWin_Chinese_Show_Tutorial.html

多谢,晕哥和notepad--的指点,直接用UTF-8编码就OK!如图。但这样人工转也麻烦,确定C文件转为了UTF-8,因为文字能正常显示,不知问题何在,会不会是MDK哪里需要设置?
_20200213092258.jpg

最近编辑记录 5761193jia (2020-02-13 09:34:28)

离线

#11 2020-02-13 10:16:54

Jmhh247
会员
注册时间: 2018-12-21
累计积分: 202

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

楼主在7楼的回复是两种格式都不行,

最新回复里,为什么utf8又可以了,我有点蒙。。。

离线

#12 2020-02-13 10:35:26

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,939

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

Jmhh247 说:

楼主在7楼的回复是两种格式都不行,

最新回复里,为什么utf8又可以了,我有点蒙。。。

估计7楼是c文件另存为 无bom utf8 文件, 可能这种操作对用16进制编码字符串的文件无效吧.

最后改成啥样了,麻烦楼主发一个文件上来看看, 谢谢。

离线

#13 2020-02-13 12:32:56

5761193jia
会员
注册时间: 2018-02-09
累计积分: 15

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

晕哥 说:

估计7楼是c文件另存为 无bom utf8 文件, 可能这种操作对用16进制编码字符串的文件无效吧.

最后改成啥样了,麻烦楼主发一个文件上来看看, 谢谢。

@晕哥,jmhh247:按晕哥在9楼的方法,直接在程序中用utf-8编码。
1.jpg
GuiStart.rar

最近编辑记录 5761193jia (2020-02-13 13:01:32)

离线

#14 2020-02-13 13:47:51

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,939

Re: 图标ttf字体在emwin模拟器上显示正常,但应用在目标板(新塘的32926)只显示方格,请教各位大神!

5761193jia 说:

@晕哥,jmhh247:按晕哥在9楼的方法,直接在程序中用utf-8编码。
GuiStart.rar

猜测有几种可能:

1. 16bit unicode字节顺序颠倒一下

2. mdk 的 armcc 编译器不支持 unicode(\u)

3. arm emwin 的 lib 不支持 unicode(\u)

4. 其他

离线

页脚