Як зробити пристрій Android для відображення складного відображення символів Indic?


42

Вибачте, будь ласка, тривалість цього питання. Мені потрібно пояснити все це для того, щоб допомогти іншим та уникати корисних дописувачів надати відповіді, не вимагаючи пояснень.

Моя вимога в одному рядку: "дозволити 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).


Cyanogenmod має можливості відображення текстів праворуч наліво. Skia є стандартним для візуалізації графіки. Результати будуть різними, якщо взяти одну бібліотеку Skia з одного ПЗУ та поставити її в іншу може бути катастрофічним, оскільки це потребує побудови з нуля, за допомогою джерела AOSP та заміни Skia на harfbuzz та перекомпіляцію (ви просто не можете "просто" запустити harfbuzz в інший ROM, який не побудований з цією бібліотекою - бібліотеки пов'язані між собою, тому якщо збірка ROM не знає harfbuzz, вона не працюватиме)
t0mm13b

1
@narayanan чомусь на веб-сайті m.oneindia.in/tamil ідеально тамілює в Chrome на Android 4.1.2. Що цей веб-сайт робить правильно, що інші не роблять?
FMFF

Відповіді:


9

Укорінений телефон

Android під папкою /system/fontsмістить файл з назвою "DroidSansFallback.ttf", який повинен містити всі мовні символи. Наразі йому не вистачає підтримки для багатьох, у тому числі тамілів.

Ви завжди можете замінити файл таким, який містить тамільські символи, таким чином дозволяючи використовувати таміл у вашому телефоні.

Користувачі спробували та успішно використовували тамільський апарат на своїх телефонах від теми розробників XDA - шрифту DroidSans Fallback Indic .

Щоб отримати доступ до цього способу, вам потрібен кореневий доступ до телефону, щоб отримати доступ до /systemфайлу резервного копіювання та змінити його:

  • Читайте як я виконую коріння свого пристрою? якщо ваш телефон ще не вкоренився.
  • Дотримуйтесь теми розробника XDA, щоб дізнатися, як замінити файл :

    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 приголосних та одного особливого символу - āytam. Голосні та приголосні поєднуються, утворюючи 216 складних символів, даючи в цілому 247 символів (12 + 18 + 1 + (12 x 18))


Завдяки Кришану та працює над цією темою, вже є додаток для вирішення обох питань, загальносистемного використання тамілів та клавіатури, за допомогою яких можна вводити тамільські символи.

Прочитайте публікацію Кришана під назвою Tamil Unicode Font for Android - Працюючи для отримання детальної інформації про розробку цього рішення.

Узагальнити

Кришан розробив і опублікував два додатки в Google Play, які повністю вирішують проблему існування цілої ОС Android у Тамілі:


4
Я вже згадував, що заміна шрифту - це лише часткове рішення, яке відображатиме лише непоєднувані символи, а символи кон'юкту не будуть відображатися належним чином. І друге рішення щодо програми - для мене не прийняте рішення. Це забезпечує спосіб складання тамільського тексту, ввівши англійською мовою та перетворивши та цитуючи веб-сторінки як приклад, неприйнятний, як я вже говорив у своїх очікуваннях. Будь-який спосіб дякую за ваші зусилля та час.
Нараянан

3

Здається, ви описуєте проблему 4153 , відому помилку в Android.

Про це питання повідомлялося як про вирішене в Jelly Bean. Якщо цей знімок екрана правильний, то проблему слід вирішити. (Я справді не можу сказати собі, але я маю доступ до Jelly Bean і можу робити знімки з нього.)

Тестова сторінка ICS для Unicode


1
Дякую, це видається не просто помилкою, як я вже заявив, що переведення Tamil працює навіть в телефонах Android 2.3.3, з певним втручанням від виробника.
Нараянан

1
20 липня 2012 року я відвідую gDays Google, і коли я був свідком Android JellyBean 4.1, відображав символи тамілів навіть поза браузером. На жаль, я більше нічого не міг перевірити.
Нараянан

Коментуючи питання android.stackexchange.com/questions/26797/…, я б сказав, що я можу читати тамільський веб-сторінки, текстові файли, SMS, контакти, імена файлів, DOCX файли через ThinkFree Office Mobile Viewer. Я зауважив, що це також має бути телугу, каннаду, бенгалі та хінді.
Нараянан

1

Встановіть веб-браузер Opera Mini

В веб-браузері Opera Mini введіть "about: Config"

використовувати шрифти растрових зображень для складних сценаріїв: Виберіть Так

Ви можете переглянути всі сайти шрифтом тамілу в будь-якому мобільному телефоні марки

З повагою


5
Це растрове вбудовування браузера і не є рішенням для всієї ОС (ви не зможете вводити та бачити тамільські та інші символи Indic у SMS-повідомленнях, наприклад). До речі, те, що ви запропонували, вже згадувалося в головному дописі:> "Opera та інші небагато браузерів робили це ще до Android 4.0, замінюючи зображення замість символу."

0

Вам не потрібно викорінювати та замінювати шрифт в системі Android.

Замініть прошивку свого пристрою на подібну вбудовану програму індійського регіону, щоб правильно відобразити шрифт Devanagari. Прошивка інших регіонів не відображає шрифти Devanagari правильно. Шрифти Devanagari правильно відображаються на версії Android 2.x.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.