Comme indiqué dans l'article précédent de cette série, je souffre d'astigmatisme, dans une forme légère presque entièrement corrigée par mes verres correcteurs. Alors que la première partie détaillait les effets étoilés, cette partie se concentre sur le symptôme le plus commun, le flou.
Si vous allez sur la page Wikipedia décrivant l'Astigmatisme, vous verrez l'image suivante :
Elle décrit clairement ce que j'observe au quotidien, c'est à dire que tout est un peu flou. Plus jeune, j'étais capable de ne pas porter mes lunettes en corrigeant le problème en plissant les yeux énormément pendant mes lectures. C'était fatiguant et ne fonctionne plus car mes globes oculaires ont durci avec l'âge. En conséquence, mon cerveau est entrainé à trouver le flou et à essayer de le retirer de l'image. C'est un peu comme ce qu'essaie de faire un contrôleur d'upscaling quand il traite un flux SD pour l'afficher sur un écran HD, 4K ou 8K.
Quand j'ai commencé à travailler avec des ordinateurs, il y a 30 ans, j'ai reçu un écran monochrome, avec ses jolis caractères orange sur un fond noir. Je ne vous ferai pas une leçon sur la technologie utilisée mais ce qu'il faut retenir est que les "points" sur l'écran apparaissaient car une couche de phosphore était percutée par un faisceau d'électrons. Arriver à faire que ce rayon soit fin et qu'il ne touche qu'une partie de la couche émettrice a été un grand défi technologique. Ceci veut aussi dire que sur ces écrans, il y avait toujours un peu de flou autour du point d'impact du faisceau sur la face avant de l'écran.
Les années passant, la technologie a évolué du CGA à l'EGA puis au VGA et vers des résolutions toujours plus élevées avec un plus grand nombre de pixels et de couleurs à afficher. Mais la technologie d'affichage ne changeait pas, c'était toujours un faisceau d'électron qui frappait du phosphore, et donc tout était toujours un peu flou sur les bords. Bien sûr, c'était pratique pour les jeux vidéo et les films car cela fournissait un antialiasing gratuitement, mais c'était tout de suite plus pénalisant pour des images fixes, en particulier le texte. Rappelez-vous, mon cerveau est entrainé à trouver les flous, les bavures, et essaie vraiment de les retirer car il pense que cela vient du globe oculaire, pas du monde autour de lui. Après des heures d'utilisation d'un écran, mon cerveau abandonnait et arrivait à la conclusion erronée qu'il y avait de la poussière devant la cornée. Et pour corriger ça, il déclenchait alors les glandes lacrymales pour nettoyer la zone !
Puis, au début des années 2000’s, les écrans LCD sont devenus abordables et de qualité acceptable. Ils n'offraient pas des résolutions aussi élevées que les écrans cathodiques, mais ils avaient un avantage essentiel pour moi : pas de faisceau d'électron, donc plus de pixel qui bave sur ses voisins !
Pour les jeux et les films, cela avait l'inconvénient de permettre la distinction nette entre chaque pixel ce qui a obligé les fabricants de cartes vidéo à trouver des méthodes d'antialiasing plus puissantes et plus efficaces. Mais pour le texte, comme celui qu'on trouve pendant un développement comme pour toutes les images statiques, cela voulait dire que le flou avait disparu ! Bien sûr, il y avait un effet de crénelage sur les grands caractères, mais quel soulagement pour mes yeux !
Et même si cette technologie n'a pas vraiment changé jusqu'à aujourd'hui, les logiciels ont évolué, en particulier les systèmes d'exploitation. Avec l'introduction de Windows XP, quelqu'un a réalisé que le flou avait disparu, ou que l'antialiasing était une bonne chose pour le texte et ClearType est apparu. Et avec lui, le flou était de retour ! Pour illustrer mon propos, voici une image prise sur la page Wikipedia anglaise sur ClearType :
La partie supérieure est réalisé sans aucun antialiasing, alors que la partie basse l'est avec ClearType. Ce n'est peut-être pas évident pour un lecteur à la vision parfaite, mais le haut est net et précis alors que le bas semble clairement flou pour moi. En zoomant, on constate ceci :
Pourquoi ClearType a-t-il besoin d'ajouter une ligne bleue le long de la lettre L minuscule ? Cela ajoute une information supplémentaire pour mon cerveau, alors qu'il est en permanence en train de corriger le flou induit par ma cornée. Et regardez la lettre "y", elle est tellement dégradée qu'elle a l'air presque transparente !
Heureusement pour moi, il était possible de complètement désactiver cette option, ce que je m'empressais de faire après chaque réinstallation. Ne pas avoir d'antialiasing avait une conséquence négative pour les polices de grande taille, avec un effet d'escalier clairement visible. Mais comme la plupart du texte que je lis est dans l'intervalle de 8 à 12 points, je vois rarement ce problème.
Quand je suis passé à Windows 7, j'ai hélas découvert que ClearType ne pouvait plus être complètement retiré et que par conséquent, le flou était partout. En cherchant sur divers sites webs, j'ai fini par trouver une modification en base de registre qui fait croire à Windows que la police Segoe UI est absente, en le forçant à utiliser MS Sans Serif à la place. Et grâce à ça, j'étais de nouveau en piste, sauf pour les applications qui ne respectent pas mon choix ! Les plus communes sont tous les applications basées sur .Net WPF mais aussi certains contrôles communs qui ont alors un aspect bizarre quand ils sont utilisés dans un ensemble parfaitement net par ailleurs. Un tel exemple se trouve dans la boite de dialogue de commit de TortoiseSVN :
Et dans ce cas, c'est même pire, si vous regardez attentivement les deux lettres P majuscule :
Le flou ajouté n'est même pas cohérent ce qui donne une autre information erronée à mon cerveau, conduisant à encore plus d'efforts pour parvenir à une image nette. Notez que j'ai pris TortoiseSVN comme exemple ici, mais cela arrive avec de nombreux autres logiciels, et je ne pense pas que les personnes en charge de ce merveilleux projet puissent y faire quoi que ce soit car le problème semble venir du système d'exploitation lui-même.
Comme Windows 7 n'est plus supporté, je n'ai pas eu d'autre choix que de passer à Windows 10 qui était la version 1803 quand j'ai fait la migration. Est alors apparu un nouveau joueur dans la partie, UWP qui utilise une nouvelle façon de dessiner les caractères, mais toujours avec la même approche consistant à appliquer l'antialiasing à toutes les tailles, et donc à rendre floues les polices en dessous de 14 points.
L'utilisation la plus notable de ce nouveau moteur est le menu Démarrer lui-même, ce qui donne cet aspect "fantastique" :
Vous voyez comme l'icône "Image" sur la droite a de belles bordures bien nettes, alors que les lettres à droites sont floues ? Et bien c'est le même problème que précédemment, il n'y a toujours pas de cohérence dans le processus, les deux R majsucules ne sont pas dessinés pareil.
Comme ce menu ne pouvait même pas être mis en texte noir sur fond blanc (voir la première partie détaillant ce problème), j'étais vraiment ravi quand le mode "Clair" a été annoncé dans la version 1903. C'est vrai que cette version me donne un texte noir sur fond blanc pour le menu Démarrer et la barre des tâches, mais il ne règle pas le problème dans le menu Démarrer, il est toujours flou. Et la mise à jour en version 1909 n'a rien changé, mais combien de temps encore le remplacement de police va-t-il fonctionner pour la barre des tâches ? Combien de temps avant que quelqu'un trouve intelligent de la remplacer par une application UWP comme cela a été fait pour le menu Démarrer ?
A ce point, quelles sont les possibilités qui s'offrent à moi ?
Pour commencer, je pourrais abandonner Windows et migrer sous Linux. Ça tombe bien, j'utilise Linux sur différents ordinateurs, dont un utilise Manjaro avec KDE. Et le même problème se présente ici aussi :
En écrivant cet article, j'ai pris le temps de chercher des paramètres liés à ce sujet et j'ai trouvé le sympathique "Polices système" qui permet de choisir à quelle taille l'antialiasing doit s'appliquer. Exactement ce que j'aimerai trouver sous Windows, pour toutes les applications, qu'elles soient basées sur GDI, WPF ou UWP.
Mais comme mes principaux outils de travail sont sous Windows uniquement, comme mes clients, je ne peux pas migrer totalement. Et je dois aussi prendre en compte les habitudes des personnes vivant avec moi à la maison, qui se sont habituées à Windows et ne voudront pas migrer vers autre chose.
La deuxième option est de trouver un programme qui pourrait ajuster Windows via des fonctionnalités non documentées pour arriver à ce que je désire. J'ai essayé à la fois WinAreoTweaker et AdvancedSystemFontChanger mais ils ne semblent avoir d'impact que les applications GDI, comme ce que permet l'astuce en base de registre mentionnée plus haut. Pour WPF, il est possible de changer les paramètres décrits ici : https://docs.microsoft.com/fr-fr/dotnet/framework/wpf/advanced/cleartype-registry-settings
Avec ClearTypeLevel et PixelStructure tous les deux mis à 0, j'ai pu réduire le flou à niveau plus acceptable, similaire à ce que je vois dans le menu Démarrer. Mais il est toujours là.
La troisième option est de totalement remplacer le moteur de rendu de police par celui de Linux, grâce au projet MacType : https://www.mactype.net/
Il a l'air vraiment prometteur mais je n'ai pas trouvé comment le configurer pour qu'il se comporte comme avec les options que j'ai activées dans mon système KDE. Je ne suis pas bilingue en japonais, langue visiblement utilisée le plus par les sites d'aide disponibles. Et ça reste un logiciel tiers qui s'interpose au cœur du système d'exploitation.
La dernière option serait que Microsoft reconnaisse enfin le problème sur le rendu des petites tailles de police sur les écrans LCD. En allant sur la page Wikipedia anglaise de ClearType on peut lire que “Beat Stamm, expert en optimisation de rendu, qui a travaillé sur ClearType chez Microsoft, reconnait que ClearType peut sembler flou à 96 dpi, qui est une résolution standard des LCDs en 2008, mais ajoute que des écrans présentant une meilleure résolution amélioreront ce point” (traduction par mes soins).
Mon écran date de 2006 et avec une résolution de 1680x1050 pour une diagonale de 20 pouces, cela donne 99 DPI, pas très éloigné de la citation précédente. Mais si je le remplaçais par un écran tout neuf en 24 pouces et résolution FullHD (1920x1080) qui est le “standard” de nos jours, on tomberait à 92 DPI !
Bien sûr, il y a des écrans 2K,4K ou même 8K mais ils ne sont définitivement pas dans une gamme de prix que tout un chacun peut s'offrir. Et ceci serait encore un exemple de solution matérielle à un problème logiciel, une habitude que mon industrie dans son ensemble semble avoir prise dès sa création.
De plus, même si j'avais envie de dépenser une telle somme pour un écran 4K, j'aurais besoin d'utiliser la mise à l'échelle au niveau 200% dans Windows ce qui, oui, ferait disparaitre le flou car les points constituant l'écran seraient trop petits pour que je les distingue. Mais cela amènerait un autre problème logiciel qui est que la plupart des applications que j'utilise au quotidien ne sont pas compatibles HighDPI. Cela veut dire que Windows devra les upscaler, refaisant apparaitre au passage le flou que j'essaie si difficilement d'éviter !
Au final, il faudrait vraiment qu'une option soit disponible pour indiquer au moteur de rendu de police d'arrêter de faire tout type d'antialiasing pour les petites tailles, et j'espère vraiment que quelqu'un chez Microsoft le proposera dans un futur pas trop éloigné, en l'activant même par défaut si la résolution réelle est inférieure à 150 DPI.
Mais je ne vais pas retenir mon souffle en attendant que ça arrive, pourquoi cela changerait-il alors que le problème est connu depuis plus de 10 ans ?