Supernova screenreader ongeschikt om te surfen

Gijs Veyfeyken op 08/12/2014

Sommige toegankelijke websites zijn onbruikbaar met de Supernova screenreader, zelfs wanneer de webbouwer toegankelijkheidsregels volgt. Gebruik je een screenreader en surf je veel? Dan ben je beter af met een programma als NVDA op Windows of VoiceOver op Mac. Beide zijn gratis! Een uitstekende betalende screenreader is Jaws. Ik leg uit waarom.

Paginawijzigingen

Websites zijn interactiever als vroeger. Je leest niet alleen, je 'doet' ook steeds meer: inloggen en een profiel aanmaken, reageren op een artikel, iets 'liken' of delen. Deze acties gebeuren allemaal binnen een webpagina, vaak zonder dat de pagina vernieuwt. Dat noemt 'asynchroon' inladen, een moeilijke manier om te zeggen dat een onderdeel van de pagina wijzigt in plaats van heel de pagina opnieuw te laden met dat stukje nieuwe inhoud. Wie die wijzigingen niet ziet, komt in de problemen. Enkele voorbeelden op de nieuwe site van De Lijn.

De Lijn

Verstoorde dienstverlening

Wanneer de bussen niet rijden, zoals bij een staking, toont De Lijn een dialoogvenster. De screenreader focus springt er automatisch naartoe, behalve met Supernova.

dialoogvenster verstoorde dienstverlening

Dialoogvensters zijn ingeburgerd op het web. Dialog, lightbox, overlay of pop-up zijn enkele synoniemen. Het principe is altijd hetzelfde. Je klikt op een link of knop en er opent een dialoogvenster bovenop de website. Inlogformulieren openen ook vaak in een dialoogvenster. En meldingen zoals bij online bankieren. Om te voorkomen dat het systeem je uitlogt kan je via een dialoogvenster de sessie verlengen.

Wanneer zo'n venster opent zonder de pagina te herladen, weet je als screenreadergebruiker niet dat er iets is gebeurd. Je screenreader meldt dit niet automatisch. Zelfs als je uit ervaring weet dat er een dialoogvenster opent, weet je nog niet waar het staat in de webpagina. Je screenreader kan de inhoud van het venster wel lezen, maar die inhoud kan om het even waar staan. Meestal is dat helemaal onderaan. Gelukkig is er een oplossing. De webbouwer verplaatst de 'focus' van je screenreader naar het dialoogvenster. Wanneer je bijvoorbeeld klikt op link 'inloggen', opent er een dialoogvenster en je screenreader start automatisch aan het begin van het formulier. Dit is mogelijk door een stukje JavaScript code, een functie die 'focus' heet. Het verplaatsen van de focus is cruciaal om paginawijzigingen toegankelijk te maken voor screenreaders.

Supernova ondersteunt geen focus management. NVDA, Jaws, VoiceOver en andere screenreaders doen dat wel.

Mogelijke routes

Wanneer je in de routeplanner een plaats van vertrek en aankomst ingeeft, krijg je een lijst met mogelijke routes terug, gevolgd door de details van de actieve route. Klik op een andere route in de lijst en de details van de actieve route wijzigen zonder de pagina te vernieuwen. De lijst met mogelijke routes zijn geen links naar nieuwe pagina's. Ze wijzigen de huidige route op de pagina. Met een goede screenreader verspringt de focus naar de kop "Route met vertrek om..." boven de details van de route. Met Supernova gebeurt er niets. De focus blijft op de link in de lijst staan.

routeplanner met lijst van mogelijke routes

Haltes

Een derde voorbeeld zijn tabs. De detailpagina van een halte heeft 2 tabs: 'doorkomsten dit moment' en 'alle doorkomende lijnen'. Het klikken van een tab opent geen nieuwe pagina. Enkel de inhoud onder de 2 tabs wijzigt. Wanneer je de tab 'alle doorkomende lijnen' klikt, verschijnen de doorkomende lijnen op de plaats waar eerst de doorkomsttijden stonden. De focus springt naar de kop die er boven staat. Behalve als je met Supernova surft.

Halte Gent Sint-Jacobs

Conclusie

AnySurfer vraagt webbouwers om paginawijzigingen begrijpelijk te maken voor screenreadergebruikers. Ze verplaatsen daarvoor de focus naar de plek van de wijziging. Supernova ondersteunt dit niet. Je kan de website van De Lijn en andere moderne websites met Supernova bezoeken maar bij een paginawijziging weet je niet waar de verandering is gebeurd. Screenreaders als JAWS, NVDA en VoiceOver surfen een stuk gemakkelijker. Op een toegankelijke website brengen ze je automatisch naar de vernieuwde inhoud.

Wil je meer weten over screenreaders? Onze collega's van de Blind D Mobiel wijzen je de weg. Ze bieden professioneel advies zonder commerciële belangen om voor jou de beste oplossing te vinden.

4 reacties

Welk lettertype is het best leesbaar?

Bart Simons op 25/11/2014

Er bestaan lettertypes die beweren dat ze beter leesbaar zijn voor slechtzienden en andere zijn speciaal ontworpen voor mensen met dyslexie.

paragraaf in Dyslexie font

Goed bedoeld en sommige mensen zullen er zeker blij mee zijn, maar moet je nu knoppen op je site plaatsen die bezoekers toelaten van lettertype te veranderen?

Er zijn artikels die een specifiek lettertype aanraden en andere die zeggen dat ze wetenschappelijk gezien geen verschil maken. Je wil natuurlijk een site maken die er voor zoveel mogelijk mensen aantrekkelijk uitziet. De tevredenheid van je bezoekers is belangrijker dan de vraag of het wetenschappelijk gezien werkt of niet. Hier kan ook een soort placebo-effect werken: dit lettertype is speciaal voor mij dus ik lees er beter mee.

De ene vorm van slechtziendheid is de andere niet en niet alle mensen met dyslexie lezen op dezelfde manier. Ons standpunt is dan ook dat je niet voor iedereen goed kunt doen. Als alle websites een style switcher implementeren op een verschillende manier, helpt dat de bezoeker ook niet om er vlot mee te werken.

Onze adviezen voor grafisch ontwerpers:

serif en sans-serif lettertype

  • Geef de doorlopende tekst een goed leesbaar en schreefloos lettertype (geen handschrift).
  • Maak de letters niet te klein: standaard browsertekst is 16 pixels; ga daar niet te ver onder.
  • Zorg voor voldoende witruimte, regelafstand en ruimte tussen letters.
  • Maak de tekstregels niet te lang. Beperk ze bijvoorbeeld tot een zestigtal karakters.
  • Zorg voor voldoende contrast tussen de tekst en de achtergrond (technische norm is 4,5:1). Kies voor een rustige achtergrond: geen video, bewegend beeld of een groot kleurverloop.
  • Bouw de website volgens de standaarden en test met de standaardtools van besturingssystemen en browsers zoals de hoog contrast weergave van Windows.

Bezoekers kunnen letters vergroten/verkleinen in elk besturingssysteem en elke browser. De website moet dus zelf geen knoppen voorzien om de letters te vergroten. Overschrijven van lettertypes is voor bezoekers veel minder evident. Je website kan dus een style switcher aanbieden maar het blijft moeilijk om daarmee voor iedereen goed te doen. Niet alle slechtzienden zullen deze versie voor slechtzienden even mooi vinden en je kan ook overdrijven met keuzemogelijkheden.

1 reactie

CSS Clip versus Clip-path

Bart De Clercq op 28/10/2014

Clip en Clip-path zijn twee CSS eigenschappen die je op elementen kan toepassen. Er zijn verschillende doeleinden om Clip of Clip-path toe te passen. Hoofdzakelijk wil je een deel van een element tonen.

Aangezien Clip ontmoedigd wordt door het W3C (deprecated) bekijken we het voorgestelde alternatief Clip-path. In deze blogpost verdiepen we ons in de verschillen en wat ze met toegankelijkheid te maken hebben.

Clip

De CSS Clip eigenschap laat toe een gedeelte van een element te tonen. Je kan een rechthoek definiëren door vier coördinaten te gebruiken. Meestal wordt deze techniek op afbeeldingen toegepast.

Er zijn voor- en nadelen aan deze eigenschap. Zo moet het element absoluut gepositioneerd staan wat meestal een heel groot nadeel is.

Het volledige logo

We starten met afbeelding zonder Clip of Clip-path, namelijk ons logo.

Het AnySurfer logo met baseline
<img src="../logo_baseline_nl_307x70.png" alt="Het AnySurfer logo met baseline" />

Een deel van het logo

Stel dat we de tekst willen afknippen van onze afbeelding, dan kunnen we Clip gebruiken om de CSS Sprite techniek toe te passen. We gebruiken hetzelfde brondbestand maar tonen alleen het logo.

Het AnySurfer logo zonder baseline
<img src="../logo_baseline_nl_307x70.png" alt="Het AnySurfer logo zonder baseline" />

We selecteren een gedeelte van de afbeelding:

img{
  position: absolute; 
  clip: rect(0px 75px 70px 0px);		
}

Clip-path

Bij Clip ben je beperkt tot een rechthoek. Met Clip-path kan je gebruik maken van een SVG mask of enkele beschikbare CSS basisvormen (rectangle, circle, ellipse of polygon).

Een deel van het logo met SVG circle

Naast de CSS shapes kan je ook verwijzen naar een SVG waarin een SVG shape gedefinieerd is. In volgend voorbeeld linken we een SVG circle aan ons logo.

Deel van het logo met clip-path SVG circle

Als je hierboven niets of ons volledig logo ziet, dan ondersteund je browser SVG circle mask nog niet. Hieronder een screenshot wat je moet zien:

Screenshot SVG circle mask

<img 
  class="orange" 
  src="../logo_baseline_nl_307x70.png" alt="Deel van het logo met clip-path SVG circle" 
/>

De SVG bestaat uit een cirkel met coördinaten x en y plus de grootte van de radius.

<svg width="0px" height="0px">
  <defs>
    <clipPath id="clipping">
      <circle cx="37" cy="34" r="23" />
    </clipPath>
  </defs>
</svg>

In de CSS code wordt verwezen naar een SVG element met id="clipping".

.orange { 
  clip-path: url(#clipping);
}

Hieronder een schets welke SVG we maken. Het middelpunt zit op coördinaat 37px, 34px met een radius van 23px.

Schets SVG op het logo

En wat met toegankelijkheid?

Soms wil je tekst alleen beschikbaar maken voor screenreader gebruikers. Dit kan je doen door de Clip methode te gebruiken, meer lees je hierover op onze pagina Verborgen tekst, enkel voor screenreaders.

Omdat de Clip eigenschap vervangen wordt door de Clip-path eigenschap, is de code niet hetzelfde. Bij Clip gebruik je onderstaande code:

clip: rect(0 0 0 0);

Bij Clip-path een licht andere syntax:

clip-path: rectangle(0,0,0,0);

Besluit

Clip-path is momenteel onvoldoende ondersteund om het als waardig alternatief te gebruiken voor Clip. Voorlopig blijven we het gebruik van Clip aanraden.

Het kan geen kwaad om beide eigenschappen te gebruiken. Huidige browsers ondersteunen Clip en in de toekomst zullen ze Clip-path ondersteunen.

Reageer als eerste

CSS generated content

Bart Simons op 26/09/2014

CSS voor vormgeving, HTML voor inhoud, was altijd de mantra van goed webdesign en ook goed voor toegankelijkheid. Toch voegen we ook soms via CSS betekenisvolle inhoud toe aan een webpagina. Die kan je niet altijd toegankelijk maken dus de beste vuistregel blijft om CSS enkel voor layout te gebruiken en alle inhoud in de markup te plaatsen of desnoods via Javascript aan het DOM toe te voegen.

Afbeeldingen via CSS

De AnySurfer checklist bevat een ijkpunt over achtergrondafbeeldingen die informatie bevatten. Het eenvoudigst is om geen informatie in achtergrondafbeeldingen te stoppen, maar vaak gebeurt dit toch (sprites e.d.):

<a class="twitter" href="https://twitter.com/anysurfer"></a>
a.twitter:after { 
    content:url('icon_twitter.png'); 
}

De informatie in de achtergrondafbeelding gaat echter verloren voor screenreadergebruikers en er is geen manier om een alt-tekst toe te voegen aan achtergrondafbeeldingen. Wat overblijft is een lege, betekenisloze link. Daarom moet u vervangende tekst toevoegen.

<a class="twitter" href="https://twitter.com/anysurfer">
<span class="visuallyhidden">Twitter</span>
</a>
a.twitter:after { 
    content:url('icon_twitter.png'); 
}

.visuallyhidden { 
    border: 0; 
    clip: rect(0 0 0 0); 
    height: 1px; 
    margin: -1px; 
    overflow: hidden; 
    padding: 0; 
    position: absolute; 
    width: 1px;
}

Merk op dat we de afbeelding hebben ingevoegd met een :after pseudo-element. Als we zouden kiezen voor background url dan gaat de achtergrondafbeelding verloren als mensen een specifieke achtergrond instellen in hun browser of de hoog contrast versie van het besturingssysteem gebruiken. De afbeelding valt dan weg en de vervangende tekst die we hebben toegevoegd voor screenreaders komt daarbij niet tevoorschijn. De afbeeldingen die zijn ingevoegd met :before en :after blijven beschikbaar als de pagina met hoog contrast wordt bekeken.

Tekst via CSS

Met de CSS :before en :after pseudo-elementen kan je niet enkel afbeeldingen maar ook tekst toevoegen aan een webpagina. Hier geldt hetzelfde als voor de achtergrondafbeeldingen: prima voor decoratieve elementen zoals scheidingsstreepjes in een horizontaal menu maar gebruik het niet om tekst of andere informatie toe te voegen zoals in dit voorbeeld (tekst ingevoegd via :after).

De via CSS toegevoegde inhoud wordt geen deel van het DOM en is daarom niet beschikbaar voor screenreaders. Uit onze tests blijkt dat bijna alle browsers het wel doorgeven maar Internet Explorer doet het niet. Als we zouden vragen om net als bij achtergrondafbeeldingen verborgen tekst toe te voegen, dan zou dit het probleem oplossen voor Internet Explorer, maar het zou in alle andere browsers betekenen dat de screenreader dubbele informatie leest.

Daarom is het beter de inhoud in de HTML-pagina te zetten en niet in de CSS. Een andere mogelijkheid is de informatie via jQuery toe te voegen. In dit voorbeeld (tekst toegevoegd via jQuery) voegen we een PDF-melding toe aan alle links naar PDF-bestanden zonder iets te wijzigen aan de markup.

<script>
	$('a[href$=".pdf"]').each(function(){
	    $(this).append(' (PDF)');
	});
</script>

Icon fonts

Icon fonts zijn een ingewikkelder geval: een karakter wordt ingevoegd (meestal via de CSS :before en :after pseudo-elementen zoals hierboven) maar de visuele betekenis wijkt vaak af van wat een screenreader normaal zou uitspreken voor dat karakter. U moet dus:

  • vervangende tekst voorzien zoals voor een achtergrondafbeelding,
  • er tegelijk voor zorgen dat het karakter zelf niet wordt voorgelezen. Dit kan op twee manieren:
    • Kies unicode karakters uit de private use area. Screenreaders hebben geen uitspraakregels voor deze karakters.
    • Als u leesbare karakters gebruikt, verberg ze dan met aria-hidden="true".

Toegankelijkheid van icon fonts bespreken we uitgebreider in een apart artikel.

Conclusie

Karl Groves vat het met deze titel helemaal samen: CSS generated content is not content: als iets informatie is, voeg het dan niet in via CSS. Als iets decoratief is, voeg het dan in via CSS.

Reageer als eerste

Toegankelijke iBooks maken

Bart Simons op 04/09/2014

Niet alleen websites maar ook digitale documenten moeten toegankelijk zijn voor iedereen. De principes zijn voor alle bestandsformaten gelijk, maar de technieken om het doel te bereiken zijn in elk programma verschillend. Onze collega's van de Blind-d-mobiel schreven deze technieken uit voor het programma iBooks Author, de software waarmee je iBooks maakt.

Wat zijn iBooks?

iBooks zijn Apple's interpretatie van de ePub-standaard voor digitale boeken. De eerste versie van iBooks dateert uit april 2010 en was toen volledig conform die standaard. Bij de lancering van iBooks 2 in januari 2012 voegde Apple echter een aantal elementen toe aan het iBooksformaat die niet voorzien zijn in de ePub-standaard. Daardoor kan een iBook nu veel meer interactieve elementen bevatten, maar voldoet het niet langer aan de ePub-standaard.

Een iBook kun je lezen met de app "iBooks" die beschikbaar is voor:

  • iOS (iPhone, iPad, iPod touch) en deze app werkt prima met de spraak- en vergrotingsfuncties van deze toestellen
  • en voor Mac OS X (voor Mac-computers) maar helaas is de app hier niet zo toegankelijk voor VoiceOver-gebruikers.

Hoe maak je een toegankelijk iBook?

Pictogram van de app iBooks Author

iBooks maak je met iBooks Author, een gratis app, maar enkel beschikbaar voor Mac computers. Apple biedt met zijn iBooks Store een onlinewinkel aan waarin je iBooks te koop kunt aanbieden. Maar je kunt je iBooks ook gewoon aanbieden op je eigen website.

Bij het maken van het boek moet je met een aantal zaken rekening houden zodat het eindresultaat een toegankelijk iBook wordt. Deze technieken zijn beschreven in een ADOD-document. ADOD staat voor Accessible Digital Office Documents. Voor websites is er de AnySurfer checklist, voor allerlei andere bestandsformaten zijn er de ADOD-handleidingen. In de ADOD-reeks zijn er handleidingen met toegankelijkheidstechnieken voor allerlei programma's. Aan die reeks zijn nu de technieken voor het produceren van toegankelijke iBooks toegevoegd. Het document is geschreven voor wie iBooks Author versie 2 gebruikt. Het document is ook in het Engels beschikbaar.

Dit werk hebben we gepresenteerd in Parijs tijdens de conferentie eBooks for everyone! An opportunity for more inclusive libraries. Op de conferentie-website zijn de paper en slides beschikbaar.

Reageer als eerste