[OpenBSD]

Anti-aliasing en TrueType Fonts op OpenBSD

Inhoudsopgave


xterm screenshot

xterm(1) met aliased en anti-aliased lettertypes zij aan zij:
[Standaard en anti-aliased xterm]

Konqueror screenshot

Nog steeds niet overtuigd? Laten we hier eens naar kijken.

De Konqueror Web browser met aliased en anti-aliased lettertypes zij aan zij:

[Standaard en anti-aliased Konqueror]

Hoe werkt het?

De anti-aliasing berekeningen gebeuren door FreeType, een vrije lettertypemotor die opgenomen is als onderdeel van X.org. Bijkomend bevat X.org een extensie genaamd Xft(3), de X FreeType extensie, die interageert met FreeType voor lettertypeweergaveoperaties. Xft interageert ook met een extensie genaamd Xrender, de X Render extensie, die de berekeningen omzet in digitale beelden.

Wat moet er gebeuren om het te laten werken?

OpenBSD levert X.org met de X Render extensie ingeschakeld. Om ze te kunnen gebruiken, moet uw X server (video kaart driver) het ondersteunen. Sommige drivers werden nog niet omgezet naar de 'fb' code en kunnen daardoor de Render extensie, die nodig is, niet gebruiken.

U kan uw kaart controleren door dit uit te voeren:

$ /usr/X11R6/bin/xdpyinfo | grep RENDER RENDER
Als het niet "RENDER" zegt in de extensielijst, zal u moeten wachten tot iemand de extensie voor die kaart implementeert.

De volgende stap is om enkele TrueType lettertypes af te halen en te installeren. Er is een verzameling van populaire lettertypes samengesteld en deze is beschikbaar in de OpenBSD ports tree, in /usr/ports/x11/msttcorefonts. Ze kunnen geïnstalleerd worden door het volgende te doen:

# cd /usr/ports/x11/msttcorefonts # make # make install
Op dit ogenblik worden de instructies om nieuwe lettertypes in X te registeren getoond in een een andere sectie.

Welke toepassingen kunnen het gebruiken?

Gelijk welke toepassing die interfacet met de Xft library kan anti-aliased lettertypes weergeven. Dit omvat QT 3.x (KDE 3.x) en GTK+2 (Gnome 2.x) toepassingen. Standaard X programma's die deze interface gebruiken zijn o.m. xterm(1), xditview(1), xfd(1) en enkele andere.

xterm

xterm kan aangeroepen worden met argumenten die Xft weergave van lettertypes inschakelen:
$ xterm -fa 'Andale Mono' -fs 14
Deze opties zijn:
Optie Resource Betekenis ------------------------------------------- -fa XTerm*faceName Lettertypenaam -fs XTerm*faceSize Lettertypegrootte
Als alternatief kunnen X resources gebruikt worden. Zij worden standaard geplaatst in $HOME/.Xdefaults en worden beheerd via het xrdb(1) programma.

Sommige TrueType lettertypes (zoals Arial, Georgia en Verdana, bijvoorbeeld) werken niet goed in xterm. Dit is zo omdat xterm de maximale breedte van alle tekens in het gespecificeerde lettertype gebruikt om elk teken weer te geven. Bij een monospace lettertype zijn de breedtes van alle tekens gelijk, en werkt alles. Bij een proportioneel lettertype, zoals degene die net vermeld werden, past xterm elk teken in een cel met de grootte van de maximumbreedte, wat zorgt voor onleesbare grote ruimtes tussen tekens.

QT 3.x/KDE 3.x toepassingen

Toepassingen die QT 3.x gebruiken, zoals gelijk welke van de KDE 3.x toepassingen, waaronder Konqueror, kunnen Xft weergave gebruiken nadat de volgende waarde ingesteld is in $HOME/.qt/qtrc onder de [General] sectie.
useXft=true
Het GUI Qt configuratieprogramma, qtconfig (of qtconfig-mt indien de multi-threaded flavor van Qt geïnstalleerd is), kan deze waarde instellen via de Enable Anti-aliased Font Support checkbox onder de Fonts tab.

GTK+2 toepassingen

GTK+2 toepassingen vereisen dat de GDK_USE_XFT omgevingsvariabele ingesteld is. GDK is de backend die GTK gebruikt om tekenoperatiedetails te isoleren, en zal zijn lettertypeweergaveoperaties naar Xft verschuiven wanneer het deze omgevingsvariabele detecteert.

Het volgende zal het GTK+2-gebaseerde instant messaging programma Gaim opstarten, beschikbaar in /usr/ports/net/gaim:

$ env GDK_USE_XFT=1 gaim

Hoe kan ik handmatig lettertypes toevoegen?

Een TrueType lettertype toevoegen "aan X" vereist het registreren van het lettertype bij zowel de X server als fontconfig(3), aangezien beide afzonderlijk op de hoogte blijven van lettertypes. In feite worden bepaalde types van lettertypes alleen herkend door de gewone X server, en andere alleen door fontconfig. TrueType lettertypes zijn een type dat door beide herkend wordt.

De X server

Font paths (dit zijn directories die lettertypes bevatten) worden beheerd ofwel rechtstreeks door X in /etc/X11/xorg.conf ofwel door een afzonderlijk programma zoals xfs(1). Om een lettertype toe te voegen, voegt u de directory waar het zich bevindt toe aan /etc/X11/xorg.conf:
Section "Files" FontPath "/usr/X11R6/lib/X11/fonts/TTF/" FontPath "/usr/local/lib/X11/fonts/myfonts/" ... EndSection
Of, indien u xfs gebruikt, voegt u de directory toe aan /etc/X11/fs/config:
catalogue = /usr/X11R6/lib/X11/fonts/TTF/, /usr/local/lib/X11/fonts/myfonts/
Vervolgens moet de X server bewust gemaakt worden van het lettertype in de "font index" van die directory, meer bepaald het bestand fonts.dir. Traditioneel werden alle beschikbare groottes van een lettertype opgesomd in de "font index", gegenereerd door het mkfontdir(1) commando. Maar aangezien TrueType lettertypes naar gelijk welke grootte geschaald kunnen worden, is het opsommen van elke mogelijke grootte niet vereist. In plaats daarvan worden schaalbare lettertypes opgesomd in het bestand fonts.scale dat herkend wordt door mkfontdir bij het genereren van fonts.dir indices.

Om een fonts.scale bestand op te bouwen, kan het programma mkfontscale(1) gebruikt worden:

# cd /usr/local/lib/X11/fonts/myfonts # /usr/X11R6/bin/mkfontscale # /usr/X11R6/bin/mkfontdir
Tenslotte kan, om de veranderingen toe te passen op de huidige X sessie, in plaats van X te herstarten, het volgende commando gebruikt worden om de momenteel geregistreerde font paths opnieuw na te kijken op veranderingen:
$ xset fp rehash
Of, indien een nieuw font path toegevoegd werd:
$ xset +fp /usr/local/lib/X11/fonts/myfonts
Indien xfs wordt gebruikt, moet in plaats hiervan het volgende gebruikt worden:
# pkill -HUP xfs

fontconfig

De andere component van X die bewust gemaakt moet worden van een nieuw lettertype is fontconfig, gebruikt door Xft om lettertypes te vinden. fontconfig gebruikt het bestand /etc/fonts/fonts.conf voor zijn system-wide hoofdconfiguratie, maar aangezien dit bestand zal vervangen worden bij opeenvolgende X upgrades, is het beter in plaats hiervan /etc/fonts/local.conf te gebruiken om system-wide veranderingen te beheren.

Voeg de directory die het lettertype bevat toe aan dit configuratiebestand:

<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "/etc/fonts/fonts.dtd"> <fontconfig> <dir>/usr/local/lib/X11/fonts/myfonts</dir> </fontconfig>
Of, indien slechts één gebruiker lettertypes wil toegevoegd zien aan zijn/haar sessies, kan het bovenstaande in zijn/haar $HOME/.fonts.conf bestand geplaatst worden.

Merk op dat fontconfig recursief alle subdirectories zal onderzoeken op beschikbare lettertypes terwijl de gewone X server dit niet zal doen.

Nadat de directory is toegevoegd, zal de "font cache" voor de directory opnieuw gegenereerd moeten worden. Het volgende commando beveelt fontconfig om de "font caches" voor alle directories gespecificeerd in zijn configuratie opnieuw op te bouwen:

# /usr/X11R6/bin/fc-cache -v
Deze wijzigingen zullen van kracht worden in de huidige X sessie, dus X zelf zal niet herstart moeten worden, maar lopende toepassingen wel.
[terug] www@openbsd.org
$OpenBSD: truetype.html,v 1.2 2005/09/20 07:30:01 saad Exp $