Implémenter des polices personnalisées

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.

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 de /system/etc/fonts.xml. Notez que Voici trois façons de personnaliser les polices:

  1. Remplacez le fichier NotoColorEmoji.ttf par une police d'emoji de la marque OEM.
  2. Modifiez le fichier NotoColorEmoji.ttf en fonction des besoins de votre marché local.
  3. 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:

  1. Placez votre propre police, appelée OEMCustomEmoji.ttf, dans la partition /system.
  2. Modifiez /system/etc/fonts.xml 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:

  1. Créez votre propre fichier NotoColorEmoji avec un nom différent. Exemple : Nommez-la Modified\_NotoColorEmoji.ttf.
  2. 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 FontManger effectue des mises à jour des polices. L'appli FontManager fournit le dernier état des polices système installées et la possibilité de mettre à jour les fichiers de police avec des signatures. Pour appeler des applications de mise à jour, ajoutez le UPDATE_FONT signature|privileged autorisation à accéder à la 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 .