Firemonkey Unicode支持XP

时间:2013-11-20 06:31:32

标签: delphi unicode windows-xp firemonkey

使用XE5开发Delphi firemonkey桌面应用程序。

我使用Unicode字符来本地化应用程序(亚洲语言调用Sinhala)。

Windows 7的一切都很完美(我们还没有用Vista测试过)。但是当我们用Windows XP测试它时,它会将每个字符显示为一个框(标题栏除外)。

有什么问题? delphi firemonkey是否支持XP中的unicode?

有没有办法让它在XP上正确显示?

(这只发生在firemonkey上,VCL一切正常。由于我要支持MAC,我必须使用firemonkey。)

3 个答案:

答案 0 :(得分:4)

AFAIK FireMonkey没有实现所谓的Font fall-back mechanism。它不使用Uniscribe API

我怀疑你使用的字体(例如Tahoma)不包含XP中所需的字符 - 而Seven / Vista附带的TTF文件确实包含它们。因此,FireMonkey无法在XP中按预期显示文本。

将字体更改为一个,其中包含所有需要的字形。如果安装了MSOffice,即使在XP上也可以使用“Arial Unicode MS”。

默认情况下,VCL渲染器使用实现字体后退的ExtTextOut GDI API,因此它会自动搜索已安装的字体以查找缺少的字形。

答案 1 :(得分:1)

要正确使用/显示Unicode,操作系统必须支持unicode字符串,您必须安装可显示Unicode字符的字体。由于它们是65000多个字符,并非所有字体制造商都包含每个Unicode字符 我认为FireMonkey应用程序使用的字体不包含Sinhala字符。使用应用程序使用的字体。

如果您需要Sinhala字体,精彩的Alan Wood’s Unicode Resources会有Large, multi-script Unicode fonts for Windows computers部分。南亚字体页面列出了您可以尝试的几种字体 或者,Googing "sinhala unicode font"也会给你很多建议。

答案 2 :(得分:0)

我已经检查了所有这些建议 - 但我的问题没有用。我发现了以下事实。

  1. 将字体更改为Arial MS Unicode或用Windows 7中的TTF文件替换Tahoma不起作用。

  2. 将字体更改为“Iskole Pota”(一种支持Sinhala Unicode符号的字体)解决了TEdit组件的问题。

  3. 作为TTextControl后代的所有组件都不能与“Iskole Potha”解决方案一起使用。

  4. 我进一步注意到,对于TTextControl后代,将字体更改为类似“Wingdings”的字体也不会显示相应的符号。他们仍然显示英语。