Hier soir, j'ai passé une bonne partie de ma soirée a tenter de réparer ce qui fonctionne parfaitement. Enfin presque.
Sur ma machine, toutes les applications modernes utilisent des polices sans alias (c'est à dire qu'elles ont les contours lissés, donc un peu flou). Il se trouve que certaines applications un peu moins au goût du jour n'ont pas ce privilège. Quand on a le choix d'utiliser un programme qui permet de choisir (de façon plus ou moins subtile) la police d'affichage, c'est pas trop grave, on choisit quelque chose qui pue pas trop, et ça passe. Mais ce n'est pas le cas de tous les programmes.
Le premier programme qui me prennait la tête, c'était XMMS (le winamp local). En effet, XMMS est écrit à l'aide de GTK1, qui possède certes des qualités extraodinaires, mais qui commence à dater. Enfin bref, XMMS, chez moi, affichait toutes les parties non "skinnées" dans une affreuse police à la limite du lisible.
Exemples :

Comme vous pouvez le remarquer, sur la seconde image, la locale a changé. En effet, la locale joue un role. Je m'en suis aperçu quand j'ai installé une debian sur mon portable : avant d'installer les locales, xmms passait sans probleme, mais avec la locale iso-8859-15 (pour avoirs les €€€), pouf ! polices de merde. La première solution a été de virer la variable LANG pour XMMS, mais j'ai pas trouvé cette solution intellectuellement satisfaisante. Ce qu'il fallait, ce n'était pas changer la langue, mais la police. Donc, j'ai passé une après-midi, un jour à traficoter mon .gtkrc pour avoir quelque chose de potable.
Je pensais en avoir fini avec ces porblemes à la con. Et bien non ! En effet, mis à part les applications qui sont faites avec Qt et GTK2, les autres applications n'ont toujours pas de polices sans alias. Je ne sais pas si c'est du aux applications ou au système de police en lui même (j'y arrive plus loin). Quoiqu'il en soit, les applications en Swing (java) et en TclTk (aMsn) passent toujours très mal. Un peu moins pour Java parce qu'ils ont du se déchirer pour avoir un système de substitution à la Qt, mais ce n'est toujours pas satisfaisant à mon gout.
Je me suis donc concentré à la racine du problème, le système des polices sous X. Et c'est là que ça commence à devenir vraiment obscure. On pourrait même dire baroque. En effet, entre la façon originale de fonctionner, les ajouts des uns et des autres, et la documentation ou aucune date ne figure, difficile de s'y retrouver.
Néammoins, avant mes recherches, je savait que X se servait d'un serveur annexe pour gerer les polices (sans trop savoir exactement comment ça se passait). En cas de défaillance du serveur de polices, X retombait lui même sur ses pates en allant fouiller dans sa propre collection de polices. J'ai donc commencer à regarder du coté du XFree86Config.4 (un joli nom, hein ?) pour voir ce qu'on lui donnait à manger. Alors, déja il n'y a pas un, mais deux serveurs de polices actuellement. Xfs, et Xfs-xtt. Alors, pour trouver le site officiel de Xfs, faut s'accrocher. En effet, le site du projet XFree86 est toujours aussi peut clair, et la documentation ne dépasse pas le stade du how-to lancer son serveur. Pour Xfs-xtt, mis à part les pages de debian point de salut. Enfin bref, j'ai pas trouvé un seul document décrivant les différences entre les deux, ni une synthèse de ce que font ces deux machins.
J'ai également croisé Xfstt, un autre serveur de polices adapté aux polices true-type utilisés couramment sur les windows. Il fonctionne comme Xfs et permet d'utiliser des polices true-type. Je me suis donc un peu renseigné sur les différents formats de polices existant. Disons que là, on rentre dans un autre monde, le monde de l'imprimerie, avec son passé plus qu'omniprésent. Il faut intégrer une telle quantité de renseignements avant de comprendre quoique ce soit que ça en devient vite rebutant. Pour résumer, quelques grandes boites produisent des polices sous différents formats (PostScript type 1 (imprimantes), 3 (vendeux exterieurs) et 5 (je sais plus) suivant le fournisseur et la place de la police dans la chaine de production, trueType sur les windows et les macs, metaFont pour les documents TeX qui ne suit pas les conventions de l'imprimerie, OpenType), et le positionnement des caractères les uns par rapport aux autres n'a rien de trivial. Voir également le site de Microsoft à ce sujet. On est vite noyé dans tout ces formats. Et surtout, je me suis dit, et le libre dans tout ça, qu'est ce qu'il en est ?
Il existe effectivement une bibliothèque de lecture de police sous Linux : le porjet FreeType qui permet de transformer n'importe quel caractère d'un fichier de police en une matrice 8 bits prête à être affichée. On apprend (et c'est là qu'on revient au centre du sujet) que cette boibliothèque est utilisée dans Xfstt, ainsi que dans tous les programmes qui se servent de polices (dessin vectoriel par exemple). C'est cette fameuse bibliothèque qui permet d'afficher les caractères à l'écran sans alias.
Un peu plus loin dans mes recherches, j'ai enfin pu apprendre que Xfs + Xfstt = Xfs-Xtt, ce qui veux dire qu'en fait, le Xfs qui est installé chez moi ne sert à rien. Pour mettre en application tout ça, je me suis dis que j'allais m'installer une police ttf piqué du net, comme ça, pour le fun. J'ai d'abord commencé simplement par lancer la chose dans scribus, qui permet d'ajouter des polices spéciales de façon simple, sans passer par le système de police de X. Ça c'est passé sans problème, avec l'anti-aliasing bien comme il faut.
Par contre, pour mettre la police dans le Xfs-xtt, c'est une autre paire de manche. Deja, vu l'architecture compliquée que c'est, ya bien deux niveaux de cache, ce qui fait que pour mettre tout ça à jour, c'est bien compliqué. Heureusement, twm est bien plus rapide à lancer que Kde pour les tests :-) Deja, il a fallut que je prenne conscience que je ne modifiais pas le bon fichier de configuration (il faut modifier /etc/X11/fs-xtt/config au lieu de /etc/X11/XftConfig), ensuite, il a fallu que je rajoute le ttf dans le bon répertoire, et surtout que je génère les fichiers fonts.scale et fonts.dir avec des outils comme mkfontscale et ttmkfdir. Le résultat n'est pas très concluent. xfontsel me trouve bien ma police, mais pour les différentes tailles, c'est pas encore ça... De plus, les selecteurs de polices de Qt ne me la trouve pas. J'ai peut-être loupé qqch, mais en tout cas, c'est loin d'être simple si on veux qqch de sympa.
De plus, je n'ai toujours pas trouvé la réponse à ma question de départ : comment ça se fait que j'ai des polices aussi pourries avec toutes les vielles applications ?
