情况如下:
1、emwin模拟环境用为codeblocks,模拟运行时,ttf字体(xh.ttf)和图标ttf字体(ALiIconfont.ttf)都能正常显示;
2、目标板为裸板运行,文件系统采用新唐自带的;
3、目标板显示ttf字体正常,但显示图标ttf字体为方格。经比较:目标板运行时读图标ttf文件的内容与emwin 模拟环境下读取的图标ttf文件内容是一致的,排除文件系统的问题。(我也不知道有没更好的方法去核对)
4、查GUI_TTF_CreateFontAA()函数返回是成功;
上传了相关源文件(程序有点乱,误拍砖哈!),麻烦哪位哪位大神能否指点一下方向,一样的程序在emwin模拟器运行正常,但目标板上图标ttf字体不显示。是不是用在目标板时有特别要注意的地方?
最近编辑记录 5761193jia (2020-02-11 17:40:23)
离线
文件好像没上传成功
离线
按你的描述,可能是编码问题
试试:把相关C文件转为UTF-8-BOM,用notepad++就行
离线
不好意思,目标板的代码发错了,以这个为准!谢谢
GuiStart(目标板).rar
离线
按你的描述,可能是编码问题
试试:把相关C文件转为UTF-8-BOM,用notepad++就行
谢谢Jmhh247:
转了MainTask()所在的C文件GuiStart.c,还是不行。不知道是否还有别的文件也要格式转换。
离线
不在电脑旁,没法看代码。
只用改设置字体的c文件就行。
我只用过MDK编译,不知道和编译器是否有关
可以试试不带bom的utf8格式
离线
@Jmhh247,谢谢您。两种格式都试过还是不行,MDK4.74编译。板子上运行的照片我也拍了一下,如下图。另外 TTF_FontCreate()的C文件在以下附件中,不知哪位大神有时间能否帮忙看看?谢谢啦!
CreateFont_ttf.rar
离线
没看出什么问题, 要不把 \u 改成 \x 试一试呗, 死马做活马医。
\ue631 改成 \xu6\x31
最近编辑记录 notepad-- (2020-02-12 16:29:13)
离线
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
离线
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哪里需要设置?
最近编辑记录 5761193jia (2020-02-13 09:34:28)
离线
楼主在7楼的回复是两种格式都不行,
最新回复里,为什么utf8又可以了,我有点蒙。。。
离线
离线
估计7楼是c文件另存为 无bom utf8 文件, 可能这种操作对用16进制编码字符串的文件无效吧.
最后改成啥样了,麻烦楼主发一个文件上来看看, 谢谢。
@晕哥,jmhh247:按晕哥在9楼的方法,直接在程序中用utf-8编码。
GuiStart.rar
最近编辑记录 5761193jia (2020-02-13 13:01:32)
离线
@晕哥,jmhh247:按晕哥在9楼的方法,直接在程序中用utf-8编码。
GuiStart.rar
猜测有几种可能:
1. 16bit unicode字节顺序颠倒一下
2. mdk 的 armcc 编译器不支持 unicode(\u)
3. arm emwin 的 lib 不支持 unicode(\u)
4. 其他
离线
我现在也遇到一个问题,GUI_TTF_CreateFontAA()生成的字体空格宽度也跟着变化了
离线
今天也遇到这问题了,还在查看具体原因。
离线