Jorin jutut / TeX, LaTeX ja METAFONT

Oma kirjasin METAFONT-järjestelmällä

Tämä kirjoitus on pieni esimerkki oman fontin tekemisestä LaTeX -tiedostossa käytettäväksi. Kirjoitus on tehty, koska vastaavaa suomenkielistä esimerkkiä ei ollut; esimerkki on toimiva, mutta ei varmasti kaunein tapa hoitaa asia.

Pieni esimerkki:

Ladattavat tiedostot:

Käännösohje Linux-jakeluun jossa tetex-paketti:

  1. Käännä kirjasintiedosto oikeaan muotoon:
    mf '\mode=ljfour; mode_setup; input kolmiot.mf'
  2. Käännä LaTeX-esimerkki normaalisti:
    latex esimerkki.tex

Kirjasimen käännön tuloksena syntyi kolmiot.tfm -tiedosto. Sen tulee sijaita samassa hakemistossa kuin käännettävän LaTeX -tiedoston.

Käännösohje Windowsiin:

  1. Asenna MikTeX ja TeXnicCenter.
  2. .tex -tiedoston kääntö kääntää .mf -tiedoston automaattisesti.

Selitystä merkistä

Kirjasintiedosto kolmiot.mf näyttää tältä (toinen merkki on jätetty pois tästä):

1.  u#:=4/9pt#;
2.  mode_setup;
3.  define_pixels(u);
4.    beginchar(65,13u#,16u#,5u#);"Avaava kolmio";
5.    z1=z3=(0,-4.5u);
6.    z2=(7u,16u);
7.    z4=(6u,-4.5u);
8.    penpos1(u,0);
9.    penpos2(u,0);
10.   penpos3(u,90);
11.   penpos4(u,90);
12.   penstroke z1e..z2e;
13.   penstroke z3e..z4e;
14. endchar;
15. end

beginchar-rivillä kerrotaan ensin mikä merkki on kyseessä (tässä 65, joka tarkoittaa A-kirjainta) ja sitten kirjasimen "korkeus", leveys ja "syvyys". Korkeudella tarkoitetaan peruslinjan (esim. ison L-kirjaimen vaakaviiva on peruslinjalla) ja yläreunan etäisyyttä. Syvyys tarkoittaa peruslinjan ja alareunan etäisyyttä, aluetta jossa esimerkiksi pienten kirjainten g, j, q, ja y alaosat ovat.

Merkki koostuu kahdesta viivasta. Ensimmäinen vedetään vasemmasta alakulmasta vinosti ylös, toinen samasta kulmasta suoraan oikealle. penpos-rivit viittaavat "kynän" paksuuteen ja kulmaan. Mallin mukaan on helppo tehdä uusia merkkejä, jotka koostuvat suorista viivoista.

Selitystä merkin käytöstä

Tekstitilassa merkin käyttöönotto on helppoa, ja vaatii vain kolme riviä:

\font\kolmiokirjasin=kolmiot

\def\avaakolmioteksti{{\kolmiokirjasin{A}}}
\def\suljekolmioteksti{{\kolmiokirjasin{B}}}

Ensin ladataan ao. kirjasin .tfm -tiedostosta newfont-komennolla, sitten otetaan kaksi tämän kirjasimen merkkiä käyttöön ja annetaan niille nimet avaakolmio ja suljekolmio.

Kaavatilassa tehtävä on jo vaativampi. Tekstitilaan voidaan ottaa merkki helposti, mutta kaavatilaa varten joudutaan luomaan merkkiluokka. Seuraavia rivejä ei toisaalta tarvitse ymmärtää, riittää että kopioi ne:

\newfam\matikkakolmiot

\textfont\matikkakolmiot=\kolmiokirjasin
\font\kolmiopieni=kolmiot scaled 700
\font\kolmiotosipieni=kolmiot scaled 500

\scriptfont\matikkakolmiot=\kolmiopieni
\scriptscriptfont\matikkakolmiot=\kolmiotosipieni

\def\avaakolmio{{\fam \matikkakolmiot A}}
\def\suljekolmio{{\fam \matikkakolmiot B}}

Aiemmin (tekstitilan kohdalla) oli jo otettu käyttöön ao. kirjasin, jonka nimeksi tuli 'kolmiokirjasin'. Kaavatilaa varten jatketaan luomalla uusi merkkiluokka nimeltä 'matikkakolmiot'. Tähän luokkaan sijoitetaan ensin tavanomainen kirjasin komennolla \textfont. Tämän jälkeen määritellään ensin pari uutta kirjasinleikkausta, 'kolmiopieni' ja 'kolmiotosipieni', jotka saadaan samasta kolmiot.tfm -tiedostosta pienentämällä sen kokoa scaled -komennolla. Nämä "uudet" kirjasinleikkaukset sijoitetaan 'kolmiokirjasin' -merkkiluokkaan ala- ja yläindeksejä ja 2. tason indeksejä varten. Lopuksi enää määritellään avaakolmio- ja suljekolmio-komennot tarkoittamaan oikealla merkkiluokalla kirjoitettua oikeaa merkkiä.

Järjestelmä on työläs, koska TeX ei automaattisesti esimerkiksi luo yläindeksejä pienentämällä ao. merkkiä. Toisaalta tämän ansiosta kirjasimia voi säätää vapaammin - esimerkiksi isompian kaarisulkeitahan ei luoda vain mekaanisesti muuttamalla merkin kokoa, vaan myös suljemerkin muoto muuttuu.

Lisätietoa

Suomeksi ei tiettävästi ole lisätietoa aiheesta. Englanniksi on olemassa kohtuullinen METAFONT tutorial. Sen ensimmäinenkin esimerkki on kuitenkin aika monimutkainen (mikä onkin pääsyy siihen, että nyt lukemasi teksti on kirjoitettu).

Kirjoista paras lienee itsensä Donald Knuthin kirjoittama The METAFONTbook.