À partir d'Android 15, les polices variables s'affichent
de l'environnement d'exécution avec une efficacité et une précision accrues. Avec cette mise à jour, les fournisseurs doivent
ajouter de nouvelles configurations de police
variables à
font_fallback.xml
au lieu de fonts.xml
, car fonts.xml
est en cours d'abandon.
Pour en savoir plus, consultez la section Compatibilité avec les polices variables.
Sous Android 11 et versions antérieures, la mise à jour des fichiers de police installés sur l'appareil dans AOSP (dans le
/system/fonts
) ou les partitions du fournisseur (dans le fichier /product/fonts
ou
/system/fonts
) nécessite une mise à jour du système de l'OEM. Ce
a un impact significatif sur la compatibilité avec les emoji. Dans
Android 12, vous pouvez utiliser le système FontManager
service permettant de gérer les fichiers de polices installées et de mettre à jour ceux installés sur l'appareil
sans mise à jour du système.
Android 12 propose trois interactions de processus :
FontManagerService
, Font Updater
et Application
.
FontManagerService
est le système de gestion central du serveur système.
FontManagerService
stocke les derniers paramètres de police système par utilisateur.
FontUpdater
est un outil de mise à jour de police connectable, approuvé par un
Vérification des autorisations signature|privileged
. Le FontUpdater
communique avec
FontManagerService
pour obtenir, installer, supprimer ou mettre à jour la police système actuelle
paramètres. FontUpdater
peut transmettre le contenu d'un nouveau fichier de police par inter-processus
et des mécanismes de communication (IPC). Le FontManagerService
enregistre le contenu dans
un emplacement de stockage lisible par tous, comme dans les fichiers /data/fonts
. Ce
le stockage est protégé. Il peut être écrit uniquement par le FontManagerService
, par
Règles de SELinux
Lorsque la classe Application
est lancée, elle transmet les paramètres de police système en tant que
les arguments de la méthode bindApplication
; puis il initialise les
paramètres de police
pour être utilisées par
le processus d'application.
Compatibilité avec les polices variables
À partir d'Android 15, les configurations de police variable sont
spécifié dans
font_fallback.xml
en utilisant le format suivant:
<family lang="und-Ethi" supportedAxes="wght,ital">
<font>NotoSansEthiopic-VF.ttf</font>
</family>
Dans ce format, une police variable possède tous les attributs d'une police statique avec
un attribut supportedAxes
supplémentaire. Un attribut supportedAxes
est un
une liste des balises d'axe acceptées séparées par une virgule. Avec
Android 15, seuls les axes wght
et ital
peuvent être
spécifié.
Si l'attribut supportedAxes
n'est pas spécifié, le nœud font
fonctionne comme
police statique d'une seule instance d'une police variable spécifiée avec axis
enfants.
Si l'attribut supportedAxes
est spécifié, le système crée un objet
instance de police pour l'épaisseur et la valeur de style données lors de l'exécution.
Les développeurs peuvent utiliser la android.graphics.fonts.SystemFonts#getAvailableFonts
API Java ou ASystemFontIterator_open
API NDK pour obtenir la liste des fichiers de polices installés par le système Pour plus d'informations sur
de développement compatibles avec cette mise à jour, consultez
API OpenType Variable Font améliorée
et buildVariableFamily
.
Personnaliser les polices
Certains OEM installent ou remplacent les fichiers de police dans AOSP pour afficher leurs marques. Android 12 est compatible avec cette fonctionnalité, mais ajoute exigences pour maintenir à jour les polices emoji sur les appareils. qui n'apportent aucune modification mettre à jour les fichiers de police des emoji, cette fonctionnalité n'est pas nécessaire.
Google met à jour les fichiers de police, en particulier les fichiers NotoColorEmoji
via GMS.
Core. Par conséquent, ne modifiez pas et ne supprimez pas le fichier NotoColorEmoji.ttf
de la
/system
, et ne la supprimez pas
/frameworks/base/data/fonts/fonts.xml
Notez les trois façons suivantes de personnaliser vos polices:
- Remplacez le fichier
NotoColorEmoji.ttf
par une police d'emoji de la marque OEM. - Modifiez le fichier
NotoColorEmoji.ttf
en fonction des besoins de votre marché local. - Remplacer ou modifier d'autres fichiers de police
Si vous ne modifiez pas les polices emoji dans AOSP, aucune action n'est requise de votre part. Si vous souhaitez personnaliser les polices emoji, suivez les instructions ci-dessous .
Remplacement du fichier NotoColorEmoji.ttf par des polices d'emoji de marques OEM
Pour remplacer le fichier NotoColorEmoji.ttf
par le fichier de polices d'emoji de votre OEM, procédez comme suit :
placez la police de l'emoji juste avant la chaîne de remplacement de la police:
- Placez votre propre police, appelée
OEMCustomEmoji.ttf
, dans la partition/system
. Modifiez
/frameworks/base/data/fonts/fonts.xml
(et/frameworks/base/data/fonts/font-fallback.xml
po Android 15 ou version ultérieure), comme dans le code suivant:<family lang="ko"> <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font> </family> <!-- ADD FOLLOWING LINE --> <family lang="und-Zsye"> <font weight="400" style="normal">OEMCustomEmoji.ttf</font> </family> <!-- END OF MODIFICATION --> <family lang="und-Zsye"> <font weight="400" style="normal">NotoColorEmoji.ttf</font> </family> <family lang="und-Zsym"> <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted2.ttf</font> </family>
Modification du fichier NotoColorEmoji.ttf pour les besoins du marché local
Suivez les étapes ci-dessous pour personnaliser votre expérience en fonction des besoins de votre marché local:
- Créez votre propre fichier
NotoColorEmoji
avec un nom différent. Exemple : Nommez-laModified\_NotoColorEmoji.ttf
. - Placez-le avant le fichier
NotoColorEmoji.ttf
d'origine.
Après avoir effectué l'étape 2, le glyphe modifié compatible avec
Modified\NotoColorEmoji.ttf
s'affiche au lieu de NotoColorEmoji.ttf
.
Voici nos recommandations:
- Cette police ne comporte que le glyphe nécessaire.
- Déléguez les glyphes non modifiés au fichier
NotoColorEmoji.ttf
d'origine pour que vos appareils recevront les corrections apportées à l'apparence dans les prochaines versions d'emoji.
Supprimer des glyphes:pour supprimer des glyphes du fichier NotoColorEmoji.ttf
, suivez
les étapes 1 et 2, et spécifiez glyph ID = 0
dans votre carte cmap.
Utilisez un indicateur régional:si le glyphe cible est un indicateur régional, spécifiez
ID du glyphe sous la forme d'un code pays inconnu. (Utilisez country code = "ZZ"
.)
Créer un glyphe de tofu:vous pouvez spécifier explicitement un ID de glyphe de tofu si vous le souhaitez
pour en utiliser une. Lorsque vous spécifiez glyphID = 0
, l'application associée l'interprète comme
"Le glyphe n'est pas disponible." Par exemple, lorsque vous utilisez cet attribut,
L'application Paint#hasGlyph
renvoie false
.
Remplacer ou modifier d'autres fichiers de police
Pour remplacer ou modifier d'autres polices, la personnalisation est semblable à celle de modifier les fichiers TTF pour les besoins du marché local. Fichiers de police inconnus qui sont mis à jour dans AOSP au moment de l'exécution sont ignorés et ne sont pas mis à jour. Google ignore des polices inconnues sur votre appareil. Cela inclut les fichiers de police qui ont été modifiés à partir de les polices d'origine dans AOSP.
Bien que les mises à jour de police soient effectuées par Google dans GMS Core, la mise à jour générale est ouvert à tous les OEM. Les OEM peuvent installer d'autres programmes de mise à jour des polices suivez la procédure décrite dans Conditions préalables à l'utilisation du service, Signer des fichiers de police. et Mettre à jour les polices au moment de l'exécution.
Répondre aux prérequis
Le mécanisme de mise à jour des polices utilise la fonctionnalité de noyau Linux fs-verity
. Vérifiez que
votre appareil est conforme à la norme fs-verity
et inclut le certificat dans votre appareil.
Signer les fichiers de police
Les fichiers de police étant des ressources à risque, ils doivent être validés à l'aide de clés approuvées.
Examinez attentivement tous les fichiers de police à mettre à jour et signez avec votre
clé privée. La signature doit être compatible avec fs-verity
.
Mettre à jour les polices d'exécution
L'application système FontManager
effectue des mises à jour des polices. L'application FontManager
fournit l'état des polices système installées le plus récent et la possibilité de les mettre à jour
avec des signatures. Pour appeler des applications de mise à jour, ajoutez le
Autorisation UPDATE_FONT signature|privileged
à votre
liste d'autorisation d'applications,
et dans votre fichier manifeste.
Accorder l'autorisation UPDATE_FONT signature|privileged
au programme de mise à jour de votre application
.