Une histoire de font
Je suis un utilisateur extrêmement satisfait d’une Debian testing/sid XFCE depuis 3 années, une à deux fois par an je rencontre un problème gênant.
Crime de lèse-majesté
Commençons par le crime. De mon point de vue on voit la différence au premier coup d’œil mais si vous avez un doute, regardez le zéro.
Le 22/01/2023 je lance une mise à jour sur mon pc fixe et je me rends compte tout de suite d’un changement. Ça me perturbe beaucoup, ça ne m’empêche absolument pas de travailler ni d’utiliser le pc mais je trouve « l’écriture » différente, plus écrasée et petite. La font – j’utiliserai le terme en Anglais, je laisse les spécialistes/puristes expliquer la différence entre Police et fonte – a changé.
Un grep font /var/log/dpkg.log
(voir Journal de dpkg) me donne 4 pistes/paquets : fontconfig, fontconfig-config, libfontconfig1, xfonts-base. Je décide de sudo apt-mark hold fontconfig fontconfig-config libfontconfig1 xfonts-base
(man apt-mark
puis /hold
) afin de bloquer la mise à jour de ces paquets puis j’upgrade mon second pc (portable) pour voir si je reproduis le problème. Le souci n’est pas présent, on a donc 4 suspects confirmés. Je choisis d’en exclure 2 en tentant un sudo apt-mark unhold fontconfig-config libfontconfig1
puis upgrade, pas de bol la font change mais du coup j’identifie le coupable fontconfig-config. Il est en effet peu probable que le problème provienne d’une lib (libfontconfig1).
Recherches
Nous avons procédé à l’identification, il nous faut maintenant chercher à comprendre ce crime. On lance « bug debian fontconfig » dans un moteur de recherche, je tombe sur des Googles Groupes (berk) : https://groups.google.com/g/linux.debian.bugs.dist/c/7bAoJpiYJgM https://groups.google.com/g/linux.debian.bugs.dist/c/0Y-HKao5Zw8
Remarquez les numéros utilisés : Bug#1029390, Bug#1028643. On va sur https://www.debian.org/Bugs/ où on apprend qu’on peut accéder à un rapport de bug directement en ajoutant son numéro à la suite de https://bugs.debian.org/ (https://bugs.debian.org/1029390 https://bugs.debian.org/1028643). Nous sommes au « bon endroit », où seront remontés/discutés les changements/évolutions concernant ce bug.
En parcourant https://bugs.debian.org/1029390 on observe que le premier lien cliquable dans la page (#1029390) est un mailto permettant d’envoyer un mail au sujet du bug donc de participer à l’échange et à sa résolution. Le rapport de bug est de grande qualité, on a là toute l’explication :
- Le où : /usr/share/fontconfig/conf.avail/60-latin.conf
- Le crime : the preferred font for sans, sans-serif and monospace has changed from DejaVu to Noto
- Le comment : This comes from upstream and the commit unfortunately lacks any reasoning: https://gitlab.freedesktop.org/fontconfig/fontconfig/-/commit/ad70d785974992c569b30108923875e5b5e9dc5e
- La résolution/proposition : Please consider keeping the DejaVu as the preferred family or distribute a NEWS.Debian with the change described and instructions how to change the preferred fonts
Le second rapport de bug est de bien moindre qualité mais nous apporte des informations intéressantes : quelques images avant/après l’upgrade pour montrer les différences, la commande fc-match monospace
permettant d’identifier la font utilisée, un workaround (contournement) pour revenir à la font DejaVu, de nouveau le commit fautif.
Visual Suspects
Tentons une reconstitution du crime. On édite le fichier sudo nano /usr/share/fontconfig/conf.avail/60-latin.conf
et puisque le commit responsable n’a fait qu’ajouter 3 lignes, on va juste les retirer afin de tester. La commande fc-match monospace
renvoie DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
. On remarque que la font a changé, on est revenu à un état normal (avant le changement de font) !
Maintenant on réinstalle le paquet sudo apt install --reinstall fontconfig-config
qui va remettre le fichier /usr/share/fontconfig/conf.avail/60-latin.conf
à son état initial, on constate bien les lignes Noto dedans. fc-match monospace
renvoie NotoSansMono-Regular.ttf: "Noto Sans Mono" "Regular"
. La font a changé, j’aime pas !
Au fond des choses
A minima le changelog devrait préciser cette modification importante, un NEWS.Debian serait très recommandé pour que l’utilisateur comprenne ce qui se passe. Assurément le rapport de bug est justifié. À date du 12/02/2023 aucune correction n’a été effectuée, aucun message ne figure dans le changelog. À noter que le Soft Freeze de Debian 12 Bookworm a lieu aujourd’hui, il sera intéressant de suivre si le bug est corrigé avant le Full Freeze.
Je vous invite à lire mon article Les sources d’information pour Debian afin de mieux vous y retrouver. Pour trouver le changelog je passe par https://packages.debian.org/search?keywords=fontconfig-config puis bookworm (testing) et à droite dans Ressources Debian, Journal des modifications Debian. Toujours dans Ressources Debian, Rapports de bogues où on retrouve notre bug 1029390.
Je considère le bug 1028643 comme un rapport de moindre qualité car il concerne le paquet fontconfig (et non fontconfig-config). Je pense que c’est une erreur des participants. Le commit fautif étant dans la version 2.13.95 de fontconfig, ils ont remonté l’erreur sur ce paquet chez Debian. Cependant le commit fautif concerne le fichier /usr/share/fontconfig/conf.avail/60-latin.conf
qui se trouve dans le paquet fontconfig-config chez Debian. dpkg -L fontconfig
(man dpkg
puis /-L
) permet de lister les fichiers installés du paquet fontconfig sur le système, il n’y a que des fichiers de documentation et des exécutables. dpkg -S /usr/share/fontconfig/conf.avail/60-latin.conf
(man dpkg
puis /-S
) permet de retrouver le paquet d’où provient le fichier et donne fontconfig-config: /usr/share/fontconfig/conf.avail/60-latin.conf
.
Le message 31 proposant un workaround précise qu’il n’a pas trouvé le fichier correct (60-latin.conf) pour revenir sur les changements, normal il ne cherche pas au bon endroit (pas le bon paquet). Un dpkg -L fontconfig-config | grep 60-latin.conf
aurait affiché /usr/share/fontconfig/conf.avail/60-latin.conf
et /etc/fonts/conf.d/60-latin.conf
. Enfin un ls -l /etc/fonts/conf.d/60-latin.conf
aurait montré qu’il s’agit d’un lien symbolique vers /usr/share/fontconfig/conf.avail/60-latin.conf
.
Ce crime problème permet de rappeler le cheminement à adopter, les outils, tests, sources d’information et contacts dont vous bénéficiez chez Debian.