Migliorare l'aspetto dei font

Versione del 27 set 2012 alle 16:01 di BubuXP (discussione | contributi) (Aggiunto metodo alternativo)
Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Stufo del rendering di Firefox, ho cercato un po' in giro ed ho trovato vari spunti per migliorare la resa dei caratteri sul nostro monitor LCD.

Configurazione fontconfig

Se assenti, cosa improbabile, installiamo queste tre librerie:

# apt-get install fontconfig libcairo2 libxft2


Apriamo un terminale con i permessi di root e diamo:

# dpkg-reconfigure fontconfig-config

e rispondiamo nell'ordine Nativo - Sempre - No, poi possiamo dare:

# dpkg-reconfigure fontconfig

e dopo rigeneriamo la cache dei font con:

# fc-cache -fv
$ fc-cache -fv


Ora, con i normali permessi utente, creiamo il file .fonts.conf nella nostra home:

$ nano ~/.fonts.conf

ed inseriamo quanto segue:

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

<!-- Per impostare manualmente il valore DPI
	<match target="pattern">
		<edit name="dpi" mode="assign">
			<double>102</double>
		</edit>
	</match>
-->

</fontconfig>

Salviamo il file e riavviamo X facendo logout e login.

NOTA: dalla versione 2.10 di fontconfig (non ancora disponibile in debian al momento della scrittura) il file ~/.fonts.conf cambierà percorso, diventando ~/.config/fontconfig/fonts.conf (salvo cambiamenti della Debian Fonts Task Force).


Metodo alternativo

Se vi piace il font rendering di Ubuntu, possiamo cercare di imitarlo usando le sue impostazioni.
Ubuntu usa il metodo di configurazione globale creando dei link simbolici delle configuzioni predefinite (contenute in /etc/fonts/conf.avail/) dentro la directory che viene usata per impostare il rendering di fontconfig in assenza di impostazioni utente (ovvero /etc/fonts/conf.d/). Sia le configurazioni predefinite che le impostazioni di partenza di Ubuntu sono diverse da quelle di Debian, motivo per cui i caratteri di Ubuntu già dal primo avvio hanno un bell'aspetto.

Scarichiamo il pacchetto fontconfig-config di Ubuntu, una versione inferiore alla 2.10, perché come già detto questa introduce cambiamenti non compatibili con le versioni precedenti che si trovano attualmente in Debian. L'ultima versione compatibile più aggiornata è questa, altre le trovate nel repo.

Basterebbe installare questo pacchetto in sostituzione di quello presente in Debian per avere già tutto funzionante ma le dipendenze sono molto restrittive e non lo permettono. Quindi procediamo manualmente, cancellando tutto il contenuto di /etc/fonts/ con:

# rm -R /etc/fonts

quindi estraiamo il contenuto del pacchetto con:

# dpkg -X fontconfig-config_2.8.0-3ubuntu9.1_all.deb /

Questo comando andrà a piazzare il contenuto del pacchetto all'interno del file system. Per l'informazione il pacchetto contiene solo le configurazioni in /etc/fonts/ e della documentazione in /usr/share/doc/fontconfig-config e /usr/share/man/man5, basta comunque guardare cosa c'è dentro al pacchetto con un gestore di archivi.

Fatto ciò dare i comandi:

# sudo dpkg-reconfigure fontconfig
# fc-cache -fv
$ fc-cache -fv

poi fare logout e login e già siamo a posto. Configurare fontconfig usando /etc/fonts/conf.d/ imposta la configurazione dei font per tutto il sistema. Poi ogni utente del sistema se vuole può usare ~/.fonts.conf per cambiare la propria configurazione.

Se si vuole ancora più un "Ubuntu-style" si può scaricare la famiglia di caratteri Ubuntu, ed estrarre l'archivio in /usr/local/share/fonts per mettere i font a disposizione di tutti gli utenti del sistema (se siete gelosi dei vostri font allora basta estrarli in ~/.fonts/):

# unzip ubuntu-font-family-0.80.zip -d /usr/local/share/fonts/
# fc-cache -fv
$ fc-cache -fv

Per ritornare alla configurazione di default di Debian scaricare il fontconfig-config di sistema (attualmente questo) e reinstallarlo manualmente da terminale (automaticamente non so perché non installa alcuni file):

# rm -R /etc/fonts
# sudo dpkg -X fontconfig-config_2.9.0-7_all.deb /

poi procedere con la configurazione di fontconfig tradizionale descritta prima.


Configurazione Xft

Alcune applicazioni ignorano le impostazioni sopra perché non supportano fontconfig. In questo caso possiamo intervenire con Xft (X FreeType interface library). Creiamo o modifichiamo il file .Xresources nella nostra home con:

$ nano ~/.Xresources

ed aggiungiamo quanto segue:

Xft.antialias: 1
Xft.hinting: 1
Xft.autohint: 0
Xft.hintstyle: hintslight
Xft.rgba: rgb
Xft.lcdfilter: lcddefault

! Per impostare manualmente il valore DPI
!Xft.dpi: 102

Salviamo il file e riavviamo X facendo logout e login.


DPI

Se non siamo ancora soddisfatti del risultato oppure il nostro monitor è grande e i caratteri sono piccoli, si può provare a cambiare il valore DPI dei caratteri usando quello del monitor (che sarebbe più corretto chiamare PPI).

Generalmente fontconfig ricava tale valore automaticamente da xorg oppure usa lo standard non ufficiale dei 96 DPI. Per trovare il valore del nostro monitor, bisogna trovare prima la diagonale in pixel (applicando il teorema di Pitagora alla risoluzione nativa dello schermo) e poi dividerla con la diagonale effettiva del monitor in pollici (generalmente si trova nelle specifiche del monitor).

Es.: il mio monitor è un AOC 2236Vw da 22" con risoluzione nativa di 1920x1080. Guardando le specifiche però trovo che la diagonale visibile non è 22" ma 21,5". Allora calcolo:

sqrt(1920^2 + 1080^2) / 21.5 = 102.46 PPI

Per fare più in fretta ci si può aiutare usando questo calcolatore.

Una volta trovato il valore DPI (o PPI) del monitor basta sostituirlo nelle righe commentate dei file .fonts.conf e .Xresources, togliendo ovviamente i commenti per abilitare. Fate logout e login per vedere il risultato e se questo non è soddisfacente, commentate nuovamente le righe per tornare ai valori standard.

Alcuni sostengono che il valore DPI da inserire nelle configurazioni deve essere arrotondato, senza parte decimale. Però il fatto che sia usato un valore double per memorizzare il DPI mi fa pensare che sia fatto apposta per usare anche la parte decimale.


KDE

Se, una volta avviato KDE, la dimensione dei caratteri è piccola, ciò è dovuto al fatto che KDM sta utilizzando di default i 75dpi. Bisogna quindi modificare il file /etc/kde3/kdm/kdmrc. Cercare la riga:

ServerArgsLocal=-nolisten tcp

e aggiungere il valore DPI desiderato:

ServerArgsLocal=-nolisten tcp -dpi 96


Riferimenti

Per approfondimenti:

http://wiki.debian.org/Fonts
https://wiki.archlinux.org/index.php/Font_Configuration
http://www.freedesktop.org/software/fontconfig/fontconfig-user.html
http://www.keithp.com/~keithp/render/Xft.tutorial
https://en.wikipedia.org/wiki/Pixels_per_inch
http://weirdfellow.wordpress.com/2010/07/25/valid-autohinting-hinting-style-options/
http://duganchen.ca/writings/slackware/fonts/