2009-09-15 24 views
57

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

Typeface face; 

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

textview.setTypeface(face); 

が、そのテキストが表示されない...これで私を助け

してください。

+1

あなたは資産/フォントフォルダとアクセス 書体面でのフォントを持つことができます整頓すること..to。 face = Typeface.createFromAsset(getAssets()、 "fonts /" + "font.otf"); textview.setTypeface(face); –

答えて

63

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


UPDATE:どうやらOpenTypeフォントは現在、少なくとも多少、サポートされています。もともとはサポートされていなかったので、あなたのアプリがサポートするどのバージョンのAndroidでもあなたのフォントを徹底的にテストしたいと思うでしょう。

+0

あなたは正しい方向にあると言っています.iはotfの代わりにttfファイルを使う必要がありますか? – mudit

+2

はい。あなたのコードを考えれば、あなたのフォントはあなたの資産/ディレクトリのルートにある必要がありますが、それ以外の場合は互換フォントでうまくいくはずです。 – CommonsWare

+0

エラーメッセージは、エミュレータとadbまたはEclipseの間の通信に問題があることを示します。これはフォントとは関係ありません。 http://commonsware.com/Android/Android-src-2_1.zipをダウンロードすると、TrueTypeフォントの読み込みを示すAndroidプロジェクトが見つかります。 Android 1.6では、APKの外からフォントを読み込めるようになりました(別途ダウンロードしたものなど)。 – CommonsWare

1

私は同じ問題を抱えていました。私のフォントはアンドロイドでも機能しませんでしたが、私はそれを動作させる必要がありました。フォントエディタを使って、自分のフォントの文字をAndroid-src-2_1のFontSamplerの例にあるフォントにコピーしました。それは完璧に働いた。

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

9

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

12

私たちのフォントに簡単にアクセスするには、私たちのコードがその後にロードできるように、アプリケーションにバンドルする必要があります。これを行うために、我々は、これはあなたの.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); 
1

アンドロイドかもしれ当社の資産に直接

をFontsフォルダを作成しますotfとttfの両方のフォーマットをサポートしています。私は両方を経験しました。

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

この

それはカスタムフォントを使用するために、それは簡単にアンドロイド・ライブラリである私は

1

使用Fontinatorは、それがブースOTFとTTFフォントをサポートし、両方の英語と現地語のために使用されるステップであります。

https://github.com/svendvd/Fontinator

+0

これはかなり良いですが、1000以上のTVを独自のカスタムテレビに変えて...あまり便利ではありません –

-3

あなたのTextViewにカスタムフォントのさまざまなを設定するために、単純なEasyFontsサードパーティのライブラリを使用することができます。このライブラリを使用することで、ダウンロードしてassets/fontsフォルダにフォントを追加することを心配する必要はありません。また、Typefaceオブジェクトの作成についても説明します。

以下のフォントフェースが用意されています。

  • Roboto
  • ドロイドセリフ
  • ドロイドロボット
  • 自由
  • 楽しいダブルオーライザー
  • アンドロイド国家
  • グリーンアボカド
  • 認識

単に:

TextView myTextView = (TextView)findViewById(R.id.myTextView); 
myTextView.setTypeface(EasyFonts.robotoThin(this)); 
関連する問題