Теперь вы можете использовать наложения ресурсов времени выполнения (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>