Polices: anti-aliasing, hinting et sub-pixel rendering

Décembre 2016


Le problème


L'aspect d'un texte à l'écran est toujours beaucoup plus grossier que son équivalent papier.

Le problème vient du fait qu'un caractère est une définition géométrique fine, et qu'il est difficile de lui rendre son aspect original à l'écran à cause de la grosseur des pixels (Un peu comme si vous vouliez représenter un cercle avec des légos.)

Différentes techniques ont donc été inventées pour améliorer l'aspect du texte à l'écran:
  • l'anti-aliasing (encore appelé "lissage", "anti-crénelage" ou "smoothing").
  • le "hinting"
  • le sub-pixel rendering

Brut


Si on essaie de dessiner directement les caractères à partir de leur définition géométrique, on obtient ceci:



C'est assez laid.

Hinting


Un humain pourrait aider le programme en donnant des indices (hints) sur la meilleure manière de placer les pixels pour donner un aspect plus lisible aux caractères. C'est le hinting.


Anti-aliasing


Une autre technique consiste à ne plus utiliser seulement des pixels noirs et blancs, mais d'utiliser toute la palette des gris pour faire des transitions. C'est l'anti-aliasing:


Anti-aliasing + Hinting


Toutefois, cela donne un aspect un peu "baveux" aux caractères, surtout sur les lignes horizontales ou verticales. On peut donc combiner l'anti-aliasing avec le hinting pour de meilleurs résultats:


Sub-pixel rendering


Le sub-pixel rendering utilise une particularité des écrans LCD et de l'oeil humain:

Un pixel d'écran LCD est constitué de trois barres verticales rouge, vert et bleu positionnées les unes à côté des autres.
Si on "s'amuse" à n'allumer que le rouge du pixel, on allume effectivement qu'un tiers de la surface du pixel.
En allumant rouge et vert, on allume deux tiers du pixel. etc.

On peut donc, en quelques sortes, tripler la résolution horizontale d'un affichage LCD et donc augmenter la finesse des détails affichés.



La méthode est similaire à l'anti-aliasing, mais on utilise des pixels de couleur au lieu des niveaux de gris afin de n'allumer qu'une partie du pixel.
Cela permet donc d'afficher des détails plus fins, au prix d'un léger décalage des couleurs à l'écran.
Mais l'oeil humain étant plus sensible à la luminosité qu'aux couleurs, cela ne pose généralement pas de problème.



Note: Vous ne pourrez apprécier vraiment l'amélioration apportée par le sub-pixel rendering que si vous possédez un moniteur LCD.

Sub-pixel rendering + Hinting



Comparaison des solutions


Rendu direct:


Hinting:


Anti-aliasing:


Anti-aliasing + Hinting:


Sub-pixel rendering:


Sub-pixel rendering + Hinting:

Remarques

  • La technique du sub-pixel rendering est disponible dans la majorité des systèmes d'exploitation actuels (Windows, MacOS X, Linux, etc.). Le freeware ClearTweak vous permet de le paramétrer dans Windows.
  • Même si elles sont très proches, plusieurs méthodes de sub-pixel rendering font l'objet de brevets. On les retrouve sous la dénomination ClearType (chez Microsoft), CoolType (chez Adobe), Quartz (chez Apple), etc.
  • Les polices de caractères de bonne qualité contiennent les informations de hinting, ce qui leur donne un bon aspect à l'écran. Les polices de piètre qualité ne possèdent pas de hinting, ou un mauvais hinting, ce qui les rend très pénibles à lire à l'écran. Microsoft a toujours apporté un soin tout particulier au hinting de toutes ses polices.
  • Quand une police ne possède pas d'informations de hinting, certains logiciels et systèmes d'exploitation essaient de calculer un hinting automatique. Les différentes méthodes hinting automatiques font également l'objet de brevets (C'est d'ailleurs pour cela que le hinting de Windows est meilleur que celui de Linux (freetype)).
  • Dans la plupart des systèmes, l'anti-aliasing est automatiquement désactivé en dessous d'une certaine taille. Le hinting est généralement conservé. Le sub-pixel rendering, lui, est activé généralement à toutes les tailles.

Avantages et inconvénients du sub-pixel rendering


Le sub-pixel rendering a des avantages et inconvénients, et il existe des arguments dans les deux camps. Au final, c'est surtout une question de goût.

Avantages

  • Aspect graphique à l'écran plus proche du design original de la police (C'est le principal avantage).
  • Meilleure finesse des caractères (par exemple les petits détails comme les virgules, parenthèses ou les pointes de polices sérif comme Times New Roman, etc.)
  • Meilleure lisibilité dans les petites tailles
  • En l'absence de hinting, il permet d'avoir un espacement des caractères plus fidèle (important dans le domaine de la mise en page). Cela évite d'avoir, par exemple, un mot qui passe à la ligne à l'écran et qui reste sur la ligne à l'impression (car le hinting place de force les pixels).

Inconvénients

  • Microsoft possède un brevet très étendu sur la technique, exposant tout développeur d'une technique similaire à un procès.
  • Ne fonctionne que sur les écran LCD.
  • Franges colorées plus ou moins importantes (bien qu'il existe des techniques pour mitiger le problème).
  • Sans hinting, peur donner un aspect "flou" aux polices.
  • Le rendu n'est pas toujours très bon sur des fonds colorés.

Qui a raison ? Apple ou Microsoft ?


Apple utilise l'antialiasing, mais sans hinting, le but étant d'obtenir un affichage le plus fidèle possible à la police d'origine.

Microsoft utilise le sub-pixel rendering (disponible sous XP mais désactivé, et activé par défaut dans Vista), mais le plus souvent avec un hinting assez fort. Le but étant d'avoir un affichage le plus net possible.

Dans la théorie, Apple a raison: Autant afficher les polices de caractères aussi fidèlement possible que l'ont conçu leur designers.
Dans la pratique, Microsoft a raison: Nos écran ont des résolutions faibles (72 ou 96dpi), alors autant faire ce qu'il faut pour avoir un affichage net et clair en faisant rentrer les caractères dans la grille de pixels.

Ensuite, c'est une question de choix personnel.

Ceci dit, si on envisage le futur avec des écran haute résolution (200 dpi et plus), la technique de Microsoft commencera à poser des problèmes en induisant inutilement des décalages.

Si l'avenir est aux écrans haute-résolution, hinting et sub-pixel rendering deviendront peu à peu inutiles.

(Voir dans les liens pour plus d'informations.)

Liens


(articles en anglais):

A voir également :

Ce document intitulé «  Polices: anti-aliasing, hinting et sub-pixel rendering  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.