Wie erstelle ich ein Android-Gerät für die Anzeige komplexer Renderings von Indic-Zeichen?

42

Bitte entschuldigen Sie die Länge dieser Frage. Ich muss all dies erklären, um anderen zu helfen und um zu vermeiden, dass hilfreiche Mitwirkende Antworten geben, ohne um Klarstellungen zu bitten.

Meine Anforderung in einer Zeile: "Damit ein Android-Telefon die tamilischen Zeichen korrekt anzeigt".

Ausarbeitung: Tamilisch hat wie jede andere indische Sprache ein komplexes Charakter-Rendering-System. Anders als in Englisch oder anderen lateinischen Schriften besteht die Glyphe (was Sie auf dem Bildschirm sehen) aus mehr als einem Zeichen. Android kann solche komplexen Skripte (mit Ausnahmen) nicht rendern. Mein Ziel ist es zu wissen, wie ich einem Android-Handy oder -Tablet eine solche Fähigkeit verleihen kann.

Kleiner Hintergrund, den ich bisher gesammelt habe: Um eine Glyphe auf dem Bildschirm anzuzeigen, benötigt Android zunächst eine passende Schriftdatei. Das Android-Gerät verfügt über einen Ordner / System / Schriftarten, von denen nur wenige vorhanden sind. Die interessanteste Datei in diesem Ordner ist die Datei DroidSansFallback.ttf. Wie der Name schon sagt, greift das Android-System auf die Suche in DroidSansFallback.ttf zurück, wenn es in Systemschriftarten (z. B. DroidSans.ttf oder DroidSans-Bold.ttf) kein Zeichen findet.

Durch Ersetzen einer geeigneten Schriftartdatei vom PC (Latha.ttf oder Lohit-Tamil.ttf - dies sind Schriftarten für Tamil) und DroidSansFallback.ttf können tamilische Zeichen im Gerät angezeigt werden. Der Austausch ist nicht so einfach. Das Gerät muss gerootet und das System so installiert werden, dass es beschreibbar ist.

Trotz dieser Probleme werden die angezeigten tamilischen Zeichen nicht richtig gerendert, selbst wenn DroidSansFallback.ttf ersetzt wird. Das tamilische Zeichen "தி" ist eine Konjunktion aus zwei Zeichen und wird nicht als "தி", sondern als "த த" ohne Leerzeichen dazwischen angezeigt. Dies ist zwar ausreichend, um Kurznachrichten zu lesen, kann jedoch nicht zum Lesen von Büchern usw. verwendet werden.

Ab Android 4.0 werden Tamilisch und andere wenige Sprachen über den Browser unterstützt, wie in der folgenden Übersicht über die Android 4.x-API angegeben.

Support for Indic fonts (Devanagari, Bengali, and Tamil, including the complex
character support needed for combining glyphs) in WebView and the built-in Browser

Die zu beachtenden Wörter lauten "in WebView und im eingebauten Browser", was bedeutet, dass tamilische Zeichen perfekt gerendert werden, wenn sie als HTML-Inhalt gerendert werden und nicht anders gerendert werden. Opera und andere wenige Browser haben dies bereits vor Android 4.0 getan, indem sie Bild anstelle von Zeichen eingesetzt haben.

Mir ist aufgefallen, dass in einigen Geräten, die auf den indischen Markt abzielen (z. B. LG Optimus One, die meisten Samsung - Telefone und - Tablets) Tamil sowohl im Browser als auch an Orten außerhalb des Browsers wie in Kontakten, Textnachrichten, Dateinamen usw. Richtig angezeigt werden kann Zu meiner Überraschung tun sie dies sogar ab Android 2.3. Mir ist auch aufgefallen, dass dasselbe Modell für ein nicht-indisches Land, auf dem dieselbe Android-Version ausgeführt wird, die Anzeige tamilischer Zeichen nicht unterstützt.

Dies brachte mich zu weiteren Untersuchungen und zu der Schlussfolgerung, dass Android (wie auch andere Linux-basierte Betriebssysteme) von einer Schriftart-Rendering-Engine abhängig ist, um so komplexe Zeichen anzuzeigen. Die beiden Motoren, auf die ich gestoßen bin, sind Skia und Harfbuzz. Ich bemerkte, dass LG Skia verwendet und Samsung Harfbuzz-Bibliotheken in seinen Geräten verwendet, um diese Fähigkeit zu erreichen.

Ich bin auf viele Websites gestoßen, die vorgeschlagen haben, diese Bibliotheken und Schriften zu ersetzen. Es hat nicht funktioniert und führt zum Einfrieren. Zum Glück habe ich mit clockworkmod gesichert und daher mein Telefon wiederhergestellt.

Obwohl ich dies mit Tamil erklärt hatte, gilt dies für die meisten indischen Sprachen.

Hier kommt meine Frage (wenn Sie noch lesen;)) Nun ist es klar, dass eine TTF-Datei vorhanden sein sollte, um Zeichen bereitzustellen, und dass entsprechende Bibliotheken (libskia.so oder libharfbuzz.so) erforderlich sind, um sie korrekt zu rendern. Weiß jemand, wie diese Hersteller die Fähigkeit bieten können? Ich bin sogar bereit, mein eigenes ROM aus AOSP (Android Open Source Project) zu erstellen.

Narayanan
quelle
Cyanogenmod bietet die Möglichkeit, Texte von rechts nach links darzustellen. Skia ist Standard für das Rendern der Grafiken. Die Ergebnisse variieren, wenn eine Skia-Bibliothek von einem ROM in ein anderes kopiert wird. Dies kann katastrophal sein, da die Erstellung von Grund auf neu erforderlich wäre, indem die AOSP-Quelle verwendet und Skia durch Harfbuzz und Neukompilierung ersetzt wird Harfbuzz in ein anderes ROM, das nicht mit dieser Bibliothek erstellt wurde - die Bibliotheken sind verknüpft. Wenn der ROM-Build Harfbuzz nicht kennt, funktioniert dies nicht.)
t0mm13b
1
@narayanan aus irgendeinem Grund rendert die Website m.oneindia.in/tamil Tamil perfekt in Chrome auf Android 4.1.2. Was macht diese Website richtig, was die anderen nicht tun?
FMFF

Antworten:

9

Gerootetes Telefon

Android unter dem Ordner /system/fontsenthält eine Datei mit dem Namen "DroidSansFallback.ttf", die alle Sprachzeichen enthalten soll. Derzeit mangelt es an Unterstützung für viele, darunter Tamil.

Sie können die Datei jederzeit durch eine Datei ersetzen, die tamilische Zeichen enthält. Auf diese Weise können Sie Tamil auf Ihrem Telefon verwenden.

Im XDA Developers Thread - DroidSans Fallback Indic Font haben Benutzer versucht und erfolgreich Tamil auf ihren Handys verwendet.

Um diese Methode abzuschließen, benötigen Sie Root-Zugriff auf Ihr Telefon, um auf /systemdie Fallback-Datei zuzugreifen und diese zu ändern:

  • Lesen Sie Wie rolle ich mein Gerät? Wenn Ihr Telefon noch nicht verwurzelt ist.
  • Folgen Sie dem XDA Developers-Thread, um zu sehen, wie die Datei ersetzt wird :

    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
    

    Hinweis: Der Einhängepunkt ist nicht für alle Telefone gleich.


Android App

Während die oben genannte Methode einige Benutzer ansprechen kann, bevorzuge ich eine APP, wenn verfügbar.

Außerdem hat Tamil eine Tastatur mit insgesamt 247 Zeichen, während die englische nur 26 benötigt. Dies wird also zu einem Hauptproblem bei der Eingabe von:

Siehe Wikipedia :: Tamil language - Writing System

Die aktuelle tamilische Schrift besteht aus 12 Vokalen, 18 Konsonanten und einem Sonderzeichen, dem āytam. Die Vokale und Konsonanten bilden zusammen 216 zusammengesetzte Zeichen und ergeben insgesamt 247 Zeichen (12 + 18 + 1 + (12 x 18)).


Dank Krishan und der Arbeit an diesem Thema gibt es bereits eine APP, die sich mit beiden Problemen befasst, der systemweiten Verwendung von Tamil und einer Tastatur, mit der Tamil-Zeichen eingegeben werden können.

Lesen Sie Krishans Beitrag mit dem Titel Tamil Unicode Font für Android - Working, um detaillierte Informationen über die Entwicklung dieser Lösung zu erhalten.

Zusammenfassen

Krishan hat bei Google Play zwei APPs entwickelt und veröffentlicht , die sich vollständig mit dem Problem befassen, ein komplettes Android-Betriebssystem in Tamil zu haben:

Zuul
quelle
4
Ich hatte bereits erwähnt, dass das Ersetzen der Schriftart nur eine Teillösung ist, bei der nur nicht konjunkturabhängige Zeichen angezeigt werden und die konjunkturabhängigen Zeichen nicht richtig gerendert werden. Und die zweite Lösung bezüglich der App ist für mich keine akzeptierte Lösung. Es bietet die Möglichkeit, tamilischen Text in englischer Sprache zu verfassen, und das Konvertieren und Zitieren der Webseiten als Beispiel ist nicht akzeptabel, wie ich bereits in meiner Erwartung gesagt hatte. Auf jeden Fall vielen Dank für Ihre Bemühungen und Zeit.
Narayanan
3

Sie beschreiben anscheinend das Problem 4153 , einen bekannten Fehler in Android.

Dieses Problem wurde in Jelly Bean als behoben gemeldet. Wenn dieser Screenshot korrekt ist, sollte das Problem behoben sein. (Ich kann es mir nicht wirklich sagen, aber ich habe Zugang zu Jelly Bean und kann daraus Screenshots machen.)

ICS-Testseite für Unicode

Michael Hampton
quelle
1
Vielen Dank, dies scheint nicht nur ein Fehler zu sein, da ich festgestellt habe, dass das Tamil-Rendering auch auf Android 2.3.3-Handys mit einer Art Eingriff des Herstellers funktioniert.
Narayanan
1
Am 20. Juli 2012 habe ich an den gDays von Google teilgenommen und dabei miterlebt, dass Android JellyBean 4.1 tamilische Zeichen auch außerhalb des Browsers angezeigt hat. Leider konnte ich nichts mehr testen.
Narayanan
Mit einem Kommentar zur Frage android.stackexchange.com/questions/26797/… kann ich Tamil über ThinkFree Office Mobile Viewer in Webseiten, Textdateien, SMS, Kontakten, Dateinamen und DOCX-Dateien lesen. Ich bemerkte, dass dies auch für Telugu, Kannada, Bengali und Hindi so sein sollte.
Narayanan
1

Installieren Sie den Opera Mini-Webbrowser

Geben Sie im Opera Mini-Webbrowser "about: Config" ein.

Verwenden Sie Bitmap-Schriftarten für komplexe Skripte: Wählen Sie Ja

Sie können alle Websites in tamilischer Schrift auf jedem Markenhandy anzeigen

Grüße

Rajesh
quelle
5
Dies ist eine browserinterne Bitmap und keine betriebssystemweite Lösung (Sie können beispielsweise in SMS keine tamilischen oder anderen indischen Zeichen eingeben oder anzeigen). Übrigens, was Sie vorgeschlagen haben, wurde bereits im Hauptbeitrag erwähnt:> "Opera und andere wenige Browser haben dies bereits vor Android 4.0 getan, indem sie Bild anstelle von Zeichen eingesetzt haben."
0

Sie müssen die Schriftart auf dem Android-System nicht rooten und ersetzen.

Ersetzen Sie die Firmware Ihres Geräts durch die Firmware einer ähnlichen indischen Region, um die Devanagari-Schriftart korrekt wiederzugeben. Die Firmware anderer Regionen gibt die Devanagari-Schriftarten nicht korrekt wieder. Devanagari-Schriftarten werden in der Android-Version 2.x von Indian Region korrekt wiedergegeben.

Ghana
quelle