Por favor, disculpe la longitud de esta pregunta. Necesito explicar todo esto para ayudar a otros y evitar contribuyentes útiles para dar respuestas sin pedir aclaraciones.
Mi requisito en una línea: "habilitar un teléfono Android para que muestre los caracteres tamiles correctamente".
Elaboración: Tamil, como cualquier otro idioma indio, tiene un complejo sistema de representación de caracteres. A diferencia del inglés u otro script en latín, tiene un glifo (lo que ves en la pantalla) compuesto por más de un carácter. Android no tiene la capacidad de representar scripts tan complejos (con excepciones). Mi objetivo es saber cómo puedo proporcionar esa capacidad a un teléfono o tableta Android.
Poco fondo que he reunido hasta ahora: para mostrar un glifo en la pantalla, Android primero necesita un archivo de fuente adecuado. El dispositivo Android tiene una carpeta / sistema / fuentes que tiene pocas. El archivo más interesante en esa carpeta es el DroidSansFallback.ttf. Como su nombre indica, cuando el sistema de Android no puede encontrar un carácter en las fuentes del sistema (que podría ser DroidSans.ttf o DroidSans-Bold.ttf, etc.), recurre a la búsqueda en DroidSansFallback.ttf.
Al reemplazar un archivo de fuente adecuado de la PC (Latha.ttf o Lohit-Tamil.ttf, estas son fuentes para Tamil) y DroidSansFallback.ttf permitirá mostrar caracteres Tamil en el dispositivo. No es tan fácil de reemplazar e implica rootear el dispositivo y montar el sistema como grabable.
A pesar de esos problemas, incluso si se reemplaza el DroidSansFallback.ttf, los caracteres tamiles que se muestran no se representan correctamente. El carácter tamil "தி" es un conjunto de dos caracteres y, en lugar de aparecer como "தி", se mostrará como "த ி" sin espacio entre ellos. Aunque esto es suficiente para leer mensajes cortos, no se puede usar para leer libros, etc.
Desde Android 4.0 en adelante, Tamil y otros pocos idiomas son compatibles a través del navegador como se dice en la descripción general de la API de Android 4.x como se ve a continuación.
Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex
character support needed for combining glyphs) in WebView and the built-in Browser
Las palabras a tener en cuenta son "en WebView y el navegador incorporado", lo que significa que los caracteres tamiles se representarán perfectamente si se representa como contenido HTML y no se representarán de otra manera. Opera y otros pocos navegadores hicieron esto incluso antes de Android 4.0 sustituyendo imagen en lugar de carácter.
Me di cuenta de que en pocos dispositivos que se dirigen al mercado indio (por ejemplo: LG Optimus One, la mayoría de los teléfonos y tabletas Samsung) pueden mostrar Tamil correctamente tanto en el navegador como incluso en lugares fuera del navegador, como contactos, mensajes de texto, nombres de archivos, etc. Para mi sorpresa, lo hacen incluso en Android 2.3 en adelante. También noté que el mismo modelo dirigido a un país no indio que ejecuta la misma versión de Android no es compatible con la visualización de caracteres Tamil.
Esto me hizo investigar más y llegué a la conclusión de que Android (como otros sistemas operativos basados en Linux) depende de un motor de representación de fuentes para mostrar caracteres tan complejos. Los dos motores que encontré son Skia y Harfbuzz. Noté que LG usa skia y Samsung usa las bibliotecas Harfbuzz en sus dispositivos para brindar esta capacidad.
Encontré muchos sitios web que sugieren reemplazar estas bibliotecas y fuentes. No funcionó y se congela. Afortunadamente hice una copia de seguridad usando clockworkmod y, por lo tanto, restauré mi teléfono.
Aunque había explicado esto con tamil, esto es aplicable para la mayoría de los idiomas indios.
Aquí viene mi pregunta (si todavía está leyendo;)) Ahora, estoy seguro de que está claro que un archivo TTF debe estar presente para proporcionar caracteres y se requieren bibliotecas apropiadas (libskia.so o libharfbuzz.so) para representarlos correctamente. ¿Alguien sabe cómo estos fabricantes pueden proporcionar la capacidad? Incluso estoy listo para construir mi propia ROM desde AOSP (Android Open Source Project).