Пожалуйста, извините за длину этого вопроса. Мне нужно объяснить все это, чтобы помочь другим и избежать того, чтобы полезные участники давали ответ, не спрашивая разъяснений.
Мое требование в одной строке: «чтобы телефон Android правильно отображал тамильские символы».
Проработка: Тамильский, как и любой другой индийский язык, имеет сложную систему рендеринга символов. В отличие от английского или другого письма на основе латиницы, в нем есть глиф (то, что вы видите на экране), состоящий из более чем одного символа. У Android нет возможности отображать такие сложные скрипты (за исключениями). Моя цель — узнать, как я могу обеспечить такую возможность для телефона или планшета Android.
Небольшая предыстория, которую я собрал до сих пор: чтобы отобразить глиф на экране, Android сначала нужен подходящий файл шрифта. На устройстве Android есть папка /system/fonts , в которой их немного. Самый интересный файл в этой папке — DroidSansFallback.ttf. Как следует из названия, когда системе Android не удается найти символ в системных шрифтах (это может быть DroidSans.ttf или DroidSans-Bold.ttf и т. д.), она возвращается к поиску в DroidSansFallback.ttf.
Заменив подходящий файл шрифта с ПК (Latha.ttf или Lohit-Tamil.ttf — это шрифты для тамильского языка) и DroidSansFallback.ttf, вы сможете отображать тамильские символы на устройстве. Его не так просто заменить, и он включает в себя рутирование устройства и монтирование системы как доступной для записи.
Несмотря на эти проблемы, даже при замене DroidSansFallback.ttf отображаемые тамильские символы не отображаются должным образом. Тамильский символ «தி» представляет собой соединение двух символов, и вместо того, чтобы отображаться как «தி», он будет отображаться как «த ி» без пробела между ними. Хотя этого достаточно для чтения коротких сообщений, его нельзя использовать для чтения книг и т. д.
Начиная с Android 4.0 и выше, тамильский и несколько других языков поддерживаются через браузер, как указано в обзоре API Android 4.x, как показано ниже.
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 в своих устройствах, чтобы реализовать эту возможность.
Я наткнулся на множество сайтов, предлагающих заменить эти библиотеки и шрифты. Это не сработало и привело к зависанию. К счастью, я сделал резервную копию с помощью clockworkmod и, следовательно, восстановил свой телефон.
Хотя я объяснил это на тамильском языке, это применимо к большинству индийских языков.
А вот и мой вопрос (если вы все еще читаете ;)) Теперь, конечно, ясно, что файл TTF должен присутствовать для предоставления символов, и для их правильного отображения требуются соответствующие библиотеки (libskia.so или libharfbuzz.so). Кто-нибудь знает, как эти производители могут предоставить такую возможность? Я даже готов собрать свой собственный ПЗУ из AOSP (Android Open Source Project).
Android в папке /system/fonts
содержит файл с именем «DroidSansFallback.ttf», который должен содержать все языковые символы. В настоящее время многие из них не поддерживаются, включая тамильский.
Всегда можно заменить файл файлом, содержащим символы тамильского языка, что позволяет использовать тамильский язык на вашем телефоне.
Из ветки разработчиков XDA — DroidSans Fallback Indic Font пользователи пробовали и успешно использовали тамильский язык на своих телефонах.
Чтобы выполнить этот метод, вам нужен root-доступ к вашему телефону, чтобы получить доступ /system
и изменить резервный файл:
Подпишитесь на ветку XDA Developers , чтобы узнать, как заменить файл :
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
Примечание: точка подключения не одинакова для всех телефонов.
Хотя описанный выше метод может понравиться некоторым пользователям, я предпочитаю приложение, когда оно доступно.
Кроме того, в тамильской клавиатуре всего 247 символов, а в английской всего 26. Таким образом, это становится серьезной проблемой при наборе текста:
См. Википедию :: Тамильский язык - Система письма
Текущий тамильский сценарий состоит из 12 гласных, 18 согласных и одного специального символа, айтам. Гласные и согласные объединяются, образуя 216 составных символов, всего 247 символов (12 + 18 + 1 + (12 x 18))
Благодаря Кришану и работе над этой темой уже есть приложение для решения обеих проблем, общесистемного использования тамильского языка и клавиатуры, которую можно использовать для ввода тамильских символов.
Прочтите сообщение Кришана под названием Tamil Unicode Font for Android — Working , чтобы получить подробную информацию о разработке этого решения.
Кришан разработал и опубликовал в Google Play два приложения , которые полностью решают проблему наличия всей ОС Android на тамильском языке:
Похоже, вы описываете проблему 4153 , известную ошибку в Android.
Сообщается, что эта проблема решена в Jelly Bean. Если этот снимок экрана правильный, проблема должна быть решена. (Я не могу сказать себе, но у меня есть доступ к Jelly Bean, и я могу делать из него скриншоты.)
Установите веб-браузер Opera Mini
В веб-браузере Opera Mini введите «about: Config»
использовать растровые шрифты для сложных сценариев: выберите «Да».
Вы можете просматривать все сайты тамильским шрифтом на мобильном телефоне любой марки.
С уважением
Вам не нужно рутировать и заменять шрифт в системе Android.
Замените прошивку вашего устройства аналогичной прошивкой для индийского региона, чтобы правильно отобразить шрифт Devanagari. Прошивки других регионов неправильно отображают шрифты Devanagari. Шрифты деванагари правильно отображаются на Android версии 2.x в индийском регионе.
т0мм13б
ФМФФ