Sammendrag
Denne hovedfagsoppgaven tar for seg to forskjellige emner, begge relatert til dokumentproduksjonssystemet LATEX. Del I tar for seg virtuelle fonter, og del II tar for seg norsk orddeling.
LATEX, som er et pabygg pa TEX, benytter normalt en samling med egne skrifttyper, fonter. Disse er kodet i henhold til ASCII-standarden, men med enkelte unntak. Problemet med slike fonter er bruk av srnorske bokstaver og andre symboler som benyttes ofte. Jeg har derfor nsket a kode disse fontene i henhold til ISO 8859/1, Latin-1, ved hjelp av virtuelle fonter.
I del I kartlegger jeg hvilken informasjon som er tilgjengelig fr en kon- vertering, klassisering av bokstaver og tegn, og konstruksjonsmetoder for bokstaver og tegn som ikke nnes i den opprinnelige fonten. Videre har jeg implementert et program som er i stand til a konvertere en gitt font til ISO 8859/1-koding. Denne oppgaven er satt med fonter laget med dette prog- rammet.
I del II tar jeg for meg norsk orddeling til bruk i LATEX. LATEX benytter seg av en mnsterbasert orddelingsalgoritme til deling av ord. En liste med mnstre gjenspeiler spraket, slik at en engelsk liste ikke vil duge for norsk sprak. Til bruk for norsk har vi tidligere hatt en omarbeidet dansk mnsterliste, men denne gjenspeiler ikke dagens orddelingsregler.
A lage nye norske mnstre krever kjennskap til gjeldende regler som langt fra er entydige og fullstendige. Videre er jeg avhengig av en liste med ferdig delte ord. Utarbeidelsen av en slik ordliste, pa basis av en egen frekvensordliste, er sentralt. Til slutt skal mnstre lages pabasis av orddelingslisten ved hjelp av programmetpatgen. Orddelinger ved linjeskift er i denne oppgaven gjort automatisk av LATEX pabasis av mnstre laget i del II.
iii
iv
Forord
Dette er en hovedfagsoppgave til graden cand. scient. ved Institutt for infor- matikk, Universitetet i Oslo. Arbeidet med oppgaven er utfrt ved Institutt for informatikk i perioden mars 1992 til november 1993.
Mange har gitt sine bidrag til denne oppgaven pa forskjellige mater, og i srdeleshet veilederen, Dag F. Langmyhr. Jeg nsker atakke ham for konst- ruktiv kritikk, givende diskusjoner, kommentarer, og psykisk press som hjalp pa progresjonen. Jeg vil ogsa takke de som har bidratt med informasjon og fakta, og spesielt Arnold Thoresen ved Norsk sprakrad, typografene Mogens Dekov og Steinar Trnnes hos :Emil Moestue as. Ole Bjrn Hessen fortjener takk for mange svar om generelle ting underveis, og ikke minst for vask av kjleskapet pa lesesalen. Uten denne rengjringen ville det ikke vrt mulig a lese der (pa lesesalen, ikke i kjleskapet)! Erik Naggum har gitt verdifull informasjon om internasjonale standarder for koding av tegn.
Jeg har fatt god hjelp av Janne Stmner til alese korrektur og til adele ord.
Korrektur har ogsaBerit og Hans Ludvig Opheim, samt Sigbjrn Nss lest, takk til dere. Til slutt en takk til alle andre rundt meg pa I som har gjort dagene lettere a komme igjennom.
Blindern, 15. november 1993
Lars Gunnar Thoresen
v
vi
Denne rapporten er satt med en virtuell utgave av Computer Modern Roman
i strrelse 11/13,6 punkter ved hjelp av LATEX.
Alle skrifttyper som benyttes er laget med programmetsom omtales i del I. Skrifttypene benytter ISO 8859/1
som kodingsstandard. Orddelingen er foretatt av Lpa basis av mnstre som er laget i del II. Rapporten erATEX konvertert til
PostScript ved hjelp av programmet
dvips,
som ogsa inkluderte gurene. Figurene er laget i Idraw ogMicrografx Designer.
Rapporten ble festet til papir ved hjelp av en Hewlett Packard LaserJet IIISi.
Innhold
1 Innledning 1
1.1 Bakgrunn : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1 1.2 Problemdenisjon: : : : : : : : : : : : : : : : : : : : : : : : : 3 1.2.1 Srnorske bokstaver og virtuelle skrifttyper : : : : : : 3 1.2.2 Norsk orddeling: : : : : : : : : : : : : : : : : : : : : : 4 1.3 Kapittelinndeling : : : : : : : : : : : : : : : : : : : : : : : : : 4 1.4 Terminologi og denisjoner : : : : : : : : : : : : : : : : : : : 5 1.5 LATEX og omgivelsene : : : : : : : : : : : : : : : : : : : : : : 8
I Tegnsett og virtuelle fonter 11
2 Tegnsett og koding av tegn 13
2.1 Internasjonale standarder : : : : : : : : : : : : : : : : : : : : 13 2.1.1 ASCII | internasjonal? : : : : : : : : : : : : : : : : : 13 2.1.2 ISO 646 : : : : : : : : : : : : : : : : : : : : : : : : : : 14 2.1.3 ISO 8859 : : : : : : : : : : : : : : : : : : : : : : : : : 17 2.1.4 ISO 10646 : : : : : : : : : : : : : : : : : : : : : : : : : 18 2.2 Industristandarder : : : : : : : : : : : : : : : : : : : : : : : : 18 2.2.1 PC-er og IBMs mange standarder : : : : : : : : : : : 18 2.2.2 Macintosh : : : : : : : : : : : : : : : : : : : : : : : : : 19 2.2.3 Adobes StandardEncoding : : : : : : : : : : : : : : : 19 2.3 Standarder til bruk med LATEX : : : : : : : : : : : : : : : : : 19 2.3.1 TEX Text og andre TEX-kodinger : : : : : : : : : : : : 20 2.3.2 Cork : : : : : : : : : : : : : : : : : : : : : : : : : : : : 22 2.3.3 DC og EC : : : : : : : : : : : : : : : : : : : : : : : : : 23
3 L
ATEX og fonter 24
3.1 Hvordan LATEX bruker fonter : : : : : : : : : : : : : : : : : : 24 3.1.1 NFSS | New Font Selection Scheme : : : : : : : : : : 25 3.2 Bruk av PostScript : : : : : : : : : : : : : : : : : : : : : : : : 26 3.2.1 Karakteristikk og ler : : : : : : : : : : : : : : : : : : 26 3.3 Virtuelle fonter : : : : : : : : : : : : : : : : : : : : : : : : : : 26 3.4 Filnavn, ltyper og programmer: : : : : : : : : : : : : : : : : 31 3.4.1 Navn pa fontler : : : : : : : : : : : : : : : : : : : : : 31 3.4.2 Filtyper involvert : : : : : : : : : : : : : : : : : : : : : 31 3.4.3 Programmer : : : : : : : : : : : : : : : : : : : : : : : 32
vii
viii INNHOLD 3.4.4 TFM-len : : : : : : : : : : : : : : : : : : : : : : : : : 33
4 Klassisering av fonter og tegn 35
4.1 Hva vet vi om en gitt font? : : : : : : : : : : : : : : : : : : : 35 4.1.1 Fontens koding : : : : : : : : : : : : : : : : : : : : : : 36 4.1.2 Fontens utseende : : : : : : : : : : : : : : : : : : : : : 36 4.1.3 Fontens strrelse : : : : : : : : : : : : : : : : : : : : : 38 4.2 Klassisering av tegn : : : : : : : : : : : : : : : : : : : : : : : 38 4.2.1 Eksisterende tegn: : : : : : : : : : : : : : : : : : : : : 39 4.2.2 Tegn med aksenter : : : : : : : : : : : : : : : : : : : : 39 4.2.3 Tegn som kan konstrueres : : : : : : : : : : : : : : : : 42 4.2.4 Tegn som ikke nnes i opphavsfonten, men i andre : : 42 4.2.5 Tegn som er funksjonsorienterte : : : : : : : : : : : : 43
5 Konstruksjon av tegn 44
5.1 Konstruksjon av eksisterende tegn : : : : : : : : : : : : : : : 44 5.2 Konstruksjon av tegn med aksenter : : : : : : : : : : : : : : : 44 5.2.1 Spesialtilpasninger : : : : : : : : : : : : : : : : : : : : 45 5.2.2 Ligaturer og utlikninger : : : : : : : : : : : : : : : : : 46 5.3 Tegn som ma konstrueres fra bunnen : : : : : : : : : : : : : : 46 5.3.1 Fonter med redusert strrelse : : : : : : : : : : : : : : 46 5.3.2 Konstruksjon av de enkelte tegn : : : : : : : : : : : : 49 5.3.3 Ligaturer og utlikninger : : : : : : : : : : : : : : : : : 56 5.4 Konstruksjon av tegn fra andre fonter : : : : : : : : : : : : : 56 5.4.1 Problemene : : : : : : : : : : : : : : : : : : : : : : : : 57 5.4.2 Bruk av sjekksummer : : : : : : : : : : : : : : : : : : 58 5.4.3 Metriske strrelser : : : : : : : : : : : : : : : : : : : : 58 5.4.4 Ligaturer og utlikninger : : : : : : : : : : : : : : : : : 59 5.4.5 Varianter og vekter : : : : : : : : : : : : : : : : : : : : 59 5.4.6 Strrelser pa fonten : : : : : : : : : : : : : : : : : : : 61 5.4.7 Grader av kursivhet, skrahet og fethet : : : : : : : : : 62 5.5 Konstruksjon av funksjonsorienterte tegn : : : : : : : : : : : 63 5.6 Konklusjon : : : : : : : : : : : : : : : : : : : : : : : : : : : : 63
II Norsk orddeling 65
6 Regler og metoder 67
6.1 Orddeling er vanskelig : : : : : : : : : : : : : : : : : : : : : : 67 6.2 Orddelingsregler : : : : : : : : : : : : : : : : : : : : : : : : : 68 6.2.1 Bakgrunn : : : : : : : : : : : : : : : : : : : : : : : : : 68 6.2.2 Dagens regler : : : : : : : : : : : : : : : : : : : : : : : 68 6.2.3 Tolkning av reglene, problemord : : : : : : : : : : : : 69 6.2.4 De gamle reglene | arven : : : : : : : : : : : : : : : : 72 6.3 Orddelingsalgoritmer : : : : : : : : : : : : : : : : : : : : : : : 72 6.3.1 Regelbaserte orddelingsalgoritmer : : : : : : : : : : : 73 6.3.2 Ordbaserte orddelingsalgoritmer : : : : : : : : : : : : 73 6.3.3 Mnsterbaserte orddelingsalgoritmer : : : : : : : : : : 74
INNHOLD ix 6.4 Orddeling i LATEX : : : : : : : : : : : : : : : : : : : : : : : : 75 6.4.1 Bakgrunn : : : : : : : : : : : : : : : : : : : : : : : : : 75 6.4.2 Metoden: : : : : : : : : : : : : : : : : : : : : : : : : : 75 6.4.3 Mnsterlister : : : : : : : : : : : : : : : : : : : : : : : 76 6.4.4 Bruk av ere mnsterlister : : : : : : : : : : : : : : : 77 6.4.5 Mangler ved algoritmen : : : : : : : : : : : : : : : : : 77 6.4.6 Konklusjon : : : : : : : : : : : : : : : : : : : : : : : : 78
7 Innsamling av data 79
7.1 Grunnlaget for LATEX' orddeling : : : : : : : : : : : : : : : : 79 7.2 Ordmengder og sammensetning : : : : : : : : : : : : : : : : : 79 7.2.1 Skjnnlitteratur og blandet faglitteratur : : : : : : : : 80 7.2.2 Allmennfaglig nyhetssto : : : : : : : : : : : : : : : : 80 7.2.3 Faglitteratur informatikk : : : : : : : : : : : : : : : : 81 7.3 Er ordene mine representative? : : : : : : : : : : : : : : : : : 81 7.3.1 Ordene : : : : : : : : : : : : : : : : : : : : : : : : : : 81 7.3.2 Lengder pa ordene : : : : : : : : : : : : : : : : : : : : 83 7.4 Praktisk arbeid : : : : : : : : : : : : : : : : : : : : : : : : : : 85 7.4.1 Innsamlingen : : : : : : : : : : : : : : : : : : : : : : : 85 7.4.2 Manuell orddeling : : : : : : : : : : : : : : : : : : : : 86 7.4.3 Feilkilder : : : : : : : : : : : : : : : : : : : : : : : : : 86
8 Programmet `patgen' 88
8.1 Bakgrunn : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 88 8.1.1 Om avhandlingen: : : : : : : : : : : : : : : : : : : : : 88 8.1.2 Om kildekoden og bruken : : : : : : : : : : : : : : : : 88 8.1.3 Versjon 2 : : : : : : : : : : : : : : : : : : : : : : : : : 89 8.2 Metode : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 89 8.2.1 Parametre og begreper : : : : : : : : : : : : : : : : : : 90 8.2.2 Struktur : : : : : : : : : : : : : : : : : : : : : : : : : : 91 8.3 Hva vil jeg, og hvor mye vil jeg? : : : : : : : : : : : : : : : : 92 8.3.1 Hva har andre gjort? : : : : : : : : : : : : : : : : : : : 92 8.3.2 Hva gjr jeg? : : : : : : : : : : : : : : : : : : : : : : : 93 8.3.3 Krav til nivaer og antall mnstre : : : : : : : : : : : : 93 8.4 Testing av parametrenes virkninger : : : : : : : : : : : : : : : 93 8.4.1 Testing med ett niva: : : : : : : : : : : : : : : : : : : 95 8.4.2 Konklusjon : : : : : : : : : : : : : : : : : : : : : : : : 100 8.5 Mnstergenerering, fase 1 : : : : : : : : : : : : : : : : : : : : 100 8.5.1 Feil orddelinger : : : : : : : : : : : : : : : : : : : : : : 101 8.6 Mnstergenerering, fase 2 : : : : : : : : : : : : : : : : : : : : 101 8.7 Mnstergenerering, fase 3 : : : : : : : : : : : : : : : : : : : : 102 8.8 Konklusjon : : : : : : : : : : : : : : : : : : : : : : : : : : : : 103
III Tillegg 105
A Tegnsett 107
B Vedlegg 114
x INNHOLD
Referanser 115
Innledning
1.1 Bakgrunn
Dokumentproduksjon har blitt en viktig del av manges hverdag. Med doku- mentproduksjon menes prosessen fra inntasting av tegn, tall og bokstaver, innsetting av tabeller og gurer, og frem til et ferdig dokument papapir. De forskjellige delene av prosessen har egne ord forbundet med seg. Mest kjent er vel tekstbehandling. Tekstbehandling omfatter i utgangspunktet kun det ordet sier, nemlig behandling av tekst, og ikke visning av gurer, av under- streking og spesielle skrifttyper. Efterhvert har tekstbehandleren utviklet seg til et mer omfattende produkt, med muligheter for endringer av skrifttyper, inkludering av gurer og samtidig presentasjon av resultatet pa skjermen. I den andre enden nner vi systemer for avansert dokumentproduksjon, ofte kalt Desktop Publishing. Slike systemer kan arbeide med tekst og bilder, og samtidig vise dette slik som det blir pa papiret til slutt.
Det nnes i hovedsak to forskjellige grupper av dokumentproduksjonssyste- mer. Den ene gar ut pa at brukeren (eller forfatteren) setter inn spesielle koder eller kommandoer for a fortelle hvorledes teksten skal se ut. Typisk kan vre egne kommandoer for a lage fet skrift eller overskrifter. Nar bru- keren har skrevet ferdig ma dokumentet formateres, det vil si at et program leser gjennom dokumentet og oversetter dette til spesiell kode, vanligvis ule- selig for brukeren, men som gir den nskede eekt dersom det sendes til en skriver. Vil brukeren se hvordan dokumentet virkelig ser ut fr utskrift, kan hun, dersom slike hjelpemidler nnes tilgjengelig, benytte en forhandsviser, previewer. En forhandsviser kan vise sluttresultatet paskjermen, men har in- gen muligheter for endring av tekst og gurer. Eksempler paslik formatering kan sees i gur 1.1.
Den andre gruppen av systemer baserer seg paat brukeren ikke skal bekymre seg over vanskelige koder. Brukeren skal ogsastraks kunne se hvordan doku- mentet vil se ut. Akronymet WYSIWYG (What You See Is What You Get) brukes ofte pa slike systemer. Av og til stemmer det ikke helt at brukeren virkelig ser hva som til slutt kommer papapiret. Systemene er ofte ikke gode
1
2 KAPITTEL 1. INNL ED NI NG
.B Dette er fet skrift .SX # {\bf Dette er fet skrift}
#Dette er fet skrift#
.ce Sentrert .C Sentrert \centerline{Sentrert}
(a) (b) (c)
Figur 1.1: Forskjellige kommandoer som benyttes for a beskrive hvordan teksten skal se ut til slutt. (a) viser kommandoer fra systemettro, (b) viser kommandoer fra systemet TED, mens (c) viser tilsvarende kommandoer fra LATEX.
nok til a vise korrekt pa skjermen hvordan sluttresultatet blir.1
Felles for begge typer dokumentproduksjon er at resultatet en eller annen gang skal ut pa papir. Teksten skal presenteres med en eller ere skrifttyp- er. Hva slags skrifttype som en gitt tekst skal presenteres (settes) med, ma brukeren paen eller annen mate angi (dette vil vre avhengig av dokument- produksjonssystemet). Det maogsavre korrespondanse mellom det enkelte tegn i den teksten brukeren skriver og det symbolet som kommer frem fra den nskede skrifttypen. Her har det ikke alltid vrt saveldig godt samsvar mellom hva brukeren taster inn og hva som kommer ut. I Norge er en vanlig feil at PC-er ofte skriver ut (eller viser pa skjermen) en <Y> nar brukeren har tastet en<>.2
Det nnes mange forskjellige systemer innenfor hver av disse to gruppene.
Spesielt nnes det mange beregnet til bruk pa PC-er og Macintosh. Beg- ge gruppene har sine sterke og svake sider, og gjerne brukere med sterke meninger.
Dokumentproduksjonssystemer er ofte darlige paorddeling. Med et eksemp- lar fra norsk dagspresse foran seg, skulle det vre relativt enkelt a nne delinger av ord som ikke flger de regler man lrte pa skolen, slik som
lei-ebilen. Orddeling kan forega automatisk, halvautomatisk eller ma- nuelt. Med automatisk menes at dokumentproduksjonssystemet selv deler ord der det er ndvendig. Med halvautomatisk menes at systemet deler ord der det nnes bindestrek, eller sakalt skjult bindestrek som bare vil vre synlig dersom ordet skal deles, i ordet. Her ma altsa brukeren sette inn bin- destreken. Med manuelt menes at brukeren selv madele ord med bindestrek der linjene blir for lange (eller forrige linje for kort). De este systemer tilbyr ogsamuligheter for at brukeren skal kunne angi hvor et ord kan deles dersom det ma deles, en slags skjult bindestrek.
Det vil ofte vre slitsomt for brukeren a angi alle mulige ord som kan eller skal deles. Ofte vil brukeren endre dokumentet underveis slik at ord som hun opprinnelig trodde skulle deles ikke blir delt, mens andre ord igjen skal deles.
1Dette har frt til andre tolkninger av WYSIWYG. En annen variant er <What You See IsnotWhat You Get>.
2Denne feilen har strengt tatt ikke noe med skrifttypen a gjre, se kapittel 2.
1.2. PROBLEMDEF INISJON 3 Lsningen pa dette er automatisk orddeling.
Grunnen til de mange orddelingsfeilene vi ser i dag, skyldes at algoritm- en bak orddelingen enten er for darlig, eller er basert pa kunnskap om et bestemt sprak, og da gjerne amerikansk-engelsk. Norsk orddeling skiller seg fra amerikansk-engelsk; flgelig blir norske ord ofte galt delt av slike algorit- mer.
1.2 Problemdenisjon
PaInstitutt for informatikk (I) benyttes i hovedsak LATEX3som dokument- produksjonssystem. LATEX er en makropakke laget for TEX4. LATEX hrer til den frste gruppen av dokumentproduksjonssystemer, nevnt pa side 1; bru- keren ma altsa selv skrive inn bestemte kommandoer sammen med teksten for a fa det nskede resultat.
Hovedproblemene er at det i LATEX er relativt tungvint abenytte srnorske tegn, og at delingen av norske ord ikke tilfredsstiller gjeldende regler. Det sis- te er delvis en konsekvens av at de srnorske bokstavene hittil ikke har vrt tilgjengelige som bokstaver. Vi skal se litt nrmere pa problemstillingene.
1.2.1 Srnorske bokstaver og virtuelle skrifttyper
Srnorske bokstaver har vrt vanskelige abenytte grunnet at de skrifttypene som benyttes i LATEX, ikke tilfredsstiller internasjonale standarder for koding av disse bokstavene. Generelt nsker vi ved I a benytte ISO 8859/1 som standard for koding av tegn. For a fa til srnorske bokstaver vil vi matte gi kommandoer til LATEX. Hvis vi derimot kan lage skrifttyper (fonter) som har srnorske bokstaver i de korrekte posisjonene, vil vi kunne bruke disse som vanlig, uten kommandoer.
A lage skrifttyper som tilfredsstiller ISO 8859/1 (og som altsahar srnorske bokstaver) er et omfattende arbeid. Tegnene som inngar i ISO 8859/1 nnes i stor grad allerede, enten i andre posisjoner i den skrifttypen vi na matte benytte, eller i andre skrifttyper. Sakalte virtuelle fonter kan derfor benyttes til a knytte tegn og skrifttyper sammen til en skrifttype.
Fordelen med a benytte virtuelle fonter er at vi utnytter eksisterende skrift- typer. Det stilles derfor sma krav om ekstra ressurser, slik som diskplass.
Helt nye skrifttyper vil kreve mange ganger samye diskplass som tilsvarende virtuelle skrifttyper.
A ha en tilgjengelig skrifttype alene tilfredsstiller ikke vanlige krav. Folk est bruker ere skrifttyper i et dokument. Lsningen blir a nne en standard mate a lage virtuelle skrifttyper som tilfredsstiller ISO 8859/1 pa.
Efter at denne hovedoppgaven ble pabegynt er det kommet andre lsninger
3LATEX er laget av Leslie Lamport ved Stanford Research Institute.
4TEX er laget av Donald E. Knuth ved Stanford University.
4 KAPITTEL 1. INNL ED NI NG
som fjerner problemet med srnorske bokstaver. Det er blitt laget skriftty- per som inneholder de srnorske bokstavene (og mange andre), men disse tilfredsstiller ikke ISO 8859/1. Savidt jeg kjenner til, nnes det ikke vanlige skrifttyper for LATEX som tilfredsstiller denne standarden pr i dag.
Jeg nsker pa denne bakgrunn a se nrmere pa problemstillinger rundt au- tomatisk oppbygning av virtuelle fonter for LATEX som tilfredsstiller standar- den, og til slutt utvikle en applikasjon som implementerer lsningen.
1.2.2 Norsk orddeling
Det er et minimumskrav nar LATEX skal dele ord, at alle bokstavene som inngar i et ord, er <ekte> bokstaver, og ikke laget med kommandoer. En lsning av problemet med srnorske bokstaver gir oss mulighet for riktig orddeling.
Det nnes i dag muligheter for norsk orddeling i LATEX. Denne lsningen baserer seg panorske tilpasninger til dansk orddeling, og gjenspeiler de gamle norske reglene. I forhold til dagens regler far vi mange feil delinger og mange manglende delingspunkter.
Mitt mal blir derfor a lage sakalte <mnstre> til LATEX, slik at delingen tilfredsstiller gjeldende regler. Disse<mnstrene>ma tilfredsstille visse mi- nimumskrav som jeg setter for a sikre kvaliteten pa orddelingen.
1.3 Kapittelinndeling
I del I
av oppgaven tar jeg for meg problemstillinger og lsninger rundt automatisk oppbygning av skrifttypene.I kapittel 2 beskriver jeg aktuelle kodingsstandarder som pa en eller annen mate er relatert til LATEX. En forstaelse av hvilke standarder og kjennskap til noen av dem, er viktig basis for senere automatisk oppbygning av virtuelle skrifttyper.
Kapittel 3 tar for seg den verdenen som som vi benner oss i. Jeg vil beskrive LATEX' bruk av skrifttyper og forklare hva virtuelle skrifttyper er. Det gis ogsa en oversikt over en del ltyper og konverteringsprogrammer som er aktuelle senere i oppgaven.
I kapittel 4 diskuterer jeg mulige metoder til a klassisere forskjellige skrift- typer. Jeg klassiserer ogsategnene i ISO 8859/1 med henblikk paforenkling av oppbygningen av virtuelle skrifttyper.
I kapittel 5 vil jeg pa bakgrunn av klassiseringen, foresla og diskutere for- skjellige mater a bygge opp og konstruere tegn og bokstaver pa.
I del II
av oppgaven tar jeg for meg norsk orddeling i LATEX.Det er viktig med kjennskap til gjeldende regler for akunne foreta riktig ord-
1.4. TERMINOLOG IOG D EF INISJONER 5 deling. Likeledes er tolkning av reglene viktig, for reglene er ikke utfyllende og entydige. Dette tar jeg for meg i kapittel 6.
I kapittel 7 tar jeg for meg innsamling og deling av ord. Dette er ndvendig i mangel panorske orddelingslister (det nnes ingen bker eller osielle lister).
Det er ndvendig med tilgang paferdig delte ord, fr jeg kan lage<mnstre>
til LATEX.
Generering av <mnstre> pa bakgrunn av orddelingslisten omtales i kapit- tel 8. Der vil jeg ogsabeskrive virkematen til programmetpatgen, og foreta uttesting av parametre til programmet.
1.4 Terminologi og denisjoner
I informatikkens verden benyttes ofte amerikansk-engelsk terminologi. Jeg vil benytte <engelsk>i forstaelsen av dette.
I denne oppgaven omtales systemer hvis terminologi som regel er engelsk.
Datamaskinbasert dokumentproduksjon har med seg elementer bade fra in- formatikkfaget og fra typografaget. Frstnevnte fag benytter seg av svrt mye engelsk terminologi, mens det for sistnevnte nnes godt innarbeidet norsk terminologi. Imidlertid har bruk av datamaskinbaserte systemer ogsa innfrt mer engelsk terminologi innenfor typografaget. A velge hvilke ord og uttrykk som skal benyttes i denne oppgaven er derfor ikke helt opplagt.
Jeg har valgt a legge opp til en mest mulig norsk terminologi, men benytter allikevel engelsk terminologi der det er mest naturlig sett fra en informatikers antatte synspunkt.
Tall som i oppgaven refererer seg til et tegns verdi eller kode (se kapittel 2 vil angis med oktale tall. Tallene vil vre benevnt med et lavt attetall, slik som dette: 1018 = 65, unntatt i tabellene i kapittel 2.
Jeg kommer til a referere til ISO-standarden ISO 8859/1 som Latin-1.
I tabellene i kapittel 4, som viser forskjellige bokstaver og graske tegn, vil jeg benytte begrepet <vanlig navn>. Med dette mener jeg navn som er i vanlig bruk pategn, som regel med opphav iPostScripteller i forbindelse med vindussystemet X.
LATEX er et sett med makroer til TEX. TEX er et mer generelt settesystem, mens LATEX er en pabygning som er tilpasset dokumentproduksjon. Jeg vil benytte <LATEX>i betydningen bade TEX og LATEX.
Jeg skal i del II av oppgaven utvikle et program for konvertering av fonter.
Jeg har valgt a gi dette programmet arbeidsnavnet pltovpl.
Denisjoner og ordliste
antikva
betegner en rett skrifttype med serier. Tegnene er bygget opp av bade tynne og tykke streker. Mest kjent er antakeligvis skrifttypen<Times Roman>.
6 KAPITTEL 1. INNL ED NI NG
bold
engelsk betegnelse pa fet skrift.etymologi
vitenskap om ordenes opphav, utvikling og slektskap. Etymologi forklarer et ords grunnbetydning. A dele et ord efter etymologiske prinsipper tar hensyn til ordets opphav.family
(i sammenheng med LATEX) beskriver en samling med skrifttyper med mange likhetstrekk, de er laget over samme lest. En familie kan eksempelvis vreComputer Modern Teletypeeller Computer Modern Sans Serif.fastbredde
betegner skrifttyper med samme bredde for hver bokstav. Fon- ter med fast bredde har ofte store serier for afylle ut plassen, slik som<Courier>og<Computer Modern Teletype>,dette er sistnevnte.
fet skrift
betegner at en skrifttype har tykkere streker i tegnene enn vanlig.Fet skrift virker tyngre og kraftigere. Det nnes forskjellige grader av fethet.
xed fonts
sefastbredde
.font
amerikansk ord (engelsk fount) forskrifttype
. Font benyttes ogsasom et samlebegrep. Font brukes ofte paler som inneholder hele eller deler av beskrivelsen til skrifttypen. Det vil derfor i mange sammenhenger vre mer naturlig a bruke ordet font ogsa pa norsk.grotesk
betegner en skrifttype uten serier. Mest kjent er antakeligvis skrifttypen<Helvetica>.homograf
betegner ord som skrives likt, men som har forskjellig betydning.Eksempler pa slike ord er snekker som kan vre en fagarbeider eller ere bater, og talte som kan bety at en person er ferdig med a snakke eller ferdig med a telle opp noe.
italic
engelsk betegnelse pakursiv
.italic correction
engelsk betegnelse pakursiv-korrigering
.kapitel
betegner en skrifttype med bare store bokstaver, men med samme hyde som sma.kerning
engelsk betegnelse pautlikning
.kodet tegnsett
er ettegnsett
hvor hvert enkelt tegn har fatt tilordnet en verdi (eller kode), og har sin faste plass (posisjon). Slike kodete tegnsett er gjerne standardisert. Noen kjente standarder er ASCII5 og ISO 8859/1.kursiv
betegner en skrifttype der tegnene som regel heller mot hyre og har mer utpregede serier. Kursiv prver a efterlikne handskrift, og brukes som regel for a utheve bestemte deler av teksten. Ofte er det5American Standard Code for Information Interchange, se kapittel 2.
1.4. TERMINOLOG IOG D EF INISJONER 7 ogsaforskjeller paenkelte tegn i en kursiv skrifttype og en annen ikke- kursiv. Eksempelvis er dette en kursiv a, mens dette er slanted a og dette vanlig a.
kursiv-korrigering
betegner det alegge til litt ekstra mellomrom efter kur- siv skrift for a unnga at det siste tegnet i kursiv kommer helt innpa neste tegn (som ikke er i kursiv). Strrelsen pa mellomrommet som legges til, er avhengig av hvert enkelt tegn.ligatur
er en bokstav som er sammensatt av ere bokstaver. Dette benyttes i typograen for a gi <riktig> utseende pa en del kombinasjoner av bokstaver. Typiske ligaturer er <> og <> til forskjell fra <fi> og<ffl>.
morfem
efter mnster av fonem. Betegner minste sprakelement eller gram- matisk funksjon. I forbindelse med orddeling vil et morfem gjerne vre en enhet i ordet (sprakelement) som kan uttales selvstendig, typisk ved sammensatte ord og sammenskrivninger.oblique
skrift er en annen betegnelse pa skra skrift, og brukes om groteske skrifttyper.roman
engelsk betegnelse forantikva
og for rett skrift.sammenskriving
betegner det a sette sammen faste uttrykk til et ord, ek- sempelvis<derefter> og<hervrende>.sans serif
uten seri, segrotesk
.series
(i sammenheng med LATEX) betegner forskjeller i vekt og bredde in- nenfor en familie med skrifttyper. Vi kan altsa hafet skrift, men ogsabredere og fetere skrift.
seri
<pynt>, <staasje> eller utsmykning av det enkelte tegn. Et typisk eksempel er streker og kurver i tegnenes endepunkter. Skrift satt med skrifttyper med serier er ofte lettere a lese enn andre.shape
(i sammenheng med LATEX) betegner enda en akse for variasjonene til en skrifttype. Vi angir eksempelvis her om en skrifttype skal vre kursiv eller ikke.skrifttype
eller skriftsnitt. Dette betegner som regel et sett med graske symboler (vanligvis bokstaver, tall og andre vanlige symboler) som har fellestrekk som fethet, serier, kursiv mv.slant
engelsk betegnelse som forteller at en skrifttype heller mot hyre, med andre ord at den er skra. Skra skrift har lik utforming som en til- svarende rett skrifttype, til forskjell fra en kursiv skrifttype, som har forskjellig utforming. Vi kan se dette iskraskriftog skraskrift, der den siste er kursiv.small caps
sekapitel
.8 KAPITTEL 1. INNL ED NI NG
srskriving
betegner faste uttrykk som skrives i to eller ere ord. Eksemp- ler er<i dag> og<en del>. Vi kan ikke skrive<idag>eller<endel> pa bokmal.6 Vi har ogsaen del faste uttrykk hvor betydningen er forskjel- lig med sammenskriving og ved srskriving, slik som med uttrykkene<inn i>og<inni>. Flgende eksempler skulle illustrere betydningsfor- skjellen: a ga inn i huset og a vre inni huset.
tegn
blir i denne oppgaven brukt om et grask symbols verdi og betyd- ning. Eksempelvis vil det graske symbolet A med verdi 1018 bli kalt<tegnet A>.
tegnsett
er en samling av tegn, vanligvis sammensatt i henhold til bestemte standarder. Jeg vil bruke ordet tegnsett i forstaelsen avkodet tegn- sett
.teletype
sefastbredde
.typewriter
sefastbredde
.utlikning
betegner ytting av tegn, slik at to tegn som star ved siden av hverandre tar seg bedre ut. Utlikning kan bety ytting bade nrmere og lenger unna. Et vanlig eksempel pa utlikning er bokstavene A og V som med utlikning ser slik ut: AV Uten utlikning ser de slik ut:variant
AV(i sammenheng med LATEX) Vi vil bruke variant som en samlebe- tegnelse pa variasjonenefamily
,series
ogshape
, da det senere vil vre hensiktsmessig asamle disse begrepene under ett. Vi skal ogsase i avsnitt 3.1.1 atvariant
kan benyttes annerledes.vekt
betegner fethet. En fetere skrifttype vil vre tyngre og svartere enn en som ikke er fet.Dette er fet skrift
. Det nnes mange grader av fethet, bade fetere og lettere.1.5 L
ATEX og omgivelsene
Nar en bruker har laget seg et dokument med koder til LATEX, madet kjres gjennom LATEX som formaterer dokumentet og lager en sakalt Device Inde- pendent (DVI) l. Denne len er, som navnet sier, uavhengig av hva slags maskin LATEX kjres pa, og uavhengig av hva slags mate dokumentet skal presenteres pa, enten pa skriver eller pa skjerm. Frst nar dokumentet skal skrives ut, madet oversettes til skriverspesikk kode. Figur 1.2 viser hvordan LATEX virker. Veien frem til et ferdig dokument kan virke grei, og vil i de este tilfeller ogsa vre det, sett med brukerens yne. Bak kulissene skjer det imidlertid mye.
LATEX benyttes som regel sammen med emacs. Dette er en tekstbehandl- er som benyttes for inntasting av tekst og LATEX-kommandoer. Nar vi skal
6Dette uttrykket er svrt vanlig a skrive som et ord. Blant 89701 forskjellige ord havnet<endel>pa 2 181. plass.<endel>er lovlig i riksmal.
1.5. L A
T
E
X OG OMGIVELSENE 9
tekst.tex
T EX
font.tfm font.pk
tekst.dvi dvips tekst.ps til skriver/
previewer LA
Figur 1.2: Enkel oversikt over hvordan LATEX virker. Sirkler betegner ler, mens rkanter betegner prosesser eller programmer. Pa guren konverteres DVI-len til PostScript ved hjelp av dvips. De to lene font.tfm og
font.pk omtales i kapittel 3.
benytte Latin-1 kreves det av tekstbehandleren at den kan behandle atte- bits tegnsett. Emacs (versjon 18) er i utgangspunktet darlig egnet til dette.
Det attende bitet i tegn som tastes inn, gjr at hele tegnet tolkes som en kommando. Det er imidlertid laget lsninger som gir tilstrekkelig sttte for attebits tegnsett, slik at emacs kan brukes.
De este maskinene pa I kjrer X Window System. Emacs virker under dette. Nar tegn i henhold til Latin-1 skal benyttes er det viktig a velge en skrifttype for skjermen som sttter denne standarden. Tastaturene som benyttes har ikke nok taster til a dekke alle tegn i Latin-1. Dette kan til en viss grad kompenseres ved a legge ere tegn pr tast, og sa benytte seg av sakalte modiers. <SHIFT>, <CTRL> og <ALT> er eksempler pa slike. X Window System har sttte for a la hvilken som helst tast generere hvilket som helst tegn. En viss grad av tilpasning av den enkelte bruker kan vre hensiktsmessig | ikke alle har behov for de samme tegnene.
Under X Window System nnes det ogsatilgjengelige ere sakalte forhands- visere (previewers). Ved hjelp av disse kan dokumentet vises paskjermen fr en utskrift eventuelt settes i gang. En forhandsviser vil matte ha tilgang til den skrifttypen som dokumentet er satt med, pa samme mate som ved en utskrift.
10 KAPITTEL 1. INNL ED NI NG
Tegnsett og virtuelle fonter
11
Tegnsett og koding av tegn
Jeg har som mal i del I av oppgaven aautomatisere oppbygning av virtuelle fonter som tilfredsstiller Latin-1-koding. LATEX' originale fonter, Computer Modern, er kodet med basis i ASCII. Jeg vil i dette kapittelet ga inn pa hvilke kodingsstandarder som danner grunnlaget for de originale fontene og for Latin-1. Jeg vil ogsaomtale en del andre kodingsstandarder som benyttes pa maskiner hvor LATEX er i vanlig bruk.
Med tegn forstar vi et grask symbol. Med tegnsett forstar vi en samling med tegn. Med kodet tegnsett forstar vi et tegnsett med hvor de tegnene har faste plasser og har fatt et nummer, en kode. Jeg vil bruke tegnsett i betydningen kodet tegnsett.
Vi skal frst se pa de viktigste internasjonale standardene som gjelder for koding av tegnsett. Derefter ser vi pa hvilke industristandarder som er i bruk, og til slutt pa hvilke standarder som benyttes i forbindelse med LATEX i dag.
De fontene som vises i tabellene i dette kapittelet og som begynner medvcm, er virtuelle fonter laget som et resultat av hovedoppgaven. 6 av tabellene er plassert i tillegg A bakerst.
2.1 Internasjonale standarder
2.1.1 ASCII | internasjonal?
ASCII, American National Standard Code for Information Interchange, ble laget i 1968 av ASA1, forlperen til ANSI2, [ANS86]. ASCII-standarden, eller ASCII-tabellen som den ofte kalles, er en 7-bits standard. Vi har 128 tilgjengelige posisjoner til forskjellige tegn. De frste 32 tegnene og det siste benyttes ikke til graske symboler, men har spesiell betydning i den sammen- hengen de blir brukt. Disse tegnene kalles kontrolltegn. ASCII-standarden skulle <ta livet av> de gamle 6-bits kodingene. I standarden nner vi be-
1American Standards Association.
2American National Standards Institute, Inc.
13
14 KAPITTEL 2. TEG NSETTOG KOD INGAVTEGN
00x 02x 04x 06x 10x 12x 14x 16x
0 NUL DLE SP 0 @ P ` p
1 SOH DC1 ! 1 A Q a q
2 STX DC2 " 2 B R b r
3 ETX DC3 # 3 C S c s
4 EOT DC4 $ 4 D T d t
5 ENQ NAK % 5 E U e u
6 ACK SYN & 6 F V f v
7 BEL ETB ' 7 G W g w
0 BS CAN ( 8 H X h x
1 HT EM ) 9 I Y i y
2 LF SUB * : J Z j z
3 VT ESC + ; K [ k f
4 FF FS , < L \ l |
5 CR GS - = M ] m g
6 SO RS . > N ^ n ~
7 SI US / ? O o DEL
Tabell 2.1: ASCII-tabellen. Tegnene 0{37 og 177 er sakalte kontrolltegn, tegn med betydning, men ikke med et grask symbol. Disse tegnene var beregnet til bruk ved kommunikasjon mellom datamaskiner og mellom forskjellig annet datautstyr. Tegn 40 er ordskiller, et tegn med bredde, men ikke noe grask symbol. Tabellen vises her med fontendctt10.
skrivelser av oppbygningen av tegnsettet som ivaretar en lettere overgang til 7 bit. Det skulle blant annet vre bare ett bits forskjell mellom store og sma bokstaver. Likeledes anbefalte man at nar tegnene skulle plasseres pa et tastatur, sa skulle bruk av SHIFT-tasten bare medfre ett bits forskjell i koden. ASCII-standarden ble laget pa en tid hvor datamaskinen var i sin barndom, preget av hullband og<teletyper>.
Standarden ble revidert i 1977, med blant annet det resultat at $som var valgfri med #, ble fjernet. Standarden som gjelder i dag, er fra 1986.
ASCII-tabellen danner grunnlaget for de este andre kodingsstandarder som benyttes i dag. Tabell 2.1 viser de 128 tegnene i standarden.
2.1.2 ISO 646
Efter at ASCII-standarden ble tatt i bruk rundt omkring i forskjellige land, oppdaget man raskt at det ikke var sttte for nasjonale variasjoner, slike som<>,<> og<A>. Den internasjonale standardiseringsorganisasjonen ISO (International Organization for Standardization) utviklet derfor ASCII- standarden videre. Resultatet ble ISO 646, [ISO83]. Denne var pa ett tegn nr, helt lik ASCII-tabellen, men ga rom for nasjonale endringer for bestemte posisjoner. Grunnstandarden, ISO 646 IRV, vises i tabell 2.2. I de nasjo- nale utgavene kunne en velge mellom # og $ for tegn nr 438, mens $ og
2.1. INTERNASJ ONALE STANDARD ER 15
00x 02x 04x 06x 10x 12x 14x 16x
0 NUL DLE SP 0 @ P ` p
1 SOH DC1 ! 1 A Q a q
2 STX DC2 " 2 B R b r
3 ETX DC3 # 3 C S c s
4 EOT DC4 4 D T d t
5 ENQ NAK % 5 E U e u
6 ACK SYN & 6 F V f v
7 BEL ETB ' 7 G W g w
0 BS CAN ( 8 H X h x
1 HT EM ) 9 I Y i y
2 LF SUB * : J Z j z
3 VT ESC + ; K [ k {
4 FF FS , < L \ l |
5 CR GS - = M ] m }
6 SO RS . > N ^ n ~
7 SI US / ? O o DEL
Tabell 2.2: ISO 646 IRV er en internasjonal utgave av ASCII-tabellen.
Grask sett er den lik ASCII-tabellen med et unntak, tegn nr 044 skal vre
og ikke $. Internasjonaliseringen av standarden foregar ved at en del tegn er valgfrie. Dette gjelder tegnene som er markert med en boks rundt. Tegn nr 043 kan vre # eller $, mens tegn nr 044 kan vre eller $. Videre er tegnene 133{136 og 173{176 avsatt til nasjonale symboler. Fonten som benyttes her er vcmtt11.
16 KAPITTEL 2. TEG NSETTOG KOD INGAVTEGN
00x 02x 04x 06x 10x 12x 14x 16x
0 NUL DLE SP 0 @ P ` p
1 SOH DC1 ! 1 A Q a q
2 STX DC2 " 2 B R b r
3 ETX DC3 # 3 C S c s
4 EOT DC4 $ 4 D T d t
5 ENQ NAK % 5 E U e u
6 ACK SYN & 6 F V f v
7 BEL ETB ' 7 G W g w
0 BS CAN ( 8 H X h x
1 HT EM ) 9 I Y i y
2 LF SUB * : J Z j z
3 VT ESC + ; K Æ k æ
4 FF FS , < L Ø l ø
5 CR GS - = M Å m å
6 SO RS . > N ^ n ~
7 SI US / ? O o DEL
Tabell 2.3: NS-ISO 646 er den norske utgaven av ISO 646. Her er tegnene 133{135 og 173{175 byttet ut med de norske bokstavene A og a. Vi har ogsa beholdt dollartegnet fra ASCII-tabellen i stedet for symbolet for valuta pa plass 044. Tabellen er vist med fontenvcmtt11.
var lovlige valg for tegn nr 448. Videre kan de 8 tegnene 1338{1368 og 1738{1768 byttes ut med nasjonale tegn eller bokstaver. Det er de nasjona- le standardiseringsorganisasjonene som bestemmer hva som skal vre i de valgfrie posisjonene.
I Norge er det Norges Standardiseringsforbund (NS) som er ansvarlig for ISO 646. Den er adoptert som Norsk standard, NS-ISO 646. Standarden omtales ofte i dagligtale som 7-bits norsk ASCII. I standarden har NS valgt abeholde
$ i stedet fori posisjon 448. Hakeparenteser og klammeparenteser er byttet ut med<>og<A>i henholdsvis store og smautgaver. Omvendt skrastrek, ogsa kalt bakslask, er byttet ut med <> og den vertikale linjen, pipe eller bar, er byttet ut med<>. To av tegnene som er beregnet til nasjonale tegn, blir ikke byttet ut. Tabell 2.3 viser tegnene i standarden.
ISO 646 gir anledning til a denere ere forskjellige nasjonale utgaver av standarden i et land. I Norge kunne man eksempelvis ha laget en annen variant med samiske bokstaver. Videre er det anledning til a lage applika- sjonsavhengige utgaver av standarden, sa sant disse dokumenteres.
Det nnes en standard som holder orden pa de nasjonale versjonene av ISO 646, den henter ISO 2375. Den norske versjonen av ISO 646 er nr 60. Vi ser derfor ogsa navnet ISO 646-60 brukt om den norske versjonen.
2.1. INTERNASJ ONALE STANDARD ER 17
00x 02x 04x 06x 10x 12x 14x 16x 20x 22x 24x 26x 30x 32x 34x 36x
0 0 @ P ` p nbsp A D a d
1 ! 1 A Q a q < A N~ a n~
2 " 2 B R b r c 2 A^ O a^ o
3 # 3 C S c s $ 3 A~ O a~ o
4 $ 4 D T d t A O^ a o^
5 % 5 E U e u Y m A O~ a o~
6 & 6 F V f v { O o
7 ' 7 G W g w x . C c
0 ( 8 H X h x E e
1 ) 9 I Y i y C 1 E U e u
2 * : J Z j z a o E^ U e^ u
3 + ; K [ k { < > E U^ e u^
4 , < L \ l | : 1/4 I U u
5 - = M ] m } shy 1/2 I Y y
6 . > N ^ n ~ R 3/4 I^ Io ^ bp
7 / ? O _ o > I y
Tabell 2.4: ISO 8859/1, i dagligtale isolatin eller Latin-1. Tegnene 000{039 og 200{239 er ikke denert. Tegnene 240 og 255 har funksjonell betydning og er her market med akronymet for betydningen. Tegnet 240 er en vanlig ordskiller utseendemessig, men det er ikke anledning til a ha linjeskift her.
Tegnet 255 er delestrek til bruk ved deling av ord ved linjeskift. Dersom ordet som inneholder dette tegnet ma deles, vil vi ha et deletegn, ellers ingenting.
Fonten er vcmtt11.
2.1.3 ISO 8859
ISO 8859 er en samling med tegnsett med ISO 646 IRV som basis for de frste 128 tegnene. ISO 8859 ble pabegynt i 1987, og bygger pa ere andre standarder (blant annet ISO 2022, 2375 og 4873). Kort og upresist fortalt bestar den av to sett med kontrolltegn (hver pa 32 tegn) og re sett med graske tegn (hver pa 96 tegn), benevnt med C0, C1, G0, G1, G2 og G3.
De 128 frste tegnene bestar av av C0 og G0, hvilket da tilsvarer ISO 646 IRV. Pa de neste 128 plassene kan vi sette inn ett sett med kontrolltegn, C1, og ett sett med graske tegn, G1, G2 eller G3. Hva som skal ligge i de siste settene, kan velges selv ut fra ISO 4873. Nar et tegnsett er valgt fra denne standarden, sasettes settet inn i kolonnene og vi far (forhapentligvis) en versjon av ISO 8859. Skifte av tegnsett og valg av Cx og Gx gjres med escape-sekvenser.
ISO 8859 denerer forskjellige versjoner og gir disse navn og nummer. ISO 8859/1 (som strengt tatt skal skrives ISO 8859-1) kalles Latin-1.
I praksis vil bruk av ISO 8859/1 ikke vre sa komplisert. Det vil ofte v- re slik at programmene og fontene som benyttes ikke har sttte for bytting
18 KAPITTEL 2. TEG NSETTOG KOD INGAVTEGN av tegn, men har hardkodet Latin-1 som standard (slik som vi skal gjre senere). Tabell 2.4 viser Latin-1 tegnsettet. Andre deler av ISO 8859 er Latin-2, Latin-3, Latin-4, Latin/Cyrillic, Latin/Arabic, Latin/Greek og La- tin/Hebrew, Latin-5 og Latin-6, for stigende verdier av ISO 8859-x, derxer 2 og strre. Samiske tegn er denert i Latin-4.
2.1.4 ISO 10646
ISO 10646, Universal Multiple-Octet Coded Character Set (UCS) tar hyde for a innlemme alle eksisterende tegn og alle fremtidige tegn [ISO92]. Stan- darden bestar av 128 grupper. Hver gruppe bestar av 256 plan. Hvert plan igjen er delt opp i 256256 posisjoner for tegn. Dette gir oss 4294967296 mulige tegn, hvilket burde dekke behovet en viss tid fremover.3 Standard- en er med andre ord pa 4 oktetter, 32 bit. Mesteparten av posisjonene er reservert inntil videre.
Plan 00 i gruppe 00 kalles BMP, Basic Multilingual Plane. BMP kan benyttes for seg selv som en 16-bits standard, men skal da benevnes UCS-2. Nar ISO 10646 blir kalt en 16-bits standard er det strengt tatt denne lille delen som det refereres til. I BMP inngar blant annet ISO 646 IRV og Latin-1 fra ISO 8859 i de frste 256 posisjonene (som kalles celler), dog uten kontrolltegn.
Ofte benyttes betegnelsen Unicode om ISO 10646. Dette er ikke helt korrekt.
Unicode er betegnelsen paimplementasjonsniva3 av standarden. Niva1 skal ikke inneholde kombinerte tegnsekvenser (eksempelvis to tegn efter hverandre som skal utgjre ett tegn), og heller ikke tegn fra blokken 313016{318F16. Pa implementasjonsniva 2 er det ikke lov med bestemte kombinerte tegn. Pa niva 3 er alle tegn (kombinerte og ikke) lovlige. Hittil har Unicode i praksis blitt brukt om BMP pa niva 1 med 16-bits koding, altsa UCS-2.
2.2 Industristandarder
2.2.1 PC-er og IBMs mange standarder
IBM har i arenes lp introdusert ere standarder for koding av tegn. Mest kjent (og hatet) er kanskje EBCDIC, Extended Binary Coded Decimal Inter- change Code. Denne nnes i forskjellige varianter til bruk i forskjellige land og for forskjellige sprak. EBCDIC benyttes fortrinnsvis paIBM stormaskiner og minimaskiner.
LATEX benyttes i en viss utstrekning pa IBM-kompatible PC-er. Disse be- nytter seg av et system med sakalte kodesider (code pages). Et tegn er representert med en verdi, eller bitmnster. Avhengig av hvilken kodeside som er aktiv pa det gjeldende tidspunkt, vil den graske fremstillingen av tegnet variere. Kodesidene bygger pa ASCII-standarden, men er utvidet til
3Det er egne omrader beregnet pa privat bruk, sa her kan man legge inn sine egne kraketr!
2.3. STANDARDER TILBRUKMED L A
T
E
X 19
256 tegn, og har ogsagraske symboler i de frste 32 posisjonene. Tabell A.1, pa side 108, viser den mest brukte kodesiden.
En PC har normalt en bestemt kodeside i maskinvaren. Dette er gjerne nr 437, beregnet pa amerikansk bruk. Andre kodesider ma lastes inn av brukeren. Svrt ofte har det vist seg at lasting av kodesider ikke blir gjort riktig. Hvis sa ikke skjer, blir kodesiden i maskinvaren benyttet. I den norsk-danske kodesiden (nr 865) og den erspraklige (850) er de srnorske bokstavene denert. Bokstavene<> og<A> og de sma versjonene nnes ogsa i kodeside 437. <> og <> derimot nnes ikke i denne, som har Y og c i disse posisjonene. Dersom PC-en ikke laster kodesider korrekt, kan resultatet ofte bli at man har <Aa>, men ikke <>. Dette skulle vre et kjent problem for PC-brukere.4 Kodesider er device-avhengig. Dette betyr at det kan vre forskjellige kodesider for eksempelvis skjerm og skriver.
Tabellene A.2 og A.3, pa sidene 109 og 110, viser den norsk-danske og den erspraklige kodesiden.
Microsoft Windows 3.x [Mic92] benytter seg av den sakalte utvidede ANSI standarden. Denne er et supersett av Latin-1, med utvidelser i gruppene 000{037 og 200{237. Tabell A.4, pa side 111, viser den utvidede ANSI- standarden. Windows NT [Cus93] benytter seg av Unicode.
2.2.2 Macintosh
Tabell A.5, pa side 112, viser tegnsettet pa Macintosh (Mac). Mac har sin egen standard. Utvalget av tegn varierer sterkt fra font til font pa Mac-er.
2.2.3 Adobes StandardEncoding
Adobe har ogsa sin egen sakalte <StandardEncoding> til bruk for Post-
Scrip t. Det kan her ogsa vre varierende utvalg av tegn i forskjellige fon- ter. PostScript benyttes pa mange forskjellige maskiner. Maskiner som benytter en annen koding enn Adobes vil kunne fa andre tegn enn forventet i sine dokumenter.
Det er i PostScript mulig a denere andre kodinger (kodingsvektorer).
Latin-1 er innebygget, slik at denne relativt lett kan benyttes. Tabell A.6, pa side 113, viser Adobes StandardEncoding.
2.3 Standarder til bruk med L
ATEX
LATEX produserer DVI-ler. Knuth [Knu87b] nsket at disse skulle vre uavhengige av hva slags maskin LATEX kjres pa, og ogsauavhengige av hva slags maskin som til slutt skal skrive ut dokumentet. Grunnlaget for LATEX'
4Det gar ogsaet rykte som sier at det var feil i de frste utgavene av kodeside 865, som altsaskulle inneholde<>, men som var blir utelatt. Det har ikke vrt mulig abekrefte disse ryktene | Microsoft Norge nekter a svare pa sprsmal om dette.
20 KAPITTEL 2. TEG NSETTOG KOD INGAVTEGN
00x 02x 04x 06x 10x 12x 14x 16x
0 ; 0 @ P ` p
1 ! 1 A Q a q
2 " 2 B R b r
3 # 3 C S c s
4 $ 4 D T d t
5 % 5 E U e u
6 & 6 F V f v
7 ' 7 G W g w
0 ( 8 H X h x
1 ) 9 I Y i y
2 * : J Z j z
3 + ; K [ k {
4 , < L \ l |
5 - = M ] m }
6 . > N ^ n ~
7 / ? O _ o
Tabell 2.5: TEX Text koding. I de to frste kolonnene er det plassert greske tegn, ligaturer, aksenter og<utenlandske>tegn. Vi ser ogsaendringer fra ASCII-standarden i posisjonene 074, 076, 134, 137, 173{175 og 177.
Tabellen vises her med fontencmr11.
koding er ASCII. LATEX har en bestemt intern standard for hva en bestemt verdi skal bety. Det er denne verdien som lagres i DVI-len. Hvis vi taster inn bokstaven<A>paen datamaskin, trenger ikke denne aha koding tilsvarende ASCII-verdien 65. Uansett vil LATEX oversette dette til 65 nar tegnet skal representeres i DVI-len. LATEX vil altsa avhengig av hvilken type maskin den er installert pa, konvertere til ASCII internt. Saledes vil en DVI-l alltid vre entydig. Utskrift av DVI-len krever konvertering til skriverens format.
Omkoding av tegn fra TEX-ler til DVI-ler skjer eksempelvis i en versjon av TEX beregnet pa PC-er, nemligemTEX.
2.3.1 TEX Text og andre TEX-kodinger
Sammen med LATEX nnes det en samling med fonter, kalt Computer Mo- dern. Disse fontene er tilpasset LATEX og nnes med ymse innhold, bade med vanlige bokstaver og med matematiske symboler. Det er spesielt fonte- ne med vanlige bokstaver og vanlige tegnsettingssymboler, som interesserer oss. Disse fontene er kodet med det Knuth kaller TEX Text. Kodingen byg- ger pa ASCII-tabellen, men har fatt inn graske symboler og bokstaver i de frste 33 posisjonene. Videre er tegnene" < > \ _ { | }erstattet med andre symboler som benyttes oftere i vanlig tekst. Tabell 2.5 viser kodingen til TEX Text.
Det nnes variasjoner over TEX Text-kodingen. Kursiv-varianten, Computer