Veuillez excuser la longueur de cette question. Je dois expliquer tout cela pour aider les autres et éviter aux contributeurs utiles de fournir une réponse sans demander d'explications.
Mon exigence en une ligne: "permettre à un téléphone Android d’afficher correctement les caractères tamouls".
Élaboration: le tamoul, comme toute autre langue indienne, possède un système de rendu de caractère complexe. Contrairement à l'anglais ou à un autre script basé sur le latin, le glyphe (ce que vous voyez à l'écran) est composé de plusieurs caractères. Android n'a pas la capacité de rendre de tels scripts complexes (avec des exceptions). Mon but est de savoir comment je peux fournir une telle capacité à un téléphone ou une tablette Android.
Petit arrière-plan que j'ai rassemblé jusqu'ici: Pour afficher un glyphe à l'écran, Android a d'abord besoin d'un fichier de police adapté. Le périphérique Android a un dossier / système / polices qui en contient quelques-uns. Le fichier le plus intéressant de ce dossier est le fichier DroidSansFallback.ttf. Comme son nom l'indique, lorsque le système Android ne parvient pas à trouver un caractère dans les polices système (il peut s'agir de DroidSans.ttf ou de DroidSans-Bold.ttf, etc.), il revient à le rechercher dans DroidSansFallback.ttf.
En remplaçant un fichier de police approprié à partir du PC (Latha.ttf ou Lohit-Tamil.ttf - il s’agit de polices pour le tamoul), DroidSansFallback.ttf permettra d’afficher des caractères tamouls dans l’appareil. Ce n'est pas si facile à remplacer et cela implique d'enraciner le périphérique et de monter le système en écriture.
Malgré ces problèmes, même si le fichier DroidSansFallback.ttf est remplacé, les caractères tamouls affichés ne sont pas correctement rendus. Le caractère tamoul "" est une conjonction de deux caractères et au lieu de s'afficher sous la forme "தி", il sera affiché sous la forme "" sans espace entre eux. Bien que cela soit suffisant pour lire des messages courts, il ne peut pas être utilisé pour lire des livres, etc.
À partir d'Android 4.0, le tamoul et d'autres langues sont prises en charge via un navigateur, comme indiqué dans la vue d'ensemble de l'API Android 4.x, comme indiqué ci-dessous.
Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex
character support needed for combining glyphs) in WebView and the built-in Browser
Les mots à noter sont "dans WebView et le navigateur intégré", ce qui signifie que les caractères tamouls seront parfaitement restitués s’ils sont au format HTML et ne sont pas rendus autrement. Opera et quelques autres navigateurs le faisaient même avant Android 4.0 en substituant image au lieu de caractère.
J'ai remarqué que, sur quelques appareils ciblant le marché indien (ex: LG Optimus One, la plupart des téléphones et tablettes Samsung), il est capable d'afficher correctement le tamoul dans un navigateur et même ailleurs que dans le navigateur, notamment dans les contacts, les messages texte, les noms de fichiers, etc. À ma grande surprise, ils le font même depuis Android 2.3. J'ai également remarqué que le même modèle ciblant un pays non indien exécutant la même version d'Android ne prend pas en charge l'affichage de caractères tamoul.
Cela m'a incité à approfondir mes recherches et à conclure qu'Android (comme tout autre système d'exploitation basé sur Linux) dépend d'un moteur de rendu des polices pour afficher des caractères aussi complexes. Les deux moteurs que j'ai rencontrés sont Skia et Harfbuzz. J'ai remarqué que LG utilise skia et Samsung utilise des bibliothèques Harfbuzz dans ses appareils pour apporter cette capacité.
Je suis tombé sur de nombreux sites Web suggérant de remplacer ces bibliothèques et polices. Cela n'a pas fonctionné et a pour résultat le gel. Heureusement, j'ai sauvegardé avec clockworkmod et j'ai donc restauré mon téléphone.
Bien que j'aie expliqué cela avec le tamoul, cela s'applique à la plupart des langues indiennes.
Voici ma question (si vous lisez encore;)) Maintenant, il est clair qu'un fichier TTF doit être présent pour fournir des caractères et qu'une bibliothèque appropriée (libskia.so ou libharfbuzz.so) est nécessaire pour les restituer correctement. Est-ce que quelqu'un sait comment ces fabricants sont capables de fournir cette capacité? Je suis même prêt à construire ma propre ROM à partir d'AOSP (Android Open Source Project).