Функция «Загружаемые шрифты» позволяет API запрашивать шрифты у приложения-поставщика вместо того, чтобы включать файлы в приложение или позволять приложению загружать шрифты. Функция «Загружаемые шрифты» доступна на устройствах с Android API версий 14 и выше через библиотеку AndroidX Core.
Сервис Downloadable Fonts предлагает следующие преимущества:
Уменьшает размер приложения, тем самым повышая вероятность успешной установки.
Улучшает общее состояние системы, поскольку несколько приложений могут использовать один и тот же шрифт через одного поставщика. Это экономит пользователям мобильный трафик, память телефона и дисковое пространство. В этой модели шрифт загружается по сети по мере необходимости.
Для практического ознакомления с загружаемыми шрифтами ознакомьтесь с примером приложения DownloadableFonts .
Как работает функция загрузки шрифтов?
Поставщик шрифтов — это приложение, которое получает шрифты и кэширует их локально, чтобы другие приложения могли запрашивать и обмениваться шрифтами. На следующем рисунке показан этот процесс.
Рисунок 1. Процесс загрузки шрифтов.
Основы
Функцию «Загружаемые шрифты» можно использовать следующими способами, которые подробно описаны в последующих разделах:
Используйте загружаемые шрифты с Android Studio и сервисами Google Play.
Вы можете настроить приложение на загрузку шрифтов, используя Android Studio 3.0 или более позднюю версию. Чтобы упростить начало работы с функцией загрузки шрифтов, вы можете использовать поставщика шрифтов из сервисов Google Play.
В редакторе макета выберите TextView . Затем в разделе «Атрибуты» выберите fontFamily > «Дополнительные шрифты» . Рисунок 2. Использование редактора макета . Открывается окно «Ресурсы» .
В меню «Источник» выберите «Google Fonts» .
В поле «Шрифты» выберите шрифт в области «Доступные для скачивания».
Выберите «Создать загружаемый шрифт» и нажмите «ОК» . Рисунок 3. Выбор шрифта в окне «Ресурсы» .
Android Studio автоматически генерирует необходимые XML-файлы для корректного отображения шрифта в вашем приложении.
Начиная с Android 8.0 (уровень API 26), AndroidX Core обеспечивает полную поддержку загружаемых шрифтов. Для получения дополнительной информации об использовании библиотеки AndroidX Core см. раздел «Загружаемые шрифты» в библиотеке AndroidX Core на этой странице.
Для программного использования функции загружаемых шрифтов взаимодействуйте с двумя ключевыми классами:
Ваше приложение получает шрифты от поставщика шрифтов, используя API FontsContract . Каждый поставщик имеет свой набор ограничений по поддерживаемым версиям Android и языку запросов. Для получения дополнительной информации о версиях Android и формате запросов обратитесь к документации вашего поставщика.
Чтобы скачать шрифт, выполните следующие шаги:
Создайте экземпляр класса android.graphics.fonts.FontRequest для запроса шрифта у поставщика. Для создания запроса передайте следующие параметры:
Орган, ответственный за предоставление шрифтов.
Пакет поставщика шрифтов для проверки подлинности поставщика.
Строковый запрос шрифта. Для получения дополнительной информации о форматах запросов см. документацию вашего поставщика шрифтов, например, Google Fonts .
Список наборов хешей для сертификатов, используемых для проверки подлинности поставщика.
Переопределите метод onTypefaceRetrieved() , чтобы указать, что запрос шрифта завершен. Укажите полученный шрифт в качестве параметра. Вы можете использовать этот метод для установки шрифта по мере необходимости. Например, вы можете установить шрифт для TextView .
Переопределите метод onTypefaceRequestFailed() , чтобы получать информацию об ошибках в процессе запроса шрифта. Для получения дополнительной информации о кодах ошибок см. константы кодов ошибок .
Вызовите метод FontsContract.requestFont() для получения шрифта от поставщика шрифтов. Метод инициирует проверку наличия шрифта в кэше. Если шрифт недоступен локально, он вызывает поставщика шрифтов, асинхронно получает шрифт и передает результат в функцию обратного вызова. Передайте следующие параметры:
Экземпляр класса android.graphics.fonts.FontRequest
Функция обратного вызова для получения результатов запроса шрифта.
Обработчик для загрузки шрифтов в отдельном потоке.
Приведенный ниже пример кода иллюстрирует общий процесс загрузки шрифтов:
Котлин
valrequest=FontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs)valcallback=object:FontsContract.FontRequestCallback(){overridefunonTypefaceRetrieved(typeface:Typeface){// Your code to use the font goes here....}overridefunonTypefaceRequestFailed(reason:Int){// Your code to deal with the failure goes here....}}FontsContract.requestFonts(context,request,handler,null,callback)
Java
FontRequestrequest=newFontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs);FontsContract.FontRequestCallbackcallback=newFontsContract.FontRequestCallback(){@OverridepublicvoidonTypefaceRetrieved(Typefacetypeface){// Your code to use the font goes here....}@OverridepublicvoidonTypefaceRequestFailed(intreason){// Your code to deal with the failure goes here....}};FontsContract.requestFonts(context,request,handler,null,callback);
Для получения более подробной информации о том, как загрузить шрифт от поставщика шрифтов, см. пример приложения DownloadableFonts .
Используйте загружаемые шрифты с ядром AndroidX.
Ядро AndroidX обеспечивает поддержку функции загружаемых шрифтов на устройствах, работающих под управлением Android API версии 14 или выше. Пакет androidx.core.provider содержит классы FontsContractCompat и FontRequest для реализации обратно совместимой поддержки функции загружаемых шрифтов. Классы AndroidX содержат методы, аналогичные методам фреймворка, а процесс загрузки шрифтов аналогичен описанному в разделе на этой странице о программном использовании загружаемых шрифтов .
Для загрузки шрифтов с помощью AndroidX импортируйте классы FontsContractCompat и FontRequest из пакета androidx.core.provider . Создавайте экземпляры этих классов вместо классов фреймворка FontsContract и android.graphics.fonts.FontRequest .
Добавить зависимость ядра AndroidX
Для использования классов FontsContractCompat и FontRequest необходимо изменить зависимости classpath в вашем проекте приложения в среде разработки.
Чтобы добавить AndroidX Core в проект вашего приложения, добавьте следующую зависимость в файл build.gradle вашего приложения:
Используйте загружаемые шрифты в качестве ресурсов в XML.
Android 8.0 (уровень API 26) и AndroidX Core предлагают более быстрый и удобный способ объявления пользовательского шрифта в качестве ресурса в XML-макете. Это означает, что нет необходимости включать шрифт в состав ресурса. Вы можете определить пользовательский шрифт для всей вашей темы, что ускоряет удобство использования для различных вариантов толщины и стиля, таких как жирный, средний или светлый, если таковые имеются.
Создайте новый XML-файл в папке res/font .
Добавьте корневой элемент <font-family> и задайте атрибуты, связанные со шрифтом, как показано в следующем примере XML-файла:
В XML-файле разметки укажите ссылку на файл как @font/font_file_name . Вы также можете использовать метод getFont() для программного получения файла, например, getFont(R.font.font_file_name) .
Предварительно укажите шрифты в манифесте.
Создание макета и получение ресурсов — синхронные задачи. По умолчанию первая попытка получения шрифтов запускает запрос к поставщику шрифтов, что увеличивает время первой компоновки. Чтобы избежать задержки, вы можете предварительно указать шрифты, которые необходимо получить, в своем манифесте. После того, как система получит шрифт от поставщика, он становится доступен немедленно. Если получение шрифта занимает больше времени, чем ожидалось, система прерывает процесс получения и использует шрифт по умолчанию.
Чтобы предварительно указать шрифты в манифесте, выполните следующие шаги:
Создайте массив ресурсов в файле res/values/arrays.xml и укажите шрифты, которые вы хотите предварительно загрузить.
Если поставщик шрифтов не предустановлен или вы используете библиотеку AndroidX Core, укажите сертификаты, которыми подписан поставщик шрифтов. Система использует эти сертификаты для проверки подлинности поставщика шрифтов.
Для добавления сертификатов выполните следующие действия:
Создайте строковый массив с данными сертификата. Для получения дополнительной информации о данных сертификата обратитесь к документации вашего поставщика шрифтов.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2026-01-15 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2026-01-15 UTC."],[],[]]