L'indépendance de la résolution

20012009 In: Cocoa, Mac OS X

La résolution

Commençons par rappeler ce qu'est la résolution. On l'exprime habituellement en points par pouce. C'est à dire qu'il s'agit du nombre de points — pour un écran, des pixels — alignés sur un pouce de longueur (1 pouce = 2,54 cm).
L'abréviation ppp (points par pouce) se rencontre, mais l'abréviation anglaise dpi (Dots per Inch) est la plus courante.

Paradoxe: "Plus les pixels sont nombreux, et moins on les voit".

Des pixels aux centimètres

Si vous avez bien suivi, vous pourrez tenter de répondre à cette question: combien faut-il aligner de pixels pour tracer un segment d'un centimètre de long ? Réfléchissez.

En fait il vous manque quelques données pour répondre. Alors, prenons l'exemple de l'écran de mon iMac: il affiche 1440 x 900 pixels. Sa diagonale mesure 17 pouces. Les pixels sont carrés.

Calcul des dimensions physiques de l'écran

Commençons par calculer les dimensions physiques de l'écran, grâce au théorème de Pythagore:
largeur^2 + hauteur^2 = diagonale^2

Sachant que
largeur = (1440/900) x hauteur = 1,6 x hauteur

Vous devez trouver:
hauteur = 9 pouces
largeur = 14,41 pouces

Calcul de la résolution

L'écran a donc une résolution de 900 pixels / 9 pouces = 100 points/pouce.

La réponse à la question de départ

En divisant par 2,54, on trouve que 100 ppp correspond à 39,37 points/cm. Il faudra donc aligner 39 pixels pour tracer un segment d'un centimètre de long.

Où veux-tu en venir, Renaud ?

Ça vient ! Prenons l'exemple de votre traitement de texte habituel. Le format d'impression est un A4 et le zoom est réglé à 100%. Comment se fait-il alors que lorsque je superpose une feuille A4, la feuille à l'écran est plus petite ?

Réponse: parce que le traitement de texte part du principe que la résolution de votre écran est de 72 ppp. Pourquoi 72 ppp ? C'est historique; dans les années 90, c'était une résolution courante pour un écran. Sous Windows, il me semble qu'on utilise 85 ppp, ce qui est un peu plus proche de la réalité. Tout ça n'est tout de même pas très WYSIWYG.

Donc, si je veux voir la page à la taille réelle sur mon iMac, il faut que je règle le zoom à (100 / 72) = 139%.

Pourquoi ce problème n'est pas encore résolu en 2009 ?

Notez bien que la résolution de chaque écran est différente, elle est plus dense encore pour l'écran de mon MacBook. Des API existent pour connaître la définition (en pixels) de l'écran. On peut sans doute également obtenir sa diagonale (en pouces) et procéder au calcul vu plus haut. Et le problème sera résolu: le traitement de texte fera le calcul de la résolution et affichera sur l'écran de mon MacBook la feuille A4 avec une largeur mesurant très exactement 21 cm.

Bien. Imaginons que j'ai maintenant l'idée saugrenue de brancher à mon MacBook un écran externe d'une résolution de 100 ppp, et que je place la fenêtre à cheval entre les deux écrans: ça ne va plus du tout ! La page est maintenant trop grosse sur l'écran externe !

Ce problème est insoluble au niveau applicatif. La seule possibilité est que le Window Server fasse les adaptations.

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 est possible qu'elle fasse son apparition dans 10.6. 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é.

Articles similaires