4 Stimmen

Android: Schriftart-Rendering-Probleme mit .ttf >3MB

Meine Android-Anwendung benötigt Unterstützung für verschiedene Sprachen (wie Chinesisch usw.). Die meisten von ihnen sind in der Datei DroidSansFallback.ttf von Ascender enthalten.

Véase https://Android.googlesource.com/platform/frameworks/base/+/master/data/fonts

Auf einigen Android-Telefonen gibt es DroidSansFallback.ttf, aber es fehlen viele Glyphen, z. B. auf dem NexusOne, das in den USA vertrieben wird. Es gibt überhaupt keine asiatischen Schriftarten Glyphen, meist nur lateinische und verwandte Zeichen.

Was ist also zu tun?

Ich fügte den "Assets" meine eigene Kopie von DroidSansFallback.ttf hinzu (ich habe auch andere Schriftarten aus anderen Quellen ausprobiert) und setzte sie zur Laufzeit mit der Typeface Class.

Bei einigen Handys und einigen .ttf-Dateien ist die Schriftdarstellung völlig verkorkst, d. h. die Buchstaben sind nur noch Punkte in einer Zeile.

Nach eingehender Analyse lässt sich das Problem wie folgt zusammenfassen:

  1. Kleine .ttf-Dateien scheinen immer zu funktionieren (<200kB)
  2. Große .ttf-Dateien funktionieren überhaupt nicht (>3MB)
  3. Wenn auf dem Telefon die vollständige DroidSansFallback.ttf installiert ist (die ~3,5 MB groß ist), führt selbst eine 1 oder 2 MB große Schriftart zu Problemen. Wenn auf dem Telefon nur eine "Lite"-Version von DroidSansDallback.ttf installiert ist (die ~1MB groß ist), funktioniert eine 3MB-Schriftart problemlos.

Was ist hier los? Übersehe ich etwas? Es sieht so aus, als ob alle installierten/verwendeten Fonts zusammen nicht größer als ~4MB sein können.

Hat jemand das gleiche Problem? Ich habe es auf NexusOne (2.1), HTC Hero (2.1), SonyEricson Xperia (1.6) und Motorola MileStone (2.0) versucht, alle zeigen das gleiche Verhalten.

Danke für jeden Hinweis.

0voto

Saideira Punkte 2304

Ihnen geht der Speicherplatz auf Ihren Geräten aus.

Alle von Ihnen aufgeführten Geräte sind ziemlich alt. Die Heap-Größe beträgt bei diesen Geräten etwa 12 MB.

Erwägen Sie die Verwendung von PNGs mit bereits vorgerendertem chinesischem Text, wenn möglich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X