Проблема при использовании пользовательского шрифта - "родной шрифт не может быть создан"

Я пытаюсь использовать шрифт, который я нашел в Интернете, но проблема в том, что я получаю FC с "родным шрифтом не может быть сделано".

Вот код в getView моего ListVIew:

        holder.tv_SuraName   =(TextView)convertView.findViewById(R.id.Start_Name);
        holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "suralist_font.ttf"));

Может ли кто-нибудь сказать мне, почему я могу использовать пользовательский ром? Вы можете получить его ЗДЕСЬ.. файл .ttf

Ответ 1

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

Ответ 2

Моей проблемой было неправильное размещение папки с ресурсами.

При использовании Android Studio папка с ресурсами должна находиться внутри наборов источников, например.

SRC/главная/активы/

Найден в этот ответ

Ответ 3

В основном есть 4 вещи, которые могут вызвать это:

  • Вы используете неправильное расширение
  • Вы разместили шрифты в папке с ресурсами, а не внутри активов/шрифтов/
  • Вы неправильно написали шрифты
  • Шрифты должны быть строчными (в моем случае решение было переименовать MyFont.ttf в myfont.ttf, странно)

Ответ 4

Двойная проверка расширения не в шапке, т.е. suralist_font.TTF

Шрифты часто появляются, кажется, идут таким образом, и это может быть упущено.

Ответ 5

У меня была эта же проблема, я создал свою в активах > шрифты > whatever.ttf и получал ту же ошибку. Я добавил расширение шрифтов (fonts/whatever.ttf), и он исправил проблему в каждом случае.

 holder.tv_SuraName   =(TextView)convertView.findViewById(R.id.Start_Name);
 holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(),    "fonts/suralist_font.ttf"));

Ответ 6

Я использую андроид-студию, в моем случае проблема была связана с папкой с папками с ресурсами, в папке Eclipse для папки с активами res/assets/, но в Android Studio ее src/main/активы/ Итак, я просто переместил файл шрифта на этот путь и, наконец, решил проблему.

Ответ 7

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

Работает не:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView title = (TextView)findViewById(R.id.tvTitle);
        Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
        title.setTypeface(font);

        setContentView(R.layout.main);
    }

Работает!

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); // <-- call before typeface

        TextView title = (TextView)findViewById(R.id.tvTitle);
        Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
        title.setTypeface(font);
    }

Ответ 8

Как CommonsWare заявляет в этот ответ

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

В любом случае попробуйте следующее:

holder.tv_SuraName = (TextView)convertView.findViewById(R.id.Start_Name);
Typeface Font = Typeface.createFromAsset(this.getAssets(),"suralist_font.ttf");
holder.tv_SuraName.setTypeface(Font);

Ответ 10

У меня была такая же проблема с COMIC.TTF от комикса MS MS Windows. Поскольку исходный файл, который я разместил в папке assets/fonts, был в верхнем регистре, как указано выше, я должен был ввести его точно в верхнем регистре.    Typeface.createFromAsset(getAssets(), "fonts/COMIC.TTF" );

выясняется, что проблема была вызвана нижним регистром:    Typeface.createFromAsset(getAssets(), "fonts/comic.ttf" );

Ответ 11

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

Согласно документации на Android здесь

Основные/активы/ Это пусто. Вы можете использовать его для хранения файлов сырых активов. Файлы, которые вы сохраняете здесь, скомпилированы в файл .apk as-is и исходное имя файла сохраняется. Вы можете перемещаться по этому каталогу так же, как обычная файловая система с использованием URI и читать файлы в виде потока байтов с помощью AssetManager. Например, это хорошее место для текстур и игровых данных.

Поэтому структура вашей папки должна быть yourmodule/main/assets (например, *** pp/main/assets ***)

Ответ 12

Что сработало для меня, сначала изменило имя моего шрифта только на нижний регистр и подчеркивание: от Amatic-Sc.ttf до amatic_sc.ttf.

Затем в методе set.TypeFace измените assets/fonts/amatic_sc.ttf на шрифты/amatic_sc.ttf.

Ответ 13

Я отлаживаю эту ошибку в Android Studio навсегда. Очистите и восстановите проект после добавления шрифтов в каталог ресурсов, исправил проблему для меня.

Ответ 14

Просто сделал build --> clean и начал рендеринг.

Ответ 15

У меня была такая же проблема, которая произошла на Android 4.0.3-4.0.4 (100% воспроизводимый на эмуляторе IceCreamSandwich mips 4.0.3).

Проблема заключалась в том, что шрифты TTF, которые у меня были, были неправильными, несмотря на то, что почти все версии Android смогли загрузить эти TTF-шрифты. Поэтому я использовал https://cloudconvert.com/woff-to-ttf (так как у меня также были файлы woff), чтобы создавать новые TTF-шрифты, которые решили мою проблему.

Ответ 16

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

roboto_black.ttf

и, объявляя в java файле, я использовал его как:

roboto_blak.ttf

Если ваши .ttf файлы находятся в папке с ресурсами, используйте:

Typeface type_bold = Typeface.createFromAsset(getAssets(), "roboto_black.ttf");

Если он находится в папке шрифтов, используйте:

type_bold = Typeface.createFromAsset(getAssets(), "fonts/roboto_black.ttf");

Надеюсь, что это поможет!