macOS Mojave et le rendu des polices : comment revenir au comportement précédent

Avec macOS Mojave, Apple a changé un réglage important dans son OS : le filtrage des polices n’utilise plus les sous-pixels. Cette modification n’a pas d’impact sur les écrans haute résolution (Retina) mais amène un changement visuel visible sur les écrans basse résolution (sur le MacBook Air par exemple).

Depuis Mac OS X Jaguar, Apple utilise une technologie d’anti-aliasing qui fait appel aux sous-pixels des écrans LCD, comme le ClearType sous Windows (depuis XP). L’idée de base consiste à utiliser les sous-pixels pour améliorer l’affichage des textes. Dans un écran LCD classique, chaque pixel se compose de trois sous-pixels (Rouge, Vert, Bleu, RGB en anglais) dans un ordre précis (RGB, justement) avec une disposition en ligne. En effectuant le rendu des polices en utilisant les sous-pixels en question, la définition est artificiellement triplée et les polices semblent plus épaisses et moins nettes, plus douces à l’oeil. Ce type de rendu a tendance à ajouter des artefacts colorés quand on s’approche des pixels (logique) et ne fonctionne réellement bien que sur les écrans LCD avec la bonne disposition (en lignes) et le bon ordre de pixels (RGB). Si le sujet vous intéresse, quelques pages expliquent bien le problème.

Avec le rendu sous-pixels


Sans le rendu sous-pixels

Avec macOS Mojave, Apple revient à une technique plus simple, pour deux raisons. La première, évidente, c’est que le rendu n’a plus de raisons d’être avec les écrans haute résolution des Mac. Vu la taille des pixels, il suffit d’effectuer le filtrage au niveau des pixels. On gagne en performances (Xbench, même s’il est vieux, donne un gain conséquent, de l’ordre de ~25 %) et les artefacts colorés, parfois visibles, disparaissent. La seconde raison, moins évidente, vient du fait que le rendu nécessite un LCD avec un rendu classique. Revenir sur un système plus simple permet de gérer un filtrage propre même sur une dalle avec des sous-pixels dans un ordre différent ou dans une disposition différente. Typiquement, les écrans OLED (mais pas que) utilisent une disposition en diamant (pentile) dans les appareils portables, et certains téléviseurs ajoutent des sous-pixels.

Sans // Avec

Le problème, c’est que si le rendu de Mojave fonctionne bien sur un écran haute résolution (Retina), ce n’est pas le cas sur un écran plus classique. Si vous avez un MacBook Air ou un écran externe avec une définition classique (en-dessous de l’Ultra HD), le texte peut donner l’impression d’être de moins bonne qualité. Il existe une solution qui fonctionne sous Mojave (en tout cas en version 10.14.0) et qui passe par la ligne de commande. Une fois la commande entrée, il faut redémarrer (ou fermer la session).

defaults write -g CGFontRenderingFontSmoothingDisabled -bool FALSE