62

アプリで外部フォントを使用したい。fonts新しいを使用して追加しようとしましAssetManagerたが、機能しませんでした。以下は私のコードです:

Typeface face;

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

textview.setTypeface(face);

しかし、それはテキストを表示していません...

これを手伝ってください。

4

6 に答える 6

68

AFAIK、AndroidはOpenTypeをサポートしていません。代わりにTrueTypeフォントを使用してください。


更新:どうやらOpenTypeは、少なくともある程度はサポートされるようになりました。元々はサポートされていなかったため、アプリがサポートするAndroidのバージョンに関係なくフォントを徹底的にテストする必要があります。

于 2009-09-16T00:37:35.910 に答える
12

フォントに簡単にアクセスするには、コードが後でフォントをロードできるように、フォントをアプリケーションにバンドルする必要があります。これを行うには、アセットに直接Fontsフォルダーを作成します

これはあなたの.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);
于 2013-03-08T12:07:42.933 に答える
9

AndroidはOTFをサポートしています(どのSDKバージョンかはわかりませんが、1.6で確実に動作します)。しばらくの間タイプライターOTFフォントを使用していましたが、レンダリングは最終的に使用したTTFバージョンほど正確ではありません(オンラインフォントコンバータ経由)。ベースラインはいたるところにあり(一部の文字は他の文字よりも2ピクセル高くなっています)、HTC WildfireなどのLDPI電話では、ピクセルが大きいために問題が大幅に拡大します。

于 2011-01-19T11:20:50.857 に答える
1

私も同じ問題を抱えていました。私のフォントはAndroidでも機能していませんでしたが、機能するために必要でした。フォントエディタを使用して、Android-src-2_1のFontSamplerの例に付属するフォントにフォントから文字をコピーしました。それは完璧に機能しました。

私の方法は知的財産の観点から疑わしいと認めますが、すべての文字が置き換えられ、古いフォントへのすべての参照も置き換えられたため、実際には元のフォントを使用することになりませんでした。2つのフォントが定義されている方法を「見て」みましたが、すべてのフォント変数を一致させることもできませんでした。そのため、nedでは、元のフォントのスケルトンを新しいフォントのテンプレートとして使用しました。

于 2010-01-22T16:42:48.253 に答える
1

androidはotf形式とttf形式の両方をサポートしていますが、私は両方を経験しました。

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

これは私が英語と現地語の両方に使用したステップです

于 2013-11-12T13:49:13.967 に答える
1

Fontinatorを使用してブースOTFおよびTTFフォントをサポート

これはAndroidライブラリであり、カスタムフォントを簡単に使用できます。

https://github.com/svendvd/Fontinator

于 2014-11-30T10:45:47.293 に答える