新增自訂字型

您現在可以使用執行階段資源覆蓋 (RRO) 變更字型。新增自訂字型來製作字型套件,即可在主題中使用字型,並使用 RRO 套用自訂項目。

完成下列工作:

custom-fonts.zip 提供檔案結構和範例檔案。請下載並在本機解壓縮這個檔案,以供您使用。

製作字型套件

如何製作字型套件:

  1. 將所有字型 ttf 檔案新增至 vendor 分割區中的字型套件。例如:

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

  2. 為字型套件建立 Android.mk 檔案。例如:

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

  3. 請確認模組會安裝在 etc 資料夾的 product 分區中。如要這樣做,請確認模組具有下列標記:
    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 檔案,並呼叫所有字型套件的製作檔案。例如:

    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>