使用 TouchGFX Designer 的textArea控件很容易显示不同字体的文字,可是如果想显示中文,则需要做相应的配置,否则会出乱码,见下面这个例子:
图一如上图,添加一个textArea控件, 输入一串文字:“你好 TouchGFX”,在Designer中中文是可以正常显示的。
图二同时,特意将40号大小的Large字体的 Fallback Character 属性由默认的 ? 改为 * 号(后面会看到它的作用),Ctrl+S 保存工程,然后 Browse Code,在VC环境中编译、运行,结果如下:
图三“你好”2个中文字没有显示出来呀?!对应的,显示了2个 * 号(这正是图二中配置的)!难道是VC模拟器的问题?用IAR重新编译、烧写到 STM32F769I-DISCO 开发板中(如何在IAR中正确烧写片外flash,见上一篇文章),结果也是乱码:
图四原因在哪里?
回到Designer中,这里要重点说说 Typography 这个概念,网络上一般翻译为 “字体排印” ,我称之为 “字体类”,它包含了一种字体的名称、大小、色深、通配符等属性,TouchGFX中显示的任何文字,不论英文还是中文,必定属于某一种字体。只是,Designer默认的任一 字体类 的字体是 Verdana ,这是一种西文字体,是不支持中文显示的,所以造成乱码:
图五图五中,字体类Large 的 Font 是 Verdana,只能显示西文(但Designer的界面上能显示 “你好” 这2个中文字,呵呵了)。为了显示中文,就得设定中文字体 ---- 创建一个字体类,并且将它的 Font 设置为一种中文字体。在图五中,点击绿色框框中的 ADD NEW TYPOGRAPHY 按钮,弹出一个创建字体类的窗口:
图六为新字体类取个名字:Typography_cn,在 Font 下拉列表中,选择 YouYuan,即 幼圆字体 (当前的Designer 4.10版本界面貌似不支持中文,呵呵了)即可:
图七在textArea控件中重新设置Typography:
图八保存工程,再次启动VC、运行模拟器,中文显示正常了:
图九这是下载到目标板运行的情况:
图十TouchGFX是支持多语言界面的(multi language interfaces),即界面可以在多个语言之间切换,需要创建新的 Resource :
图十一如何实现多语言支持,将来另文介绍,本文完。
补记:有关中文字体的扩充内容,请见文章:《TouchGFX基础:再谈中文显示》。
网友评论