您現在可以使用執行階段資源覆蓋 (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
檔案,並呼叫所有字型套件的製作檔案。例如: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>