Теперь вы можете использовать наложения ресурсов времени выполнения (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
. Это имя используется позже для доступа к семейству шрифтов. Этот файл необходимо добавить в модульfonts_customizations.xml
, определенный ранее вAndroid.mk
.Приведенный выше образец содержит допустимый файл
fonts_customization.xml
. - Создадим
fonts.mk
. Например:vendor/[oem]/[device]_overlay/fonts/fonts.mk
- Добавьте
fonts_customization.xml
под флагомPRODUCT_PACKAGES
. - Вызовите каждый из ранее созданных пакетов шрифтов.
$(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>