請原諒這個問題的長度。我需要解釋所有這些信息,以幫助他人,並避免有用的貢獻者在不提出澄清的情況下提供答案。
我的要求是:“使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。