Wat we controleren, en hoe we repareren
Deze pagina gaat over de motor onder de tool: welke controles er draaien, wat de reparatie aan je bestand verandert, en waar hij bewust stopt. Voor wie wil weten waar een getal in het verslag vandaan komt.
Twee dingen die niet hetzelfde zijn
De tool doet een toets en een reparatie, en die staan los van elkaar. De toets kijkt wat er in het bestand staat en oordeelt daarover. De reparatie verandert het bestand. Je verslag draait allebei: één keer over het document zoals het binnenkwam, en één keer over het document zoals het eruit gaat. Het verschil tussen die twee is wat er is opgelost.
De toets
De controles komen uit de kennisbank van Proper Access, waar per scenario staat wat er mis is, waarom een lezer het merkt en hoe je het oplost. In de lijst met alle problemen staat bij elke bevinding het WCAG-succescriterium waar hij over gaat.
Deze tool kent 34 scenario's, en alle 34 draaien op elk document. Ze zijn verdeeld over 26 controles die elk hun eigen deel van het bestand nakijken.
Waar de toets naar kijkt
De toets leest de tagstructuur, de metadata en de tekst zoals hulpsoftware ze tegenkomt. Hij opent je document niet als beeld en beoordeelt niet wat er staat. In grote lijnen gaat het om:
- De tagstructuur zelf. Is er een structuurboom, staat de inhoud erin, en is wat er buiten valt als artefact gemarkeerd.
- Koppen. Koptags zonder inhoud, en tekst die eruitziet als een kop maar geen koptag heeft. Dat tweede werkt op de lettergrootte tegenover de broodtekst.
-
Afbeeldingen. Een
/Figurezonder/Altof/ActualText, en een alternatief dat een programma lijkt te hebben ingevuld, zoals "image 4" of "afbeelding 12". - Tabellen. Tabellen zonder kopcellen, en cellen waarvan de kop niet eenduidig is.
-
Lijsten. Een
/Lzonder items, items zonder inhoudstag, en alinea's die met een opsommingsteken beginnen zonder in een lijst te staan. - Leesvolgorde. De volgorde in de tags tegenover de volgorde op de pagina.
-
Titel, taal en de instellingen van het document. Een titel in de metadata, een taal op de catalogus, en
DisplayDocTitle, dat bepaalt of een lezer de titel of de bestandsnaam in de titelbalk ziet. - Invulbare velden. Een document met velden waarin kopiëren uitstaat: wie gegevens uit het document in de velden moet overnemen, kan dan alleen overtypen.
-
Links en invulvelden. Een link-annotatie die niet in een
/Link-tag zit, een link zonder bruikbare naam, en de tabvolgorde van een pagina met annotaties.
Het contrast van de tekst
Naast de toets meet de controle het contrast van tekst. Daarvoor tekent hij de pagina's en meet hij per tekstkleur het contrast tegen wat eronder staat. De eis komt uit WCAG 1.4.3: 4,5 op 1, en 3 op 1 als alle tekst in die kleur 18 punt of groter is. Een kleur die de eis niet haalt tegen een effen achtergrond, is een fout. Te controleren is hij in twee gevallen: als de tekst op een foto of een verloop staat, want dan is de achtergrond geen vaste kleur, en als de tekst 14 tot 18 punt is en 3 op 1 wel haalt, want als hij vet is, voldoet hij. Of tekst vet is, zien we niet. Tekst in een afbeelding meet hij niet, en hij leest de eerste 12 pagina's.
Drie niveaus
Elke bevinding heeft er één, en het niveau zegt wat de tool weet en niet hoe erg het is.
- Fout. De tool heeft vastgesteld dat het niet klopt.
- Controleren. Er is een aanwijzing, en of het klopt is een oordeel. Een alternatief dat "image 4" heet, is meestal geen alternatief; soms staat er echt een afbeelding met dat bijschrift.
- Aanbeveling. Het kan beter, en de tool rekent het niet als fout. Ontbrekende bladwijzers zijn daar het voorbeeld van: geef elk document met koppen of met meer dan één pagina bladwijzers, maar de tool meldt het alleen bij een document van meer dan vier pagina's met minder dan drie koppen.
veraPDF kijkt ook of het bestand volgens PDF/UA is opgebouwd. Een punt dat een lezer blokkeert, telt mee als fout. Een punt dat een lezer kan hinderen, moet een mens nakijken. Een punt dat een lezer niet merkt, is een aanbeveling.
De reparatie
De reparatie draait in vier stappen, in deze volgorde, en daarna volgt een controle op het beeld.
- Tags erin, als ze er niet zijn. Dat doet OpenDataLoader, een open programma dat de tekenopdrachten van elke pagina afloopt en er koppen, alinea's, lijsten en tabellen van maakt. Het draait op onze eigen server; je document gaat er niet uit. Heeft het document al een tagstructuur, dan blijft die staan zoals hij is.
- Tags eruit die niets aanwijzen. Een tagger maakt soms een tabel van de rasterlijnen van een grafiek. Zo'n rooster van lege cellen kondigt een tabel aan die er niet is, en dat is slechter dan geen tabel. Hetzelfde gebeurt met een koptag om alleen een spatie of om niets: die gaat uit de structuur, en wat er op het blad stond wordt een artefact. Een kop met alleen een streepje of een andere tekening eronder blijft staan. Dit zijn de enige delen van de reparatie die iets weghalen.
-
Kopcellen aanwijzen. Een tagger maakt van elke cel een
/TD; welke rij de kop is, weet hij niet. Deze stap leest de vormgeving uit de tekenopdrachten en zet alleen om bij duidelijk bewijs: een bovenste rij die vet is terwijl de rijen eronder dat niet zijn, of een linkercel die vet is terwijl de rest van de rij dat niet is. Vindt de code het lettertype van een beslissende cel niet, dan blijft de tabel zoals hij is. Een kop op de verkeerde rij is voor een schermlezer erger dan geen kop, want dan wordt elke cel bij een verkeerde kolom genoemd en is er niets aan te zien. -
De metadata goedzetten. De titel, de taal,
DisplayDocTitleenMarkInfo, en de PDF/UA-identifier als veraPDF daarna niets meer vindt. Ze zitten allemaal in het documentwoordenboek of in de metadata, en niet in de pagina's, dus aan wat je ziet verandert niets.
De beeldcontrole
Na elke reparatie tekenen we elke pagina van het origineel en van het resultaat, en vergelijken we ze beeldpunt voor beeldpunt. Wijkt het beeld af, dan staat dat in je verslag. De reparatie hoort de tags te veranderen en niet de bladspiegel, dus een afwijking is een reden om te kijken. Wijzig je zelf een tekstkleur in de editor, dan hóórt het beeld te veranderen, en dan meldt de tool het niet als afwijking.
Wat de reparatie niet verzint
Een titel die nergens in het bestand staat, kan de tool niet weten. Wat er uit de tekst is afgeleid staat als zodanig in je verslag, met de reden erbij, en een afgeleide titel houdt de oplevering tegen tot een mens ernaar heeft gekeken. De taal wordt uit stopwoorden afgeleid en alleen als er genoeg signaal is: onder die grens blijft het veld leeg. Een verkeerd ingestelde taal is erger dan een ontbrekende, want dan leest een schermlezer Nederlandse tekst met een Engelse stem voor.
Een tekstalternatief schrijft de tool nooit. Wat er op een afbeelding staat, weet degene die het document maakte.
Waar de tool ophoudt
Het meeste van wat een document toegankelijk maakt, is een oordeel over de inhoud. Daar komt de tool niet aan, en dat is geen tekortkoming maar de grens van wat een programma kan weten.
- Of een alternatief het goede alternatief is. De tool ziet dat er tekst staat, niet of die tekst de afbeelding dekt.
- Of een kop op het goede niveau staat. Dat de niveaus oplopen zegt niets over de opbouw van je verhaal.
- Of de leesvolgorde klopt. De tool ziet dat de tagvolgorde afwijkt van de volgorde op de pagina. Welke van de twee de goede is, weet de schrijver.
- Of de titel het document dekt. Een titel die volgens de regels klopt, kan de verkeerde titel zijn.
- Kleur in een grafiek of kaart, en tekst in een afbeelding. Of een grafiek of kaart alleen op kleur werkt en of lijnen en vlakken genoeg contrast hebben, meet de tool niet. Het contrast van tekst in een afbeelding ook niet. Dat kijkt een mens na.
Wat dit niet is
Wij toetsen aan wat een bezoeker merkt, en de nummers in je verslag verwijzen naar WCAG-succescriteria. Dit is geen PDF/UA-verklaring en geen conformiteitsverklaring. Wat PDF/UA en het Matterhorn-protocol voor je document betekenen, staat in wat is PDF/UA.
Het is ook geen vervanging van een audit. Een audit is werk van een auditor die je document leest, met een schermlezer doorloopt en er een oordeel over geeft. Deze tool haalt daar het deel uit dat een machine kan doen, zodat er tijd overblijft voor de rest.