Being be-rewt



Vendredi 08 août 2003

Remplacer du texte par une image

Dès que l'onsouhaite utiliser une police un peu éxotique, on se retrouve très rapidement à utiliser des images pour remplacer du texte. Dans ce cas, deux grands problèmes se posent. Le premier est celui de l'accessibilité. Mon texte est-il toujours lisible si on désactive les images, si on visionne la page en mode texte ou si la page est lue par un synthétiseur vocal ? Le second est celui de la sémantique et du référencement de la page. Le texte est-il toujours référencé par les moteurs de recherche, n'ajoute-il pas de balises qui ne portent pas de snes ? Le remplacement de texte est souvent utiliser en titre, il serait donc dommage que ce titre ne soit pas pris en compte dans un moteur de recherche par exemple. Le troisième problème éventuel (que je n'avais pas signalé plus haut) est celui de l'intérêt d'une telle lecture. Si tu t'intéresses aussi peu à ce sujet qu'à la reproduction des batraciens en Afrique Australe, je te conseille d'attendre le billet suivant ou de te préparer à une lecture chiante).
Autant le dire tout de suite, je ne connais pas aujourd'hui de solution répondant à tous ces problèmes (si ce n'est de ne pas utiliser d'image à la place du texte).

Énumérons les techniques à notre disposition. La première consiste à utiliser tout bêtement une image par titre et d'inclure cette image dans le code de la façon suivante: <img src="titre-image.png" alt="Titre" />. Cette solution basique pose un gros problème: le texte défini dans l'attribut alt n'est pas référencé par un moteur de recherche, de plus d'un point de vue sémantique, on insère une balise image qui correspond à du texte, ce n'est clairement pas propre: du texte doit être identifié comme tel. Dans le même genre, il y a la solution qui consiste à encoder un alphabet entier sous forme d'image et à créer ensuite du texte de la façon suivante: <img src="N.png" alt="N"><img src="i.png" alt="i"> pour le texte Ni (ce qui ne veut rien dire mais au moins c'est court). Là le problème est le même que précédemment, mais en plus le texte sera lu lettre par lettre par un synthétiseur vocal, c'est donc à proscrire. Si on veut utiliser cette solution (qui à l'avantage d'être plus légère quand on a de nombreux textes en images) on placera le texte entier dans le premier attribut alt et on laissera les suivants vides. Enfin les solutions similaires avec une (ou des) balise object (Qu'est ce qu'une balise object ? La réponse est par ici.) à la place d'une image posent les mêmes problèmes.

Il fallait donc trouver autre chose. Il y a la désormais célebre astuce de Fahrner qui consiste à ne pas afficher le texte et à utiliser une image de fond en texte de remplacement grâce à CSS (tout est expliqué en anglais malheureusement dans le lien donné ci-dessus). Problème: cette solution fait que le texte n'est pas lu par cerains logiciel de lecture d'écran. De plus, si vous désactivez les images dans votre navigateurs, adieu les titres.
Une amélioration est proposée pour supprimer le problème des lecteurs d'écran: cacher le texte au lieu de ne pas l'afficher. Il reste toujours dans ce cas le problème de la personne qui navigue en supprimant les images.

Voilà à ce jour l'état des lieux. En l'absence de solution miracle, j'ai décider de ne pas utiliser pour l'instant de texte en image. Pourtant, quand on voit ce qu'il est possible de faire, comme le montre si bien CSS zen garden, on regrette que ça ne soit pas mieux gérer. La meilleure solution étant d'utiliser la dernière astuce proposée et de fournir une feuille de style alternative pour les utilisateurs n'affichant pas les images.

be-rewt à 17:12 - Haut

Commentaires

Bonjour !

Petite précision : je crois que la valeur de alt est bien prise en compte par les moteurs (pas tous peut être), mais c'est vrai qu'elle n'est pas prise en compte "comme untitre".

La dernière astuce est bien utile : merci ! Mais les possibilités d'abuser des moteurs de recherche qu'ouvrent les CSS sont quasi infinies... j'espère que la pollution des résultats par cette technique ne va pas se développer trop :-)

Thomas à 17:32, le 08.08.03 - Son site - Haut


En tout cas, ce n'est pas le cas chez google. Prenons un exemple :
Allons sur une page avec titre en image (qui a un attribut alt de spécifer). Le tire du billet est manque de technologie. Recherchons ce titre sur ce site à l'aide de google. Nous n'obtenons aucun résultat. Pourtant si on cherche un morceau du text du billet comme l'autre jour, en lisant Mr Peer, on le retrouve.

be-rewt à 18:01, le 08.08.03 - Haut


Intéressant ! Ça semble contredire ce qu'on raconte ici.

Je cherche d'autres exemples pour vérifier.

Thomas à 18:29, le 08.08.03 - Son site - Haut


J'ai pour ma part entendu que Google prenait les textes en ALT mais principalement pour leur recherche d'images.

Laurent à 20:03, le 08.08.03 - Son site - Haut


Voici un exemple (j'avais pas besoin de chercher très loin ;) :

Je parlais le 6 août dans un billet d'un bouquin qu'on vient de m'offrir : "Comme on dit en Afrique."

Je me rends compte (c'est pas bien d'ailleurs ;), que je n'ai pas cité le titre dans le texte. Il ne figure que dans la balise alt de l'image de la couverture du bouquin, qui lie vers une page d'Amazon où le titre, d'ailleurs, n'est pas le bon (?!). J'ai vérifié dans le cache de Google que je n'avais pas mis puis supprimé le texte.

Le requête "comme on dit en afrique" bebedjia sort (ce soir) le billet et la page d'accueil du blogue.

Donc Google a indexé le contenu de la balise alt et sort la bonne page en réponse à une requête qui n'est pas une requête "Images".

Je n'arrive cependant pas à expliquer le cas que tu cites: j'ai mis en place un autre test pour voir ce que ça donne :-)

Thomas à 23:49, le 09.08.03 - Son site - Haut


Un moyen de reperer si une page est du spam pour un moteur de recherche, c'est de regarder si son contenu correspond bien a ce qui est affiche. Du texte en blanc sur blanc, ou l'equivalent en CSS avec des display:none ou autres, c'est plutot louche, tu n'as pas peur que ta page entiere disparaisse des moteurs ?

Stephane à 08:41, le 10.08.03 - Son site - Haut


NI = nous
en espéranto

Francine à 12:02, le 10.08.03 - Son site - Haut


Je m'intéresse à la question de la CSS alternative pour utilisateurs bloquant les images.

J'ai récemment commencé (voir cette page) à implémenter l'astuce de Fahrner pour mes titres de page <h1> remplacés par un background-image en feuille de style dans l'en-tête (1).

Solution adaptée de l'interprétation donnée par Seamus Leahy.

Faut-il, en plus de la CSS alternative (je cherche quelle forme lui donner), prévoir en switcher un style tout nu ?

(1) pour cause de mauvaise interprétation (?) par les navigateurs si le code CSS de l'astuce est reporté en feuille externe...

Jerotito à 02:18, le 11.08.03 - Haut


Thomas: La différence de comportement est effectivement étonnante. Toujours est-il que dans le doute, je préfère m'abstenir.

Stéphane: Je ne savais pas que les moteurs de recherche pistaient aussi les astuces CSS pour detecter les pollueurs de web. Je trouve ça plutôt courageux puisqu'il y a une quantité incroyable de moyen pour cacher du texte grâce à CSS et qu'il est vraiment très difficile à mon avis de faire le tour de la question.

Jerotito: Le gros problème des images porteuse de texte est qu'elle ne sont pas redimensionable : on ne peut les agrandir en changeant la taille de la police. Il est donc bon de prévoir un style où le texte original est affiché à la place de l'image. Un style tout nu me semble inutile : on peut garder la mise en page et être accessible.

be-rewt à 10:01, le 11.08.03 - Son site - Haut


D'accord. Je vais devoir me creuser un peu les méninges pour piger pourquoi l'astuce de Fahrner installée dans la CSS externe ne marchait pas (peut-être un conflit avec d'autres contenus de cette feuille), m'obligeant à l'écrire dans une CSS interne à l'en-tête HTML.

Ce qui, pour le moment rend impossible le recours à une CSS alternative ou l'ID de l'astuce resterait vide. Je trouverai, j'ai confiance.

Tiens, je n'ai pas essayé dans une CSS externe réservée à la seule astuce de Fahrner, un peu à l'image, toutes proportions gardées, de ce que be-rewt fait en répartissant ses styles dans diverses CSS externes, en fonction des besoins, pas tous liés à la seule distinction screen / print / autres...

Jerotito à 20:25, le 11.08.03 - Haut


Mettre la taille de la police à 0px

Seb à 17:15, le 07.06.07 - Haut







Ce site est hébergé par ovh. Il a été codé à la mimine par son auteur (aidé par la doc php). Les jours de beau temps, il a le bon goût d'avoir un code XHTML1.0 valide et il en va de même pour sa feuille de style, et pour son pauvre petit et ignoble fil RSS. Mon voisinage est disponible sur GeoURL.