Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

マテリアルガイドラインの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"まで目立たせたくないけど通常の文字よりは目立たせたい、といった場合には使い勝手がいいかもしれません。
まぁ無理に対応する必要はないのかなという印象です。

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

konifar
親方!空からどらえもんが!
http://konifar.hatenablog.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away