LoginSignup
157
147

More than 5 years have passed since last update.

AndroidでNotoフォント・Robotoフォントを使う

Last updated at Posted at 2015-02-17

マテリアルガイドラインのStyle > Typographyには、英数字にはRobotoフォント、マルチバイト文字にはNotoフォントがいいと書いてあります。

ガイドラインに従ってフォントを変えてみたので、やり方をメモしておきます。

Calligraphyを導入

今回はCalligraphyというライブラリを導入して実装しました。
アプリ独自にフォントファイルを適用するUtilクラスの記事にあるようなやり方もあるのですが、TextViewやEditTextなどに個別で実装しなければいけないのが面倒そうだったので、アプリ全体に一括でフォントを反映できるCalligraphyを採用しました。

以下、導入方法です。

1. build.gradleに追加

build.gradle
dependencies {
    compile 'uk.co.chrisjenx:calligraphy:2.0.1'
}

2. ttfファイルを配置

app/src/main/assetsにRoboto-Light.ttfなどのフォントファイルを配置します。

3. Application#onCreateで初期化

アプリのデフォルトフォントを変更する場合、ApplicationクラスのonCreate()で初期化します。

Application.java
@Override
public void onCreate() {
    super.onCreate();
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
        .setDefaultFontPath("fonts/Roboto-Regular.ttf")
        .setFontAttrId(R.attr.fontPath)
        .build()
    );
}

4. Activityで初期化

Activityでcontextにinjectします。

Activity.java
@Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

5. xmlでフォントを変更する

TextViewやEditTextの属性に、fontPathをセットします。
IDE上でエラーになる場合は、tools:ignore="MissingPrefix"を追加してください。

<TextView
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    fontPath="fonts/Roboto-Regular.ttf"
    tools:ignore="MissingPrefix"/>

Notoフォントの注意点

実は、GoogleのNotoフォントのページから日本語に対応したNotoSansCJKJPを使うと、上下にスペースが入ってしまって使えませんでした。otfファイルだからでしょうか?詳しく知っている人がいれば教えてください。

2015-02-17_15_46_30.png

そこで、Noto Sans CJKをTrueType形式に変換した派生フォント源真ゴシックを使用しました。源真ゴシックのttfファイルを使うと問題なく表示されました。

フォント比較

デフォルト(変更なし)

2015-02-17 16.02.40.png

roboto

2015-02-17 16.02.50.png

noto sans cjk

2015-02-17 16.02.58.png

感想

ActivityでInjectしてるので起動が遅くなったりするかと思いましたが、体感できるほどの差はありませんでした。また、フォントを入れることによるapkのサイズ増加もそこまで気になるほどではなかったです。

ただ、正直見た目そんなに変わらないような気もします。スタイルの種類が増えるので、textStyle="bold"まで目立たせたくないけど通常の文字よりは目立たせたい、といった場合には使い勝手がいいかもしれません。
まぁ無理に対応する必要はないのかなという印象です。

ちなみに今回試したサンプルプロジェクトのリポジトリはこちらです。参考までに!

157
147
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
157
147