web-dev-qa-db-ja.com

androidで外部フォントを使用する

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

Typeface face;

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

textview.setTypeface(face);

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

これで私を助けてください。

59
mudit

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


PDATE: OpenTypeが少なくともある程度サポートされるようになりました。元々サポートされていなかったので、アプリがサポートするAndroidのどのバージョンでもフォントを徹底的にテストしたいと思うでしょう。

66
CommonsWare

フォントに簡単にアクセスするには、コードを後でロードできるようにアプリケーションにバンドルする必要があります。これを行うには、アセットに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);
12
Kirtikumar A.

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

9
richardleggett

Androidはotfとttfの両方の形式をサポートしているので、両方を体験しました。

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

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

1
deepan

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

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

https://github.com/svendvd/Fontinator

1
Sven Nähler

私は同じ問題を抱えていました。フォントはAndroidでも動作しませんでしたが、動作する必要がありました。フォントエディタを使用して、フォントの文字をAndroid-src-のFontSamplerサンプルに付属するフォントにコピーしました。 2_1。完全に機能しました。

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

1
dave evartt