4
インド語文字の複雑なレンダリングを表示するAndroidデバイスを作成する方法?
この質問の長さを許してください。他の人を助け、説明を求めずに答えを提供する助けとなる貢献者を避けるために、このすべてを説明する必要があります。 1行の私の要件:「Androidスマートフォンでタミル文字を適切に表示できるようにする」。 詳細: タミル語は、他のインド言語と同様に、複雑な文字レンダリングシステムを備えています。英語やその他のラテン語ベースのスクリプトとは異なり、グリフ(画面に表示されるもの)は複数の文字で構成されています。Androidには、このような複雑なスクリプトをレンダリングする機能はありません(例外あり)。私の目的は、このような機能をAndroidの携帯電話やタブレットに提供する方法を知ることです。 これまでに集めた小さな背景: 画面にグリフを表示するには、Androidに最初に適切なフォントファイルが必要です。Androidデバイスには、/ system / fontsフォルダーがありますが、ほとんどありません。そのフォルダー内で最も興味深いファイルはDroidSansFallback.ttfです。名前が示すように、Androidのシステムがシステムフォント(DroidSans.ttfまたはDroidSans-Bold.ttfなど)で文字を見つけることができない場合、DroidSansFallback.ttfで検索するためにフォールバックします。 PCから適切なフォントファイル(Latha.ttfまたはLohit-Tamil.ttf-これらはTamilのフォント)を置き換えることにより、DroidSansFallback.ttfはデバイスでTamil文字を表示できるようになります。交換はそれほど簡単ではなく、デバイスをルート化し、システムを書き込み可能にマウントする必要があります。 これらの問題にもかかわらず、DroidSansFallback.ttfが置き換えられても、表示されるタミル語の文字は適切にレンダリングされません。タミル語の文字「தி」は2文字の接続詞であり、「தி」として表示される代わりに、「தி」として表示され、間にスペースはありません。これは短いメッセージを読むには十分ですが、本などを読むためには使用できません。 ワードのAndroid 4.0以降、タミル語と他のいくつかの言語は、以下に示すようにAndroid 4.x APIの概要で述べられているように、ブラウザを介してサポートされています。 Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex character support needed for combining glyphs) in WebView and the built-in Browser 注意すべき言葉は「WebViewおよび組み込みブラウザ」です。つまり、タミル文字がHTMLコンテンツとしてレンダリングされる場合は完全にレンダリングされ、その他の場合はレンダリングされません。Operaや他のいくつかのブラウザは、Android 4.0より前でも、文字の代わりに画像を使用してこれを行っていました。 インド市場をターゲットとするいくつかのデバイス(例:LG Optimus One、Samsungの携帯電話やタブレットのほとんど)では、ブラウザだけでなく、連絡先、テキストメッセージ、ファイル名などのブラウザ外の場所でもタミル語を適切に表示できることに気付きました。驚いたことに、Android 2.3以降でもこれを行っています。また、同じバージョンのAndroidを実行しているインド以外の国をターゲットとする同じモデルは、タミル語の文字表示をサポートしていないことに気付きました。 これにより、さらに調査することになり、Android(他のLinuxベースのOS)はそのような複雑な文字を表示するためにフォントレンダリングエンジンに依存しているという結論に達しました。私が出会った2つのエンジンは、SkiaとHarfbuzzです。LGはskiaを使用し、SamsungはデバイスでHarfbuzzライブラリを使用してこの機能を実現していることに気付きました。 これらのライブラリとフォントを置き換えることを提案する多くのWebサイトに出会いました。動作せず、フリーズしました。幸いなことに、clockworkmodを使用してバックアップしたため、電話を復元しました。 これについてはタミル語で説明しましたが、これはほとんどのインド語に当てはまります。 ここに私の質問があります(まだ読んでいる場合;)) 今、文字を提供するためにTTFファイルが存在し、それらを正しくレンダリングするために適切なライブラリ(libskia.soまたはlibharfbuzz.so)が必要であることは明らかです。これらのメーカーがどのように能力を提供できるかを知っている人はいますか?AOSP(Android Open …