Police de console
Étiquettes : tty, typographie, shell, console
Notes en cheminant dans les méandres de mon système d’exploitation.
Sur GNU Linux on dispose de terminaux TTY, classiquement accessible à l’aide des combinaisons de touches Ctrl + Alt + F1
à F6
(F7
étant dédié à la session graphique Xorg).
Depuis longtemps, je cherche à savoir quelle police de caractère est utilisée dans ces terminaux. La police en question est remarquable par ses accolades bien particulières et que je n’ai jamais vu ailleurs à ce jour.
Autre question : je me demande également s’il est possible de faire des copies d’écrans de ces consoles, qui ne disposent d’aucun outil graphique comme ceux que l’on trouve en session graphique.
Relançant la question sur Mastodon, sans grand succès, j’ai creusé encore une fois le sujet avec ma petite pelle à code, et cette fois ai trouvé les réponses !
Copie d’écran d’un TTY
Première étape, pour réussir à faire une recherche de la police de caractère, en avoir une copie d’écran peut s’averer assez pratique. fbcat
est un outil en ligne de commande permettant de prendre une copie d’écran d’une console, au format *.ppm
du framebuffer device comme dit la description.
- Installation :
sudo apt install fbcat
; - Utilisation :
sudo fbcat > {nom}.ppm
(enregistre l’image à la racine de votre/home
). La commande ne semble fonctionner qu’en super-utilisateur ; - Retour sur la session graphique pour admirer la belle copie d’écran ! (Notez les jolies accolades à la fin de la ligne.)
Recherche
Une fois muni de l’image, je pose la question sur Mastodon. Panais m’oriente vers Ask Ubuntu, une URL que j’avais autrefois croisé, mais sans y trouver ma réponse :
- Ubuntu Mono ? assurément pas, je la connais ;
- Terminus Font ? non plus ;
- GNU Unifont ? Les copies d’écran me disent que non1.
Une piste sur laquelle je remets mes pas cependant : le répertoire /usr/share/consolefonts/
qui porte un nom plutôt explicite et de nombreux fichiers de police dans un format *.psf.gz
que je n’arrive pas à éditer.
Éditer un fichier *.psf.gz
C’est clairement à ce stade que j’ai peiné.
Première étape : dupliquer le répertoire /consolefonts
dans mes documents afin de pouvoir le décortiquer sans endommager l’original.
Décompresser tous les fichiers *.gz
pour ne plus disposer que de fichier *.psf
. Ligne de commande utilisée dans le répertoire dupliqué pour dé-gzipper les fichiers en masse : gunzip *.gz
À ce stade, toujours impossible de visualiser les polices, ni dans le gestionnaire de polices par défaut du système, ni dans Fontforge (dommage).
Panais me met indirectement sur la piste en disant que *.psf
est un format très ancien. À format ancien, outil d’édition ancien probablement me dis-je.
Je cherche dans les outils Xorg, sans réel succès mais avec des découvertes sympathiques (j’y reviendrai peut-être dans un futur billet).
psftools
La recherche me mène vers psftools, qui comme son nom l’indique est un outil pour manipuler le format *.psf
. En fait ce n’est pas un outil mais une collection d’outils.
Installation : télécharger les sources et suivre la procédure habituelle, expliquée dans le fichier INSTALL.
Au passage, j’ai dû faire l’installation en super-utilisateur car la dernière étape ne voulait pas passer en utilisateur normal.
psftools
ne s’utilise pas directement. Son nom est celui d’une collection d’outils portant d’autres noms :
psf2bbc psf2inc psf2wof psfaddtable psfpages psfxform
psf2bdf psf2pbms psf2wyse psfgettable psfs2cpi psfxtable
psf2bsd psf2raw psf2xbm psfjoin psfs2mda
psf2fnt psf2txt psf2zx psfmerge psfstriptable
Ces programmes permettent de convertir vers ou à partir du format *.psf
.
Problème de bibliothèque
Alors que je souhaite convertir un fichier vers le format *.bdf
— que je sais éditable avec Fontforge —, la commande me retourne un message bloquant :
$ psf2bdf Uni3-Fixed13.psf Uni3-Fixed13.bdf
psf2bdf: error while loading shared libraries: libpsf.so.0: cannot open shared object file: No such file or directory
Je fini par trouver que la commande ldconfig
, utilisée en super-utilisateur, permet de créer les liens manquants vers les bibliothèques nécessaires (bien présentes après l’installation de psftools
). J’ai passé la commande avec le paramètre verbeux, permettant de voir ce qu’il se passe :
sudo ldconfig -v
Le nombre de liens créés était supérieur à ceux nécessaires pour psftools
et j’ignore si cela a un incidence indésirable quelconque sur d’autres logiciels.
Uni2-Fixed16
Après avoir transformé certaines polices *.psf
au format *.bdf
, puis ouvert ce format avec Fontforge, il s’avère donc que la police que je recherche est Uni2-Fixed16 !
En testant la transformation vers différents formats, je découvre que le format *.xbm
est très pratique : c’est une image générée de tous les caractères de la police choisie.
Cette pièce de puzzle en main, j’ai alors pu trouver d’autres informations intéressantes…
showconsolefont
Dans le terminal TTY
, showconsolefont
permet de visualiser le tableau de glyphes de la police courante.
console-setup
Dans le répertoire /etc/default/
, le fichier console-setup
livre les informations de configuration de la console. J’y retrouve bien les propriétés typographiques que je cherchais :
CODESET="Uni2"
FONTFACE="Fixed"
FONTSIZE="16"
setfont
La commande setfont
permet de changer (en temps réel) la police utilisée dans la console. À utiliser avec les formats *.psf.gz
vus plus haut, en appelant directement le nom d’une des polices installées :
$ setfont Uni2-Fixed16.psf.gz
Toutefois, une de mes consoles ne pas/plus de l’Uni2-Fixed16 (accident durant mon enquête ?). Je peux la remettre avec cette commande mais au redémarrage de la machine aujourd’hui, l’ancienne police était revenue. À voir comment remettre cela de façon persistante.
Des infos supplémentaires sur Linux From Scratch à propos des polices de console.
Une liste exhaustive
Un dernier lien pour finir : la liste exhaustive des polices de console de plusieurs distributions Linux et BSD.
Où l’on notera que celle définie par défaut sur Ubuntu 18.04 est bien l’Uni2-Fixed16.psf
:-)
-
En réalité c’est bien une police Unifont mais je ne m’explique pas la différence entre les copies d’écran sur le site Unifoundry et ce que j’ai sur mon système, en particulier sur les glyphes des accolades qui me servent de point de référence. ↩