android 泰文ttf字体,如何在Android上正确显示泰语diactirics?

博客作者在开发一个显示泰语文本的Android应用程序时,遇到泰语变音符号(diacritics)在某些设备上显示不正常的问题。在模拟器上显示正常,但在一部旧版三星手机(Gingerbread 2.3.6)上,元音符号和变音符号出现重叠和错位。尝试在手机浏览器中加载泰语内容,问题依旧存在,推测可能是字体渲染问题。作者试图通过更换字体解决,但发现即使使用Roboto等字体,泰语字符仍无法正确显示。最后,作者对解决方案持开放态度,可能需要考虑升级Android版本或寻找包含所需字形的特定字体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简短的序言。泰语字母有可能出现在辅音上方的元音符号,并且在辅音上方也存在变音符号(DS)。当元音和DS出现时,它们出现一个在另一个之上,所以元音被设置在辅音之上并且DS被设置在元音之上。如何在Android上正确显示泰语diactirics?

我正在编写一个将以泰文显示文本的应用程序。在模拟器(API 10)中一切看起来都很完美,但在真实设备(三星GT-I9001,Gingerbread 2.3.6)上看起来不错。

我准备了两张照片来说明问题。我有一个简单的布局,顶部有唯一的TextView;在该视图中显示两个单词พี่สาว和ไม้。

这是应该的样子(从模拟器截图):

c2da33a7ef0e14db84477e7826b2c85f.png

第一个字符的元音和元音上方的DS,和最后一个字符只有DS。

这里是我的手机截图:

13aeadcbe0ab506dfa936952e275d04a.png

无论是DS滑下现在的元音和DS相互重叠的第一个字符以上。请注意,最后一个字符显示为低于应该的位置(它应该是整行高度,就像您在第一个屏幕截图中看到的那样)。

我发现问题在系统范围内:我已经将这些泰语单词复制到一个简单的网页,并将其加载到手机的网络浏览器中,并且遇到了同样的问题。这似乎是字体渲染被破坏。

所以问题:如何绕过这个?我是否需要安装字体(如何?)或者某种语言包(再次,如何?),或者唯一的方法是升级Android?

PS:在Android 4.0.4上没有问题。也许只有旧版本受到影响。

更新: WarrenFaith给出了一个有希望设置自定义字体的建议。然而,这看起来并不像看起来那么简单。我尝试了几种不同的字体,包括Roboto(在ICS中引入),msttf Linux包中的Verdana以及其他一些字体。为了看到字体真的被加载和应用,我在文本中添加了一些拉丁文和西里尔文字符。

结果很有趣。只有拉丁文字和西里尔文字符会改变,但不是泰国字符。看起来这些字体没有所需的字形,而Android将它们替换为使用某种默认字体呈现的字体。

(我不明白为什么的Roboto没有工作,这是官方Android字体shouldn't它给整个完全支持Unicode?)

所以好像我一定要找到字体那里有泰国字形。

而我仍然想知道在Android 4.0.4中默认使用哪种字体。

乐意结束:感谢WarrenFaith的建议,谷歌和this blog article。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值