Fontit kuntoon Linuxissa


Yleistä, Fontpath eli polku, josta fontit löytyvät, Isommat fontit näkyviin, TrueType-fontit, fonts.alias-tiedosto

Yleistä

Kun Linuxin saa asennettua, saattaa ensimmäistä kertaa Linuxia katselevalle ja Windowsiin tottuneelle olla järkytys se, miltä näyttävätkään Linuxin oletusfontit: pieniltä, epätarkoilta ja hankalalukuisilta. Tähän ei kuitenkaan tarvitse tyytyä, sillä asialle voi tehdä jotain. Lisäksi Linux ymmärtää täysin Windowsista tutut TrueType-fontit, eli on täysin mahdollista kopioida Windows-puolelta hyväksihavaitsemansa fontit myös Linuxiin ja käyttää niitä myös siellä.

Tämä sivu perustuu mini-HowTo-dokumenttiin nimeltään "XFree86 Font Deuglification Mini HOWTO", joka löytyy ainakin http://www.tldp.org:sta. Dokumentin alkuperäinen osoite on http://feenix.eyep.net/ldp/fdu/index.html. Ilmeisesti tätä dokkaria ei kuitenkaan enää päivitetä, mutta ensin mainitusta linkistä löyttä Font-HowTo:n, jossa käsitellään samoja asioita.

Huomautan tässä yhteydessä, että tätä sivua ei ole päivitetty sisällöltään aikoihin, joten tämä saattaa olla hieman epäkuranttia kaikilta osin...


Fontpath eli polku, josta fontit löytyvät

Jotta fontit olisivat käytettävissä, ne on asennettava johonkin hakemistoon. Nämä hakemistot määritellään sitten jossain asetustiedostossa. Osa distribuutioista, kuten RedHat, käyttävät jotakin ns. fonttipalvelinta, jolloin fonttien polut löytyvät tämän palvelimen asetustiedostosta. Jos taas palvelin ei ole käytössä, ovat fonttipolut XF86Config-tiedostossa (/usr/X11/lib/X11/XF86Config, tosin tämäkin paikka hieman vaihtelee käytetyn distribuution mukaan) Täällä Files-osiosta löytyvät, missä hakemistossa ovat millaisetkin fontit, esimerkiksi jotain tällaista:

FontPath        "/usr/X11R6/lib/X11/fonts/misc/"
FontPath        "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath        "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi/"

RedHat käyttää xfs-fonttipalvelinta, joten sieltä fonttilista löytyy tiedostosta /etc/X11/fs/config. Tähän tiedostoon on viite edellämainitussa /usr/X11/lib/X11/XF86Config-tiedostossa. Palvelimen asetustustiedostossa sama rivi kuin yllä näyttäisi tältä:

catalogue = /usr/X11R6/lib/X11/fonts/misc,
            /usr/X11R6/lib/X11/fonts/75dpi,
            /usr/X11R6/lib/X11/fonts/100dpi,
            /usr/X11R6/lib/X11/fonts/Type1,
            /usr/X11R6/lib/X11/fonts/Speedo

Tällaisessa palvelinversiossa voidaan lisätä fonttien polkuja kahdella tavalla: joko kirjoittamalla editorilla tuohon tiedostoon jatkoksi uusi polku tai sitten chkfontpath-ohjemalla.

Mistä sitten tiedät, kumpi järjestelmä on käytössä? Jos käytössä on fonttipalvelin (kuten RedHatissa), löytyy XF86Config-tiedostosta seuraava rivi Files-osiosta:

 FontPath   "unix/:7100" 

Joissakin Linux-versioissa saattaa 7100:n tilalla saattaa olla luku -1.


Isommat fontit näkyviin

Yleensä asennuspaketit asentavat oletusfonteiksi 75dpi-kokoiset fontit. Jos monitori on suuri ja käytetään isoja resoluutioita, nämä fontit saattavat näyttää erittäin pieniltä. Tähän on ratkaisuna se, että asennetaan joko jo asennusvaiheessa tai sitten tällä kohdalla hieman isommat, 100 dpi-fontit. Jos näiden asennus on tehty jo käyttöjärjestelmän asennusvaiheessa, nämäkin näkyvät jo fonttipolussa (ks. yllä). Kuitenkin nämä ovat polussa vasta 75dpi-fonttien jäljessä. Käytetään siis editoria (esim. pico, vi, emacs, ...) ja muutetaan nämä toisinpäin:

FontPath        "/usr/X11R6/lib/X11/fonts/misc/"
FontPath        "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath        "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi/"

Jo pelkästään tämä operaatio aiheuttaa sen, että fonttien näkyminen parantuu. Kuitenkin fontit ovat rumat, joten parannetaan niitä tekemällä niistä skaalautumattomat (unscaled):

FontPath        "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/Type1"
FontPath        "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath        "/usr/X11R6/lib/X11/fonts/misc"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"

Esimerkissä on siis käytössä sekä skaalautuvat ja skaalautumattomat fontit. Kolme viimeistä riviä voidaan jättää pois, jos unscaled-fontit riitävät.

RedHatissa saman operaation voi tehdä myös editorilla config-tiedostoon.


TrueType-fontit

Windows käyttää ns. TrueType-fontteja, joiden kokoa voidaan muuttaa lähes rajatta eikä niiden tarkkuus kärsi. Linux osaa myös käyttää näitä fontteja hyväkseen, joten kopioidaan nämä fontit myös Linuxiin.

Jos Linux on asennettu Windowsin rinnalle, voidaan mountata Windows-osio Linuxiin ja suorittaa kopiointi näin:

1. Kirjaudutaan järjestelmään root-tunnuksella ja luodaan fonteille oma hakemisto, vaikkapa näin:

mkdir -p /usr/local/share/fonts/ttfonts

-p -optio luo automaattisesti kaikki ylemmänkin tason hakemistot, jos niitä ei ole olemassa.

2. Nyt mountataan Windows-levy järjestelmään, jos ei olla sitä tehty jossain aiemmin:

mount -t vfat /dev/hda1 /mnt/cee

Tässä esimerkissä Windows sijaitsee /dev/hda1-osiolla ja tämä osio mountataan /mnt-hakemiston alla olevaan cee-nimiseen hakemistoon.

3. Mennään yllä luotuun hakemistoon:

cd /usr/local/share/fonts/ttfonts

4. Nyt kopioidaan kaikki TrueType-fontit yllä luotuun hakemistoon (TT-fonttien tarkennin on .ttf Windowsissa):

cp /mnt/cee/windows/fonts/*ttf .

Yleensä Windowsin fontit ovat Windows-hakemiston alla olevassa fonts-hakemistossa. Tarkista kuitenkin asia.

Huom! Windowsin mukana tuleva "Monotype Sorts"-niminen fontti (mtsorts.ttf) aiheuttaa joskus sen, ettei ttmkfdir-komento toimi! Poista tämä fontti tarvittaessa ennenkuin jatkat!

5. Tämän jälkeen pitää lisätä ylläluotu fonttipolku oikeaan tiedostoon. Jos käytössä ei ole fonttipalvelinta, lisätään fonttipolku XF86Config-tiedostoon:

FontPath        "/usr/local/share/fonts/ttfonts"
FontPath        "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
FontPath        "/usr/X11R6/lib/X11/fonts/Type1"
FontPath        "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath        "/usr/X11R6/lib/X11/fonts/misc"
FontPath        "/usr/X11R6/lib/X11/fonts/100dpi"
FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"

RedHatissa ja muissa palvelinta käyttävissä ohjelmissa on vielä edessä pari viritystä, että saadaan fontit kuntoon. Ensiksi lisätään fonttipolkuun TT-fonttien sijainti. Se käy editorilla tai sitten aiemmin mainitulla chkfontpath-ohjelmalla:

chkfontpath --add /usr/local/share/fonts/ttfonts

Nyt fontit ovat fonttipolussa ylläolevan esimerkin mukaisesti:

catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
            /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
            /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
            /usr/X11R6/lib/X11/fonts/Type1,
            /usr/X11R6/lib/X11/fonts/Speedo,
            /usr/X11R6/lib/X11/fonts/misc,
            /usr/X11R6/lib/X11/fonts/100dpi,
            /usr/X11R6/lib/X11/fonts/75dpi,
            /usr/local/share/fonts/ttfonts

Seuraavaksi pitää tehdä pieni konversio, sillä fonttiserveri ei ymmärrä kuin sellaisia tiedostoja, joiden nimet ovat kokonaan pienillä kirjaimilla. Windowsista kopioitaessa fontit alkoivat isolla kirjaimella. Tämän toimenpiteen voi tehdä alla olevalla skriptillä:

#!/bin/sh
#
## -------- convert upper to lower case ---------
 
ls * | while read f
  do
    if [ -f $f ]; then
      if [ "$f" != "`echo \"$f\" | tr A-Z a-z`" ]; then
       #Note that 'This' will overwrite 'this'!
       mv -iv "$f" "`echo \"$f\" | tr A-Z a-z`"
      fi
    fi
  done

 ## eof"

Välilyönnit pitää myös poistaa fonttien nimistä, jos sellaisia niissä sattuu olemaan.

Nyt pitää vielä luoda kaksi tiedostoa, fonts.scale ja fonts.dir, jotta fontit olisivat käytetävissä:

ttmkfdir -o fonts.scale
mkfontdir

Nämä luovat tarpeelliset fonttiluettelot hakemistoon.

Tässä vaiheessa voidaankin käynnistää xfs uudelleen ja katsoa, ollaanko hommassa onnistuttu:

/etc/rc.d/init.d/xfs restart
xset +fp /usr/local/share/fonts/ttfonts
xset fp rehash

Jos ei näy mitään, CTRL-ALT-BACKSPACE:lla X uudelleen käyntiin ja nyt pitäisi fonttiluetteloissa näkyä myös TrueType-fontit.


fonts.alias-tiedosto

Kun yllämainitut operaatiot on tehty ja ruvetaan käyttämään vaikkapa Netscape-ohjelmaa. Tällöin huomataan, ettei Netscape osaa näyttää asetuksissaan kuin fonttikoot 0 ja 12. Tämä johtuu siitä, ettei Netscape osaa käyttää kunnolla fonts.scale-tiedostoa. Tähän auttaa fonts.alias-tiedoston luominen.

fonts.scale-tiedoston sisältö näyttää tällaiselta:

arial.ttf   -monotype-Arial-medium-r-normal--0-0-0-0-p-0-ascii-0
arial.ttf   -monotype-Arial-medium-r-normal--0-0-0-0-p-0-fcd8859-15
arial.ttf   -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-15
arial.ttf   -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-1

Määrittelyissä ei siis ole mitään kokoja, sillä fontit ovat täysin skaalattavia. Kuitenkin eräät ohjelmat, kuten juuri yllä esitelty Netscape, eivät tätä ymmärrä. Näille ohjelmille pitää luoda tiedosto nimeltään fonts.alias:

 -monotype-Arial-medium-r-normal--6-60-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--7-70-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--8-80-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--10-100-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--9-90-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--11-110-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--10-100-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--11-110-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--12-120-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--13-130-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--13-130-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--14-140-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--14-140-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--15-150-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--15-150-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--18-180-0-0-p-0-iso8859-1 \
            -monotype-Arial-medium-r-normal--18-180-75-75-p-0-iso8859-1

 -monotype-Arial-medium-r-normal--24-240-0-0-p-0-iso8859-1 \
            -monotype-Arial-medium-r-normal--24-240-75-75-p-0-iso8859-1

Huomaa, että rivit on katkaistu lukemisen helpottamiseksi (kenoviiva kertoo, että seuraava rivi on edellisen jatke).

Täällä määritellään eri kokoisille fonteille vastinkoko. Esimerkiksi ensimmäinen rivi:

 -monotype-Arial-medium-r-normal--6-60-0-0-p-0-iso8859-1 \
             -monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1

tarkoittaa, että 6 (--6- ilmaisee koon) pisteen fontti nimeltään "Arial" näytetään 9:n pisteen fontilla. Miksi sitten samalla kasvatetaan fonttia? Siksi, että Linuxissa fontit ovat oletusarvoisesti varsin pieniä.

Tämän tiedoston voi tietenkin luoda käsinkin, mutta se on varsin työlästä, varsinkin kun fontteja on paljon. Osoitteesta http://home.c2i.net/dark/linux.html#ttf löytyy kuitenkin python-kielinen skripti, joka luo käyttämistäsi TrueType-fonteista fonts.alias-tiedoston.

Seuraavaksi varmistetaan, että Netscape on kiinni ja käynnistetään fonttiserveri uudelleen:

/etc/rc.d/init.d/xfs restart

Ja nyt pitäisi Netscapen fonttimääritykset toimia ja voit valita haluamasi fonttikoon valmiista listasta.

Netscapen fonttikoot
Alkuun