Добавление пользовательских шрифтов

Теперь вы можете использовать наложения ресурсов времени выполнения (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 . Это имя используется позже для доступа к семейству шрифтов. Этот файл необходимо добавить в модуль fonts_customizations.xml , определенный ранее в Android.mk .

    Приведенный выше образец содержит допустимый файл fonts_customization.xml .

  3. Создадим fonts.mk . Например:

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

  4. Добавьте fonts_customization.xml под флагом PRODUCT_PACKAGES .
  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>