ランタイム リソース オーバーレイ(RRO)を使用してフォントを変更できるようになりました。カスタム フォントを追加してフォント パッケージを作成すると、テーマのフォントを使用し、RRO を使用してカスタマイズを適用できます。
実施するタスクは次のとおりです。
サンプル ファイル構造とサンプル ファイルは、custom-fonts.zip で提供されています。このファイルをダウンロードしてローカルに解凍し、使用します。
フォント パッケージを作成する
フォント パッケージを作成するには:
- すべてのフォント
ttf
ファイルをvendor
パーティションのフォント パッケージに追加します。次に例を示します。vendor/[oem]/fonts/[oem]-sans/
- フォント パッケージの
Android.mk
ファイルを作成します。次に例を示します。vendor/[oem]/fonts/[oem]-[fontname]/Android.mk
- モジュールが
etc
フォルダのproduct
パーティションにインストールされることを確認します。そのためには、モジュールに次のフラグがあることを確認します。LOCAL_MODULE_CLASS := ETC LOCAL_PRODUCT_MODULE := true LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
上記のサンプルコードは、フォント パッケージ モジュールの完全な定義を示しています。
- フォント パッケージ用に
fonts.mk
という名前のファイルを作成し、フォントのttf
ファイルをPRODUCT_PACKAGES
に追加します。次に例を示します。vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk
例:
PRODUCT_PACKAGES := \ [font name].ttf \
デバイス オーバーレイ パッケージを作成する
fonts_customization.xml
というモジュールをビルドに追加します。このモジュールは、フォント ファミリーを含むfonts_customization.xml
ファイルを指定し、すべてのフォント パッケージの make ファイルを呼び出します。次に例を示します。vendor/[oem]/[device]_overlay/fonts/Android.mk
- フォント ファミリーを作成します。
vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml
ファイルのルートレベルは
fonts-modification
タグにする必要があります。この要素の下に各フォント パッケージのフォント ファミリーを追加します。さらに、すべてのフォント ファミリーにcustomizationType="new-named-family"
を追加し、それぞれにname
属性があることを確認します。この名前は、後でフォント ファミリーにアクセスするために使用されます。このファイルは、以前にAndroid.mk
で定義されたfonts_customizations.xml
モジュールに追加する必要があります。上記のサンプルには、有効な
fonts_customization.xml
ファイルが含まれています。 fonts.mk
を作成します。次に例を示します。vendor/[oem]/[device]_overlay/fonts/fonts.mk
PRODUCT_PACKAGES
フラグの下にfonts_customization.xml
を追加します。- 以前に作成した各フォント パッケージを呼び出します。
$(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)
- フォント モジュールを
PRODUCT_PACKAGES
のビルドに追加し、再ビルドします。フォントがシステムにインストールされます。 ttf
フォント ファイルがデバイスの/product/fonts
フォルダにあることを確認します。fonts_customization.xml
がデバイスの/product/etc/
にあることを確認します。
新しいシステム フォント ファミリーを使用する
新しいシステム フォント ファミリーを使用するには:
<style name="customstyle"> <item name="android:fontFamily">customfontfamily</item> </style>