David Madore's WebLog: La longueur des lignes et l'absurdité du style des pages Web

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

↓Entry #2842 [older| permalink|newer] / ↓Entrée #2842 [précédente| permalien|suivante] ↓

(mercredi)

La longueur des lignes et l'absurdité du style des pages Web

Je vais un peu redire ce que j'ai déjà dit il y a deux ans, mais peu importe.

Ce qui motive cette redite, c'est que mon dernier billet m'a valu le commentaire suivant, évidemment anonyme, qui se plaint de façon fort amène de la longueur des lignes de texte sur ce site :

T'as raison, utilise tous les pixels en largeur, faudrait pas que ça se perde, d'ailleurs tu devrais encore réduire les marges, elles sont encore à deux ou trois pixels.

Toujours agréable d'écrire un texte long comme un roman et de recevoir des réactions sur des points de forme, comme ça, de la part de gens qui n'ont de toute façon visiblement pas la moindre intention de lire le texte. Toujours agréable, aussi, de recevoir des commentaires agressifs et sarcastiques de la part de gens qui n'ont même pas le courage de laisser un nom. (Oui, ça m'arrive moi aussi de faire du sarcasme agressif, mais je le fais en mon nom, et généralement contre des généralités, pas contre des personnes individuelles identifiables à qui je m'adresse.) Et bien sûr, le reproche tombe complètement à plat puisque, précisément, j'ai prévu la possibilité de régler la longueur des lignes en plus de la taille du texte sur ce site (pour faire vite : cherchez le bouton en bas de la page avec l'icône ‘⚙’ et le texte Click for site settings) et qu'en plus, comme je vais le dire, même si je n'avais pas prévu ça, il y avait diverses façons de s'en sortir autrement.

Mais ça vaut la peine de s'attarder un instant sur l'absurdité bien réelle qui sous-tend ce commentaire désagréable, c'est-à-dire la situation du style sur le Web, et notamment sur un point qui ne déclenche pas la stupéfaction consternée qui serait méritée : pourquoi diable le style d'une page Web est-il complètement contrôlé par l'auteur de la page et en rien par le lecteur ?

Note : Pour éviter tout malentendu, je précise que le terme style, dans le contexte du Web et dans ce billet, fait référence à l'apparence : couleurs, polices de caractères, taille des caractères, largeur des lignes, emplacement du texte, ce genre de choses. (Je ne parle donc pas, disons, du style linguistique.) ❧ Par ailleurs, si vous avez besoin d'éclaircissements sur certains termes techniques, je rappelle que j'ai écrit un long billet pour vulgariser le fonctionnement du Web et des technologies comme HTML et compagnie.

Au début du HTML (c'est-à-dire pendant la première moitié des années 1990), il n'y avait pas de style à proprement parler. Le HTML décrivait de l'hypertexte, c'est-à-dire du texte avec des liens, éventuellement quelques éléments supplémentaires comme des titres de section, la possibilité de mettre du gras, de l'italique et du souligné, mais c'était à peu près tout. Pas question de changer de couleur, de police, ou d'autres fioritures du genre.

C'était peut-être un peu limité, mais rappelons-nous qu'avec cette limitation venait un avantage : si ce n'est pas la page Web qui fixe la police ou la taille de caractères, cela laisse la porte ouverte à l'utilisateur pour la choisir — et de fait, vers le milieu des années 1990 des navigateurs offraient cette possibilité (qui existe toujours, au demeurant : il y a un réglage de police par défaut dans mon Firefox ; mais c'est juste que maintenant ça n'a en gros aucun effet puisque chaque page Web trouve absolument indispensable d'imposer son propre look).

Mais simultanément, les navigateurs (les mêmes, c'est-à-dire en gros Netscape Navigator) se sont mis à permettre au HTML de régler la couleur, la police, la taille, ce genre de choses, et ça a abouti au Web de la fin des années 1990, tout clignotant de gifs animés et où tout le monde abusait des balises comme <font>.

Pour essayer de contrôler cette explosion on a inventé le CSS selon un principe vertueux de séparation du fond (confié au HTML) et de la forme (confiée au CSS) : c'est-à-dire que le CSS est un langage dans lequel on décrit le style à appliquer à une page Web, le HTML se bornant à décrire le contenu. Puis le CSS s'est complexifié à un rythme absolument hallucinant depuis le milieu des années 1990, et trouve quand même le moyen de faire toujours presque exactement ce qu'on veut mais à une petite limitation près qui fait qu'on ne peut pas s'en servir, et par ailleurs il est invraisemblablement confusant et plein de bizarreries incompréhensibles (voyez ici ou ou ou pour des exemples divers de limitations connes ou de comportements contre-intuitifs), mais ce n'est pas mon propos ici. Le problème est que, fondamentalement, personne n'a jamais vraiment cru à cette histoire de séparation du fond et de la forme, et les auteurs de pages Web se sont rués sur le CSS comme la vérole sur le bas-clergé breton, remplaçant simplement leurs balises <font> par des attributs style= ou éventuellement des feuilles de style avec des classes ad hoc, et souvent avec une tendance à micromanager le moindre détail ; mais le résultat pour l'utilisateur était et est toujours exactement le même : la personne qui décide essentiellement seule à quoi la page Web va ressembler est l'auteur de cette page.

Évidemment on peut me rétorquer que quand je lis un livre (ou un prospectus publicitaire, parce que beaucoup du Web ressemble plutôt à ça), ce n'est pas moi, le lecteur, qui décide à quoi ça ressemble, donc le problème n'est pas nouveau. (Et de fait, ça arrive que j'achète un livre et que j'aie du mal à le lire parce que je déteste vraiment la police de caractères utilisée, ou — ce qui m'arrive de plus en plus avec l'âge — que je trouve les caractères décidément trop petits.)

Oui mais justement la technologie offrait la possibilité de faire mieux. Et elle n'a pas réalisé cette promesse.

Soyons bien clairs : je ne conteste pas l'idée que l'auteur d'une page Web ait un certain contrôle sur l'apparence de celle-ci (ne serait-ce que le branding : mettre un petit logo quelque part, c'est raisonnable). L'idée de séparer complètement le fond et la forme est, au demeurant, assez illusoire : le HTML n'a pas, par exemple, de concept de paragraphe important ou aparté, donc au mieux ce que je vais pouvoir faire pour mettre en relief un paragraphe important ou au contraire le marquer comme secondaire, c'est lui donner une classe CSS spéciale et ajouter des règles de style qui servent à afficher un bord autour ou diminuer la taille des caractères ; et ensuite, si je dis dans le texte comme je l'ai dit dans le paragraphe encadré ci-dessus ou comme je vais le dire en petits caractères plus loin, je viole le principe de séparation de fond et de forme et je ne vois pas bien comment on peut éviter ça complètement sans limiter sévèrement l'expressivité du Web. Donc il faut bien que l'auteur d'un site Web ait la possibilité de mettre au moins un peu de style.

Mais les technologies Web actuelles ne permettent même pas un partage (souhaitable !) des responsabilités selon lequel, au moins pour un texte qui est généralement assez basique, ce serait l'utilisateur, i.e. le lecteur, qui choisit la police qu'il trouve la plus agréable, la taille de caractères qui convient le mieux à son confort de lecture, la longueur des lignes, les marges, les couleurs, ce genre de choses, et la page Web imposerait le style pour des éléments indispensables à son branding ou bien à la bonne compréhension du texte (encadrés, apartés et notes, légende des images, ce genre de choses).

Je conviens que c'est un peu compliqué de prévoir un style partiellement fixé par l'auteur de la page et partiellement fixé par l'utilisateur : par exemple parce que l'auteur ne peut pas pleinement tester toutes les possibilités (mais bon, il ne peut déjà pas pleinement tester toutes les possibilités de largeur d'écran ou de fenêtre !) et parce que c'est plus difficile de concevoir un style quand on n'a pas tous les éléments. (Le choix des polices pose par exemple la difficulté que toutes n'interagissent pas bien avec tous les caractères Unicode.) Mais le fait est qu'actuellement il n'y a même pas un début d'effort dans cette direction.

Alors oui, bien sûr, quand on conçoit un site Web, on peut prévoir un mécanisme de configurabilité de l'apparence (le JavaScript permet à peu près n'importe quoi). Mais d'abord il faut se fatiguer à l'écrire, ce qui n'est pas du tout évident (surtout quand, comme moi, on n'est pas du tout expert en JavaScript et encore moins en CSS), ça va alourdir tout le site, et potentiellement provoquer des artefacts d'affichage le temps que le JavaScript s'active, et surtout, ce qui rend cette idée absurde, c'est que chaque site Web devrait mettre en place son propre mécanisme de configuration séparé, sans que le navigateur ne joue de rôle de coordinateur, et que l'utilisateur devrait rentrer ses préférences de police, taille, longueur de ligne, etc., une fois séparément pour chaque site qu'il utilise (donc avec un mécanisme différent à chaque fois), au lieu de les saisir une fois pour toutes dans le navigateur. Un site Web n'a même pas de mécanisme pour interroger l'utilisateur et savoir si, par hasard, il aurait une préférence pré-remplie sur certaines variables standardisées. Il n'y a même pas de bonnes pratiques documentées sur la manière de faire. (Et c'est pour ça que, bien que j'aie maintenant un mécanisme pour régler la longueur des lignes sur ce site, les gens ne le voient pas et se plaignent.)

Tout ça est profondément con.

Ce n'est pas mon boulot de décider comment vous lisez mon site Web. C'est vous qui le lisez, ça devrait être à vous de choisir ce qui vous plaît, pas à moi. Moi j'ai juste envie de dire au navigateur fais ce qui est le mieux pour l'utilisateur pour lequel tu travailles : c'est ton boulot de lui demander et de lui permettre de choisir — mais le CSS ne permet rien de tel. Du coup, j'ai fait des choix qui me conviennent, parce que je suis quand même un lecteur important de mon propre site, et si ça ne vous convient pas, ben je suis désolé, mais ce n'est pas moi qui ai conçu le Web.

Alors, ce n'est pas tout à fait vrai qu'on ne peut rien faire, il y a de petits bricolages.

Par exemple, Firefox fournit un truc appelé reader view (je ne sais pas comment ils ont traduit en français : mode lecteur ?) : on l'active en cliquant sur la petite icône représentant une page avec des lignes de texte(?), qui se trouve à droite de la barre d'adresse. Si vous activez ça, Firefox remplace (en gros) le style de la page par son propre style à lui, dans lequel vous pouvez facilement changer la police et la taille. Je m'en sers parfois pour des pages dont je n'aime pas le style, et des gens m'ont déjà dit qu'ils s'en servaient pour mon site, ce qui est exactement ce pour quoi le truc est fait, donc c'est très bien. Le problème, cependant, c'est que comme ça invalide totalement le style de la page, il y a des informations qui passent à la trappe, par exemple dans mon dernier billet il y a des mots en rouge pour attirer l'attention sur des choses qui ne sont pas forcément valables en maths constructives, il y a des passages en petits caractères, etc., et ces informations disparaissent en mode lecteur (comme je disais, séparer complètement fond et forme n'est pas toujours possible). Plus grave, la table des matières de mon dernier billet disparaît complètement en mode lecteur, et là je ne sais vraiment pas pourquoi.

Mais bon, le mode lecteur est spécifique à Firefox (enfin, peut-être que Chrome propose quelque chose d'équivalent, je n'en sais rien). Sinon, il y a un truc qui a été standardisé, mais c'est ridiculement limité : apparemment beaucoup de gens aiment pouvoir basculer entre foncé-sur-clair et clair-sur-foncé, donc quelqu'un a décidé de standardiser ça. Mais juste ça : un bit d'information que l'utilisateur a le droit de faire passer au site Web : je veux du clair sur foncé (dark mode) ou je veux du foncé sur clair (light mode), c'est tout ce que vous avez le droit de dire. Et ce n'est pas pris en compte par défaut : il faut encore que la feuille de style en tienne compte, et ce n'est pas évident (je n'ai pas encore fait le boulot, mais je compte le faire Un Jour®).

Je ne sais vraiment pas ce qui est passé par la tête des gens qui se sont dit on va permettre aux utilisateurs d'exprimer exactement une et une seule préférence, et ce sera celle-là : pas les polices, pas la taille des caractères, pas la longueur des lignes, non, juste clair-ou-foncé. (La manière dont cette préférence est lue ne suggère même pas une porte ouverte vers des extensions ultérieures.) Vraiment bizarre.

Les utilisateurs assez compétents techniquement peuvent toujours imposer leur style préféré par plein de techniques : la plus évidente est d'utiliser un userscript (dans un outil comme Greasemonkey, Tampermonkey ou équivalent), pour rectifier tel ou tel aspect du style de la page (ou changer n'importe quoi d'autre dedans). C'est extrêmement puissant. Mais il faut connaître le JavaScript, et c'est pénible à faire même quand on est techniquement compétent, ne serait-ce que parce qu'il faut le faire site par site.

Sinon, toujours sous Firefox, sur un PC, si vous trouvez la longueur des lignes trop longues sur un site, il y a une petite astuce qui peut servir, c'est d'activer le responsive design mode sur le tab (c'est dans le menu tools, dans le sous-menu browser tools ; ou on peut l'activer en tapant control-shift-M — enfin, ça c'est sous mon Linux, c'est peut-être différent ailleurs ; peut-être que c'est uniquement le Firefox pour développeurs qui a ça, je n'en sais rien). En tout cas, ça ouvre une vue dans une sorte de sous-fenêtre à l'intérieur du tab qui vous montre le site que vous regardiez, mais à la taille que vous voulez, et que vous pouvez changer comme vous voulez : ça permet aux auteurs de sites Web de voir à quoi leur site va ressembler sur tel ou tel mobile, mais rien n'interdit de s'en servir juste pour changer la taille à laquelle on veut voir un site.

Bon, mais parlons un peu de la longueur des lignes, justement.

Là aussi, le Web s'est enferré dans une situation absurde.

Il se trouve que j'aime bien, moi, avoir des lignes de texte plutôt longues (au moins en nombre de pixels, parce que je prends aussi de gros caractères). Je comprends aussi qu'on n'aime pas ça, mais comme expliqué plus haut, je n'ai pas vraiment moyen d'interroger le lecteur sur ses préférences, donc faute de mieux je me base sur ce que j'aime, moi.

La solution évidente, pour les gens qui n'aiment pas les lignes de texte trop longues, ce serait de… diminuer la largeur de leur fenêtre de navigateur (idée révolutionnaire, n'est-ce pas ?). Par exemple, si vous avez une fenêtre de navigateur à la moitié de la largeur de votre écran, vous aurez un aspect ratio vaguement comparable à un mobile, donc normalement les sites Web peuvent gérer correctement, et ça vous laisse l'autre moitié de l'écran libre pour faire autre chose avec (par exemple ouvrir une deuxième fenêtre de navigateur, pratique pour naviguer deux sites à la fois).

Mais là où je dis qu'on s'est tous enferrés dans une situation absurde, c'est que plein de sites ont décidé d'utiliser le prétexte que plein de gens n'aiment pas les lignes de texte trop longues pour mettre plein de colonnes latérales qui ne servent à rien de vraiment fonctionnel, juste à meubler l'espace, mais que du coup si on les ouvre sur une fenêtre trop étroite, eh bien ils deviennent illisibles. Donc on est obligé de leur donner plein d'espace horizontal pour qu'ils n'en utilisent qu'une petite proportion, et du coup les sites qui veulent utiliser tout l'espace horizontal reçoivent des commentaires désagréables comme celui avec lequel j'ai ouvert ce billet.

Là aussi, tout ça est profondément con.

Bon, alors pourquoi je persiste à garder une longueur de ligne importante (en fait, illimitée) par défaut sur ce site ? Il y a une combinaison de raisons. D'abord, parce que moi personnellement je préfère ça et que, comme je le disais, je suis quand même le principal lecteur de mon site. Ensuite, parce que « illimité » est le défaut CSS, et que moins je touche à CSS mieux je me porte (si je commence à mettre en place des règles dont je comprends mal l'interaction subtile les unes avec les autres, je vais vite me trouver pris au piège de la complexité), donc plaignez-vous plutôt auprès de ce choix par défaut. C'est aussi un peu par principe et par protestation contre l'absurdité de cette manie de perdre de l'espace latéral pour rien (à titre d'exemple, je lisais récemment ce billet de blog fait sous Wordpress avec une fenêtre large de 1460 pixels, et il y en a 350 de chaque côté, c'est-à-dire quasiment la moitié de la fenêtre, qui est purement jetée sous forme de bandes grises qui ne contiennent rien, et même dans les 710 pixels qui restent, il n'y a que 450, c'est-à-dire 30% de la largeur de la fenêtre, qui contiennent vraiment le texte que je veux lire : à quoi ça sert de jeter de l'espace pour rien comme ça ?).

Mais surtout : si un utilisateur qui aime les lignes courtes est face à un site qui propose des lignes longues, il a plusieurs options pour forcer des lignes courtes, alors que la réciproque n'est pas vraie (je veux dire, même si je n'avais pas mis en place un mécanisme de personnalisation). D'abord, on peut diminuer la largeur de la fenêtre (ou augmenter la taille du texte au niveau navigateur), et, soyons sérieux, si on s'apprête à lire un billet de la taille de ceux que j'écris typiquement, ce n'est pas le fait d'ouvrir une nouvelle fenêtre et de la redimensionner qui va représenter une proportion significative du temps de l'opération. Mais même si on ne veut pas faire ça (par exemple parce que ça changerait la taille de tous les tabs), on peut utiliser le responsive design mode dont je parle plus haut (ça s'active en trois touches et il retient la taille par défaut de la dernière fois, donc c'est quand même très efficace). On peut aussi passer en reader view. On peut imprimer en PDF avec le format de papier qu'on veut et lire le PDF. On peut ouvrir l'inspecteur et ajouter une règle CSS facile, ou créer un userscript. Alors qu'à l'inverse, moi, quand je suis face à un site dont la longueur des lignes est trop courte à mon goût, eh bien c'est beaucoup plus difficile de s'en sortir (on peut certes manipuler le CSS avec l'inspecteur ou un userscript, mais trouver la règle CSS à retirer est souvent très délicat, et beaucoup de sites ne font d'ailleurs pas le moindre effort pour qu'il n'y en ait qu'une à changer).

Voilà, donc j'ai fait l'effort (il y a deux ans) d'ajouter du JavaScript pour permettre de limiter la taille des lignes parce que c'était beaucoup demandé, mais je ne suis pas doué en CSS donc c'est forcément imparfait, et surtout ce n'est vraiment pas ma faute s'il n'y a aucun moyen standardisé de montrer cette préférence à l'utilisateur, ni de la renseigner de façon transverse sur tous les sites. Si vous trouvez que c'est agaçant ou insuffisant, pensez que les goûts sont quelque chose de personnel et ayez à l'esprit combien c'est pénible de consulter le Web quand on aime les lignes longues et que touts les sites semblent tenir à les limiter à quelque chose de ridiculement court. Et aussi, arrêtez de poster des commentaires désagréables sur mon blog, et envisagez plutôt de faire de l'activisme pour des technologies Web qui permettraient aux utilisateurs d'exprimer des préférences de ce genre de façon uniforme.

↑Entry #2842 [older| permalink|newer] / ↑Entrée #2842 [précédente| permalien|suivante] ↑

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]