インド語文字の複雑なレンダリングを表示するAndroidデバイスを作成する方法?


42

この質問の長さを許してください。他の人を助け、説明を求めずに答えを提供する助けとなる貢献者を避けるために、このすべてを説明する必要があります。

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 Source Project)から独自のROMを作成する準備もできています。


Cyanogenmodには、テキストの右から左へのレンダリングを表示する機能があります。Skiaは、グラフィックスのレンダリングの標準です。結果は異なります。1つのROMから1つのSkiaライブラリを取得し、AOSPソースを取得し、Skiaをharfbuzzに置き換えて再コンパイルすることにより、ゼロから構築する必要があるため、壊滅的です。そのライブラリでビルドされていない別のROMにharfbuzz-ライブラリがリンクされているため、ROMのビルドがharfbuzzを認識しない場合、動作しません)
-t0mm13b

1
@narayanan何らかの理由で、サイトm.oneindia.in/tamilはAndroid 4.1.2のChromeでタミルを完全にレンダリングします。このWebサイトは、他のWebサイトとは異なり、正しく機能していますか?
FMFF

回答:


9

根ざした電話

フォルダーの下のAndroidには、/system/fontsすべての言語文字を含むことになっている「DroidSansFallback.ttf」という名前のファイルが含まれています。現在、タミル語を含む多くのサポートがありません。

いつでもファイルをタミル文字を含むファイルに置き換えることができるため、携帯電話でタミル語を使用できます。

XDA開発者スレッド- DroidSansフォールバックインド語フォント、ユーザーは試してみましたが、正常に自分の携帯電話にタミルを使用します。

この方法を実現/systemするには、フォールバックファイルにアクセスして変更するために、電話機へのルートアクセスが必要です。

  • 読んで、私は自分のデバイスを根絶するにはどうすればよいですか?お使いの携帯電話がまだ根付いていない場合。
  • XDA Developersスレッドに従って、ファイルの置き換え方法を確認してください。

    Using and Android SDK environment:
    
    First Copy the DroidSansFallback.ttf file into your sdcard,
    then issue the following commands:
    
    adb shell
    su
    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
    cd /sdcard
    busybox cp DroidSansFallback.ttf /system/fonts
    mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system
    exit
    exit
    
    Lastly, rebooted the phone
    

    注:マウントポイントはすべての電話で同じではありません。


Androidアプリ

上記の方法は一部のユーザーには魅力的かもしれませんが、利用可能な場合はAPPを好みます。

また、タミル語には合計247文字のキーボードがありますが、英語のキーボードには26文字しか必要ありません。したがって、これは入力時に大きな問題になります。

ウィキペディアを参照::タミル語-書記体系

現在のタミル文字は、12個の母音、18個の子音、および1個の特殊文字「aytam」で構成されています。母音と子音が組み合わされて216の複合文字が形成され、合計247文字(12 + 18 + 1 +(12 x 18))になります。


Krishanのおかげで、このテーマに取り組んでおり、タミル語のシステム全体での使用と、タミル語文字の入力に使用できるキーボードの両方の問題に対処するためのAPPがすでに利用可能です。

このソリューションの開発に関する詳細情報については、Krishanの投稿「Android用Tamil Unicodeフォント-作業」をご覧ください。

要約する

Krishanは、Google Playで2つのAPPを開発および公開しました。これらは、タミル語でAndroid OS全体を所有するという問題を完全に処理します。


4
フォントの置き換えは、非連結文字のみを表示する部分的な解決策であり、共役文字は適切にレンダリングされないことを既に述べました。そして、アプリに関する2番目のソリューションは、私にとって受け入れられているソリューションではありません。英語で入力し、ウェブページを変換して引用することにより、タミル語のテキストを作成する方法を提供します。あなたの努力と時間に感謝します。
ナラヤナン

3

Androidの既知のバグである問題4153について説明しているようです。

この問題は、Jelly Beanで解決済みとして報告されています。このスクリーンショットが正しい場合は、問題を解決する必要があります。(私は本当に自分自身を言うことはできませんが、私はジェリービーンにアクセスでき、そこからスクリーンショットを作成できます。)

UnicodeのICSテストページ


1
おかげで、これは単なるバグではないように見えます。タミルレンダリングは、Android 2.3.3の携帯電話でも動作していると述べたため、メーカーの何らかの介入が必要です。
ナラヤナン

1
2012年7月20日に、私はGoogleのgDaysに参加し、Android JellyBean 4.1がブラウザ外でもタミル語の文字を表示するのを目撃しました。残念ながら、これ以上テストできませんでした。
ナラヤナン

質問へのコメントでandroid.stackexchange.com/questions/26797/…私は、ThinkFree Office Mobile Viewerを使用して、Webページ、テキストファイル、SMS、連絡先、ファイル名、DOCXファイルでタミル語を読むことができると言います。これはテルグ語、カンナダ語、ベンガル語、ヒンディー語でも同じであることに気付きました。
ナラヤナン

1

Opera Miniウェブブラウザをインストールする

Opera Mini Webブラウザで「about:Config」と入力します

複雑なスクリプトにビットマップフォントを使用する:[はい]を選択します

どのブランドの携帯電話でも、すべてのサイトをタミルフォントで表示できます。

よろしく


5
これはブラウザ内部のビットマップであり、OS全体のソリューションではありません(たとえば、SMSでタミル語や他のインド語文字を入力または表示することはできません)。ところで、あなたが提案したことはすでにメイン投稿で言及されています:>「Operaや他のいくつかのブラウザは、Android 4.0より前でも、文字ではなく画像に置き換えてこれを行いました。」

0

Androidシステムでフォントをルート化して置き換える必要はありません。

デバイスのファームウェアを同様のインド地域のファームウェアに置き換えて、デーバナーガリーフォントを正しくレンダリングします。他の地域のファームウェアは、デーバナーガリーフォントを正しくレンダリングしません。デバナーガリフォントは、インド地域のAndroidバージョン2.xで正しくレンダリングされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.