題:
如何使Android設備顯示印度字符的複雜呈現?
Narayanan
2012-07-06 16:10:30 UTC
view on stackexchange narkive permalink

請原諒這個問題的長度。我需要解釋所有這些信息,以幫助他人,並避免有用的貢獻者在不提出澄清的情況下提供答案。

我的要求是:“使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,所顯示的泰米爾字符也無法正確呈現。泰米爾語字符“தி”是兩個字符的結合詞,而不是顯示為“தி”,而是顯示為“த”。儘管這足以閱讀短信,但不能用於閱讀書籍等。

從Android 4.0及更高版本開始,通過瀏覽器支持泰米爾語和其他幾種語言,如Android 4.x API概述所述:見下文。

 在WebView和內置瀏覽器中支持印度字體(Devanagari,孟加拉語和泰米爾語,包括組合字形所需的複雜字符支持) 

要注意的單詞是“在WebView和內置瀏覽器中”,這意味著如果將泰米爾語字符呈現為HTML內容,則可以完美呈現,否則不會呈現。 Opera和其他少數瀏覽器甚至在Android 4.0之前就通過替換圖像而不是字符來做到這一點。

我注意到,在針對印度市場的少數設備中(例如LG Optimus One,大多數三星手機和平板電腦)能夠在瀏覽器中甚至在瀏覽器外的位置(例如聯繫人,短信,文件名等)中正確顯示泰米爾語。令我驚訝的是,即使在Android 2.3及更高版本中,它們也可以顯示。我還注意到針對非印度國家/地區的同一模型(運行相同版本的Android)不支持泰米爾語字符顯示。

這使我進行了進一步調查,得出的結論是Android(與其他基於Linux的操作系統一樣)取決於字體渲染引擎來顯示這樣的複雜字符。我遇到的兩個引擎是Skia和Harfbuzz。我注意到LG在其設備中使用了skia,而三星在其設備中使用了Harfbuzz庫。

我遇到了許多網站,建議更換這些庫和字體。它不起作用並導致凍結。幸運的是,我使用clockworkmod進行了備份,因此恢復了手機。

儘管我已與泰米爾語進行了解釋,但這適用於大多數印度語言。

我的問題(如果您仍在閱讀;))現在,很顯然,應該存在一個TTF文件來提供字符,並且需要適當的庫(libskia.so或libharfbuzz.so)來呈現它們正確地。有誰知道這些製造商能夠提供的能力嗎?我什至準備從AOSP(Android開放源代碼項目)構建自己的ROM。

Cyanogenmod具有顯示文本從右到左顯示的功能。 Skia是圖形渲染的標準配置。結果會有所不同,從一個ROM中獲取一個Skia庫並放入另一個ROM中可能是災難性的,因為需要從頭開始構建(通過獲取AOSP源),並用harfbuzz替換Skia並重新編譯(您根本無法“只是”插入harfbuzz插入另一個未使用該庫構建的ROM中-這些庫是鏈接在一起的,因此,如果ROM的內部版本不知道harfbuzz,它將無法正常工作)
由於某種原因,@narayanan網站http://m.oneindia.in/tamil/在Android 4.1.2的Chrome中完美呈現了泰米爾語。該網站在做什麼,其他網站沒有在做什麼?
四 答案:
Zuul
2012-07-23 02:09:26 UTC
view on stackexchange narkive permalink

Rooted Phone

Android在文件夾 / system / fonts 下包含一個名為“ DroidSansFallback.ttf”的文件,其中應該包含所有語言字符。當前,它不支持包括泰米爾語在內的許多語言。

一個人總是可以用包含泰米爾語字符的文件替換該文件,從而允許在手機上使用泰米爾語。

來自 XDA Developers Thread-DroidSans Fallback Indic Font,用戶已經在手機上嘗試並成功使用了泰米爾語。

要完成此方法,您需要對手機具有root訪問權限,才能訪問 / system 並更改Fallback文件:

  • 閱讀如果您的手機尚未植根,我該如何植根我的設備?
  • 關注 XDA Developers線程,以了解如何替換文件

     使用和Android SDK環境:首先將DroidSansFallback.ttf文件複製到sdcard中,然後發出以下命令:adb shellsumount -o remount,rw -t yaffs2 / dev / block / mtdblock3 / systemcd / sdcardbusybox cp DroidSansFallback.ttf / s ystem / fontsmount -o ro,重新安裝-t yaffs2 / dev / block / mtdblock3 / systemexitexit最後,重新啟動了手機 

    注意:裝載點不同適用於所有手機。


Android APP

雖然上述方法可能對某些用戶有吸引力,但我還是更喜歡一個可用的APP。

此外,泰米爾語的鍵盤共有247個字符,而英語僅需要26個字符。因此,在鍵入時,這成為一個主要問題:

請參見 Wikipedia ::泰米爾語-書寫系統

當前的泰米爾語文字包含12個元音,18個輔音和一個特殊字符āytam。元音和輔音組合形成216個複合字符,總共提供247個字符(12 + 18 + 1 +(12 x 18))


感謝Krishan,並且正在研究這個問題,已經有了一個APP可以處理兩個問題,泰米爾語在系統範圍內的使用,以及可以用來鍵入泰米爾語字符的鍵盤。

閱讀Krishan的帖子,標題為 Android的泰米爾Unicode字體–工作,以獲取有關此解決方案開發的詳細信息。

總結

Krishan在 Google Play完全解決了在泰米爾語中擁有整個Android操作系統的問題:

我已經提到過,替換字體只是部分解決方案,它將僅顯示非連續字符,並且接合字符將無法正確呈現。而關於該應用程序的第二個解決方案對我來說卻不是公認的解決方案。正如我所期望的那樣,它提供了通過鍵入英語並轉換並引用網頁為例來撰寫泰米爾語文本的方法。謝謝您的努力和時間。
Michael Hampton
2012-07-23 04:14:55 UTC
view on stackexchange narkive permalink

您似乎正在描述問題4153,這是Android中的已知錯誤。

據報告,此問題已在Jelly Bean中解決。如果此屏幕截圖正確,則該問題應得到解決。 (我無法真正告訴自己,但我確實可以訪問Jelly Bean並可以從中進行屏幕截圖。)

ICS Test Page for Unicode

謝謝,這似乎不僅僅是一個錯誤,正如我所說的那樣,即使在製造商的某種干預下,泰米爾語渲染也可以在Android 2.3.3手機中正常工作。
2012年7月20日,我參加了Google的gDays,我目睹了Android JellyBean 4.1甚至在瀏覽器之外也顯示了泰米爾語字符。不幸的是,我無法再測試了。
帶著對這個問題的評論http://android.stackexchange.com/questions/26797/how-can-i-replace-stock-download-manager-that-google-play-uses我會說我能讀泰米爾語通過ThinkFree Office Mobile Viewer在網頁中顯示文本文件,SMS,聯繫人,文件名,DOCX文件。我觀察到泰盧固語,卡納達語,孟加拉語和印地語也應該相同。
Rajesh
2012-11-09 14:40:25 UTC
view on stackexchange narkive permalink

安裝Opera Mini Web瀏覽器

在Opera Mini Web瀏覽器中,鍵入“ about:Config”

為複雜腳本使用位圖字體:選擇“是”

您可以在任何品牌的手機中查看所有泰米爾字體的網站

致謝

這是瀏覽器內部的位圖,而不是操作系統範圍內的解決方案(例如,您將無法在SMS中鍵入或查看泰米爾語或其他印度字符)。順便說一句,您的建議已經在主要文章中提到:>“甚至在Android 4.0之前,Opera和其他少數瀏覽器都通過替換圖像而不是字符來做到這一點。”
Ghana
2013-03-15 14:23:33 UTC
view on stackexchange narkive permalink

您無需在Android系統上植根並替換字體。

將設備的固件替換為印度地區相似的固件,以正確呈現Devanagari字體。其他地區的固件無法正確渲染Devanagari字體。 Devanagari字體可以在印度地區的Android版本2.x上正確呈現。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...