Bagaimana cara membuat perangkat Android untuk menampilkan rendering kompleks karakter Indic?

42

Maafkan panjang pertanyaan ini. Saya perlu menjelaskan semua ini untuk membantu orang lain dan untuk menghindari kontributor membantu untuk memberikan jawaban tanpa meminta klarifikasi.

Persyaratan saya dalam satu baris: "untuk mengaktifkan ponsel Android untuk menampilkan karakter Tamil dengan benar".

Elaborasi: Tamil, seperti bahasa India lainnya memiliki sistem render karakter yang kompleks. Tidak seperti bahasa Inggris atau skrip berbasis Latin lainnya, ia memiliki mesin terbang (apa yang Anda lihat di layar) terdiri dari lebih dari satu karakter. Android tidak memiliki kemampuan untuk membuat skrip yang rumit (dengan pengecualian). Tujuan saya adalah untuk mengetahui bagaimana saya bisa memberikan kemampuan seperti itu ke ponsel atau tablet Android.

Sedikit latar belakang yang saya kumpulkan sejauh ini: Untuk menampilkan mesin terbang di layar, Android pertama-tama membutuhkan file font yang cocok. Perangkat Android memiliki folder / sistem / font yang hanya sedikit. File paling menarik di folder itu adalah DroidSansFallback.ttf. Seperti namanya, ketika sistem Android gagal menemukan karakter dalam font sistem (itu bisa menjadi DroidSans.ttf atau DroidSans-Bold.ttf dll) ia kembali mencari di DroidSansFallback.ttf.

Dengan mengganti file font yang sesuai dari PC (Latha.ttf atau Lohit-Tamil.ttf - ini adalah font untuk Tamil) dan DroidSansFallback.ttf akan memungkinkan untuk menampilkan karakter Tamil di perangkat. Tidak mudah untuk mengganti dan melibatkan rooting perangkat dan pemasangan sistem sebagai dapat ditulis.

Terlepas dari masalah tersebut, bahkan jika DroidSansFallback.ttf diganti, karakter Tamil yang ditampilkan tidak ditampilkan dengan benar. Karakter Tamil "தி" adalah gabungan dari dua karakter dan alih-alih ditampilkan sebagai "தி", itu akan ditampilkan sebagai "த ி" tanpa spasi di antaranya. Meskipun ini cukup untuk membaca pesan pendek, itu tidak dapat digunakan untuk membaca buku dll.

Dari Android 4.0 di bangsal, Tamil dan beberapa bahasa lainnya didukung melalui peramban seperti yang disebutkan dalam ikhtisar Android 4.x API seperti yang terlihat di bawah ini.

Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex
character support needed for combining glyphs) in WebView and the built-in Browser

Kata-kata yang harus diperhatikan adalah "di WebView dan Browser bawaan", yang berarti bahwa karakter Tamil akan diterjemahkan dengan sempurna jika diterjemahkan sebagai konten HTML dan tidak akan diterjemahkan sebaliknya. Opera dan beberapa browser lainnya melakukan ini bahkan sebelum Android 4.0 dengan mengganti gambar daripada karakter.

Saya perhatikan bahwa di beberapa perangkat yang menargetkan pasar India (mis: LG Optimus One, sebagian besar ponsel dan tablet Samsung) mampu menampilkan bahasa Tamil dengan baik di peramban dan bahkan di tempat-tempat di luar peramban seperti di kontak, pesan teks, nama file, dll. Saya terkejut mereka melakukan ini bahkan di Android 2.3 dan seterusnya. Saya juga memperhatikan bahwa model yang sama dengan penargetan negara non-India yang menjalankan versi Android yang sama tidak mendukung tampilan karakter Tamil.

Ini membuat saya untuk menyelidiki lebih lanjut dan mencapai kesimpulan bahwa Android (seperti OS berbasis Linux lainnya) bergantung pada mesin rendering font untuk menampilkan karakter yang kompleks. Dua mesin yang saya temui adalah Skia dan Harfbuzz. Saya perhatikan LG menggunakan skia dan Samsung menggunakan perpustakaan Harfbuzz di perangkat mereka untuk menghadirkan kemampuan ini.

Saya menemukan banyak situs web yang menyarankan untuk mengganti pustaka dan font ini. Itu tidak bekerja dan menghasilkan pembekuan. Untungnya saya mencadangkan menggunakan clockworkmod dan karenanya saya mengembalikan ponsel saya.

Meskipun saya telah menjelaskan ini dengan Tamil, ini berlaku untuk sebagian besar bahasa India.

Inilah pertanyaan saya (jika Anda masih membaca;)) Sekarang, sangat yakin bahwa file TTF harus ada untuk memberikan karakter dan pustaka yang sesuai (libskia.so atau libharfbuzz.so) diperlukan untuk merendernya dengan benar. Adakah yang tahu bagaimana pabrikan-pabrikan ini mampu menyediakan kemampuan? Saya bahkan siap membuat ROM sendiri dari AOSP (Android Open Source Project).

Narayanan
sumber
Cyanogenmod memiliki kemampuan untuk menampilkan rendering teks dari kanan ke kiri. Skia adalah standar untuk rendering grafik. Hasilnya akan bervariasi, mengambil satu pustaka Skia dari satu ROM dan memasukkannya ke pustaka lain mungkin merupakan bencana besar karena membutuhkan pembangunan dari awal, dengan mengambil sumber AOSP, dan mengganti Skia dengan harfbuzz dan mengkompilasi ulang (Anda tidak bisa "hanya" mampir harfbuzz ke ROM lain yang tidak dibangun dengan perpustakaan itu - perpustakaan terhubung, jadi jika build ROM tidak mengetahui harfbuzz, itu tidak akan berfungsi)
t0mm13b
1
@narayanan karena alasan tertentu, situs m.oneindia.in/tamil membuat tamil dengan sempurna di Chrome di Android 4.1.2. Apa yang dilakukan situs web ini dengan benar dan yang lainnya tidak?
FMFF

Jawaban:

9

Telepon Berakar

Android di bawah folder tersebut /system/fontsberisi file bernama "DroidSansFallback.ttf" yang seharusnya berisi semua karakter bahasa. Saat ini tidak ada dukungan untuk banyak orang, termasuk Tamil.

Satu selalu dapat mengganti file dengan yang berisi karakter Tamil, sehingga memungkinkan penggunaan Tamil di ponsel Anda.

Dari XDA Developers Thread - DroidSans Fallback Indic Font , pengguna telah mencoba dan berhasil menggunakan Tamil pada ponsel mereka.

Untuk menyelesaikan metode ini, Anda memerlukan akses root ke telepon Anda, untuk mengakses /systemdan mengubah file cadangan:

  • Baca Bagaimana cara me-root perangkat saya? jika ponsel Anda belum di-rooting.
  • Ikuti utas Pengembang XDA untuk melihat cara mengganti file :

    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
    

    Catatan: titik pemasangan tidak sama untuk semua ponsel.


APLIKASI Android

Meskipun metode di atas mungkin menarik bagi beberapa pengguna, saya lebih suka aplikasi bila tersedia.

Selain itu, Tamil memiliki keyboard dengan total 247 karakter, sedangkan bahasa Inggris hanya membutuhkan 26. Jadi ini menjadi masalah besar saat mengetik:

Lihat Wikipedia :: Bahasa Tamil - Sistem Penulisan

Aksara Tamil saat ini terdiri dari 12 vokal, 18 konsonan dan satu karakter khusus, āytam. Vokal dan konsonan bergabung untuk membentuk 216 karakter majemuk, memberikan total 247 karakter (12 + 18 + 1 + (12 x 18))


Berkat Krishan, dan sedang mengerjakan masalah ini, sudah ada APP yang tersedia untuk menangani kedua masalah, penggunaan sistem secara luas dari Tamil, dan keyboard yang dapat digunakan untuk mengetik Karakter Tamil.

Baca pos Krishan yang berjudul Tamil Unicode Font untuk Android - Bekerja untuk informasi terperinci tentang pengembangan solusi ini.

Untuk meringkas

Krishan mengembangkan dan menerbitkan dua aplikasi di Google Play yang sepenuhnya menangani masalah memiliki seluruh OS Android di Tamil:

Zuul
sumber
4
Saya telah menyebutkan bahwa mengganti font hanya solusi parsial yang hanya akan menampilkan karakter non-konjungsi dan karakter konjungsi tidak akan ditampilkan dengan benar. Dan solusi kedua mengenai aplikasi ini bukan solusi yang diterima untuk saya. Ini menyediakan cara untuk menulis teks Tamil dengan mengetik dalam bahasa Inggris dan mengkonversi dan mengutip halaman web sebagai contoh tidak dapat diterima seperti yang telah saya katakan dalam harapan saya. Terima kasih atas upaya dan waktu Anda.
Narayanan
3

Anda tampaknya menjelaskan masalah 4153 , bug yang dikenal di Android.

Masalah ini telah dilaporkan terselesaikan di Jelly Bean. Jika tangkapan layar ini benar, maka masalah tersebut harus diselesaikan. (Saya tidak bisa mengatakannya pada diri saya sendiri, tetapi saya memiliki akses ke Jelly Bean dan dapat membuat tangkapan layar darinya.)

Halaman Tes ICS untuk Unicode

Michael Hampton
sumber
1
Terima kasih, ini muncul bukan hanya bug karena saya telah menyatakan bahwa rendering Tamil berfungsi bahkan di ponsel Android 2.3.3 dengan semacam intervensi dari produsen.
Narayanan
1
Pada 20 Juli 2012, saya menghadiri Google gDays dan di mana saya menyaksikan Android JellyBean 4.1 menampilkan karakter Tamil bahkan di luar browser. Sayangnya saya tidak bisa menguji apa pun lagi.
Narayanan
Dengan komentar pada pertanyaan android.stackexchange.com/questions/26797/... Saya akan mengatakan saya dapat membaca bahasa Tamil di halaman web, file teks, SMS, kontak, nama file, file DOCX melalui ThinkFree Office Mobile Viewer. Saya mengamati bahwa ini harus sama untuk Telugu, Kannada, Bengali, dan Hindi juga.
Narayanan
1

Instal Opera Mini web Browser

Di Opera Mini Web Browser ketikkan "about: Config"

gunakan font bitmap untuk skrip yang kompleks: Pilih Ya

Anda dapat melihat semua situs dalam font tamil di ponsel merek apa pun

Salam

Rajesh
sumber
5
Ini adalah bitmap internal-browser dan bukan solusi OS-lebar (misalnya, Anda tidak akan dapat mengetik atau melihat karakter Tamil atau indikator lain dalam SMS). Btw, apa yang Anda sarankan telah disebutkan di posting utama:> "Opera dan beberapa browser lainnya melakukan ini bahkan sebelum Android 4.0 dengan mengganti gambar daripada karakter."
0

Anda tidak perlu melakukan root dan mengganti font pada sistem Android.

Ganti firmware perangkat Anda dengan firmware wilayah India yang sama untuk merender font Devanagari dengan benar. Firmware wilayah lain tidak membuat font Devanagari dengan benar. Font Devanagari dengan benar ditampilkan di Android versi 2.x. Wilayah India

Ghana
sumber