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.