2010-09-20 3 views
4

Mon application Android a besoin de support pour différentes langues (comme le chinois, etc.). La plupart d'entre eux se trouvent dans le fichier DroidSansFallback.ttf d'Ascender.Android: Problèmes de rendu de polices avec .ttf> 3MB

Voir https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts

Sur certains téléphones Android, il y a DroidSansFallback.ttf, mais avec beaucoup de Glyphes manquant, par exemple sur le NexusOne distribué aux États-Unis. Il n'y a pas du tout de glyphes de polices asiatiques, surtout des caractères latins et apparentés.

Alors que faire?

J'ai ajouté aux "actifs" ma propre copie de DroidSansFallback.ttf (j'ai également essayé d'autres polices d'autres sources) et l'ai définie pendant l'exécution en utilisant la classe de caractères.

Avec certains téléphones et certains fichiers .ttf, le rendu des polices est complètement foiré, ce qui signifie que les lettres ne sont que des points sur une ligne.

Après une analyse plus approfondie, le problème se résume à:

  1. petits .ttf semblent toujours travailler (< 200ko)
  2. fichiers volumineux .ttf ne fonctionnent pas du tout (> 3MB)
  3. Si le DroidSansFallback.ttf complet est installé sur le téléphone (soit environ 3,5 Mo), même une police de 1 ou 2 Mo peut se visser. Si le téléphone a seulement une version «allégée» de DroidSansDallback.ttf installé (qui est ~ 1 Mo), une police de 3 Mo fonctionne très bien.

Qu'est-ce qui ne va pas ici? Est-ce que je manque quelque chose? Il semble que toutes les polices installées/utilisées ne peuvent pas être plus grandes que quelques ~ 4 Mo.

Quelqu'un at-il rencontré le même problème? Je l'ai essayé sur NexusOne (2.1), HTC Hero (2.1), SonyEricsson Xperia (1.6) et Motorola MileStone (2.0), tous montrent le même comportement.

Merci pour tous les conseils.

+1

Cela ressemble à un bug pour moi. –

Répondre

0

Vous manquez de mémoire sur vos appareils.

Tous les périphériques que vous avez répertoriés sont assez anciens. La taille du tas est d'environ 12 Mo sur ceux-ci. Envisagez d'utiliser des PNG avec du texte chinois déjà pré-rendu, si possible.

+0

Le NexusOne a 512 Mo de RAM (après avoir installé un nouveau noyau). Suggérez-vous qu'il est impossible de charger une police de 4 Mo sur ce système? –

+1

Je peux allouer plus de 300 Mo avant que l'application ne gonfle sur le NexusOne. Pourquoi pensez-vous que le tas est limité à 12 Mo? L'utilisation de fichiers PNG redéfinis n'est pas une option pour mon application. J'ai besoin d'un texte modifiable par l'utilisateur. –

Questions connexes