ランタイム リソース オーバーレイ(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.mkPRODUCT_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>