首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >远东语言文本不会在WindowsCompact7中绘制

远东语言文本不会在WindowsCompact7中绘制
EN

Stack Overflow用户
提问于 2016-05-03 19:03:08
回答 1查看 617关注 0票数 3

在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几乎支持我们可能支持的所有语言,而且它已经是我们用于非西欧语言的唯一一种语言。

已经安装了其他几个真正类型的字体,所以这个选项(而不是光栅字体)已经在我们的操作系统构建中了。

  1. 此arialuni.ttf与WindowsCompact7兼容吗?
  2. 您是否需要在OS映像中添加对远东语言的支持,以使这种字体加载和文本绘图工作?
  3. 我对Tahoma的看法是错的,现在它支持东欧语言吗?
  4. 我遗漏了什么?

谢谢你所有的想法。

EN

回答 1

Stack Overflow用户

发布于 2016-05-04 19:21:11

  1. 这个版本的arialuni.ttf确实与WindowsCompact7兼容。
  2. 不清楚。一些关于操作系统图像的内容允许CE6下的字体映射程序正确地映射我们的请求,而不是在CE7下。
  3. 不是的。内置在CE7中的默认tahoma.ttf确实支持东欧字符集,但不支持远东字符集。
  4. 我们的程序调用CreateFontIndirect()来获取GDI字体资源的句柄,当将文本绘制到屏幕上时,我们可以选择该资源到屏幕的设备上下文中。这个调用使用LOGFONT结构,我们用我们想要的字体的属性填充它,而在幕后,系统的字体映射器组件会查看它知道的字体,并返回它认为最匹配的字体。 最初,我们只指定字符的高度、重量和字体族名。默认情况下,请求的字符集是ANSI_CHARSET (0)。这总是返回对我们的arialuni.ttf平台上的CE6字体的引用。但是,在我们的CE7平台上,字体映射器将请求映射到tahoma.ttf文件。 我修改了LOGFONT结构内容,以包括询问日语字符集(LOGFONT.lfCharSet = SHIFTJIS_CHARSET)。在这两个平台上,只有arialuni.ttf字体文件支持这种语言,因此两个字体映射器现在总是返回对所需字体的引用。 此更改在CE6和CE7平台上都有效。西欧语言、东欧语言和远东语言现在都画得正确,因为arialuni.ttf支持所有这些字符集,等等。

还不清楚为什么CE6平台正确地映射了字体,而CE7平台却没有。我们控制内置在我们设备中的字体,这样我们就可以保证对arialuni.ttf的日本字符支持的独特性。这显然足以让字体映射器做我们想做的事。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37012380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档