短い序文。タイ文字には、子音の上に表示される可能性のある母音記号があります。また、子音の上にも表示される発音区別符号(DS)があります。母音とDSの両方が存在する場合、それらは上下に表示されるため、母音は子音の上に設定され、DSは母音の上に設定されます。
タイ語でテキストを表示するアプリケーションを書いています。エミュレーター(API 10)ではすべてが完璧に見えますが、実際のデバイス(Gingerbread2.3.6を搭載したSamsungGT-I9001)では完璧ではありません。
問題を説明するために2枚の写真を用意しました。上部にTextViewのみがある単純なレイアウトがあります。そのビューには、พี่สาวとไม้の2つの単語が表示されます。
これはどのように見えるべきかです(エミュレーターからのスクリーンショット):
最初の文字には母音と母音の上にDSがあり、最後の文字にはDSのみがあります。
そして、これが私の電話のスクリーンショットです:
両方のDSが滑り落ち、母音とDSが最初の文字の上で重なり合っています。最後の1文字が本来よりも低く表示されることに注意してください(最初のスクリーンショットに表示されるように、行全体の高さが必要です)。
問題はシステム全体にあることがわかりました。これらのタイ語を単純なWebページにコピーして、携帯電話のWebブラウザーにロードしたところ、同じ問題が発生しました。フォントのレンダリングが壊れているようです。
だから質問:これを回避する方法は?フォントをインストールする必要がありますか(どのように?)、または言語パックをインストールする必要がありますか(もう一度、どのように?)、または唯一の方法はAndroidをアップグレードすることですか?
PS:Android4.0.4では問題ありません。おそらく、古いバージョンのみが影響を受けます。
更新: WarrenFaithは、カスタムフォントの設定について有望なアドバイスを提供しました。しかし、これは見た目ほど単純ではないように見えました。Roboto(ICSで導入)、msttf LinuxパッケージのVerdanaなど、いくつかの異なるフォントを試しました。フォントが実際に読み込まれて適用されていることを確認するために、テキストにラテン文字とキリル文字をいくつか追加しました。
結果は面白いです。ラテン文字とキリル文字のみが変更され、タイ文字は変更されません。フォントに必要なグリフがないようで、Androidはそれらをデフォルトのフォントを使用してレンダリングされたものに置き換えます。
(Robotoが機能しなかった理由がわかりません。これは公式のAndroidフォントです。Unicode全体を完全にサポートする必要がありますか?)
そのため、タイ語のグリフを含むフォントを見つける必要があるようです。
そして、Android4.0.4でデフォルトでどのフォントが使用されているのかまだ疑問に思っています。
ハッピーエンド: WarrenFaithのアドバイス、Google、およびこのブログ記事に感謝します。