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.

Déjà 3 avis pertinents dans Une histoire de font

  • anatole M
    Bon je suis pas assez calé pour laisser un commentaire, mais comme ce blog semble se réveiller je m’y colle.
    L’histoire des fonts cela a été un peu compliqué le jour où j’ai voulu en ajouter sur ma Debian, et surtout où les mettre.
    Pour le billet je suis d’accord, si on veut en savoir plus la meilleur solution c’est quand même de se renseigner.
    A pluche.

Les commentaires sont fermés.