42 votes

Comment faire en sorte qu'un appareil Android puisse afficher un rendu complexe des caractères Indic ?

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 ?

10voto

Zuul Points 8710

Téléphone enraciné

Android sous le dossier /system/fonts contient un fichier nommé "DroidSansFallback.ttf" censé contenir tous les caractères de la langue. Actuellement, il manque le support pour beaucoup d'entre eux, y compris le tamoul.

On peut toujours remplacer le fichier par un fichier contenant des caractères tamouls, ce qui permet d'utiliser le tamoul sur votre téléphone.

De XDA Developers Thread - Police d'indication de secours DroidSans Des utilisateurs ont essayé et utilisé avec succès Tamil sur leurs téléphones.

Pour appliquer cette méthode, vous devez disposer d'un accès Root à votre téléphone, afin d'accéder à l'interface utilisateur de l'appareil. /system et changer le fichier Fallback :

  • Lire Comment faire pour Rooter mon appareil ? si ton téléphone n'est pas encore enraciné.
  • Suivez Fil de discussion des développeurs XDA pour voir comment remplacer le fichier :

    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 : Le point de montage n'est pas le même pour tous les téléphones.


APP Android

Bien que la méthode ci-dessus puisse intéresser certains utilisateurs, je préfère un APP lorsqu'il est disponible.

En outre, le tamoul dispose d'un clavier de 247 caractères au total, alors que l'anglais n'en compte que 26. Cela devient donc un problème majeur lors de la saisie :

Voir Wikipédia : : Langue tamoule - Système d'écriture

L'actuel script tamoul se compose de 12 voyelles, 18 consonnes et d'un caractère spécial, le aytam. Les voyelles et les consonnes se combinent pour former 216 caractères composés, soit un total de 247 caractères (12 + 18 + 1 + (12 x 18)).

Grâce à Krishan et à son travail sur ce sujet, il existe déjà une application pour traiter les deux problèmes, l'utilisation du tamoul à l'échelle du système et un clavier qui peut être utilisé pour taper les caractères tamouls.

Lisez le billet de Krishan intitulé Police Tamil Unicode pour Android - Fonctionnement pour des informations détaillées sur le développement de cette solution.

Pour résumer

Krishan a développé et publié deux APPs à Google Play qui règlent complètement le problème d'avoir un système d'exploitation Android complet en tamoul :

4 votes

J'ai déjà mentionné que le remplacement de la police n'est qu'une solution partielle qui n'affichera que les caractères non conjoints et les caractères conjoints ne seront pas rendus correctement. Et la deuxième solution concernant l'application n'est pas une solution acceptée pour moi. Elle permet de composer un texte en tamoul en tapant en anglais et en convertissant et citant les pages web comme exemple n'est pas acceptable comme je l'ai déjà dit dans mon attente. En tout cas, merci pour vos efforts et votre temps.

3voto

Michael Hampton Points 2100

Vous semblez décrire numéro 4153 un bug connu dans Android.

Ce problème a été signalé comme résolu dans Jelly Bean. Si cette capture d'écran est correcte, alors le problème devrait être résolu. (Je ne peux pas vraiment le dire moi-même, mais j'ai accès à Jelly Bean et je peux faire des captures d'écran à partir de celui-ci).

ICS Test Page for Unicode

1 votes

Merci, il semble qu'il ne s'agisse pas seulement d'un bogue car j'avais indiqué que le rendu Tamil fonctionne même sur les téléphones Android 2.3.3 avec une sorte d'intervention du fabricant.

1 votes

Le 20 juillet 2012, j'ai assisté aux gDays de Google et j'ai pu constater qu'Android JellyBean 4.1 affichait les caractères tamouls même en dehors du navigateur. Malheureusement, je n'ai pas pu tester autre chose.

0 votes

Avec un commentaire sur la question Android.stackexchange.com/questions/26797/ Je dirais que je suis capable de lire le tamoul dans les pages web, les fichiers texte, les SMS, les contacts, les noms de fichiers, les fichiers DOCX grâce à ThinkFree Office Mobile Viewer. J'ai observé qu'il devrait en être de même pour le télougou, le kannada, le bengali et l'hindi.

1voto

Rajesh Points 11

Installer le navigateur web Opera Mini

Dans le navigateur Web Opera Mini, tapez "about:Config".

utiliser des polices bitmap pour les scripts complexes : Sélectionnez Oui.

Vous pouvez consulter tous les sites en caractères tamouls sur n'importe quelle marque de téléphone mobile.

Salutations

5 votes

Il s'agit d'un mappage binaire interne au navigateur et non d'une solution applicable à l'ensemble du système d'exploitation (vous ne pourrez pas taper ou voir les caractères tamouls ou autres caractères indicatifs dans les SMS, par exemple). En fait, ce que vous avez suggéré a déjà été mentionné dans le message principal : > "Opera et d'autres navigateurs peu nombreux ont fait cela même avant Android 4.0 en substituant une image au lieu d'un caractère."

0voto

Ghana Points 1

Vous n'avez pas besoin d'effectuer un rootage et de remplacer la police sur le système Android.

Remplacez le microprogramme de votre appareil par un microprogramme similaire à celui de la région indienne pour obtenir un rendu correct de la police Devanagari. Les microprogrammes des autres régions ne rendent pas correctement les polices Devanagari. Les polices Devanagari s'affichent correctement sur la version Android 2.x de la région indienne.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X