简短的序言。泰文字母的元音符号可能出现在辅音上方,并且在辅音上方也有变音符号(DS);当元音和DS都存在时,它们会出现在另一个元音之上,因此元音位于辅音之上,而DS则位于元音之上。
我正在编写一个以泰语显示文本的应用程序。仿真器(API 10)中的一切看起来都很完美,但真实设备上却看不到(带有Gingerbread 2.3.6的Samsung GT-I9001)。
我准备了两张图片来说明问题。我有一个简单的布局,顶部只有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和this blog article。
答案 0 :(得分:1)
如果默认文本/字体被破坏,您应该提供一个您知道可以使用的字体。要实现该字体,您可以使用以下答案: