Как заставить Android-устройство отображать сложный рендеринг индикативных символов?

Извините, длина этого вопроса. Мне нужно объяснить все это, чтобы помочь другим, и избегать полезных помощников, чтобы дать ответ, не спрашивая разъяснений.

Мои требования в одной строке: «чтобы телефон 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 на подставках, Tamil и другие несколько языков поддерживаются через браузер, как показано в обзоре 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), можно правильно отображать Tamil как в браузере, так и в местах вне браузера, таких как контакты, текстовые сообщения, имена файлов и т. д. К моему удивлению, они делают это даже в Android 2.3. Я также заметил, что та же модель, ориентированная на неиндийскую страну, использующую ту же версию Android, не поддерживает отображение символов тамилов.

Это заставило меня продолжить исследование и пришел к выводу, что Android (как и другая ОС на базе Linux) зависит от механизма рендеринга шрифтов для отображения таких сложных символов. Два двигателя, с которыми я столкнулся, - Skia и Harfbuzz. Я заметил, что LG использует skia, и Samsung использует библиотеки Harfbuzz в своих устройствах, чтобы реализовать эту способность.

Я наткнулся на многие сайты, предлагая заменить эти библиотеки и шрифты. Это не сработало и приводит к замерзанию. К счастью, я сделал резервную копию с использованием clockworkmod, и поэтому я восстановил свой телефон.

Хотя я объяснил это тамильским, это применимо для большинства индийских языков.

Вот мой вопрос (если вы все еще читаете;)) Теперь, конечно, ясно, что для предоставления символов должен присутствовать TTF-файл для предоставления символов, а для их правильного отображения требуются соответствующие библиотеки (libskia.so или libharfbuzz.so). Кто-нибудь знает, как эти производители могут предоставить эту способность? Я даже готов создать собственное ПЗУ из AOSP (Android Open Source Project).

42 голоса | спросил Narayanan 6 J000000Friday12 2012, 15:10:29

4 ответа


9

Корневой телефон

Android в папке /system/fonts содержит файл с именем «DroidSansFallback.ttf», который должен содержать все символы языка. В настоящее время ему не хватает поддержки многим, в том числе тамильским.

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

Из XDA Developers Thread - DroidSans Fallback Indic Font , пользователи попытались и успешно использовали Тамил на своих телефонах.

Чтобы выполнить этот метод, вам нужен root-доступ к вашему телефону, чтобы получить доступ к /system и изменить файл Fallback:

  • Прочитайте Как я могу подключить свое устройство? , если ваш телефон еще не укоренен.
  • Следуйте поток разработчиков 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

Хотя вышеупомянутый метод может понравиться некоторым пользователям, я предпочитаю APP, когда он доступен.

Кроме того, у Тамила есть клавиатура с общим количеством 247 символов, а английскому - только 26. Таким образом, это становится серьезной проблемой при вводе:

См. Википедия :: Тамильский язык - Система письма

  

Текущий тамильский сценарий состоит из 12 гласных, 18 согласных и одного специального персонажа, Ä yam. Гласные и согласные объединяются, чтобы сформировать 216 составных символов, давая в общей сложности 247 символов (12 + 18 + 1 + (12 x 18))


Благодаря Krishan и работа над этой темой, уже есть APP для решения обеих проблем, системного использования тамилов и клавиатуры, которые могут использоваться для ввода символов тамилов.

Прочтите сообщение Кришана под названием шрифт Tamil Unicode для Android â «Работа для получения подробной информации о разработке этого решения.

Подводя итоги

Кришан разработал и опубликовал два приложения на Google Play . которые полностью касаются проблемы наличия целой ОС Android на тамильском языке:

ответил Zuul 23 J000000Monday12 2012, 01:09:25
3

Кажется, вы описываете вопрос 4153 , Известная ошибка в Android.

Эта проблема была сообщена как разрешенная в Jelly Bean. Если этот снимок экрана верен, проблема должна быть решена. (Я не могу сказать сам, но у меня есть доступ к Jelly Bean и вы можете сделать скриншоты из него.)

Страница испытаний ICS для Юникода

ответил Michael Hampton 23 J000000Monday12 2012, 03:14:55
1

Установить веб-браузер Opera Mini

В Opera Mini Web Browser введите «about: Config»

использовать растровые шрифты для сложных скриптов: выберите Да

Вы можете просмотреть все сайты в шрифте tamil в любом мобильном телефоне бренда

Привет

ответил Rajesh 9 52012vEurope/Moscow11bEurope/MoscowFri, 09 Nov 2012 12:40:25 +0400 2012, 12:40:25
0

Вам не нужно корневать и заменять шрифт в системе Android.

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

ответил Ghana 15 MarpmFri, 15 Mar 2013 13:23:32 +04002013-03-15T13:23:32+04:0001 2013, 13:23:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132