Typsnittskrönika 28

2003

Unicode – Lösningen på teckenproblemen?

Som jag nämnde i förra typsnittskrönikan har ju vår allt mer uppkopplade och sammanflätade värld ökat kraven på att kunna utbyta textinformation över språkgränser men även över olika alfabet. Många försök har gjorts för att täcka in behoven och samtidigt ta hänsyn till tekniska begränsningar.

Ur datorns perspektiv är bokstäver bara numeriska värden. Varje bokstav har ett eget värde i det aktuella teckenkodnings-systemet. Problemet har dock varit att i olika länder har man kodat på olika sätt, utgående från de nationella kraven. Detta har inneburit att teckenkodningssystemen har kommit i konflikt med varandra. Dels genom att tilldela samma värde till olika tecken. Dels genom att samma tecken ges olika värde. De olika systemen har även lett till förvirring och sammanblandning. Till exempel är det vanligt att blanda ihop Windows Latin 1 code page 1252 med ISO-8859-1, vilket inte är samma sak.

För att kunna hantera konflikterna har man varit tvungen att konvertera text mellan olika teckenkodningssystem. Risken för att texten här blir förvrängd är stor. Dessutom krävs det datakraft och mycket anpassning för att hantera all konvertering.

Unicode är ett försök att en gång för alla lösa problemet genom att rymma alla språk och tecken i ett och samma teckenkodningssystem.

Figur 1

Figur 1

Unicode förser varje tecken i hela världens skriftspråk, med ett unikt namn och nummer. Bokstaven A i det latinska alfabetet har till exempel den hexadecimala koden U+0041, vilket motsvarar decimala värdet 65. Unicode fungerar oavsett datorplattform, operativsystem eller språk. Latinska, kyrilliska eller grekiska bokstäver, ideografiska skrivtecken (kinesiska) och symboler, alla hanteras på samma sätt. Detta innebär att man enkelt kan blanda texter med olika teckenuppsättning. Och också att man säkerställer att ingenting förvrängs vid överföring av data mellan datorer.

För att klara av det här har man förstås behövt använda fler bitar än de sju eller åtta som ASCII använder. Det ställer också ökade krav på datorer, operativsystem och programvara. Macintosh-datorerna har tidigare haft en begränsning till 256 tecken i en font. Detta har dock förändrats i och med Open Type som medger långt fler tecken. Det är dock inte alla program som med Mac OS 9 stödjer Open Type. Har man OS X är det dock många program som hanterar formatet.

Alla moderna operativsystem stödjer Unicode, liksom xml, java, javascript och ldap.

Unicode finns i tre varianter. Alla varianter hanterar alla tecken, men olika effektivt. UTF-8 är en variant som är anpassad för att fungera med äldre system och med ASCII, där man kodar med bytes, dvs 8-bitars enheter. I denna version krävs det upp till 4 bytes (kodningsenheter) för att koda vissa tecken. De första 256 tecknen i Unicode är de samma som i ISO-8859-1, Latin-1.

I UTF-16 använder man sig av 16-bitars enheter för teckenkodningen. Där ryms alla de vanligast förekommande tecknen i en kodningsenhet, medan övriga tecken kräver en kombination av två enheter.

Slutligen finns UTF-32. Denna version kräver mer minne men i gengäld behövs alltid enbart en kodningsenhet för varje tecken.

Med den senaste versionen av Unicode finns möjlighet att koda upp till en miljon tecken, men de flesta kodnings-positionerna är idag oanvända. För att täcka in alla idag använda skrivspråk räcker det med 95.221 tecken inklusive både de europeiska språken, arabiska och andra skriftspråk som läses från höger till vänster, många av de asiatiska språken och symboler, matematiska och tekniska tecken samt dingbats och liknande.

Huvuddelen av de använda tecknen ryms bland de första 65.000 positionerna. Dessa har fått ett gemensamt namn, Basic Multilingual Plane, eller BMP. I BMP finns det 6.700 oanvända positioner och dessutom 6.400 positioner där programtillverkare, typsnittsmakare eller privatanvändare kan placera egna symboler.

Unicode-standarden grupperar tecken språkvis. Tecken som hänger ihop ligger i samma kodblock. Kodningen startar från U+0000 med bokstäver och siffror från ASCII, fortsätter sedan med grekiska, kyrilliska, hebreiska, arabiska, indiska, därefter lite symboler och skiljetecken. Sen kommer hiranga, katanka och bopomofo tillsammans med en version av han (accepterad av och använd i Kina, Japan, Korea, Taiwan, Vietnam och Singapore) och hangul.

I sammanhanget är det viktigt att skilja på att identifiera ett tecken såsom varande en enhet i en speciell position i en teckenkodning å ena sidan och representationen av ett tecken (en glyf) på skärm eller papper å den andra. Unicode ansvarar bara för den första delen, teckenidentifieringen. Själva utseendet på tecknet, hur det visas på skärm eller papper, ansvarar operativsystem och övrig programvara för. Unicode påverkar varken storlek, form eller parametrar som rak eller kursiv stil.

Lasse Törngren

Stäng