La fonctionnalité Polices téléchargeables permet aux API de demander des polices à une application de fournisseur au lieu de regrouper des fichiers dans l'application ou de laisser l'application télécharger des polices. Les polices téléchargeables sont disponibles sur les appareils exécutant les versions 14 et ultérieures de l'API Android via la bibliothèque AndroidX Core.
Les polices téléchargeables offrent les avantages suivants :
Réduction de la taille de l'application, ce qui augmente le taux de réussite de l'installation.
Amélioration de l'état général du système, car plusieurs applications peuvent partager la même police via un
fournisseur. Cela permet aux utilisateurs d'économiser des données mobiles, de la mémoire de téléphone et de l'espace disque. Dans ce modèle, la
police est récupérée sur le réseau si nécessaire.
Comment fonctionnent les polices téléchargeables ?
Un fournisseur de polices est une application qui récupère les polices et les met en cache localement afin que d'autres applications puissent les demander et les partager. L'illustration suivante montre le processus.
Image 1. Processus des polices téléchargeables.
Principes de base
Vous pouvez utiliser la fonctionnalité Polices téléchargeables de différentes manières, qui sont décrites en détail dans les sections suivantes :
Utiliser les polices téléchargeables avec Android Studio et les services Google Play
Vous pouvez configurer votre application pour qu'elle télécharge des polices à l'aide d'Android Studio 3.0 ou version ultérieure. Pour vous aider à démarrer avec les fonctionnalités des polices téléchargeables, vous pouvez utiliser le fournisseur de polices des services Google Play.
Dans l'éditeur de mise en page, sélectionnez un TextView. Ensuite, sous Attributs,
sélectionnez fontFamily > Autres polices.
Image 2. Utilisation de l'éditeur de mise en page.
La fenêtre Ressources s'affiche.
Dans le menu Source, sélectionnez Google Fonts.
Dans la zone Polices, sélectionnez une police dans la zone "Téléchargeable".
Sélectionnez Créer une police téléchargeable , puis cliquez sur OK.
Image 3. Sélection d'une police dans la fenêtre Ressources.
Android Studio génère automatiquement les fichiers XML pertinents nécessaires pour afficher correctement la police dans votre application.
Image 4. Aperçu du fichier de police.
Utiliser les polices téléchargeables par programmation
Depuis Android 8.0 (niveau d'API 26), AndroidX Core offre une prise en charge complète des polices téléchargeables. Pour
en savoir plus sur l'utilisation de la bibliothèque AndroidX Core, consultez la
section Bibliothèque AndroidX Core pour les polices téléchargeables sur cette page.
Pour utiliser la fonctionnalité Polices téléchargeables par programmation, interagissez avec deux classes clés :
FontsContractCompat:
cette classe vous permet de créer un nouvel
Typeface objet basé sur
la requête de police.
Votre application récupère les polices auprès du fournisseur de polices à l'aide de l'API FontsContract. Chaque fournisseur a son propre ensemble de restrictions concernant les versions d'Android et le langage de requête qu'il prend en charge. Pour en savoir plus sur les versions d'Android et le format de requête, consultez la documentation de votre fournisseur.
Pour télécharger une police, procédez comme suit :
Créez une instance de la classe android.graphics.fonts.FontRequest pour demander la police au fournisseur. Pour créer une requête, transmettez les paramètres suivants :
Autorité du fournisseur de polices.
Package du fournisseur de polices permettant de vérifier l'identité du fournisseur.
Requête de chaîne de la police. Pour en savoir plus sur les formats de requête, consultez la documentation de votre fournisseur de polices, par exemple Google Fonts.
Liste d'ensembles de hachages des certificats permettant de vérifier l'identité du fournisseur.
Remplacez la
onTypefaceRetrieved()
méthode pour indiquer que la requête de police est terminée. Fournissez la police récupérée comme paramètre.
Vous pouvez utiliser cette méthode pour définir la police selon vos besoins. Par exemple, vous pouvez définir la police sur un
TextView.
Remplacez la
onTypefaceRequestFailed()
méthode pour recevoir des informations sur les erreurs survenues lors du processus de requête de police. Pour en savoir plus
sur les codes d'erreur, consultez les
constantes de code d'erreur.
Appelez la méthode FontsContract.requestFont() pour récupérer la police auprès du fournisseur de polices. La méthode lance une vérification pour déterminer si la police existe dans le cache. Si
la police n'est pas disponible localement, elle appelle le fournisseur de polices, récupère la police
de manière asynchrone et transmet le résultat au rappel. Transmettez les paramètres suivants :
Une instance de la classe android.graphics.fonts.FontRequest
Un rappel pour recevoir les résultats de la requête de police
Un gestionnaire pour récupérer les polices sur un thread
L'exemple de code suivant illustre le processus global des polices téléchargeables :
Kotlin
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);
Utiliser les polices téléchargeables avec AndroidX Core
AndroidX Core prend en charge la fonctionnalité Polices téléchargeables sur les appareils exécutant les versions 14 ou ultérieures de l'
API Android. Le package androidx.core.provider contient les classes FontsContractCompat et FontRequest pour implémenter la prise en charge de la fonctionnalité Polices téléchargeables rétrocompatible. Les classes AndroidX contiennent des méthodes
semblables aux méthodes du framework, et le processus de téléchargement des polices est semblable à celui
décrit dans la section de cette page sur
l'utilisation des polices téléchargeables par programmation.
Pour télécharger des polices à l'aide d'AndroidX, importez les classes FontsContractCompat et FontRequest à partir du package androidx.core.provider. Créez des instances de ces classes au lieu des classes de framework FontsContract et android.graphics.fonts.FontRequest.
Ajouter une dépendance AndroidX Core
Pour utiliser les classes FontsContractCompat et FontRequest, vous devez modifier les dépendances de chemin de classe du projet de votre application dans votre environnement de développement.
Pour ajouter AndroidX Core au projet de votre application, ajoutez la dépendance suivante au fichier build.gradle de votre application :
Utiliser les polices téléchargeables comme ressources en XML
Android 8.0 (niveau d'API 26) et AndroidX Core offrent un moyen plus rapide et plus pratique de déclarer une police personnalisée en tant que ressource dans la mise en page XML. Cela signifie qu'il n'est pas nécessaire de regrouper la police en tant qu'élément. Vous pouvez définir une police personnalisée pour l'ensemble de votre thème, ce qui accélère l'utilisation pour plusieurs épaisseurs et styles, tels que le gras, le moyen ou le clair, lorsqu'ils sont fournis.
Créez un fichier XML dans le dossier res/font.
Ajoutez un élément racine <font-family> et définissez les attributs liés à la police, comme
indiqué dans l'exemple de fichier XML suivant :
Faites référence au fichier en tant que @font/font_file_name dans le fichier XML de mise en page. Vous pouvez également
utiliser la
getFont()
méthode pour récupérer le fichier par programmation, par exemple
getFont(R.font.font_file_name).
Prédéclarer des polices dans le fichier manifeste
L'inflation de la mise en page et la récupération des ressources sont des tâches synchrones. Par défaut, la première tentative de récupération des polices déclenche une requête auprès du fournisseur de polices, ce qui augmente le temps de la première mise en page. Pour éviter ce délai, vous pouvez prédéclarer les polices à récupérer dans votre fichier manifeste.
Une fois que le système a récupéré la police auprès du fournisseur, elle est disponible immédiatement. Si la récupération de la police prend plus de temps que prévu, le système abandonne le processus de récupération et utilise la police par défaut.
Pour prédéclarer des polices dans le fichier manifeste, procédez comme suit :
Créez un tableau de ressources dans res/values/arrays.xml et déclarez les polices que vous
souhaitez précharger.
Lorsqu'un fournisseur de polices n'est pas préinstallé ou si vous utilisez la bibliothèque AndroidX Core, déclarez les certificats avec lesquels le fournisseur de polices est signé. Le système utilise les certificats pour vérifier l'identité du fournisseur de polices.
Pour ajouter des certificats, procédez comme suit :
Créez un tableau de chaînes contenant les détails du certificat. Pour en savoir plus sur les détails du certificat, consultez la documentation de votre fournisseur de polices.
Définissez l'attribut fontProviderCerts sur le tableau.
android:fontProviderCerts="@array/certs"
Polices téléchargeables dans Compose
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2026/05/28 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2026/05/28 (UTC)."],[],[]]