WINCE6.0支持阿塞拜疆语(Azeri或Azerbaijani)
客户要求在WINCE6.0上能够正常显示阿塞拜疆语,但PB6.0下面没有阿塞拜疆语自己的字库,只能在系统工程属性界面上找到阿塞拜疆语的,如下图:
图1
然后选择clean sysgen重新编译系统,到网上找了一段阿塞拜疆语“我不明白-Mənsizi başa düşürəm (düşmürəm)”,把此内容拷贝到新建的txt文件中,选择保存的时候弹出下面的对话框:
图2
选择取消,弹出下面的对话框:
图3
选择Unicode编码格式保存,然后把此文件拷贝到编译后的CE6.0系统中,但实际显示的是:
图4
发现"ə"出来是个"□"字,其他的显示都正常。为什么会这样呢?经过上网搜查一些资料和网友的交流,可能是因为WINCE下的字库不是很全引起的,需要用windows下对应的字库。先到WIN7下C:/windows/Fonts下查看字体文件,找到下面的字体文件
图5
http://zh.wikipedia.org/wiki/%E9%98%BF%E5%A1%9E%E6%8B%9C%E7%96%86%E8%AF%AD链接、链接http://en.wikipedia.org/wiki/Schwa_(Cyrillic)和图1,见下图:
图6
可知从1991年后阿塞拜疆语主要采用拉丁文字母,再结合图5,决定采用xp系统下的Arial字体文件来替换掉WINCE6.0下的。Xp系统下的arial.tff文件比CE6.0下大很多,见下图:
图7
也要确保系统工程上选上Arial字体:
图8
然后把xp下的arial.tff改名为arial_1_30.ttf,并替换掉F:\WINCE600\PUBLIC\COMMON\OAK\FILES下同名文件,并且在platform.reg中增加下面的注册表项:
IF LOCALE==042c
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]
"Tahoma"="\\Windows\\arial.ttf,Arial"
"Arial"="\\Windows\\arial.ttf,Arial"
"Courier New"="\\Windows\\arial.ttf,Arial"
"Times New Roman"="\\Windows\\arial.ttf,Arial"
"Symbol"="\\Windows\\arial.ttf,Arial"
[HKEY_LOCAL_MACHINE\SYSTEM\GDI\SYSFNT]
"Nm"="Arial"
[HKEY_LOCAL_MACHINE\SYSTEM\GWE\Menu\BarFnt]
"Nm"="Arial"
[HKEY_LOCAL_MACHINE\SYSTEM\GWE\Menu\PopFnt]
"Nm"="Arial"
[HKEY_LOCAL_MACHINE\SYSTEM\GWE\OOMFnt]
"Nm"="Arial"
ENDIF
这里需要注意的是042c而不是042C(注意大小写),通过msdn 相关主题Language Identifiers and Locales (Windows Embedded CE 6.0)找到下面的链接
http://msdn.microsoft.com/en-US/library/ee491651(v=winembedded.60).aspx
从而知道阿塞拜疆语(拉丁文)的LOCALE是0x042c,然后重新clean sysgen编译重新测试OK。
到此我们验证了的确是CE6.0下字库不全的问题引起,在PB6.0组件列表中还可以看到Arial(subset 1_08),结合图7可知arial_1_08.ttf只比xp下的arial.ttf少了58KB,改为选择
Arial(subset 1_08):
图9
但"ə"还是显示为"□"字,图5的calibria和cambria是否正常支持阿塞拜疆语的显示,就留给大家验证了。