Вибачте, будь ласка, тривалість цього питання. Мені потрібно пояснити все це для того, щоб допомогти іншим та уникати корисних дописувачів надати відповіді, не вимагаючи пояснень.
Моя вимога в одному рядку: "дозволити Android телефону правильно відображати тамільські символи".
Розробка: тамільська мова, як і будь-яка інша індійська мова, має складну систему відображення символів. На відміну від англійського чи іншого латинського сценарію, він має гліф (що ви бачите на екрані), що складається з декількох символів. Android не має можливості відображати такі складні сценарії (за винятком). Моя мета - знати, як я можу надати таку можливість Android-телефону або планшету.
Невеликий фон, який я зібрав поки що: Щоб відобразити гліф на екрані, Android спочатку потребує відповідного файлу шрифту. На пристрої Android є папка / система / шрифти, яких їх мало. Найцікавіший файл у цій папці - DroidSansFallback.ttf. Як випливає з назви, коли система Android не в змозі знайти символу в системних шрифтах (це можуть бути DroidSans.ttf або DroidSans-Bold.ttf тощо), вона повертається до пошуку в DroidSansFallback.ttf.
Замінивши відповідний файл шрифту з ПК (Latha.ttf або Lohit-Tamil.ttf - це шрифти для тамілу) і DroidSansFallback.ttf дозволить відображати символи тамілів у пристрої. Замінити її не так просто, вона передбачає вкорінення пристрою та встановлення системи настільки, як це можна записати.
Незважаючи на ці проблеми, навіть якщо DroidSansFallback.ttf замінено, відображені символи тамілів не відображаються належним чином. Тамільський символ "தி" - це поєднання двох символів, і замість того, щоб відображатися як "தி", він буде відображатися як "த ி" без проміжку між ними. Хоча цього достатньо для читання коротких повідомлень, його не можна використовувати для читання книг тощо.
З Android 4.0 на палатах тамільська та інші кілька мов підтримуються через браузер, як сказано в огляді API 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) залежить від механізму візуалізації шрифту для відображення таких складних символів. Два двигуни, на які я натрапив, - це Skia та Harfbuzz. Я помітив, що LG використовує skia, а Samsung використовує бібліотеки Harfbuzz у своїх пристроях, щоб досягти цієї можливості.
Я натрапив на багато веб-сайтів, які пропонують замінити ці бібліотеки та шрифти. Це не спрацювало і призводить до замерзання. На щастя, я створив резервну копію за допомогою годинникового годинника і, отже, відновив телефон.
Хоча я пояснив це з тамільською, це стосується більшості індійських мов.
Ось моє запитання (якщо ви все ще читаєте;)) Тепер, напевно, зрозуміло, що файл TTF повинен бути присутнім для надання символів, а для правильного відображення потрібні відповідні бібліотеки (libskia.so або libharfbuzz.so). Хтось знає, як ці виробники здатні забезпечити цю можливість? Я навіть готовий створити власний ROM з AOSP (Android Open Source Project).