Veuillez excuser la longueur de cette question. J'ai besoin d'expliquer tout cela pour aider les autres et pour éviter que des contributeurs utiles fournissent des réponses sans demander de clarifications.
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 complexe de rendu des caractères. Contrairement à l'anglais ou à d'autres script basés sur le latin, il a un glyphe (ce que vous voyez à l'écran) composé de plus d'un caractère. Android n'a pas la capacité de rendre des scripts aussi complexes (sauf exceptions). Mon objectif est de savoir comment je peux fournir une telle capacité à un téléphone ou une tablette Android.
Petit historique que j'ai recueilli jusqu'à présent : Pour afficher un glyphe à l'écran, Android a d'abord besoin d'un fichier de police approprié. L'appareil Android possède un dossier /system/fonts qui en compte peu. Le fichier le plus intéressant de ce dossier est le DroidSansFallback.ttf. Comme son nom l'indique, lorsque le système Android ne parvient pas à trouver un caractère dans les polices système (qui peuvent être DroidSans.ttf ou DroidSans-Bold.ttf, etc.), il se rabat sur la recherche dans DroidSansFallback.ttf.
En remplaçant un fichier de police approprié du PC (Latha.ttf ou Lohit-Tamil.ttf - ce sont des polices pour le tamoul) et DroidSansFallback.ttf permettra d'afficher les caractères tamouls dans l'appareil. Ce n'est pas si facile à remplacer et cela implique l'enracinement de l'appareil et le montage du système en écriture.
Malgré ces problèmes, même si le DroidSansFallback.ttf est remplacé, les caractères tamouls qui s'affichent ne sont pas rendus correctement. Le caractère tamoul "" est une conjonction de deux caractères et au lieu d'être affiché comme "", il sera affiché comme " " sans espace entre les deux. Bien que cela soit suffisant pour lire de courts messages, cela ne peut pas être utilisé pour lire des livres, etc.
À partir d'Android 4.0, le tamoul et d'autres langues sont supportés par le navigateur, comme indiqué dans l'aperçu de l'API d'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 "i
J'ai remarqué que dans quelques appareils qui ciblent le marché indien (ex : LG Optimus One, la plupart des téléphones et tablettes Samsung) sont capables d'afficher Tamil correctement à la fois dans le navigateur et même dans des endroits hors du navigateur comme dans les contacts, les messages texte, les noms de fichiers, etc. À ma grande surprise, ils le font même à partir d'Android 2.3. J'ai également remarqué que le même modèle destiné à un pays non indien et fonctionnant sous la même version d'Android ne prend pas en charge l'affichage des caractères tamouls.
Cela m'a poussé à approfondir mes recherches et j'en suis arrivé à la conclusion qu'Android (comme les autres systèmes d'exploitation basés sur Linux) dépend d'un moteur de rendu de police 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 les bibliothèques Harfbuzz dans leurs 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 entraîné le gel du téléphone. Heureusement, j'ai fait une sauvegarde en utilisant clockworkmod et j'ai donc restauré mon téléphone.
Bien que j'aie expliqué cela en 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 les caractères et qu'une bibliothèque appropriée (libskia.so ou libharfbuzz.so) est nécessaire pour les rendre 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 de AOSP (Android Open Source Project).
0 votes
Cyanogenmod a la capacité d'afficher le rendu des textes de droite à gauche. Skia est la norme pour le rendu des graphiques. Les résultats varieront, prendre une bibliothèque Skia d'une ROM et la mettre dans une autre peut être catastrophique car il faudrait construire à partir de zéro, en prenant la source AOSP, et remplacer Skia par harfbuzz et recompiler (Vous ne pouvez tout simplement pas "juste" déposer harfbuzz dans une autre ROM qui n'est pas construite avec cette bibliothèque - les bibliothèques sont liées, donc si la construction de la ROM n'est pas consciente de harfbuzz, cela ne fonctionnera pas)
1 votes
@narayanan pour une raison quelconque, le site m.oneindia.in/tamil rend le tamoul parfaitement dans Chrome sur Android 4.1.2. Qu'est-ce que ce site fait correctement que les autres ne font pas ?