Messa a punto dei fonts

Da Wiki di NetBSD Italia.

Questo articolo non rispetta le linee guida per i contenuti per tanto necessita di essere wikificato (ovvero reso conforme sulla base di queste regole). Offri il tuo contributo per migliorare questo wiki secondo le convenzioni di NetBSD-it.

Indice

Introduzione

Questa semplice guida è fatta per tutte quelle persone che non sono soddisfatte dei loro fonts dopo una normale installazione di xorg. Seguendo questa guida potrai imparare come migliorare la visualizzazione dei font sul tuo monitor CRT/LCD.

Ma perché mi serve questa guida?

I font sui computer in generale, e su bsd o linux in particolare sono un argomento un pò confuso. Ci sono tantissimi formati di font, dai vecchi bitmap ai nuovi font TrueType. A rendere le cose ancora più difficili è il fatto che moltissimi fonts hanno problemi di licenze nel caso si voglia abilitare l'antialiasing, cosa che causa molti problemi ai sistemi operativi liberi come NetBSD. Microsoft Windows e Mac Os X visualizzeranno sempre meglio i font di linux o bsd quando il dpi è inferiore a 96 (quando è superiore non ci sono differenze sostanziali). Ovviamente l'utente (una volta capite ed accettate le licenze) può configurare in modo opportuno i font, migliorando così la leggibilità, ottenendo in questo modo un risultato del tutto analogo a Window e Mac OS. Non meno importante molti programmi come ghostscript,mozilla,openoffice,tex (e altri), hanno le loro idee riguardo i font e la loro configurazione, quindi devono essere configurati a parte per una corretta visualizzazione.

NOTA: In molti casi, grazie ai continui miglioramenti dell'auto hinter di FreeType (ci torneremo dopo) e grazie a numerosi contributi di font della comunità open source (un esempio tra tutti i Liberation Fonts sviluppati dal team Red Hat) si può rendere più che gradevole l'aspetto dei font e senza aver problemi di licenze, utilizzando solo software completamente libero.

Informazioni sull'Hinting

L'hinting è una parte del processo di rendering di un font; in generale, l'hinting guida il rasterizer così che esso produca un font dall'aspetto migliore sullo schermo (soprattutto con i font di piccole dimensioni). A causa di possibili problemi di licenza, FreeType ha l'opzione di essere compilato con il TrueType BCI (Byte Code Interpreter), ma di default viene escluso. Senza BCI (il default), FreeType usa il suo proprio 'auto hinter' per migliorare la qualità sullo schermo dei font di piccole dimensioni. L'auto hinter è ancora in fase di sviluppo, e migliora ad ogni nuova release di FreeType. L'auto hinter generalmente produce ottimi risultati, comunque, molte persone ritengono che TrueType BCI produca risultati migliori rispetto all'auto hinter. È buona norma leggere qui [1] riguardo i problemi di licenze di FreeType per poter scegliere liberamente come compilare FreeType.

Compilare freetype2

Su NetBSD c'è l'opzione truetype per abilitare l'hinting nativo BCI. Per chi ha un monitor LCD potrebbe essere una buona idea abilitare anche il subpixel.

NOTA: non è una buona idea abilitare il subpixel su monitor CRT, in quanto causa a xorg un maggior lavoro di rendering senza però trarne alcun beneficio. Per esempio, per abilitarli entrambi è possibile inserire in /etc/mk.conf la riga:

PKG_OPTIONS.freetype2=subpixel truetype

e compilare freetype2:

# cd /usr/pkgsrc/graphics/freetype2
# make install clean

Installare i fonts

Installiamo i principali fonts.

Microsoft's TrueType core fonts:

# cd /usr/pkgsrc/fonts/ms-ttf
# make install clean

pkgsrc vi informerà riguardo una licenza da accettare. Dopo aver ATTENTAMENTE letto la licenza, situata in /usr/pkgsrc/licenses/ms-ttf-license, se decidete di accettarla potete procedere all'installzione, incaso contrario avanzate al prossimo font.

# echo "ACCEPTABLE_LICENSES+=ms-ttf-license" >> /etc/mk.conf
# make install clean

NOTA: si non c'è il font Tahoma, è stato rimosso dai core fonts perché non fa parte dei "core fonts for the web". Se volete a tutti costi il font tahoma potete copiarlo dalla vostra installazione di Windows. Andate sul sito http://corefonts.sourceforge.net/ per maggiori informazioni.

A collection of 79 freely available fonts (including Type 1 PostScript fonts)

# cd /usr/pkgsrc/fonts/freefonts 
# make install clean

Set of free fonts for X11 desktops

# cd /usr/pkgsrc/fonts/artwiz-fonts
# make install clean

Clean fixed width font

# cd /usr/pkgsrc/terminus-font
# make install clean

DejaVu family of TrueType fonts

# cd /usr/pkgsrc/dejavu-ttf
# make install clean

TrueType fonts from RedHat

# cd /usr/pkgsrc/liberation-ttf
# make install clean

Se utilizzi UTF-8: Free X11 fonts (BDF format) for all characters that Emacs can handle

# cd /usr/pkgsrc/intlfonts
# make install clean

Ora terminiamo l'installazione dei fonts:

# mkfontscale /usr/pkg/lib/X11/fonts/TTF
# mkfontdir /usr/pkg/lib/X11/fonts/TTF
# fc-cache -v

Assicurarsi di avere nel proprio /etc/X11/xorg.conf le seguenti righe:

Section "Files"
       FontPath     "/usr/pkg/lib/X11/fonts/TTF/"
       FontPath     "/usr/pkg/lib/X11/fonts/Type1/"
       FontPath     "/usr/pkg/lib/X11/fonts/freefont"
       FontPath     "/usr/pkg/lib/X11/fonts/artwiz/"
       ...
EndSection
Section "Module"
       ...
       Load  "type1"
       Load  "freetype"
       ...
EndSection

Nel caso ora siete in una sessione grafica, invece di riavviare il server grafico, potete scrivere questi comandi per riesaminare i percorsi dei font registrati:

# xset fp+ /usr/pkg/lib/X11/fonts/freefont
# xset fp+ /usr/pkg/lib/X11/fonts/artwiz
# xset fp rehash

Poi inserire file file profile della vostra shell le seguenti variabili d'ambiente:

# antialiasing with GTK/QT
export QT_XFT=1
export GDK_USE_XFT=1

ed aggiungete a ~/.Xdefaults:

xft.antialias: true

NOTA: Per verificare quali fonts sono installati si può utilizzare il comandi fc-list.

Configurare il sistema per usare i nuovi fonts

Ora con i fonts installati bisogna solamente configurare il sistema affinchè li riconosca e li usi. Questi sono i file che bisogna modificare:

/etc/fonts/local.conf e/o ~/.fonts.conf
/etc/X11/xorg.conf 

Dimensione display/DPI

Per avere una corretta dimensione dei font le dimensioni del display devono essere impostate in base ai DPI che preferisci. È importante avere una corretta conoscenza delle dimensioni del tuo schermo, assicurati inoltre se usi un monitor LCD di usare la sua risoluzione nativa (dato che è usata per calcolare il DPI). Nella sezione "Monitor" del tuo /etc/X11/xorg.conf inserisci la dimensione del display in mm:

Section "Monitor"
   ...
 DisplaySize 336 252 # 96 DPI @ 1280x960
   ...
EndSection

Il metodo più semplice è di misurare questi valori con un righello. Per esempio per un monitor da 15 pollici, le dimensioni dovrebbero all'incirca essere 340mm x 270mm, e con un 19 pollici 380mm x 305mm. Questi valori possono anche essere calcolati con una formula. La formula per calcolare il valore di DisplaySize è Larghezza x 25.4 / DPI e Altezza x 25.4 / DPI. Per esempio, se stai eseguendo Xorg con una risoluzione di 1024x768 e vuoi 96 DPI, usa 1024 x 25.4 / 96 e 768 x 25.4 / 96. Un altro modo è di chiedere al server X di calcolarlo per noi. Per farlo bisogna avviare il server X forzando il DPI che vogliamo utilizzare in questo modo:

$ startx -- -dpi 96

In questo esempio ho utilizzato un DPI di 96. Ora si deve aprire un terminale e digitare:

$ xdpyinfo | grep dimension
dimensions:    1280x800 pixels (XXXxYYY millimeters)

Ora bisogna solo modificare DisplaySize utilizzando i valori XXX e YYY. Un ulteriore metodo consiste nell'utilizzare un calcolatore simile a: http://www.raydreams.com/prog/dpi.aspx Basta scegliere una risoluzione ed inserire la diagonale del monitor. Tra tutti questi metodi, vedete voi quale è quello che da risultati migliori per voi. Una volta calcolati i valori, e apportunamente impostato DisplaySize, si può riavviare il server X.

NOTA: Il risultato può essere verificato con questo comando, che dovrebbe ritornare 96x96 punti per pollice se per esempio hai impostato 96 DPI.

$ xdpyinfo | grep -B1 dot

Xft font system

Il file di configurazione globale è /etc/fonts/local.conf, mentre ~/.fonts.conf è il file opzionale utente per la configurazione dei fonts, il quale ha la precedenza su quello globale, eccetto i settaggi riguardo l'anti-aliasing che non possono essere modificati dall'utente.

Non si ha la necessità di settare tutte le directory dei fonts, tranne quelle in posti non-standard (per esempio di fonts installati a mano).

Da notare che entrambi i file sono file XML, e quindi devono essere editati tenendo conto della sintassi XML.

Cominciamo a salvere il file di default


# cp /etc/fonts/local.conf /etc/fonts/local.conf.old


Hinting

Come accennato prima, ci sono due forme di Hinting:

AutoHinter: È quello utilizzato di default da FreeType. Se intendi utilizzare l'auto hinter, molto probabilmente vorrai disabilitare l'autohinting sui font in grassetto (bold font) per evitare che siano visualizzati troppo larghi.

TrueType Byte Code Interpreter (BCI): Se hai compilato FreeType per utilizzare BCI, e vuoi utilizzarlo, allora devi disabilitare l'auto hinter completamente. Assicurati di avere nel tuo /etc/fonts/local.conf o ~/.fonts.conf la seguente riga:

<edit name="autohint" mode="assign"><bool>false</bool></edit>

Nel caso sia già presente basta che cambi true in false. Ci sono problemi di licenze utilizzando BCI, se vuoi evitare questo genere di problemi utilizza l'auto hinter, che è completamente libero.

Sub-pixel rendering

I possibili valori per il sub-pixel rendering sono "none", "rgb", "bgr", "vrgb" and "vbgr". Scegliete quello attato per il vostro monitor LCD, anche se solitamente è "rgb".

Anti-aliasing

Molte persone disabilitano globalmente l'anti-aliasing perché preferiscono escludere o include certe dimensioni di font ai quali l'anti-aliasing deve essere applicato. Questo è un modo di fare che rende i font più simili ai font di default di Windows per esempio. Quando disabiliti l'anti-aliasing assicurati di disabilitare anche il sub-pixel rendering.

Font personali

Se hai i tuoi font che sono in una directory diversa da quella di default, allora probabilmente vorrai aggiungere nel file /etc/fonts/local.conf o ~/.fonts.conf:

<dir>/home/user/extrafonts</dir>

alla fine del file, subito prima di </fontconfig>.

/etc/fonts/local.conf di esempio

WiP

FAQ

Come faccio a far si che le dimensioni dei font di adattino perfettamente al mio DPI?

Aggiungi al tuo ~/.fonts.conf:

    <match target="pattern">
       <edit name="dpi" mode="assign"><double>100</double></edit>
    </match>

Sostituire eventualmente 100, con il tuo DPI.

Come faccio a sostituire un tipo particolare di font con un altro?

Aggiungi al tuo ~/.fonts.conf una cosa del tipo:

<match target="pattern">
    <test name="family"><string>sans-serif</string></test>
    <edit name="family" mode="assign">
        <string>Bitstream Vera Serif</string>
    </edit>
</match>

In questo esempio viene forzato l'utilizzo di Bitstream Vera Serif al posto di sans-serif

Come faccio ad abilitare l'anti-aliasing ma solo per i font più grandi?

Questa è una cosa che potresti voler fare se per esempio usi i font MS TrueType. Aggiungi al tuo ~/.fonts.conf:

    <match target="font" >
    <test compare"more" name"size" qual="any" >
    <double>12</double>
    </test>
    <edit mode"assign" name"antialias" >
    <bool>true</bool>
    </edit>
    </match>
    <match target="font" >
    <test compare"more" name"pixelsize" qual="any" >
    <double>17</double>
    </test>
    <edit mode"assign" name"antialias" >
    <bool>true</bool>
    </edit>
    </match>

Come visualizzare i MS TrueType fonts come su Microsoft Windows?

Questo vale solo se si ha installato fonts/ms-ttf. Se sia utilizza gnome come desktop, si può impostare i font come di seguito:

Application font 	Tahoma 				9 Point
Document font 		Tahoma 				9 Point
Desktop font 		Tahoma 				9 Point
Window Title Font 	Tahoma Bold 			9 Point
Fixed Width Font 	Bitstream Vera Sans Mono 	9 Point

Scaricare http://www.stchman.com/tools/MS_fonts/fontconfig.tbz. In questo file sono presenti dei file XML con dei settaggi per sfruttare meglio i MS TrueType Fonts. Installare così:

# tar -xvjpf ~/fontconfig.tbz -C /etc/fonts/

NOTA:: se i file alias.conf, local.conf, misc.conf, msfonts-rules.conf sono già presenti verranno sovrascritti. È consigliato farne una copia di backup prima di procedere.

File di esempio

/etc/fonts/local.conf

NOTA: questo esempio utilizza l'auto hinter. Se vuoi utilizzare il BCI basta seguire le indicazioni di questa guida

 <?xml version="1.0"?>
 <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
 <!-- /etc/fonts/local.conf file to configure system font access -->
 <fontconfig>

 <!-- Usa l'Autohinter --> 
 	<match target="font">
 		<edit name="autohint" mode="assign"><bool>true</bool></edit>
 	</match>
 	<match target="font">
 		<edit name="hinting" mode="assign"><bool>true</bool></edit>
 		<edit name="hintstyle" mode="assign"><const>hintmedium</const></edit>
 	</match>

 <!-- Disabilita l'Autohinting per i font in grassetto -->
 	<match target="font">
   		<test name="weight" compare="more"><const>medium</const></test>
   		<edit name="autohint" mode="assign"><bool>false</bool></edit>
 	</match>

 <!-- Abilita il sub-pixel rendering -->
 <!-- Rimuovi questo commento se hai un monitor LCD
        <match target="font">
                <test qual="all" name="rgba"><const>unknown</const></test>
                <edit name="rgba" mode="assign"><const>rgb</const></edit>
        </match>
 -->

 <!-- Range di dimensione font ai quali applicare l'Anti Aliasing -->
 	<match target="font">
 		<test qual="any" name="size" compare="more"><double>9</double></test>
 		<test qual="any" name="size" compare="less"><double>14</double></test>
 		<edit name="antialias" mode="assign"><bool>true</bool></edit>
 	</match>

 <!-- e/o disabilita l'Anti Aliasing per un range di dimensioni basate sui pixel.
     Disabilitandolo in entrambi i modi sembra risolvere i problemi con Firefox. -->
 	<match target="font">
  		<test compare="less" name="pixelsize" qual="any"><double>20</double></test>
  		<edit mode="assign" name="antialias"><bool>false</bool></edit>
 	</match>

 <!-- Sostituisci Courier con un font dall'aspetto migliore -->
 	<match target="pattern" name="family">
 		<test name="family" qual="any"><string>Courier</string></test>
 		<edit name="family" mode="assign">
 			<!-- Altre possibili scelte - Courier New, Luxi Mono -->
 			<string>Bitstream Vera Sans Mono</string>
 		</edit>
 	</match>

 <!-- Rifiutare fonts bitmap in favore di font Truetype, Postscript, etc. -->
 	<selectfont>
 		<rejectfont>
 			<pattern>
 				<patelt name="scalable"><bool>false</bool></patelt>
 			</pattern>
 		</rejectfont>
 	</selectfont>

 <!--  Creaiamo degli alias per alcuni dei fonts più conosciuti verso i fonts TrueType disponibili -->
        <alias>
                <family>Times</family>
                <accept><family>Times New Roman</family></accept>
        </alias>
        <alias>
                <family>Helvetica</family>
                <accept><family>Verdana</family></accept>
        </alias>
        <alias>
                <family>Arial</family>
                <accept><family>Verdana</family></accept>
        </alias>
        <alias>
                <family>Courier</family>
                <accept><family>Courier New</family></accept>
        </alias>
 </fontconfig>

~/.fonts.conf

NOTA: questo file utilizza il BCI (disabilita l'autohint), è molto semplice ma funziona molto bene.

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
 <match target="font" >
  <edit mode="assign" name="rgba" >     <const>rgb</const> </edit>
  <edit mode="assign" name="hinting" >  <bool>true</bool>  </edit>
  <edit mode="assign" name="antialias"> <bool>true</bool> </edit>
  <edit mode="assign" name="autohint" > <bool>false</bool> </edit>
  <edit mode="assign" name="hintstyle"> <const>hintfull</const> </edit>
 </match>
</fontconfig>
Strumenti personali