web-dev-qa-db-ja.com

カスタムフォントを使用する場合の問題-「ネイティブの書体は作成できません」

インターネットで見つけたフォントを使用しようとしていますが、問題は「ネイティブの書体は作成できません」というFCを取得することです。

ListVIewのgetViewのコードは次のとおりです。

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

カスタムROMを使用できる理由を教えてください取得できます [〜#〜] here [〜#〜] ..ファイルは.ttfです

49
Omar

フォントファイルが壊れているか、何らかの理由でサポートされていません。 SDカードにドロップしてファイルからロードし、アセットに問題がないことを確認できます。

36
Nikolay Elenkov

私の問題は、アセットフォルダーの不適切な配置でした。

Android Studioを使用する場合、assetsフォルダーはソースセット内にある必要があります。

src/main/assets /

この回答 で見つかりました

48
roelvogel

これを引き起こす可能性のある基本的な4つの事柄があります。

  1. 間違った拡張子を使用している
  2. アセットフォルダーにフォントを配置し、asset/fonts /内にnotを配置する必要があります
  3. フォントのつづりを間違えました
  4. フォントは小文字である必要があります(私の場合、解決策はMyFont.ttfをmyfont.ttfに変更することでした)
29
erdomester

拡張機能が大文字になっていないことを再確認してください。 suralist_font.TTF

フォントはしばしばそのように来るようで、見落とされるかもしれません。

21
tlrmcknz

私はこれと同じ問題を抱えていました。assets> fonts> 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"));
9
a54studio

むしろ古いスレッドですが、これが発生する可能性があるもう1つの理由を追加します。書体を呼び出す前にコンテンツビューを設定する必要があります。以下の例を参照してください

notは機能しますか:

@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);
    }
2
Alina B.

私はAndroidスタジオを使用しています。私の場合、問題は資産フォルダーのパスにあり、Eclipseの資産フォルダーのパスはres/assets /ですが、Androidでは_ Studio its src/main/assets /したがって、フォントファイルをこのパスに移動するだけで、最終的に問題が解決しました。

2
Rahul Sharma

フォントファイルが壊れているか、ファイル名を呼び出すときにスペルを間違えています。私は同じ問題を抱えていました、それはアセットフォルダーで指定されたファイル名が

roboto_black.ttf

そしてJavaファイルで宣言している間、私はそれを次のように綴っています:

roboto_blak.ttf

.ttfファイルがアセットフォルダーにある場合は、次を使用します。

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

それ以外の場合は、fontsフォルダーにあり、使用します。

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

それが役に立てば幸い!

1

これはファイルが破損しているか、ファイルを間違ったフォルダーに配置したことが原因であることに注意してください。

Android documentation here

main/assets /これは空です。これを使用して、未加工のアセットファイルを保存できます。ここで保存したファイルは、そのまま.apkファイルにコンパイルされ、元のファイル名が保持されます。 URIを使用して通常のファイルシステムと同じ方法でこのディレクトリをナビゲートし、AssetManagerを使用してバイトストリームとしてファイルを読み取ることができます。たとえば、これはテクスチャとゲームデータの適切な場所です。

したがって、フォルダ構造はyourmodule/main/assets(たとえばa *** pp/main/assets ***)

0
d4c0d312

これが役立つことを願って

Typeface.createFromAssetはアセットストリームをリークします: http://code.google.com/p/Android/issues/detail?id=9904

0

CommonsWareが this answer で述べているように

フォント自体に問題があると思います。このエラーは、OSのネイティブコードが書体を読み込もうとするとトリガーされます。

とにかくこれを試してください:

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

Android 4.0.3-4.0.4(エミュレータIceCreamSandwich mips 4.0.3で100%再現可能)で発生した同じ問題がありました。

問題は、ほとんどすべてのAndroidバージョンがそれらのTTFフォントをロードできたにもかかわらず、私が持っていたTTFフォントが正しくないことでした。だから私は https ://cloudconvert.com/woff-to-ttf (woffファイルもあるので)新しいTTFフォントを作成して、問題を解決しました。

0
negersiu

Android Studio。

0
RuudJ

私にとってうまくいったのは、最初にフォント名を小文字とアンダースコアのみに変更することでした:Amatic-Sc.ttfからamatic_sc.ttf

次に、set.TypeFaceメソッドでassets/fonts/amatic_sc.ttffonts/amatic_sc.ttfに変更します。

0
David JavaNab

ただbuild --> cleanそして、レンダリングを開始しました。

0
Anukool

Windowsのコミックsans msのCOMIC.TTFでも同じ問題が発生しました。 asset/fontsフォルダーに配置した元のファイルは上記のとおり大文字であるため、大文字で正確に入力する必要がありました。 Typeface.createFromAsset(getAssets()、 "fonts/COMIC.TTF");

問題の原因は小文字であることが判明しました:Typeface.createFromAsset(getAssets()、 "fonts/comic.ttf");

0
Olumide Oyetoke