Como fazer um dispositivo Android para exibir uma renderização complexa de caracteres do índice? -- languages campo com localization campo com fonts camp android Relacionado O problema

How to make an Android device to display complex rendering of Indic characters?


42
vote

problema

português

Por favor, desculpe o comprimento desta questão. Eu preciso explicar tudo isso para ajudar os outros e evitar contribuintes úteis para fornecer resposta sem pedir esclarecimentos.

Meu requisito em uma linha: "Para permitir que um telefone Android exiba os caracteres Tamil corretamente".

elaboração: Tamil, como qualquer outra língua indiana tem sistema de renderização complexo de caracteres. Ao contrário do inglês ou outro roteiro baseado em latim, ele tem glifo (o que você vê na tela) composto por mais de um caractere. O Android não tem capacidade de render tais scripts complexos (com exceções). Meu objetivo é saber como posso fornecer tal habilidade para um telefone Android ou tablet.

Pequeno fundo que eu reuni até agora: Para exibir um glifo na tela, o Android primeiro precisa de um arquivo de fonte adequado. O dispositivo Android tem uma pasta / System / Fonts que tem poucos deles. O arquivo mais interessante nessa pasta é o droidsansansfallback.ttf. Como o nome sugere, quando o sistema Android não consegue encontrar um caractere em fontes do sistema (que pode ser droidsans.ttf ou droidsans-bold.ttf etc), ele cai para pesquisar no droidsansansfallback.ttf.

Substituindo um arquivo de fonte adequado do PC (Latha.ttf ou Lohit-Tamil.ttf - Estas são fontes para Tamil) e Droidsansansfallback.ttf permitirá exibir caracteres Tamil no dispositivo. Não é tão fácil substituir e envolve enraizar o dispositivo e montar o sistema como gravável.

Apesar desses problemas, mesmo que o droidsansansfallback.ttf seja substituído, os caracteres Tamil exibidos não são prestados corretamente. O caractere tâmil "தி" é um conjunto de dois caracteres e, em vez de ser exibido como "தி", ele será exibido como "த ி" sem espaço no meio. Embora isso seja suficiente para ler mensagens curtas, ela não pode ser usada para ler livros etc.

do Android 4.0 em alas, Tamil e outros poucos idiomas são suportados através do navegador como disse no Android 4.x API Visão geral, conforme visto abaixo.

  Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex character support needed for combining glyphs) in WebView and the built-in Browser    

As palavras a notar é "no webview e o navegador interno", o que significa que os caracteres Tamil serão renderizados perfeitamente se forem renderizados como conteúdo HTML e não serão prestados de outra forma. Ópera e outros poucos navegadores fizeram isso mesmo antes do Android 4.0 substituindo a imagem em vez de caractere.

notei que em poucos dispositivos que alvo o mercado indiano (ex: LG Optimus um, a maioria dos telefones e tablets Samsung) é capaz de exibir Tamil corretamente tanto no navegador quanto mesmo em lugares fora do navegador, como em contatos, mensagens de texto, Nomes de arquivos, etc. Para minha surpresa, eles fazem isso mesmo no Android 2.3 em diante. Eu também notei que o mesmo modelo direcionando o país não indiano que executa a mesma versão do Android não suporta exibição de caracteres Tamil.

Isso me fez investigar mais e chegou a uma conclusão de que o Android (como outro sistema operacional baseado no Linux) depende de um mecanismo de renderização de fonte para exibir caracteres tão complexos. Os dois motores que eu encontrei são Skia e Harfbuzz. Eu notei que a LG usa Skia e Samsung usa bibliotecas Harfbuzz em seus dispositivos para trazer essa habilidade.

Eu encontrei muitos sites sugerindo substituir essas bibliotecas e fontes. Não funcionou e resulta em congelamento. Felizmente eu backup usando clockworkmod e, portanto, restaurei meu telefone.

Embora eu tivesse explicado isso com Tamil, isso é aplicável para a maioria das línguas indianas.

Aqui vem a minha pergunta (se você ainda estiver lendo;)) Agora, certamente está claro que um arquivo TTF deve estar presente para fornecer caracteres e uma bibliotecas apropriadas (libskia.so ou libharfbuzz.so) para torná-los corretamente. Alguém sabe como esses fabricantes são capazes de fornecer a capacidade? Estou mesmo pronto para construir minha própria ROM do AOSP (Android Open Source Project).

english

Please excuse the length of this question. I need to explain all this to help others and to avoid helpful contributors to provide answer without asking clarifications.

My requirement in one line: "to enable an Android phone to display Tamil characters properly".

Elaboration: Tamil, like any other Indian language has complex character rendering system. Unlike English or other Latin based script, it has glyph (what you see in screen) composed of more than one character. Android does not have ability to render such complex scripts (with exceptions). My aim is to know how I can provide such an ability to an Android phone or tablet.

Little background that I gathered so far: To display a glyph in screen, Android first needs a suitable font file. Android device has a folder /system/fonts which has few of them. The most interesting file in that folder is the DroidSansFallback.ttf. As the name suggests, when Android's system fails to find a character in system fonts (that could be DroidSans.ttf or DroidSans-Bold.ttf etc) it falls back to search it in DroidSansFallback.ttf.

By replacing a suitable font file from PC (Latha.ttf or Lohit-Tamil.ttf - these are fonts for Tamil) and DroidSansFallback.ttf will enable to display Tamil characters in the device. It is not so easy to replace and it involves rooting the device and mounting the system as writable.

In spite of those troubles, even if the DroidSansFallback.ttf is replaced, the Tamil characters that are displayed are not rendered properly. The Tamil character "xe0xaexa4xe0xaexbf" is a conjunct of two characters and instead of getting displayed as "xe0xaexa4xe0xaexbf", it will be displayed as "xe0xaexa4 xe0xaexbf" without space in between. Though this is enough to read short messages, it cannot be used to read books etc.

From Android 4.0 on wards, Tamil and other few languages are supported through browser as said in Android 4.x API overview as seen below.

Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex character support needed for combining glyphs) in WebView and the built-in Browser 

The words to notice is "in WebView and the built-in Browser", which means that Tamil characters will be rendered perfectly if it is rendered as HTML content and will not be rendered otherwise. Opera and other few browsers did this even before Android 4.0 by substituting image instead of character.

I noticed that in few devices that target Indian market (ex: LG Optimus One, most of Samsung phones and tablets) are able to display Tamil properly both in browser and even in places out of browser like in contacts, text messages, file names etc. To my surprise they do this even in Android 2.3 onwards. I also noticed that the same model targeting non-Indian country running same version of Android does not support Tamil character display.

This made me to investigate further and reached a conclusion that Android (as other Linux based OS) depends on a font rendering engine to display such complex characters. The two engines that I came across are Skia and Harfbuzz. I noticed LG uses skia and Samsung uses Harfbuzz libraries in their devices to bring this ability.

I came across many websites suggesting to replaces these libraries and fonts. It did not work and results in freezing. Fortunately I backed up using clockworkmod and hence I restored my phone.

Though I had explained this with Tamil, this is applicable for most of the Indian languages.

Here comes my question (if you are still reading;) ) Now, far sure it is clear that a TTF file should be present to provide characters and an appropriate libraries (libskia.so or libharfbuzz.so) are required to render them correctly. Does any one know how these manufacturers are able to provide the ability? I am even ready to build my own ROM from AOSP (Android Open Source Project).

        
   
   

Lista de respostas

9
 
vote

telefone enraizado

Android sob a pasta ABCDEFGHIJKLMNABCDEFGHIJKLMN0 Contém um arquivo chamado "droidsansansfallback.ttf" deve conter todos os caracteres de idioma. Atualmente, falta suporte para muitos, incluindo Tamil.

Pode-se sempre substituir o arquivo por um que contém caracteres Tamil, permitindo o uso de Tamil no seu telefone.

de Desenvolvedores XDA - Droidsans Fallback Ind Font , Usuários tentei e usei tâmil com sucesso em seus telefones.

  • Baixe o droidsansansfallback.ttf arquivo < / li >.
  • Baixe o original dioidhindi.ttf arquivo

Para confirmar este método, você precisa de acesso root ao seu telefone, a fim de acessar o ABCDEFGHIJKLMNABCDEFGHIJKLMN1 e alterar o arquivo de fallback:

  • ler Como faço para enraizar meu dispositivo? Se o seu telefone ainda não estiver enraizado.
  • Siga XDA desenvolvedores thread para ver como substitua o arquivo :

      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    

    Nota: ponto de montagem não é o mesmo para todos os telefones.


app android

Enquanto o método acima pode atrair alguns usuários, prefiro um aplicativo quando disponível.

Além disso, Tamil tem um teclado com um total de 247 caracteres, enquanto o inglês só precisa de 26 anos. Então isso se torna um grande problema ao digitar:

ver Wikipedia :: Tamil Language - Sistema de escrita

.

O script tâmil atual consiste em 12 vogais, 18 consoantes e um caractere especial, o āytam. As vogais e consoantes se combinam para formar 216 caracteres compostos, dando um total de 247 caracteres (12 + 18 + 1 + (12 x 18))


Graças a Krishan, e é o trabalho sobre este assunto, já há um aplicativo disponível para lidar com ambos os problemas, o uso do sistema amplo de Tamil, e um teclado que pode ser usado para digitar caracteres Tamil.

Leia a postagem de Krishan intitulada fonte Unicode para Android - trabalhando Para informações detalhadas sobre o desenvolvimento desta solução.

para resumir

Krishan desenvolveu e publicou dois aplicativos em Google Play que lida completamente com o problema de ter um sistema operacional Android inteiro em Tamil:

  • Teclado Tamil Unicode < / p >.

    Tabeceiro Tamil Unicode - tela de impressão

  • tamil unicode fonte

    tâmil unicode fonte - tela de impressão

 

Rooted Phone

Android under the folder /system/fonts contains a file named "DroidSansFallback.ttf" supposed to contain all the language characters. Currently it lacks support for many, including Tamil.

One can always replace the file with one that contains Tamil characters, thus allowing the usage of Tamil on your phone.

From XDA Developers Thread - DroidSans Fallback Indic Font, users have tried and successfully used Tamil on their phones.

  • Download the DroidSansFallback.ttf file
  • Download the original DroidHindi.ttf file

To acomplish this method, you need root access to your phone, in order to access the /system and change the Fallback file:

  • Read How do I root my device? if your phone isn't rooted yet.
  • Follow XDA Developers thread to see how to replace the file:

    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 

    Note: mount point isn't the same for all phones.


Android APP

While the above method may appeal to some users, I do prefer an APP when available.

Besides, Tamil has a keyboard with a total of 247 characters, while the English one only needs 26. So this becomes a major problem when typing:

See Wikipedia :: Tamil language - Writing System

The current Tamil script consists of 12 vowels, 18 consonants and one special character, the xc4x81ytam. The vowels and consonants combine to form 216 compound characters, giving a total of 247 characters (12 + 18 + 1 + (12 x 18))


Thanks to Krishan, and is work on this subject, there's already an APP available to deal with both issues, the system wide usage of Tamil, and a keyboard that can be used to type Tamil Characters.

Read Krishan's post entitled Tamil Unicode Font for Android xe2x80x93 Working for detailed information about the development of this solution.

To summarize

Krishan developed and published two APPs at Google Play that completely deal with the problem of having an entire Android OS in Tamil:

  • Tamil Unicode Keyboard

    Tamil Unicode Keyboard - print screen

  • Tamil Unicode Font

    Tamil Unicode Font - print screen

 
 
 
 
3
 
vote

Você parece estar descrevendo edição 4153 , um Bug conhecido no Android.

Esta questão foi relatada como resolvida em geléia. Se esta captura de tela estiver correta, o problema deve ser resolvido. (Eu não posso realmente dizer a mim mesmo, mas eu tenho acesso ao feijão de geléia e posso fazer screenshots dele.)

ICS Página de teste para Unicode

 

You appear to be describing issue 4153, a known bug in Android.

This issue has been reported as resolved in Jelly Bean. If this screenshot is correct, then the issue should be resolved. (I can't really tell myself, but I do have access to Jelly Bean and can make screenshots from it.)

ICS Test Page for Unicode

 
 
     
     
1
 
vote

Instale o navegador da Web Opera Mini

no Tipo de navegador da Web Opera Mini "Sobre: ​​Config"

Use fontes de bitmap para scripts complexos: selecione Sim

Você pode ver todos os sites na fonte Tamil em qualquer telefone celular da marca

Atenciosamente

 

Install Opera Mini web Browser

In Opera Mini Web Browser type "about:Config"

use bitmap fonts for complex scripts : Select Yes

You can view all sites in tamil font in any brand mobile phone

Regards

 
 
 
 
0
 
vote

Você não precisa roar e substituir a fonte no sistema Android.

Substitua o firmware do seu dispositivo com firmware similar da região indiana para renderizar corretamente a fonte Devanagari. O firmware de outras regiões não tornam as fontes devanagari corretamente. Devanagari fontes renderizam corretamente na versão do Android da região indiana 2.x.

 

You do not need to root and replace the font on Android system.

Replace the firmware of your device with similar Indian region's firmware to render the Devanagari font correctly. Other regions' firmware do not render the Devanagari fonts correctly. Devanagari fonts correctly render on Indian Region's Android version 2.x.

 
 

Perguntas relacionadas

3  Qual é a fonte chinesa padrão no Android?  ( What is the default chinese font in android ) 
Qual é a fonte chinesa padrão no Android e onde eles estão armazenados para que eu possa obter os arquivos de fonte? ...

1  Aplicativo para alterar fontes no Android 4.3  ( Application for changing fonts in android 4 3 ) 
Existe algum appiation pelo qual você pode alterar as fontes do seu Android, que também suporta linguagem grega? Unfortunatrlly, eu não possuo uma marca bem...

3  Como substituir a fonte do sistema de uma guia Galaxy 7.7?  ( How to replace system font of a galaxy tab 7 7 ) 
Como eu substituo a fonte do sistema padrão em uma guia Galaxy 7.7, por um .ttf fonte? ...

1  Nexus 10 personagens de tablet ilegíveis  ( Nexus 10 tablet characters illegible ) 
Eu instalei dois aplicativos no meu tablet Nexus 10 e os personagens aparecem como caixas com X's através deles como mostrado abaixo. Eu entrei em contato com...

-1  Eu estou tendo Xolo Play Smartphone. Eu quero apoiar a fonte Gujarati. Como eu posso fazer isso? [duplicado]  ( I am having xolo play smartphone i want to support it gujarati font how can i ) 
. Esta pergunta já tem respostas aqui : Como posso instalar fontes personalizadas no Android? [Duplic...

2  Existe uma maneira de formatar números de fonte no Nexus One / Nexus S?  ( Is there a way to format numbers font in nexus one nexus s ) 
Eu amo ver números na fonte da Geórgia e adoraria vê-los formatados automaticamente naquela fonte! Se você conhece essas dicas, por favor, compartilhe! upd...

11  Como pode instalar uma fonte Hindi no Android 2.1?  ( How can install a hindi font in android 2 1 ) 
Eu tenho um Samsung Galaxy S GT-I9000 e quero instalar uma fonte hindi nele. Como posso fazer isso? ...

42  Como fazer um dispositivo Android para exibir uma renderização complexa de caracteres do índice?  ( How to make an android device to display complex rendering of indic characters ) 
Por favor, desculpe o comprimento desta questão. Eu preciso explicar tudo isso para ajudar os outros e evitar contribuintes úteis para fornecer resposta sem ...

3  Como ajudar os usuários do Android com capacidade reduzida de ver  ( How to help android users with reduced ability to see ) 
O que podemos fazer no telefone Android para ajudar os usuários cuja capacidade de ver é reduzida? Para ser claro, eles não são pessoas cegas, eles são apen...

7  Existe uma preferência de tamanho de fonte acessível ao usuário?  ( Is there a user accessible font size preference ) 
Eu gostaria de alterar o tamanho da fonte durante todo o sistema operacional, não apenas em um aplicativo ou em uma tela. Existe uma maneira de fazer isso? ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.