Используйте внешние шрифты в Android - PullRequest
58 голосов
/ 15 сентября 2009

Я хочу использовать внешние шрифты в своем приложении. Я пытался добавить новый fonts, используя AssetManager, но он не работал Ниже мой код:

Typeface face;

face = Typeface.createFromAsset(getAssets(), "font.otf");

textview.setTypeface(face);

но текст не отображается ...

Пожалуйста, помогите мне с этим.

Ответы [ 6 ]

64 голосов
/ 16 сентября 2009

AFAIK, Android не поддерживает OpenType. Вместо этого используйте шрифт TrueType.


ОБНОВЛЕНИЕ: Очевидно OpenType теперь поддерживается, по крайней мере, несколько. Первоначально он не поддерживался, поэтому вам нужно тщательно протестировать ваш шрифт на любых версиях Android, которые ваше приложение будет поддерживать.

12 голосов
/ 08 марта 2013

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

Это может быть ваш .xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
    android:id="@+id/DefaultFontText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="Here is some text." />
<TextView
    android:id="@+id/CustomFontText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="30sp"
    android:text="Here is some text.">
    </TextView>

Напишите следующий код в вашем классе .java

Typeface tf = Typeface.createFromAsset(getAssets(),
            "fonts/BPreplay.otf");
    TextView tv = (TextView) findViewById(R.id.CustomFontText);
    tv.setTypeface(tf);
9 голосов
/ 19 января 2011

Android поддерживает OTF (я не уверен, с какой версии SDK, но он определенно работает с 1.6), я некоторое время использовал шрифт OTF для пишущей машинки, но рендеринг далеко не так точен, как с версией TTF, которую я закончил с помощью (через онлайн-конвертер шрифтов). Базовая линия была повсюду (некоторые буквы были на целых 2 пикселя выше, чем другие), и на телефонах с LDPI, таких как HTC Wildfire, проблема значительно усиливалась из-за больших пикселей.

1 голос
/ 30 ноября 2014

Используйте Fontinator для поддержки шрифтов OTF и TTF

Это Android-библиотека, облегчающая использование пользовательских шрифтов.

https://github.com/svendvd/Fontinator

1 голос
/ 12 ноября 2013

Android поддерживает оба формата otf и ttf, я испытал их обоих.

tv3 = (TextView)findViewById(R.id.tv1);
    Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/TRAJANPRO-BOLD.OTF");
    tv3.setTypeface(typeFace);

это шаг, который я использовал для английского и местного языков

1 голос
/ 22 января 2010

У меня была такая же проблема. Мой шрифт также не работал в Android, но мне нужно было, чтобы он работал. Используя редактор шрифтов, я скопировал символы из моего шрифта в шрифт, который поставляется с примером FontSampler из Android-src-2_1. Сработало отлично.

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

...