Les exemples ci-dessous illustrent ce à quoi il faut faire attention pour utiliser des polices d'icônes de manière accessible.
Les icônes ci-dessous ont été insérées par CSS. Des lettres de l'alphabet sont introduites dans le contenu par CSS (:before). La police d'icônes générée par Icomoon couple une icône à chaque lettre. Un lecteur d'écran ne voit que la lettre insérée (Chrome, Safari, Firefox). Cela n'a pas le même sens que l'icône affichée.
<a href="#" data-icon="p" class="icon"></a>
<a href="#" data-icon="q" class="icon"></a>
<a href="#" data-icon="r" class="icon"></a>
<a href="#" data-icon="s" class="icon"></a>
.icon:before {
font-family: 'icomoon';
content: attr(data-icon);
}
Exemple 1 lu par NVDA dans Firefox (MP3) : 'lien p lien q lien r lien s'.
Pour que les icônes puissent avoir du sens lorsqu'elles sont lues avec un lecteur d'écran, on peut ajouter un texte de remplacement. (lecture, pause, arrêt, plein écran). Les textes sont cachés parce qu'il ne sont pas nécessaires visuellement. Le résultat est meilleur mais chaque textes est précédé d'une lettre inutile (p, q, r, s ) qui est lue.
lecture pause arrêt plein écran<a href="#" data-icon="p" class="icon"><span class="visuallyhidden">play</span></a>
<a href="#" data-icon="s" class="icon"><span class="visuallyhidden">pause</span></a>
<a href="#" data-icon="q" class="icon"><span class="visuallyhidden">arrêt</span></a>
<a href="#" data-icon="f" class="icon"><span class="visuallyhidden">plein écran</span></a>
.icon:before {
font-family: 'icomoon';
content: attr(data-icon);
}
.visuallyhidden {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
Exemple 2 lu par NVDA dans Firefox (MP3) : 'lien plecture lien qpause lien rarrêt lien splein écran'
Pour faire en sorte que les lettres correspondant aux icônes ne soient pas lues par un lecteur d'écran, on peut utiliser aria hidden="true"
. De cette manière seul le contenu caché visuellement est lu. Aria-hidden="true" peut également être injecté avec jQuery comme expliqué par Eric Eggert dans l'article de blog en anglais A better way to use icon fonts.
<a href="#">
<span data-icon="p" class="icon" aria-hidden="true"> </span>
<span class="visuallyhidden">lecture</span>
</a>
<a href="#">
<span data-icon="s" class="icon" aria-hidden="true">
</span> <span class="visuallyhidden">pause</span>
</a>
<a href="#">
<span data-icon="q" class="icon" aria-hidden="true">
</span> <span class="visuallyhidden">arrêt</span>
</a>
<a href="#">
<span data-icon="f" class="icon" aria-hidden="true"> </span>
<span class="visuallyhidden">plein écran</span>
</a>
Le CSS est le même que dans l'exemple précédent. Seul le code HTML a changé.
Exemple 3 lu par NVDA dans Firefox (MP3) : 'lien lecture lien pause lien arrêt lien plein écran'