カスタム フォントの追加

ランタイム リソース オーバーレイ(RRO)を使用してフォントを変更できるようになりました。カスタム フォントを追加してフォント パッケージを作成すると、テーマのフォントを使用し、RRO を使用してカスタマイズを適用できます。

実施するタスクは次のとおりです。

サンプル ファイル構造とサンプル ファイルは、custom-fonts.zip で提供されています。このファイルをダウンロードしてローカルに解凍し、使用します。

フォント パッケージを作成する

フォント パッケージを作成するには:

  1. すべてのフォント ttf ファイルを vendor パーティションのフォント パッケージに追加します。次に例を示します。

    vendor/[oem]/fonts/[oem]-sans/

  2. フォント パッケージの Android.mk ファイルを作成します。次に例を示します。

    vendor/[oem]/fonts/[oem]-[fontname]/Android.mk

  3. モジュールが etc フォルダの product パーティションにインストールされることを確認します。そのためには、モジュールに次のフラグがあることを確認します。
    LOCAL_MODULE_CLASS := ETC
    LOCAL_PRODUCT_MODULE := true
    LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
    

    上記のサンプルコードは、フォント パッケージ モジュールの完全な定義を示しています。

  4. フォント パッケージ用に fonts.mk という名前のファイルを作成し、フォントの ttf ファイルを PRODUCT_PACKAGES に追加します。次に例を示します。

    vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk

    例:

    PRODUCT_PACKAGES := \
    [font name].ttf \
    

デバイス オーバーレイ パッケージを作成する

  1. fonts_customization.xml というモジュールをビルドに追加します。このモジュールは、フォント ファミリーを含む fonts_customization.xml ファイルを指定し、すべてのフォント パッケージの make ファイルを呼び出します。次に例を示します。

    vendor/[oem]/[device]_overlay/fonts/Android.mk

  2. フォント ファミリーを作成します。

    vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml

    ファイルのルートレベルは fonts-modification タグにする必要があります。この要素の下に各フォント パッケージのフォント ファミリーを追加します。さらに、すべてのフォント ファミリーに customizationType="new-named-family" を追加し、それぞれに name 属性があることを確認します。この名前は、後でフォント ファミリーにアクセスするために使用されます。このファイルは、以前に Android.mk で定義された fonts_customizations.xml モジュールに追加する必要があります。

    上記のサンプルには、有効な fonts_customization.xml ファイルが含まれています。

  3. fonts.mk を作成します。次に例を示します。

    vendor/[oem]/[device]_overlay/fonts/fonts.mk

  4. PRODUCT_PACKAGES フラグの下に fonts_customization.xml を追加します。
  5. 以前に作成した各フォント パッケージを呼び出します。

    $(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)

  6. フォント モジュールを PRODUCT_PACKAGES のビルドに追加し、再ビルドします。フォントがシステムにインストールされます。
  7. ttf フォント ファイルがデバイスの /product/fonts フォルダにあることを確認します。
  8. fonts_customization.xml がデバイスの /product/etc/ にあることを確認します。

新しいシステム フォント ファミリーを使用する

新しいシステム フォント ファミリーを使用するには:

<style name="customstyle">
    <item name="android:fontFamily">customfontfamily</item>
</style>