Hoezo standaard?

WIE WEL EENS in een of ander buitenland geprobeerd heeft een van huis meegenomen apparaatje op het lichtnet aan te sluiten kent de frustratie: pootjes te veel, inkepinkjes te weinig, gaatjes te rond of te plat, in elk geval, de stekker wil niet in het stopcontact. Wat zou het mooi zijn als dat soort dingen overal hetzelfde was! En dat zou toch ook moeten kunnen? Daar wordt iedereen toch alleen maar beter van? Aan het feit dat desondanks zelfs stekkers nog steeds niet overal hetzelfde zijn kun je zien hoe diep de neiging om dingen net even anders te doen dan anderen, anders te blijven doen, en dat nog beter te vinden ook, in ons is ingeworteld.

Of het nu om geld gaat, om god, om gedragingen of gebruiksartikelen, altijd is er wel iemand die het beter denkt te weten.

Zelfs in de hoogtijdagen van de ASCII-tekentabel, die duurden van het midden van de jaren zestig tot 1984, toen de Apple Macintosh met zijn grafische scherm verscheen, was ASCII dan ook niet een echt universele standaard. Niet alleen zullen de Russen toen eigen standaarden gehanteerd hebben, al was het maar om politieke redenen, ook in Amerika zelf, de bakermat van ASCII, conformeerde zich niet iedereen. IBM, bijvoorbeeld, ontwikkelde zelfs na de invoering van de ASCII-tabel zoals wij hem kennen nog een eigen, afwijkende standaard, EBCDIC. Die onhandige naam, die moet worden uitgesproken als 'ep-sie-dik' of 'epsdik', staat voor Extended Binary Coded Decimal Interchange Code. De noodzaak om aansluiting te houden met oudere IBM-systemen uit het pre-ASCII-tijdperk zal wel iets met het ontstaan van EBCDIC te maken hebben gehad, maar boze tongen beweren dat IBM zijn afwijkende tekentabel vooral ontwikkelde om het klanten onmogelijk te maken naar een ander merk computer over te stappen. Feit is in elk geval dat EBCDIC, dat nog altijd een kwijnend bestaan leidt, geen verbetering was. Het miste ongeveer alles wat ASCII juist aantrekkelijk maakte. Om te beginnen was het geen eenduidige standaard. Er bestaan op zijn minst zes verschillende versies van EBCDIC, elk met een eigen, van alle andere iets afwijkende verzameling tekens en opdrachten, en een unieke ordening daarvan. Bovendien ontbreken in elke EBCDIC variant wel een of meer in de praktijk bijna onmisbare leestekens. En om het feest compleet te maken, stonden in de EBCDIC-tabellen niet alle letters van het alfabet netjes in oplopende volgorde achter elkaar, maar in van elkaar gescheiden groepjes. Dat maakte het schrijven van sorteerroutines voor EBCDIC-machines tot een hemeltergend karwei. Geen wonder dus, dat EBCDIC een typische IBM-curiositeit bleef. Hooguit is het verbazingwekkend dat het bedrijf bij sommige van zijn grotere systemen zo lang aan het kreupele EBCDIC is blijven vasthouden.

Ondertussen werd ook aan andere kanten aan de oorspronkelijke ASCII-standaard geknabbeld. Het werd al snel duidelijk dat de markt voor computers veel groter was dan men ooit had voorzien, en ook dat tekst een grotere rol zou spelen dan aanvankelijk gedacht was. Een grote markt waarop tekst belangrijk is, dat betekent dat computers geschikt gemaakt moesten worden voor gebruik in alle talen en alfabetten. Maar ook dat rissen wetenschappelijke en technische symbolen hun plaatsje zouden komen opeisen. ISO, de Internationale Standaarden Organisatie, was dan ook druk aan de gang gegaan om standaard-tekentabellen vast te stellen: tabellen voor bepaalde talen of groepjes talen, maar ook voor het symbolenjargon dat in bepaalde vakgebieden gebruikt werd. Eén daarvan, de ISO-Latin1 tabel, werd door de American National Standards Institute (ANSI), de organisatie die de Verenigde Staten vertegenwoordigt binnen de ISO, uitgebreid tot wat in de wandeling de ANSI-tabel heet: een tabel van 256 tekens, waarvan de eerste helft gelijk was aan de oude ASCII-tabel, en waarvan de tweede alle tekens bevatte die nodig zijn om de moderne westerse talen te kunnen behappen.

Die tabel, die lijkt op de oude Extended-ASCII-tabel, maar net anders in elkaar zit en meer letters bevat, wordt door Windows als basistabel gehanteerd. Net als in ASCII zijn in de ANSI-tabel de eerste 32 posities (0-31) voorbehouden aan opdrachten als tabuleren, regel wisselen en de sledeterugloop. De overige posities bevatten instructies om een bepaald plaatje op scherm of papier te tekenen, een letter, cijfer of symbool. Maar dan kun je, door die instructies te verwisselen, nog veel meer plaatjes en symbolen laten tekenen. En zo gaat het ook. In plaats van de basis ANSI-tabel kun je ook andere ISO-tabellen gebruiken, zodat een bepaald tekennummer dat vanaf het toetsenbord wordt doorgegeven op het scherm telkens een ander plaatje oplevert. En zo gaat het ook. Er zijn tabellen voor Griekse letters, maar ook voor wiskundige of logische symbolen, voor Cyrillisch schrift, en ga zo maar door. En dan bestaan er ook nog fantasietabellen als WingDings, met pictogrammen in plaats van letters of symbolen. Wat het zichtbare resultaat van 'nummer zoveel' is, hangt volledig af van welke tekentabel de computer bij het tekenen van 'nummer zoveel' raadpleegt. Die tabellen kennen we als 'lettertypen'.

Dat is een wat ongelukkige term, omdat het in de gevallen hierboven strikt genomen niet om verschillende lettertypen gaat, maar om verschillende alfabetten. Onder lettertypen verstaan we traditioneel verschillende uitvoeringen van hetzelfde alfabet. Een ã, nummer 227, ziet er in Bodoni anders uit dan in Helvetica, maar het blijft een ã. Dat alfabetten en lettertypen op de computer onder dezelfde noemer vallen, komt doordat er hetzelfde mechaniek aan ten grondslag ligt: voor elk alfabet kun je ook weer verschillende tabellen maken, waarin alleen de detailuitvoering van de tekens verschilt. En zo gooit de computer dus alles op één hoop van 256 posities: lettertypen, alfabetten, fantasiepictogrammen en opdrachten. Het zal hem worst wezen wat de plaatjes zijn, hij heeft genoeg aan de nummers. Computers hebben niks met letters, of met taal. Wij wel, gelukkig. Al is het een gemengd genoegen. Want in de komende tijd zullen we aan alweer een nieuwe standaard voor lettertypen en alfabetten moeten wennen: Unicode.

    • Rik Smits