現在您可以使用執行時間資源覆蓋 (RRO) 來變更字體。透過新增自訂字體來製作字體包,您可以在主題中使用字體並使用 RRO 來套用自訂設定。
完成這些任務:
custom-fonts.zip中提供了範例檔案結構和範例檔案。下載該文件,然後在本地解壓縮以供您自己使用。
製作字體包
製作字體包:
- 將所有字體
ttf
檔案新增至vendor
分區中的字體包。例如:vendor/[oem]/fonts/[oem]-sans/
- 為字體包建立
Android.mk
檔案。例如:vendor/[oem]/fonts/[oem]-[fontname]/Android.mk
- 確保該模組將安裝在
product
分割區的etc
資料夾中。為此,請確認模組具有以下標誌: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>