Android: проблемы с рендерингом шрифтов .ttf> 3MB - PullRequest
4 голосов
/ 20 сентября 2010

Моему Android-приложению требуется поддержка различных языков (например, китайского и т. Д.). Большинство из них находятся в файле DroidSansFallback.ttf от Ascender.

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

На некоторых телефонах Android есть DroidSansFallback.ttf, но многие глифы отсутствуют, например. на NexusOne, который распространяется в США. Глифы азиатских шрифтов вообще отсутствуют, в основном только латинские и связанные с ними символы.

Так что же делать?

Я добавил к «активам» свою собственную копию DroidSansFallback.ttf (я также пробовал другие шрифты из других источников) и установил ее во время выполнения, используя класс гарнитуры.

В некоторых телефонах и некоторых файлах .ttf рендеринг шрифтов полностью испорчен, что означает, что буквы - это всего лишь несколько точек в одной строке.

После более глубокого анализа проблема сводится к:

  1. Небольшие файлы .ttf, кажется, всегда работают (<200 КБ) </li>
  2. Большие файлы .ttf вообще не работают (> 3 МБ)
  3. Если в телефоне установлен полный файл DroidSansFallback.ttf (~ 3,5 МБ), даже шрифт размером 1 или 2 МБ испортится. Если на телефоне установлена ​​только «облегченная» версия DroidSansDallback.ttf (~ 1 МБ), шрифт размером 3 МБ работает нормально.

Что здесь не так? Я что-то пропустил? Похоже, что все установленные / используемые шрифты не могут быть больше чем somehwat ~ 4 МБ.

Кто-нибудь испытывал такую ​​же проблему? Я пробовал это на NexusOne (2.1), HTC Hero (2.1), SonyEricson Xperia (1.6) и Motorola MileStone (2.0), все показывают одинаковое поведение.

Спасибо за любые подсказки.

1 Ответ

0 голосов
/ 27 мая 2011

Недостаточно памяти на ваших устройствах.

Все перечисленные устройства довольно старые.Размер кучи составляет около 12 МБ.

Если возможно, рассмотрите возможность использования PNG с китайским текстом, уже предварительно отрендеренным.

...