在windows 6下,我使用AddFontResource()将arialuni.ttf (arialuni.ttf,Version1.0.1)加载到系统字体列表中,当文本使用该字体绘制到屏幕时,我们支持的远东语言(日语、韩语、简体和繁体中文)将正确显示。
在Windows Compact7下,同样的技术不会在屏幕上产生远东字符。我得到的是空框,而不是显示在屏幕上的实际字符,当字体不支持必要的字符集时,我看到了这一点。
我在两个平台上使用相同的代码,使用相同的字体文件。我在代码中进行了调试,以验证:( a)操作系统声称字体实际上通过AddFontResource()加载到系统字体列表中;( b)操作系统声称字体在实际绘制文本之前加载到屏幕设备上下文中;c)实际远东字符在缓冲区i中传递给DrawText()。这是在CE6下工作的完全相同的事情。
奇怪的是,无论我是否加载arialuni.ttf,我们支持的东欧语言(俄语、捷克语、保加利亚语)都会正确地出现在WindowsCompact7上。注册表说默认的系统字体是Tahoma,但我认为Tahoma除了基本的西欧语言之外,什么都不支持。它不是在CE6下。
我宁愿不添加或使用其他字体。Arialuni.ttf几乎支持我们可能支持的所有语言,而且它已经是我们用于非西欧语言的唯一一种语言。
已经安装了其他几个真正类型的字体,所以这个选项(而不是光栅字体)已经在我们的操作系统构建中了。
谢谢你所有的想法。
发布于 2016-05-04 19:21:11
还不清楚为什么CE6平台正确地映射了字体,而CE7平台却没有。我们控制内置在我们设备中的字体,这样我们就可以保证对arialuni.ttf的日本字符支持的独特性。这显然足以让字体映射器做我们想做的事。
https://stackoverflow.com/questions/37012380
复制相似问题