L’indépendance de la résolution

Lancez votre traitement de texte habituel, et ouvrez un document vierge au format A4. Maintenant, prenez une feuille au format A4 et superposez-la à la page affichée à l’écran: cela ne vous surprend peut-être plus, mais la feuille est plus grande que sa représentation à l’écran. Ne trouvez-vous pas troublant qu’en 2010, les ordinateurs ne sachent pas afficher les documents en taille réelle à l’écran ?

Une histoire de résolution

Revenons d’abord sur cette histoire de résolution. La résolution est une mesure du nombre de points (en l’occurrence pour un écran, des pixels) alignés sur une longueur d’un pouce (2,54 cm). On utilise souvent l’abréviation anglaise dpi («Dots Per Inch»), même si l’abréviation française ppp («Points Par Pouce») est courante.

Faisons un rapide calcul: l’écran de mon iMac G5 présente des dimensions physiques de 14,4 x 9 pouces (soit 36,58 x 22,86 cm). Il affiche 1440 x 900 pixels. Sa résolution horizontale est donc de 1440 / 14,4 = 100 ppp. Et sa résolution verticale est de 900 / 9 = 100 ppp.
 Le fait que la résolution soit la même horizontalement et verticalement indique que les pixels de l’écran sont carrés (il existe des écrans avec des pixels rectangulaires).

Les logiciels ne dessinent pas à l’échelle

Nous en verrons la raison plus loin, mais sur recommandation d’Apple, les logiciels considèrent que l’écran présente une résolution de 72 ppp. Ce choix de 72 ppp s’explique pour des raisons historiques; cela permet une correspondance exacte entre une mesure en pixels et une mesure en points d’imprimerie (il y a 72 points d’imprimerie par pouce). Il me semble que sous Windows, on considère que la résolution est de 96 ppp, ce qui est plus proche de la réalité actuelle.

En pratique cela signifie que pour représenter une page A4 verticale, le logiciel dessine un rectangle de 21 cm/2,54 x 72 ppp = 595 pixels par 29,7 cm/2,54 x 72 ppp = 841 pixels. Aussi, quand le zoom de la page est réglé à 100 %, le logiciel dessine à 72 ppp. Pour le faire dessiner à 100 ppp, il faut donc mettre le zoom à 100/72 = 139 %. Je peux alors superposer la feuille sur mon écran avec une correspondance parfaite.

Pourquoi ce problème n’est-il toujours pas résolu en 2010 ?

Apple propose des API pour connaître la définition (en pixels) de l’écran. On peut sans doute également demander au système d’exploitation les dimensions physiques de l’écran et calculer sa résolution comme ci-dessus, et enfin dessiner à l’échelle. Cependant, un problème va apparaître dès lors que vous brancherez un deuxième écran sur votre Mac qui présente une résolution différente du premier: une fenêtre à cheval sur les deux écrans n’aura son contenu à l’échelle que sur l’un des écrans. En y réfléchissant, la seule manière simple de résoudre le problème est que ce soit le Window Server qui fassent l’adaptation.

Les réflexions d’Apple sur le sujet

L’indépendance de la résolution était annoncée pour Mac OS 10.5 et ne fut finalement pas présente. Il existe pourtant déjà quelques API: Resolution Independence Guidelines.

Je vous fait un petit résumé:

  • Les ingés d’Apple ont l’air de s’embrouiller avec tout ça.
  • Il faudra dessiner à 72 ppp. Quartz effectuera ensuite les conversions pour avoir les coordonnées en pixels.
  • Il est pour l’instant possible de changer le facteur d’agrandissement à l’aide de l’application Quartz Debug, dans le menu Tools > Show User Interface Resolution. Essayez, c’est marrant. Ce petit essai devrait vous faire comprendre la complexité de la chose: c’est moche, on voit plein de gros pixels.

Il va donc falloir rendre l’interface utilisateur entièrement vectorielle. C’est un énorme travail, et il est donc compréhensible qu’Apple ne l’ait pas encore complètement implémenté.