5160 sujets

Le Bar du forum

Hello,

Une petite réflexion sur la gestion de la taille du texte et la lisibilité.

Les tailles relatives

La sagesse commune sur Alsacréations et ailleurs dit que la taille du texte devrait être gérée avec des unités relatives: pourcentages ou EM. Cette solution, dans l'absolu, implique qu'on ne cherche pas à obtenir une dimension précise en pixels ou centimètres ou autre unité, mais qu'on utilise des ratios d'aspect relatifs à une taille de texte de base.

Dans la pratique, tous les navigateurs ont une taille de texte par défaut configurée à 16px. De plus, certains navigateurs pratiquent des arrondis au pixel, de sorte qu'un ratio équivalent à 11,47px peut donner du 11px dans un navigateur, du 12px dans un autre, et du 11,5px dans un troisième (Firefox sous Linux ou Mac, peut-être aussi sous Vista...).

Conséquence: on travaille avec le pixel comme référence. On calcule des font-size en EM assez savants pour tomber sur une nombre entier de pixels, et éviter les surprises avec les arrondis. Une méthode classique pour cela est celle proposée par Richard Rutter: donner un font-size de 0.625em (ou 62,.5%) à body, pour avoir une taille du texte de 10px à la base, et utiliser des 1.1em pour du 11px, 1.3em pour du 13px, etc.

L'accessibilité est sauve car l'utilisateur peut toujours définir une taille de texte par défaut autre que 16px, et parce qu'éviter l'unité px permet de ne pas bloquer le redimensionnement du texte dans Internet Explorer. Mais la situation est loin d'être idéale.

Le pixel, ennemi de la lisibilité

Le problème des pixels, c'est qu'ils ont une taille différente d'un écran à l'autre, et d'une configuration à l'autre. Entre deux couples écran/configuration, on peut avoir une différence allant du simple au triple (en restant raisonnable).

La taille réelle («physique») du pixel, c'est la résolution. Pour un écran, elle est généralement exprimée en points par pouce (au sujet des points: il s'agit ici de pixels, pas de points typographiques). Concrètement, une résolution de 100PPP signifie qu'un pixel aura une taille de 0,254mm; une résolution de 72PPP signifie qu'un pixel aura une taille de 0,353mm.

Mettons (un peu au pif) que les résolutions d'écran varient, suivant les matériels et configurations réellement utilisées, entre 60PPP et 180PPP. Prenons un texte en 13px (que l'on obtienne ces 13px directement ou en passant par des EM ou pourcentages), une taille de texte considérée comme très confortable sur écran, voire un peu grande. Avec nos deux extrêmes, la taille réelle du texte va varier entre 5.5mm et 1.83mm. (Je n'ai pas de données précises, mais je dirais qu'en dessous de 3mm un texte devient difficilement lisible.)

Le webdesigner qui travaille sur un écran avec une résolution de 120PPP va créer un design efficace en utilisant du 12px pour le corps de texte principal et du 11px pour certains textes périphériques ou accessoires. L'utilisateur sur son portable 13 pouces avec une résolution proche de 160PPP aura plus de difficulté à lire le texte, et le design ne sera plus efficace pour cet utilisateur. L'utilisateur sur son 17 pouces avec une résolution proche de 80PPP va trouver la taille du texte un peu excessive, mais au moins il pourra lire le texte sans se niquer les yeux.

Les solutions

Je vois deux solutions:
1. Les tailles de texte sont exprimées dans une unité relative, indexée sur une taille de texte par défaut gérée par le système.
2. Les tailles de texte sont exprimées dans une unité absolue, c'est à dire: millimètres, points, pica, etc.

La première solution est déjà largement utilisée en CSS, mais pose le problème déjà évoqué: les navigateurs utilisent une taille par défaut figée, qui ne dépend pas de la résolution de l'écran ou même simplement de la configuration du système.

La deuxième solution est séduisante, mais il faut que les navigateurs puissent l'implémenter. Pour cela, il faut que le navigateur sache quelle est la résolution de l'écran. Problème: certains systèmes d'exploitation communiquent une résolution d'écran fictive: 72PPP pour OSX, et 96PPP pour Windows. Dans mon expérience, il n'y a que sous Linux que la bonne résolution est communiquée. Mais la question mériterait d'être creusée.

Si le système communique la bonne information (ou l'exploite si l'affichage du texte est géré par un composant système), cela permettrait de spécifier des tailles de texte en points. On retombe par contre sur le problème suivant: cela écrase les préférences de l'utilisateur (taille de texte par défaut dans le navigateur).

L'idéal serait d'avoir une combinaison de ces solutions:
1. Utiliser la taille du texte par défaut du navigateur (donc exploiter les EM et %).
2. Le navigateur devrait utiliser une taille de texte par défaut en points, et pas en pixels.

Cette combinaison implique deux choses: 1) que les navigateurs se détachent de la convention «taille de texte par défaut = 16px», et 2) que la résolution réelle d'un écran pour une configuration donnée soit toujours connue.

C'est pas gagné.
Salut,

Florent V. a écrit :

2. Le navigateur devrait utiliser une taille de texte par défaut en points, et pas en pixels.


j'ai cru lire que la taille par défaut des navigateurs était spécifiée en point.
la page .

Mais je n'ai pas vraiment trouvé d'autres sources pour confirmer. En regardant dans mes différents navigateurs, j'ai remarqué que l'unité n'était jamais précisée ce qui ne m'avance pas plus.
L'article que tu cites me semble faux, ou imprécis.
a écrit :
Il y avait ensuite un choix à faire : à combien de pixels sur l'écran va-t-on faire correspondre un «point» sur le papier ? (et donc à combien de pixels-écran pour un pouce-papier, ces fameux dpi ?). On ne s'étonnera pas qu'Apple et Microsoft aient fait des choix divergents : le premier a choisi un pixel par point (d'où les célèbres 72 dpi) et le second 4 pixels pour 3 points (d'où ses 96 dpi).

Un poit pica (unité absolue) ne correspond pas à 1px sur système Mac, ou à 1,33px sur système Windows. Il correspondra à un nombre de pixels qui dépend de la taille physique de l'écran et du nombre de pixels à l'affichage.

Ce que le passage ci-dessus devrait dire pour être exact est: lorsqu'on demande à un programme d'afficher un point pica, il utilisera 1px sur Mac, et 1,33px sur Windows. La dimension utilisée ne correspondra à la taille d'un point pica que si l'écran a réellement une configuration de 72PPP (Mac) ou de 96PPP (Win), ce qui est assez peu probable.

De plus, il faut penser au fait que même si le système utilise une taille par défaut de 72PPP ou de 96PPP, certaines applications peuvent décider de passer outre. Smiley cligne

Pour les navigateurs web, l'article est peut-être juste mais il est quelque peu daté (il mentionne Netscape 4.72...). Il est possible que les navigateurs aient utilisé une taille par défaut exprimée en points (ce qui serait une bonne chose si le système d'exploitation gérait ça correctement, ce qui n'est pas le cas), mais je ne crois pas que ça soit toujours le cas.

En tout cas, Firefox 2 et 3 utilisent une taille de texte en pixels (l'unité n'est pas précisée dans les options, mais la valeur par défaut est "16" et on obtient bien du 16px). C'est en tout cas ce que j'ai constaté sous Linux et OS X, il faut que je vérifie sous Windows mais il me semble bien que c'est le cas.
Test rapide: Opera 9.6 sous Linux: taille du texte par défaut à 16 (pas d'unité précisée), résultat obtenu sur une page de test: 16px.

À vérifier sur d'autres systèmes. À voir aussi avec Safari sous OS X, notamment.
Mais pour l'instant mon analyse a l'air bonne.
Florent V. a écrit :
Problème: certains systèmes d'exploitation communiquent une résolution d'écran fictive: 72PPP pour OSX, et 96PPP pour Windows. Dans mon expérience, il n'y a que sous Linux que la bonne résolution est communiquée. Mais la question mériterait d'être creusée.

Es tu sûr ce ça? Les écrans MAC de dernière génération étant passés à 96ppp, je vois pas pourquoi les navigateurs l'abaisseraient à 72ppp, complètement absurde.

Florent V. a écrit :

Pour les navigateurs web, l'article est peut-être juste mais il est quelque peu daté (il mentionne Netscape 4.72...). Il est possible que les navigateurs aient utilisé une taille par défaut exprimée en points

Oui c'est même sûr (et l'article est en effet daté), puisque les standard d'origine étaient:
> MAC: 12pt/72ppp
> PC: 12pt/96ppp
et 75ppp pour Linux je crois.
Mais les 12pt ayant été traduit par une tailles de 12px sur MAC et 16px sur PC, Todd Fahrner a proposé d'harmoniser la taille de base avec le standard 16px/96ppp au W3C, les navigateurs devaient donc s'aligner sur ce "nouveau" standard.

a écrit :
2) que la résolution réelle d'un écran pour une configuration donnée soit toujours connue.

Ou plutôt standardisée à 96ppp non?

Ta proposition peut paraître judicieuse mais ça ne changera malheureusement rien aux implémentations si tu ne l'exposes pas (ou via quelqu'un qui aurait plus de poids) et ne la défend pas auprès du W3C. L'argument des taille de texte trop petites sur des appareils portatifs est peut-être le seul qui pourrait jouer en sa faveur.

Ceci dit il ne faut pas oublier l'un des rôles des UAAG qui est de palier à des problèmes d'inaccessibilité visuelle en partie par les mécanismes d'agrandissement du texte que tu connais.
Modifié par Hermann (28 Mar 2009 - 14:58)
Hermann a écrit :
Ou plutôt standardisée à 96ppp non?

Non. Tu ne peux pas standardiser à 96ppp car cela signifierait:
1. tous les écrans fabriqués au monde doivent avoir la même résolution native (en ppp);
2. l'utilisateur ne doit pas être en mesure de choisir la définition d'écran.

Ce n'est clairement pas comme ça que ça marche. L'ordinateur sur lequel je tape ce message a une résolution native que j'ai calculée à environ 115ppp. Ce qui fait qu'un texte prévu pour un affichage optimal en 96ppp sera relativement plus petit, et donc moins lisible; je le constate d'ailleurs tous les jours en visitant des sites web.
(Pour info, il s'agit d'un écran 13" en 1280x800. J'ai calculé les 116ppp en appliquant le théorème de Pythagore pour obtenir une diagonale exprimée en pixels, et en divisant ce résultat par 13. Soit: Résolution = Sqrt(1280²+800²)/13.)

Hermann a écrit :
Ta proposition peut paraître judicieuse mais ça ne changera malheureusement rien aux implémentations si tu ne l'exposes pas (ou via quelqu'un qui aurait plus de poids) et ne la défend pas auprès du W3C.

Pour l'instant ce n'est pas une proposition, c'est une réflexion. Smiley cligne

Hermann a écrit :
Ceci dit il ne faut pas oublier l'un des rôles des UAAG qui est de palier à des problèmes d'inaccessibilité visuelle en partie par les mécanismes d'agrandissement du texte que tu connais.

Dans l'absolu, la configuration de la taille du texte par défaut (par exemple à 18px ou 20px pour des écrans avec une forte résolution, voire à l'avenir avec du 50px pour des écrans ayant des résolutions de folie telle que 300ppp) est une solution. Problème: les utilisateurs ne prendront pas la peine de faire ce réglage (ils ne savent même pas qu'il est possible de le faire, et beaucoup ignorent même le concept de préférences dans une application informatique...). Ce n'est donc pas une solution satisfaisante. Le navigateur et le système d'exploitation devraient être en mesure d'adapter leur comportement au matériel et à la configuration de l'affichage, sans nécessiter une intervention de l'utilisateur.

À l'avenir, avec l'amélioration de la résolution native des écrans, on sera non seulement confronté au problème de la lisibilité du texte, mais aussi au problème de l'affichage des images. Je pense notamment aux icones et boutons (que l'aspect réel d'un bouton sur un site puisse passer du simple au triple, c'est préoccupant), ou encore aux images structurant un design. Aujourd'hui, on réalise beaucoup de designs en largeur fixe, car les images à placer en fond ou comme habillage ne sont pas extensibles. Le border-image de CSS 3 ou les background multiples viendront peut-être faciliter la fluidité, mais ça risque d'être une solution limitée.

Il faut voir aussi comment les constructeurs de dalles et les assembleurs de machines feront évoluer le marché. Il se peut que certaines avancées technologiques, permettant d'obtenir un plus grand PPP (des écrans avec une résolution native de 200 ou 300ppp, par exemple), soient tout simplement laissées de côté car les systèmes d'exploitation, applications et contenus ne seront pas adaptés à ce type de résolution.

Dans l'histoire de la micro-informatique, on est parti de résolutions très basses (des 40-50ppp ou peut-être même moins), allé vers des 70ppp, 90ppp, maintenant on est plus dans les 100-120ppp pour les ordinateurs proposés à la vente. Les 200ppp ne sont pas si loin que ça (quelques années?).
Administrateur
Ajoutez à ça de plus en plus mobiles (dont la densité ppp va s'accroître également) et des netbooks/tablets. On va s'amuser comme des mouches bleues sur un steak de 15 jours.
En effet pour les ppp, ma question manquait de bon sens.

Florent V. a écrit :

Pour l'instant ce n'est pas une proposition, c'est une réflexion. Smiley cligne
Oui mais tu finis quand même par proposer une solution
qui ne mènera de toute façon à rien de concret.
Modifié par Hermann (28 Mar 2009 - 22:06)