简短的序言。泰文有可能出现在辅音上方的元音符号,也有出现在辅音上方的变音符号(DS);当元音和DS都出现时,它们出现在另一个之上,因此元音设置在辅音之上,DS设置在元音之上。
我正在编写一个以泰语显示文本的应用程序。在模拟器(API 10)中一切看起来都很完美,但在真实设备上却不是(三星 GT-I9001 和 Gingerbread 2.3.6)。
我准备了两张图片来说明问题。我有一个简单的布局,顶部只有一个 TextView;该视图中显示两个词พี่สาว和ไม้。
这就是它的样子(来自模拟器的截图):
第一个字符有元音和元音上方的 DS,最后一个字符只有 DS。
这是我手机的截图:
两个 DS 都向下滑动,现在元音和 DS 在第一个字符上方相互重叠。请注意,最后一个字符看起来比它应该的低(它应该是整行高,就像您在第一个屏幕截图中看到的那样)。
我发现问题出在系统范围内:我将这些泰语单词复制到一个简单的网页中,然后将其加载到手机的网络浏览器中,但遇到了同样的问题。字体渲染似乎被破坏了。
所以问题是:如何绕过这个?我是否需要安装字体(如何?)或者一些语言包(再次,如何?),或者唯一的方法是升级 Android?
PS:Android 4.0.4 上没问题。也许只有旧版本受到影响。
更新: WarrenFaith 给出了关于设置自定义字体的有希望的建议。然而,这似乎并不像看起来那么简单。我尝试了几种不同的字体,包括 Roboto(在 ICS 中引入)、来自 msttf Linux 软件包的 Verdana 以及其他一些字体。为了查看字体是否真正加载和应用,我在文本中添加了一些拉丁文和西里尔文字符。
结果很有趣。只有拉丁文和西里尔文字符发生变化,泰文字符没有变化。看起来字体没有所需的字形,Android 将它们替换为使用某些默认字体呈现的字形。
(我不明白为什么 Roboto 不起作用;它是官方的 Android 字体——它不应该完全支持整个 Unicode 吗?)
所以看来我必须找到有泰语字形的字体。
而且我仍然想知道在 Android 4.0.4 中默认使用什么字体。
快乐的结局:感谢 WarrenFaith 的建议、Google 和这篇博客文章。