新增自訂字體

現在您可以使用執行時間資源覆蓋 (RRO) 來變更字體。透過新增自訂字體來製作字體包,您可以在主題中使用字體並使用 RRO 來套用自訂設定。

完成這些任務:

custom-fonts.zip中提供了範例檔案結構和範例檔案。下載該文件,然後在本地解壓縮以供您自己使用。

製作字體包

製作字體包:

  1. 將所有字體ttf檔案新增至vendor分區中的字體包。例如:

    vendor/[oem]/fonts/[oem]-sans/

  2. 為字體包建立Android.mk檔案。例如:

    vendor/[oem]/fonts/[oem]-[fontname]/Android.mk

  3. 確保該模組將安裝在product分割區的etc資料夾中。為此,請確認模組具有以下標誌:
    LOCAL_MODULE_CLASS := ETC
    LOCAL_PRODUCT_MODULE := true
    LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
    

    上面提供的範例程式碼說明了字體包模組的完整定義。

  4. 為字型包建立一個名為fonts.mk的文件,然後將字型ttf檔案加入PRODUCT_PACKAGES 。例如:

    vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk

    例如:

    PRODUCT_PACKAGES := \
    [font name].ttf \
    

建立設備覆蓋包

  1. 建立一個名為fonts_customization.xml模組以新增到建置中。此模組指向包含字體系列的fonts_customization.xml文件,並呼叫所有字體包的make 文件。例如:

    vendor/[oem]/[device]_overlay/fonts/Android.mk

  2. 建立字體系列:

    vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml

    檔案的根層級必須是fonts-modification標記。為該元素下的每個字體包新增字體系列。此外,為每個字體系列添加customizationType="new-named-family" ,並確保每個字體系列都有name屬性。該名稱稍後用於存取字體系列。必須將此檔案新增至先前在Android.mk中定義的fonts_customizations.xml模組中。

    上面提供的範例包含有效的fonts_customization.xml檔案。

  3. 建立fonts.mk 。例如:

    vendor/[oem]/[device]_overlay/fonts/fonts.mk

  4. PRODUCT_PACKAGES標誌下新增fonts_customization.xml
  5. 呼叫之前創建的每個字體包。

    $(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)

  6. 將字體模組新增至PRODUCT_PACKAGES下的建置中,然後重新建置。字體將安裝在系統上。
  7. 驗證ttf字型檔案是否位於裝置上的/product/fonts資料夾中。
  8. 驗證fonts_customization.xml是否位於裝置上的/product/etc/中。

使用新的系統字型系列

要使用新的系統字體系列:

<style name="customstyle">
    <item name="android:fontFamily">customfontfamily</item>
</style>