您現在可以使用運行時資源覆蓋 (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>