Как мне устранить пользовательский шрифт, который, похоже, не загружается на Android

#android

#Android

Вопрос:

У меня есть пользовательский шрифт, который, похоже, не загружается на Android. В частности, я загружаю его обычным способом из Activity, а затем устанавливаю его в TextView:

 AssetManager assetManager = getAssets();
Typeface tf = Typeface.createFromAsset(assetManager, "euro.ttf");      
textView.setTypeface(tf);
  

То, что я получаю, вообще не соответствует пользовательскому шрифту, и, похоже, никаких ошибок нет (я просмотрел logcat и ничего не заметил).

Я прочитал старую статью, в которой говорится, что Android имеет проблемы с некоторыми шрифтами и автоматически переходит на Droid Sans.

Обратите внимание, что Android, похоже, нравятся не все шрифты TrueType. Я потратил много времени, пытаясь выяснить, что я делал не так с этим образцом, прежде чем переключиться на другой шрифт, и все «просто сработало». Когда Android не нравится пользовательский шрифт, вместо того, чтобы создавать исключение, он, похоже, незаметно заменяет Droid Sans («sans»). Итак, если вы попытаетесь использовать другой шрифт, и, похоже, он не работает, возможно, данный шрифт по какой-либо причине несовместим с Android.

Итак, мой вопрос в том, знает ли кто-нибудь, как я могу устранить это дальше. Или что может быть «по какой-либо причине»? Я пробовал разные имена для файла шрифта и даже разные его копии. Файл шрифта, похоже, отлично работает на моем рабочем столе (я могу открыть его в OS X и посмотреть символы, они выглядят правильно). Кроме того, использование другого ttf-файла для другого шрифта, похоже, работает (так что, похоже, это не связано с настройкой / кодом, скорее это должно быть что-то с самим файлом).

Ответ №1:

Извините, я больше ни с чем не сталкивался по этому поводу с тех пор, как написал этот пост почти (ого!) три года назад.

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

Или, если есть какая-то плавающая утилита, которая в основном выполняет «различие глифов» — сообщает, какие глифы находятся в шрифте A, а не в шрифте B — вы можете увидеть, не хватает ли чего-то интересного в шрифте, который вы пытаетесь использовать. Из того, что я видел, отсутствующий глиф обычно приводит к появлению мусорного символа (например, пустого квадрата), но, возможно, есть что-то особенное, от чего зависит Android, чего нет в вашем желаемом шрифте.

Push если у вас есть доступ к редактору шрифтов, вы можете попробовать скопировать глифы из неисправного файла шрифта в новый файл шрифта и посмотреть, получится ли у вас что-то, что работает.

:: вставьте здесь обязательную заметку о проблемах с лицензированием шрифтов ::

Кажется, я припоминаю, что мне потребовалось несколько попыток, чтобы найти бесплатный шрифт, который работал, еще в ‘ 08.

Комментарии:

1. Отличный совет для следующих шагов, спасибо. Странно, я могу поменять шрифт, с которым у меня возникли проблемы, на другой, и он отлично работает, поэтому я попробую редактор и еще много чего и посмотрю, что у меня получится.

2. @Charlie Collins: Если вы найдете решение, напишите его где-нибудь! 🙂