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 là
ou là
ou là
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.