Éliminer les problèmes de cache de polices

  • by Rainer Erich Scheichelbauer
  • Tutorial
  • – Modified on

Si vous souhaitez tester votre police en situation réelle, et que vous envisagez de le faire avec les applis Adobe, et bien, dans ce cas vous n’avez qu’à utiliser le dossier Adobe Fonts, et éviter d’emblée tout problème de cache de polices. Félicitations: vous n’avez pas besoin de lire ce qui suit, vous en avez terminé avec ce tutoriel!

Tester avec des applis qui ne sont pas d’Adobe

Supposons que vous ayez décidé de tester votre police dans un logiciel comme TextEdit ou Word. Donc, vous pourriez l’installer sur le système avec l’appli Adobe [Livre des polices] (https://en.wikipedia.org/wiki/Font_Book), ou bien en utilisant un logiciel d’une tierce compagnie, ou tout simplement en glissant le fichier de la police dans ~/Bibliothèque/Fonts/.

Et bien, ne le faites pas.

Pourquoi donc? Parce qu’en installant une police avec le même nom qu’une autre qui s’y trouve déjà installée peut semer la pagaille dans vos caches de polices. Des caches sont des collections de données calculées antérieurement. Elles peuvent accélérer votre ordinateur en lui évitant de traiter à chaque fois l’information depuis le début. De la même façon, les caches de polices permettent à votre Mac d’accélérer l’utilisation de polices déjà installées puisque tous les calculs nécessaires pour que votre Mac puisse faire apparaitre votre police à l’écran ont déjà été faits.

Mais, bien sûr, si la police d’origine a été modifiée, et que le cache de polices n’ait pas reçu cette information, alors les données dans le cache ne seront plus à jour et fort probablement erronées. Voici des symptômes typiques:

  • Le menu de polices ne montre plus votre police
  • Des glyphes n’apparaissent pas du tout
  • Des changements que vous avez faits à votre police n’apparaissent pas à l’écran
  • Des glyphes confus et amochés sont affichés
  • Vous entrez une lettre, mais une autre s’affiche à la place
  • Des paragraphes ne sont pas correctement redistribués
  • Votre police ne s’imprime pas, les mauvaises lettres sont imprimées ou elles sont confuses

En fait, n’importe quelle bizarrerie de police.

Nettoyer les caches

Si vous rencontrez certains de ces problèmes, supprimez la police du Livre des polices ou n’importe quel autre logiciel que vous utilisez pour tester vos polices. Important: Il ne suffit pas de la désactiver; SUPPRIMEZ-LA. Après coup, ouvrez votre Terminal.app (vous le trouverez sous /Applications/Utilitaires/) et inscrivez les commandes qui suivent. Chaque ligne doit être terminée en appuyant sur la touche Retour. La première ligne s’enquerra de votre mot de passe:

sudo atsutil databases -remove
atsutil server -shutdown
atsutil server -ping

Et maintenant redémarrez votre Mac. Oui, vraiment, ouvrez le menu Apple dans le coin en haut à gauche et sélectionnez Redémarrer… Ne vous imaginez surtout pas que vous pourrez vous en sortir sans redémarrage, car le problème se reproduirait. Ce que vous ne voulez surtout pas, n’est-ce pas? OK, redémarrez votre Mac.

Nettoyer les caches avec un AppleScript

Comme vous êtes sur un Mac, vous n’avez qu’à entrer ces commandes telles quelles dans un AppleScript, et, ce qui est très pratique, vous allez ensuite les rendre disponibles dans le menu Script. Ce qui fait qu’il n’est pas nécessaire de mémoriser le vaudou du Terminal ou de revenir à ce tutoriel.

OK, allons-y. Dans le Finder, sélectionnez Aller > Utilitaires (Cmd-Shift-U) et double-cliquez sur l’appli Éditeur de script:

Créez un nouveau script avec Fichier > Nouveau (Cmd-N), et copiez-collez ce qui suit dans une nouvelle fenêtre:

try
    do shell script "sudo atsutil databases -remove" with administrator privileges
on error errMsg number errNum
    display dialog "Font cache error " & errNum & ": " & errMsg
end try
do shell script "atsutil server -shutdown"
do shell script "atsutil server -ping"
set buttonAnswer to text of button returned of (display dialog "It is strongly recommended that you restart your Mac, or at least log out and back in again." with title "Font caches cleaned" with icon caution buttons {"Restart", "Log out", "Later"} default button 3)
if buttonAnswer is "Log out" then
    tell application "System Events" to log out
else if buttonAnswer is "Restart" then
    tell application "System Events" to restart
end if

Cliquez sur le bouton avec l’icône marteau (c’est-à-dire Compiler le script) afin de vérifier le code. La coloration syntaxique devrait avoir été activée sur le code comme ceci:

Sauvegardez maintenant votre script dans votre dossier d’utilisateur. Pour cela, allez à Fichier > Déplacer vers…, et dans la boîte de dialogue qui suit, appuyez sur Cmd-Shift-G pour faire apparaitre le dialogue Aller au dossier. À cet endroit, copiez-collez ce qui suit:

~/Bibliothèque/Scripts/

En faisant cela, vous devriez voir quelque chose qui ressemble à cette image:

Appuyez sur Aller, et le dialogue Aller au dossier montrera le dossier de scripts de l’utilisateur, exactement où vous voulez déplacer notre script. Vous pouvez maintenant appuyer en toute sécurité sur Déplacer.

Pensez à le renommer avec quelque chose qui a du sens. Allez à Fichier > Renommer… et inscrivez Nettoyer les caches de polices.scpt ou autre chose de semblable. Une fois fait, ouvrez votre menu Script, pour que vous puissiez facilement accéder à votre AppleScript au besoin. Pour cela, accédez aux préférences par l’Éditeur de script > Préférences (Cmd-virgule), allez à l’onglet Général de la fenêtre Préférences, et assurez-vous que la case à côté d’Afficher le menu des scripts dans la barre des menus soit cochée:

Dans le coin droit de votre écran, votre Mac affiche une série d’items dans la barre de menu. L’un d’eux est le menu Script. Il vous permet d’exécuter vos AppleScripts sauvegardés dans des dossiers spéciaux, l’un d’eux étant ~/Bibliothèque/Scripts/. Donc, en cliquant sur l’icône, vous devriez voir l’AppleScript que vous venez tout juste d’y sauvegarder:

Maintenant vous pouvez:

  1. Supprimer la police de votre système;
  2. Exécuter le script (à partir du menu Script) pour nettoyer vos caches de polices;
  3. Redémarrer votre Mac (le script vous présentera l’option de le faire immédiatement);
  4. Et pour finir, installer la dernière version de votre police.

Éviter les problèmes de cache

En fait il existe des façons simples de prévenir les problèmes de cache avant même qu’ils ne se présentent. Premièrement, tel que mentionné au début, testez vos polices dans les applis Adobe. Elles ont un dossier de polices spécial, et les polices sauvegardées dans ces dossiers sont actives immédiatement dans les applis Adobe, et, plus important, elles ne se retrouveront pas dans une cache.

Deuxièmement, si vous tenez à tester votre police dans le système, et bien changez le Nom de la famille à chaque fois que vous installez une police. Il suffit d’ajouter un nombre ou une lettre au nom. Comme les caches de polices sont liées au nom de police, une nouvelle installation avec un nom différent ne créera pas de conflit avec une installation antérieure. Seul point négatif: après un certain nombre d’itérations, votre menu de polices sera encombré au point de devenir difficile à gérer.

Troisièmement, et probablement mieux que tout, utilisez le petit outil TextPreview que nous avons créé pour cela. Il peut surveiller les nouvelles polices ajoutées à un dossier, et les rendre disponibles dans le logiciel sans qu’il ne soit nécessaire de les installer. Trouvez l’appli sur notre page d’outils.

Solution de remplacement: exporter en changeant les noms de fichier

Nico Hagenburger s’est aperçu que le cache de polices de macOS dépend du nom de fichier de police. Si vous vous assurez que l’OTF que vous exportez ait un nom de fichier différent à chaque fois, et que vous supprimiez toutes les versions antérieures, ça devrait bien aller. Nico a été très sympa et nous a écrit un script Python nommé Export and Install qui fait exactement cela. Suivez le lien pour une description plus précise et les instructions d’installation.

Attention: nous n’avons pu confirmer la fiabilité de cette solution que pour macOS 10.13 et supérieur. Nous avons reçu des rapports contradictoires des utilisateurs de versions macOS antérieures. Parfois ça fonctionne, parfois non. Vous aurez parfois besoin de redémarrer les applis qui utilisent la police.


POLICE UTILISÉE DANS LES EXEMPLES: ALENA DE ROLAND STIEGER.

Mise à jour 2013-07-04: Éclaircissements sur l’emplacement où il faut supprimer la police.
Mise à jour 2014-06-16: Retrait de trucs superflus de nettoyage de cache spécifiques à l’utilisateur, car la commande sudo supprime toutes les caches.
Mise à jour 2016-01-02: Ajout des liens pour le tutoriel des dossiers Adobe Fonts.
Mise à jour 2016-02-19: Mise à jour des captures d’écran pour Glyphs 2.
Mise à jour 2017-06-04: Réécriture partielle pour plus de clarté, nouvelles captures d’écran, ajout de TextPreview.
Mise à jour 2018-06-06: Ajout de ‘Solution de remplacement: exporter en changeant les noms de fichier’. (Merci Nico!)

Traduction française de Nathalie Dumont.