Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Обзор
Начиная с уровня 26 API пакет SDK для Android позволяет рассматривать шрифты как ресурсы, как макеты или рисуемые элементы. Библиотека поддержки Android 26 NuGet будет поддерживать новые API шрифтов для тех приложений, которые предназначены для уровня API 14 или более поздней версии.
После назначения API 26 или установки библиотеки поддержки Android версии 26 можно использовать два способа использования шрифтов в приложении Android:
- Упаковайте шрифт как ресурс Android— это гарантирует, что шрифт всегда доступен приложению, но увеличит размер APK.
- Скачайте шрифты — Android также поддерживает скачивание шрифта из поставщика шрифтов. Поставщик шрифтов проверка, если шрифт уже находится на устройстве. При необходимости шрифт будет скачан и кэширован на устройстве. Этот шрифт можно совместно использовать между несколькими приложениями.
Аналогичные шрифты (или шрифты, которые могут иметь несколько разных стилей), могут быть сгруппированы в семейства шрифтов. Это позволяет разработчикам указывать определенные атрибуты шрифта, такие как вес, и Android автоматически выбирает соответствующий шрифт из семейства шрифтов.
Библиотека поддержки Android версии 26 будет поддерживать поддержку шрифтов на уровне API 26. При выборе более старых уровней API необходимо объявить app
пространство имен XML и присвоить имена различным атрибутам шрифта с помощью android:
пространства имен и app:
пространства имен. Если используется только android:
пространство имен, шрифты не будут отображаться на устройствах с уровнем API 25 или меньше. Например, этот фрагмент XML объявляет новый ресурс семейства шрифтов, который будет работать на уровне API 14 и выше:
<?xml version="1.0" encoding="utf-8"?>
<font-family
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font android:font="@font/sourcesanspro_regular"
android:fontStyle="normal"
android:fontWeight="400"
app:font="@font/sourcesanspro_regular"
app:fontStyle="normal"
app:fontWeight="400" />
</font-family>
Если шрифты предоставляются приложению Android должным образом, их можно применить к мини-приложению пользовательского интерфейса, задав fontFamily
атрибут. Например, в следующем фрагменте кода показано, как отобразить шрифт в TextView:
<TextView
android:text="The quick brown fox jumped over the lazy dog."
android:fontFamily="@font/sourcesanspro_regular"
app:fontFamily="@font/sourcesanspro_regular"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
В этом руководстве сначала описано, как использовать шрифты в качестве ресурса Android, а затем перейти к обсуждению того, как скачать шрифты во время выполнения.
Шрифты как ресурс
Упаковка шрифта в APK Android гарантирует, что оно всегда доступно приложению. Файл шрифта (либо . TTF или a . OTF-файл) добавляется в приложение Xamarin.Android так же, как и любой другой ресурс, копируя файлы в подкаталог в папку Resources проекта Xamarin.Android. Ресурсы шрифтов хранятся в подкаталоге шрифта папки Resources проекта.
Примечание.
Шрифты должны иметь действие сборки AndroidResource или они не будут упаковываться в окончательный APK. Действие сборки должно быть автоматически задано интегрированной среду разработки.
Если существует множество похожих файлов шрифта (например, один и тот же шрифт с различными весами или стилями), их можно сгруппировать в семейство шрифтов.
Семейства шрифтов
Семейство шрифтов — это набор шрифтов с различными весами и стилями. Например, для полужирных или курсивных шрифтов могут быть отдельные файлы шрифтов. Семейство шрифтов определяется font
элементами в XML-файле, который хранится в каталоге Resources/font . У каждого семейства шрифтов должен быть собственный XML-файл.
Чтобы создать семейство шрифтов, сначала добавьте все шрифты в папку Resources/font . Затем создайте XML-файл в папке шрифта для семейства шрифтов. Имя XML-файла не имеет сходства или связи с шрифтами, на которые ссылается ссылка; Файл ресурса может быть любым юридическим именем файла ресурсов Android. Этот XML-файл будет иметь корневой font-family
элемент, содержащий один или несколько font
элементов. Каждый font
элемент объявляет атрибуты шрифта.
Следующий XML является примером семейства шрифтов для шрифта Sources Sans Pro , который определяет множество различных весов шрифтов. Это сохраняется в папке Resources/font с именем sourcesanspro.xml:
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font android:font="@font/sourcesanspro_regular"
android:fontStyle="normal"
android:fontWeight="400"
app:font="@font/sourcesanspro_regular"
app:fontStyle="normal"
app:fontWeight="400" />
<font android:font="@font/sourcesanspro_bold"
android:fontStyle="normal"
android:fontWeight="800"
app:font="@font/sourcesanspro_bold"
app:fontStyle="normal"
app:fontWeight="800" />
<font android:font="@font/sourcesanspro_italic"
android:fontStyle="italic"
android:fontWeight="400"
app:font="@font/sourcesanspro_italic"
app:fontStyle="italic"
app:fontWeight="400" />
</font-family>
Атрибут fontStyle
имеет два возможных значения:
- normal — обычный шрифт
- курсив — курсивный шрифт
Атрибут fontWeight
соответствует атрибуту CSS font-weight
и ссылается на толщину шрифта. Это значение в диапазоне от 100 до 900. В следующем списке описываются общие значения веса шрифта и их имя:
- Тонкий – 100
- Дополнительный свет – 200
- Свет – 300
- Обычный — 400
- Средний — 500
- Полужирный полужирный — 600
- Полужирный — 700
- Дополнительный полужирный — 800
- Черный — 900
После определения семейства шрифтов его можно использовать декларативно, задав fontFamily
textStyle
атрибуты и fontWeight
атрибуты в файле макета. Например, следующий фрагмент XML задает шрифт 600 вес (обычный) и курсивный текст:
<TextView
android:text="Sans Source Pro semi-bold italic, 600 weight, italic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/sourcesanspro"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_horizontal"
android:fontWeight="600"
android:textStyle="italic"
/>
Программное назначение шрифтов
Шрифты можно задать программным способом Resources.GetFont
с помощью метода для извлечения Typeface
объекта. Во многих представлениях есть TypeFace
свойство, которое можно использовать для назначения шрифта мини-приложению. В этом фрагменте кода показано, как программно задать шрифт в TextView:
Android.Graphics.Typeface typeface = this.Resources.GetFont(Resource.Font.caveat_regular);
textView1.Typeface = typeface;
textView1.Text = "Changed the font";
Метод GetFont
автоматически загружает первый шрифт в семействе шрифтов. Чтобы загрузить шрифт, соответствующий определенному стилю Typeface.Create
, используйте метод. Этот метод попытается загрузить шрифт, соответствующий указанному стилю. Например, этот фрагмент кода попытается загрузить полужирный Typeface
объект из семейства шрифтов, определенного в resources/fonts:
var typeface = Typeface.Create("<FONT FAMILY NAME>", Android.Graphics.TypefaceStyle.Bold);
textView1.Typeface = typeface;
Скачивание шрифтов
Вместо упаковки шрифтов в качестве ресурса приложения Android может скачать шрифты из удаленного источника. Это приведет к желаемому эффекту уменьшения размера APK.
Шрифты скачиваются с помощью поставщика шрифтов. Это специализированный поставщик контента, который управляет загрузкой и кэшированием шрифтов для всех приложений на устройстве. Android 8.0 включает поставщик шрифтов для скачивания шрифтов из репозитория шрифтов Google. Этот поставщик шрифтов по умолчанию поддерживается на уровне API 14 с библиотекой поддержки Android версии 26.
Когда приложение запрашивает шрифт, поставщик шрифтов сначала проверка, чтобы узнать, уже ли шрифт находится на устройстве. Если нет, он попытается скачать шрифт. Если не удается скачать шрифт, Android будет использовать системный шрифт по умолчанию. После скачивания шрифта он доступен всем приложениям на устройстве, а не только приложению, который сделал первоначальный запрос.
Когда запрос выполняется для скачивания шрифта, приложение не запрашивает непосредственно поставщика шрифтов. Вместо этого приложения будут использовать экземпляр FontsContract
API (или FontsContractCompat
, если используется библиотека поддержки 26).
Android 8.0 поддерживает скачивание шрифтов двумя способами:
- Объявление загружаемых шрифтов в качестве ресурса — приложение может объявлять скачанные шрифты в Android с помощью XML-файлов ресурсов. Эти файлы будут содержать все метаданные, которые Android должен асинхронно скачать шрифты при запуске приложения и кэшировать их на устройстве.
- Программным способом — API на уровне 26 Android позволяют приложению загружать шрифты программным способом, пока приложение работает. Приложения будут создавать
FontRequest
объект для заданногоFontsContract
шрифта и передавать этот объект в класс.FontRequest
ПринимаетFontsContract
и извлекает шрифт из поставщика шрифтов. Android будет синхронно скачать шрифт. Пример созданияFontRequest
будет показан далее в этом руководстве.
Независимо от того, какой подход используется, файлы ресурсов, которые необходимо добавить в приложение Xamarin.Android перед скачиванием шрифтов. Во-первых, шрифты должны быть объявлены в XML-файле в каталоге Resources/font в рамках семейства шрифтов. Этот фрагмент кода является примером загрузки шрифтов из коллекции Google Fonts Open Source с помощью поставщика шрифтов по умолчанию, который поставляется с Android 8.0 (или библиотекой поддержки версии 26):
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fontProviderAuthority="com.google.android.gms.fonts"
android:fontProviderPackage="com.google.android.gms"
android:fontProviderQuery="VT323"
android:fontProviderCerts="@array/com_google_android_gms_fonts_certs"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="VT323"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs"
>
</font-family>
Элемент font-family
содержит следующие атрибуты, объявляя сведения, необходимые Android для скачивания шрифтов:
- fontProviderAuthority — центр поставщика шрифтов, который будет использоваться для запроса.
- fontPackage — пакет для поставщика шрифтов, который будет использоваться для запроса. Используется для проверки удостоверения поставщика.
- fontQuery — это строка, которая поможет поставщику шрифтов найти запрошенный шрифт. Сведения о запросе шрифта относятся к поставщику шрифтов. Класс
QueryBuilder
в примере приложения "Загружаемые шрифты" содержит некоторые сведения о формате запроса для шрифтов из коллекции Google Fonts Open Source. - fontProviderCerts — массив ресурсов со списком наборов хэшей для сертификатов, с которыми должен быть подписан поставщик.
После определения шрифтов может потребоваться предоставить сведения о сертификатах шрифтов , связанных с скачиванием.
Сертификаты шрифта
Если поставщик шрифтов не предварительно установлен на устройстве или если приложение использует Xamarin.Android.Support.Compat
библиотеку, Android требует сертификатов безопасности поставщика шрифтов. Эти сертификаты будут перечислены в файле ресурсов массива, который хранится в каталоге Resources/values .
Например, следующий XML называется Resources/values/fonts_cert.xml и сохраняет сертификаты для поставщика шрифтов Google:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="com_google_android_gms_fonts_certs">
<item>@array/com_google_android_gms_fonts_certs_dev</item>
<item>@array/com_google_android_gms_fonts_certs_prod</item>
</array>
<string-array name="com_google_android_gms_fonts_certs_dev">
<item>
MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
</item>
</string-array>
<string-array name="com_google_android_gms_fonts_certs_prod">
<item>
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
</item>
</string-array>
</resources>
С помощью этих файлов ресурсов приложение может скачать шрифты.
Объявление загружаемых шрифтов в качестве ресурсов
В AndroidManifest.XML скачиваемые шрифты Android будет асинхронно скачивать шрифты при первом запуске приложения. Сами шрифты перечислены в файле ресурсов массива, как и в следующем:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="downloadable_fonts" translatable="false">
<item>@font/vt323</item>
</array>
</resources>
Чтобы скачать эти шрифты, их необходимо объявить в AndroidManifest.XML путем добавления meta-data
в качестве дочернего application
элемента. Например, если загружаемые шрифты объявляются в файле ресурсов по адресу Resources/values/downloadable_fonts.xml, этот фрагмент должен быть добавлен в манифест:
<meta-data android:name="downloadable_fonts" android:resource="@array/downloadable_fonts" />
Скачивание шрифта с помощью API шрифтов
Можно программно скачать шрифт, создав FontRequest
экземпляр объекта и передав его методу FontContractCompat.RequestFont
. Метод FontContractCompat.RequestFont
сначала проверка, чтобы узнать, существует ли шрифт на устройстве, а затем при необходимости будет асинхронно запрашивать поставщик шрифтов и пытаться скачать шрифт для приложения. Если FontRequest
не удается скачать шрифт, Android будет использовать системный шрифт по умолчанию.
Объект FontRequest
содержит сведения, которые будут использоваться поставщиком шрифтов для поиска и скачивания шрифта. Требуется FontRequest
четыре фрагмента информации:
- Центр поставщика шрифтов — центр поставщика шрифтов, используемый для запроса.
- Пакет шрифтов — пакет поставщика шрифтов, который будет использоваться для запроса. Используется для проверки удостоверения поставщика.
- Запрос шрифта — это строка, которая поможет поставщику шрифтов найти запрошенный шрифт. Сведения о запросе шрифта относятся к поставщику шрифтов. Сведения о строке зависят от поставщика шрифтов. Класс
QueryBuilder
в примере приложения "Загружаемые шрифты" содержит некоторые сведения о формате запроса для шрифтов из коллекции Google Fonts Open Source. - Сертификаты поставщика шрифтов — массив ресурсов со списком наборов хэшей для сертификатов, с которыми должен быть подписан поставщик.
Этот фрагмент кода является примером создания экземпляра нового FontRequest
объекта:
FontRequest request = new FontRequest("com.google.android.gms.fonts", "com.google.android.gms", <FontToDownload>, Resource.Array.com_google_android_gms_fonts_certs);
В предыдущем фрагменте FontToDownload
кода представлен запрос, который поможет шрифту из коллекции Google Fonts Open Source.
Перед передачей FontRequest
FontContractCompat.RequestFont
метода необходимо создать два объекта:
FontsContractCompat.FontRequestCallback
— Это абстрактный класс, который должен быть расширен. Это обратный вызов, который будет вызываться послеRequestFont
завершения. Приложение Xamarin.Android должно быть подклассомFontsContractCompat.FontRequestCallback
OnTypefaceRequestFailed
и переопределять его иOnTypefaceRetrieved
предоставлять действия, которые необходимо выполнить при сбое загрузки или успешном выполнении соответственно.Handler
— ЭтоHandler
то, что будет использоватьсяRequestFont
для скачивания шрифта в потоке при необходимости. Шрифты не должны загружаться в потоке пользовательского интерфейса.
Этот фрагмент является примером класса C#, который асинхронно скачивает шрифт из коллекции Google Fonts Open Source. Он реализует FontRequestCallback
интерфейс и вызывает событие C# после FontRequest
завершения.
public class FontDownloadHelper : FontsContractCompat.FontRequestCallback
{
// A very simple font query; replace as necessary
public static readonly String FontToDownload = "Courgette";
Android.OS.Handler Handler = null;
public event EventHandler<FontDownloadEventArg> FontDownloaded = delegate
{
// just an empty delegate to avoid null reference exceptions.
};
public void DownloadFonts(Context context)
{
FontRequest request = new FontRequest("com.google.android.gms.fonts", "com.google.android.gms",FontToDownload , Resource.Array.com_google_android_gms_fonts_certs);
FontsContractCompat.RequestFont(context, request, this, GetHandlerThreadHandler());
}
public override void OnTypefaceRequestFailed(int reason)
{
base.OnTypefaceRequestFailed(reason);
FontDownloaded(this, new FontDownloadEventArg(null));
}
public override void OnTypefaceRetrieved(Android.Graphics.Typeface typeface)
{
base.OnTypefaceRetrieved(typeface);
FontDownloaded(this, new FontDownloadEventArg(typeface));
}
Handler GetHandlerThreadHandler()
{
if (Handler == null)
{
HandlerThread handlerThread = new HandlerThread("fonts");
handlerThread.Start();
Handler = new Handler(handlerThread.Looper);
}
return Handler;
}
}
public class FontDownloadEventArg : EventArgs
{
public FontDownloadEventArg(Android.Graphics.Typeface typeface)
{
Typeface = typeface;
}
public Android.Graphics.Typeface Typeface { get; private set; }
public bool RequestFailed
{
get
{
return Typeface != null;
}
}
}
Чтобы использовать этот вспомогательный элемент, создается новое FontDownloadHelper
и назначается обработчик событий:
var fontHelper = new FontDownloadHelper();
fontHelper.FontDownloaded += (object sender, FontDownloadEventArg e) =>
{
//React to the request
};
fontHelper.DownloadFonts(this); // this is an Android Context instance.
Итоги
В этом руководстве рассматриваются новые API в Android 8.0 для поддержки загружаемых шрифтов и шрифтов в качестве ресурсов. Он обсудил, как внедрить существующие шрифты в APK и использовать их в макете. Он также обсудил, как Android 8.0 поддерживает скачивание шрифтов из поставщика шрифтов программным способом или путем объявления метаданных шрифта в файлах ресурсов.