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


42

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).


CyanogenMod a la capacité d'afficher le rendu des textes de droite à gauche. Skia est standard pour le rendu des graphiques. Les résultats varieront. Prendre une bibliothèque Skia d’une ROM et la placer 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 simplement 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 au courant de Harfbuzz, cela ne fonctionnera pas)
t0mm13b

1
@narayanan pour une raison quelconque, le site m.oneindia.in/tamil restitue parfaitement le tamil dans Chrome sous Android 4.1.2. Qu'est-ce que ce site fait correctement que les autres ne le font pas?
FMFF

Réponses:


9

Téléphone enraciné

Android sous le dossier /system/fontscontient un fichier nommé "DroidSansFallback.ttf" censé contenir tous les caractères de la langue. Actuellement, il manque de soutien pour beaucoup, y compris le tamoul.

On peut toujours remplacer le fichier par un fichier contenant des caractères tamouls, permettant ainsi l’utilisation du tamoul sur votre téléphone.

Du fil des développeurs XDA - DroidSans Fallback Indic Font , les utilisateurs ont essayé et utilisé le tamoul avec succès sur leurs téléphones.

Pour exécuter cette méthode, vous devez avoir un accès root sur votre téléphone afin de pouvoir accéder au /systemfichier de remplacement et le modifier:

  • Lire Comment rooter mon appareil? si votre téléphone n'est pas encore enraciné.
  • Suivez le fil XDA Developers 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
    

    Remarque: 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 plaire à certains utilisateurs, je préfère une application lorsque celle-ci est disponible.

De plus, le tamoul a un clavier avec un total de 247 caractères, tandis que l'anglais a seulement besoin de 26 caractères. Cela devient donc un problème majeur lorsque vous tapez:

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

L'écriture tamoule actuelle comprend 12 voyelles, 18 consonnes et un caractère spécial, l'ytam. Les voyelles et les consonnes se combinent pour former 216 caractères composés, ce qui donne un total de 247 caractères (12 + 18 + 1 + (12 x 18))


Grâce à Krishan et à ses travaux sur ce sujet, il existe déjà une application permettant de traiter les deux problèmes, l’utilisation du tamoul à l’échelle du système et un clavier permettant de taper des caractères tamouls.

Lisez l'article de Krishan intitulé Tamil Unicode Font for Android - Working pour des informations détaillées sur le développement de cette solution.

Résumer

Krishan a développé et publié deux applications sur Google Play qui traitent complètement du problème de disposer d'un système d'exploitation Android complet en tamoul:


4
J'ai déjà mentionné que le remplacement de la police n'est qu'une solution partielle qui affichera uniquement les caractères non-conjoints et que les caractères conjoints ne seront pas restitués correctement. Et la deuxième solution concernant l'application n'est pas une solution acceptée pour moi. Il fournit un moyen de composer un texte en tamoul en saisissant en anglais et en convertissant et citant les pages Web à titre d'exemple, ce n'est pas acceptable, comme je l'avais déjà dit dans mes attentes. De toute façon merci pour vos efforts et votre temps.
Narayanan

3

Vous semblez décrire le problème 4153 , un bogue connu sous Android.

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

Page de test ICS pour Unicode


1
Merci, cela ne semble pas être un simple bug, car j’avais déclaré que le rendu tamoul fonctionnait même dans les téléphones Android 2.3.3 avec une sorte d’intervention du fabricant.
Narayanan

1
Le 20 juillet 2012, j'assiste aux Google Days de Google où j'ai été témoin du fait que Android JellyBean 4.1 affichait des caractères tamouls, même en dehors du navigateur. Malheureusement, je ne pouvais rien tester de plus.
Narayanan

Avec un commentaire sur la question android.stackexchange.com/questions/26797/…, je dirais que je suis capable de lire le tamoul dans des pages Web, des fichiers texte, des SMS, des contacts, des noms de fichiers, des fichiers DOCX via ThinkFree Office Mobile Viewer. J'ai observé que cela devrait être la même chose pour Telugu, Kannada, Bengali et Hindi.
Narayanan

1

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 afficher tous les sites en police tamil dans n'importe quel téléphone mobile de marque.

Cordialement


5
Il s'agit d'un bitmapping interne au navigateur et ne constitue pas une solution à l'échelle du système d'exploitation (vous ne pourrez ni saisir ni voir du tamoul ou d'autres caractères indiens dans les SMS, par exemple). Au fait, ce que vous avez suggéré a déjà été mentionné dans l'article principal:> "Opera et quelques autres navigateurs l'ont déjà fait avant Android 4.0 en substituant image au lieu de caractère."

0

Vous n'avez pas besoin de rooter et de remplacer la police sur le système Android.

Remplacez le micrologiciel de votre appareil par un micrologiciel similaire pour la région indienne pour restituer correctement la police Devanagari. Les microprogrammes des autres régions ne rendent pas correctement les polices Devanagari. Les polices Devanagari sont correctement rendues sur la version Android 2.x. de Indian Region.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.