Por favor, desculpe o comprimento desta pergunta. Preciso explicar tudo isso para ajudar os outros e evitar que colaboradores úteis forneçam respostas sem pedir esclarecimentos.
Minha exigência em uma linha: "ativar um telefone Android para exibir caracteres tamil corretamente".
Elaboração: o tâmil, como qualquer outra língua indiana, possui um complexo sistema de renderização de caracteres. Ao contrário do inglês ou de outro script latino, ele possui um glifo (o que você vê na tela) composto por mais de um caractere. O Android não tem capacidade de renderizar scripts tão complexos (com exceções). Meu objetivo é saber como posso fornecer essa capacidade para um telefone ou tablet Android.
Pouco conhecimento que reuni até agora: para exibir um glifo na tela, o Android precisa primeiro de um arquivo de fonte adequado. O dispositivo Android possui uma pasta / sistema / fontes com poucos deles. O arquivo mais interessante nessa pasta é o DroidSansFallback.ttf. Como o nome sugere, quando o sistema do Android falha em encontrar um caractere nas fontes do sistema (que pode ser DroidSans.ttf ou DroidSans-Bold.ttf etc), ele volta a procurá-lo no DroidSansFallback.ttf.
Ao substituir um arquivo de fonte adequado do PC (Latha.ttf ou Lohit-Tamil.ttf - essas são fontes para o Tamil) e o DroidSansFallback.ttf permitirá exibir caracteres tâmeis no dispositivo. Não é tão fácil de substituir e envolve fazer o root do dispositivo e montar o sistema como gravável.
Apesar desses problemas, mesmo que o DroidSansFallback.ttf seja substituído, os caracteres tâmeis exibidos não serão renderizados corretamente. O caractere tâmil "தி" é um conjunto de dois caracteres e, em vez de ser exibido como "தி", será exibido como "த without" sem espaço no meio. Embora isso seja suficiente para ler mensagens curtas, ele não pode ser usado para ler livros etc.
A partir do Android 4.0 nas divisões, o Tamil e outros idiomas são suportados pelo navegador, conforme mencionado na visão geral da API do Android 4.x, como mostrado 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 serem observadas estão "no WebView e no navegador interno", o que significa que os caracteres tâmeis serão renderizados perfeitamente se forem renderizados como conteúdo HTML e não serão renderizados de outra forma. O Opera e outros poucos navegadores fizeram isso antes do Android 4.0, substituindo imagem em vez de caractere.
Notei que em alguns dispositivos que visam o mercado indiano (por exemplo: LG Optimus One, a maioria dos telefones e tablets Samsung) são capazes de exibir o Tamil adequadamente no navegador e até mesmo em locais fora do navegador, como contatos, mensagens de texto, nomes de arquivos etc. Para minha surpresa, eles fazem isso mesmo no Android 2.3 em diante. Também notei que o mesmo modelo de país não indiano que executa a mesma versão do Android não suporta a exibição de caracteres tâmeis.
Isso me levou a investigar mais e chegou à conclusão de que o Android (como outro sistema operacional baseado em Linux) depende de um mecanismo de renderização de fontes para exibir caracteres tão complexos. Os dois motores que encontrei são o Skia e o Harfbuzz. Notei que a LG usa o skia e a Samsung usa as bibliotecas Harfbuzz em seus dispositivos para trazer essa capacidade.
Me deparei com muitos sites sugerindo substituir essas bibliotecas e fontes. Não funcionou e resulta em congelamento. Felizmente fiz backup usando o clockworkmod e, portanto, restaurei meu telefone.
Embora eu tenha explicado isso com o tâmil, isso é aplicável à maioria das línguas indianas.
Aqui está minha pergunta (se você ainda está lendo;)) Agora, com certeza está claro que um arquivo TTF deve estar presente para fornecer caracteres e são necessárias bibliotecas apropriadas (libskia.so ou libharfbuzz.so) para renderizá-las corretamente. Alguém sabe como esses fabricantes são capazes de fornecer a capacidade? Estou pronto para criar minha própria ROM a partir do AOSP (Android Open Source Project).