Migliorare l'aspetto dei font: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
(update generale (da aggiornare Infinality, Xft, inst. font))
Riga 2: Riga 2:


== Introduzione ==
== Introduzione ==
Generalmente Debian ha attivo un [http://en.wikipedia.org/wiki/Font_rasterization font rendering] che lascia a desiderare e i caratteri spesso sono brutti da vedere.<br>
Molti nuovi utenti di Debian, subito dopo averlo installato, si lamentano del brutto aspetto che hanno i caratteri (ad alcuni invece piacciono, de gustibus). Il problema risiede principalmente nella configurazione predefinita di Debian, che non imposta il [http://en.wikipedia.org/wiki/Font_rasterization rendering dei caratteri] adeguatamente.
Un primo miglioramento si può ottenere con il comando da root <code>dpkg-reconfigure fontconfig-config</code> e rispondendo alle tre domande poste.
Però per un risultato migliore e più adattabile ai propri gusti è meglio seguire un'altra strada.<br>
Tuttavia con le ultime modifiche alla [https://it.wikipedia.org/wiki/Cairo_%28grafica%29 Libreria Grafica Cairo] esiste una procedura ancora più semplice; infatti è possibile attivare il '''Subpixel-hinting''' e il '''Font-smoothing''' dei caratteri, con un miglioramento sensibile, creando un semplice ''file'' di configurazione da collocare all'interno della nostra '''/HOME'''.


== Procedura semplificata ==
Ci sono vari modi e tanti parametri per migliorare il rendering, di seguito si farà una carrellata quanto più esplicativa possibile (spero). Ulteriori approfondimenti sull'argomento si possono leggere nell'ultimo capitolo "[[Migliorare l'aspetto dei font#Riferimenti |Riferimenti]]". <u>Se invece non vi interessano i particolari dettagliati e volete prendere la strada più breve allora leggete [[Migliorare l'aspetto dei caratteri |questa guida]]</u>.
Apriamo il nostro editor di testi preferito e incolliamo il listato che segue:
 
<pre><?xml version='1.0'?>
Prima di cominciare bisognerebbe controllare che siano installati i pacchetti responsabili della gestione dei font, e cioè <code>fontconfig</code>, <code>libfreetype6</code>, <code>libcairo2</code> e <code>libxft2</code>, ma è un controllo superfluo, dato che questi pacchetti sono dipendenze di tutti i principali ambienti desktop (senza un desktop grafico ci sarebbero solo [http://en.wikipedia.org/wiki/Computer_font#Bitmap_fonts caratteri bitmap], e di questa guida si potrebbe usare solo il paragrafo che riguarda la [[Migliorare l'aspetto dei font#Console Linux |console Linux]] in tal caso).
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
 
<fontconfig>
In parole povere, [http://www.freetype.org/ FreeType] è come la "mano" che disegna i caratteri sullo schermo, mentre [http://cairographics.org/ Cairo] è sarebbe la "matita" usata da FreeType per disegnare. [http://www.freedesktop.org/wiki/Software/fontconfig/ Fontconfig] gestisce, configura e personalizza i caratteri, e infine [http://www.freedesktop.org/wiki/Software/Xft/ Xft] è un componente del server grafico X che usa e "coordina" FreeType e Fontconfig (in quanto questi ultimi sono pensati per essere universali e non dipendenti da X).
<match target="font">
  <edit mode="assign" name="rgba">
  <const>rgb</const>
  </edit>
</match>
<match target="font">
  <edit mode="assign" name="hinting">
  <bool>true</bool>
  </edit>
</match>
<match target="font">
  <edit mode="assign" name="hintstyle">
  <const>hintslight</const>
  </edit>
</match>
<match target="font">
  <edit mode="assign" name="antialias">
  <bool>true</bool>
  </edit>
</match>
  <match target="font">
    <edit mode="assign" name="lcdfilter">
      <const>lcddefault</const>
    </edit>
  </match>
</fontconfig></pre>


Salviamo il file appena creato all'interno della nostra '''/HOME''' con il nome: '''.fonts.conf'''<br>
== Fontconfig ==
Uscite e rientrate nella sessione grafica se usate un ''Login Manager'', altrimenti riavviate il ''Server X''; ora dovreste avere il '''Subpixel-hinting''' e il '''Font-smoothing''' attivato.<br>
Tra le varie funzioni di ''Fontconfig'' c'è anche quella di indicare a ''FreeType'' come disegnare i caratteri. Ad esempio può dirgli di usare l'antialiasing su tutti i font tranne che su quelli di lingua orientale, o di disabilitare l'hinting su un determinato font quando questo è di dimensioni inferiori a 8 punti.
Se il risultato è di vostro gradimento potete fermarvi qui.<br>
<br>


{{Box|Informazioni per Jessie|Si prevede che per la prossima ''Debian Stable'', Jessie, la nuova posizione per il ''file'' di configurazione sarà: '''~/.config/fontconfig/fonts.conf'''}}
La configurazione di ''Fontconfig'' si trova in <code>/etc/fonts/conf.d</code> ed è composta da tanti file, ognuno con una sua funzione specifica, intuibile dal nome stesso del file. In realtà tutti i file di configurazione si trovano in <code>/etc/fonts/conf.avail/</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup> e vengono creati (o rimossi) dei link simbolici in <code>/etc/fonts/conf.d</code> in base alla caratteristica che si vuole abilitare (o disabilitare).<br/>
Ad esempio se si digita
<pre># dpkg-reconfigure fontconfig-config</pre>
in base alle risposte date nella procedura guidata verranno creati dei link in <code>conf.d</code><br/>
Però si sconsiglia di cambiare la configurazione con <code>conf.d</code> perché in <code>conf.avail</code> non sono presenti tutte le opzioni che è possibile usare per migliorare l'aspetto del font (per esempio, grossa mancanza, non c'è l'antialiasing). Invece di creare i file mancanti in <code>conf.avail</code> per poi linkarli in <code>conf.d</code> diventa molto più pratico ricorrere ad un altro metodo.


Dopo aver letto la configurazione in <code>conf.d</code>, ''Fontconfig'' cerca altre configurazioni nel file <code>/etc/fonts/local.conf</code> e poi in <code>~/.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup>. Entrambi i file servono proprio per personalizzare ''Fontconfig'' e non esistono inizialmente, a meno che non vengano creati dall'utente o da qualche software. Le impostazioni contenute nel primo file, <code>local.conf</code>, saranno applicate a tutti gli utenti del sistema mentre quelle del secondo file, <code>.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup>, risiedendo nella home dell'utente sono applicate solo a quel singolo utente. La sintassi dei due file è identica (come quella dei file in <code>conf.d</code>) e possono convivere insieme.<br/>
In caso di impostazioni discordanti tra i vari file di configurazione, ''Fontconfig'' dovrebbe usare quest'ordine di lettura, dove la priorità spetta all'ultima configurazione letta:
# <code>/etc/fonts/conf.d/</code>
# <code>/etc/fonts/local.conf</code>
# <code>~/.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup>
# impostazioni font dell'ambiente desktop (''Xft'')
anche se molto dipende da come sono impostati i parametri all'interno delle configurazioni, che potrebbero cambiare le priorità. Per esempio usando <code>mode="assign"</code> per impostare un valore, questo rimarrà tale anche se ne verrà impostato uno diverso successivamente (ma alcune applicazioni potrebbero anche usare l'ultimo valore letto a prescindere[https://bugs.freedesktop.org/show_bug.cgi?id=17722 *]; per informazioni <code>man fonts-conf</code>). Per sicurezza quando si usa <code>.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup> è meglio sostituire nel modello riportato sotto tutti i <code>mode="append"</code> presenti con <code>mode="assign"</code>


== Configurazione fontconfig ==
Ecco il modello di configurazione da usare nei file <code>.conf</code>:
Se assenti installiamo queste librerie:
<pre># apt-get install libfreetype6 fontconfig libcairo2 libxft2</pre>
ma essendo usate da tutti i principali ambienti desktop è praticamente impossibile non averle (anche perché senza un desktop grafico ci sarebbero solo [http://en.wikipedia.org/wiki/Computer_font#Bitmap_fonts caratteri bitmap] e questa guida non servirebbe a molto).<br>
Fatto il controllo, si può creare il file di configurazione di ''fontconfig''. Ce ne sono due: il file <code>/etc/fonts/local.conf</code> e il file <code>~/.fonts.conf</code> (che a partire da Jessie è invece <code>~/.config/fontconfig/fonts.conf</code>, vedi nota a fine paragrafo). Questi file hanno la stessa struttura, cambia solo che il primo serve ad applicare la configurazione a tutto il sistema, mentre l'altro risiede nella home di un utente e il suo campo di applicazione è limitato solo alle sessioni di quell'utente. Basta averne uno ma possono convivere insieme; in presenza di entrambi i file la configurazione utente dovrebbe avere la priorità ma per esserne sicuri è meglio sostituire in <code>~/.fonts.conf</code> i vari <code>mode="append"</code> presenti nel file con <code>mode="assign"</code>.<br>
Il codice da inserire nel file è il seguente:
<pre>
<pre>
<?xml version='1.0'?>
<?xml version='1.0'?>
Riga 59: Riga 34:
<match target="pattern">
<match target="pattern">


<!-- Font rasterization converts vector font data to bitmap data so that it
<!-- La rasterizzazione dei caratteri converte i dati vettoriali dei font
     can be displayed. The result can appear jagged due to aliasing.
    in immagini bitmap, così da poter essere visualizzati sullo schermo.
     Anti-aliasing increases the apparent resolution of font edges. -->
     Il risultato può apparire frastagliato per via dell'aliasing.
     L'anti-aliasing aumenta il dettaglio visivo dei bordi dei caratteri. -->
<edit mode="append" name="antialias">
<edit mode="append" name="antialias">
<bool>true</bool>
<bool>true</bool>
</edit>
</edit>


<!-- Using normal hinting, TrueType hinting instructions in the font are
<!-- Abilitando l'opzione "hinting", le istruzioni di hinting TrueType
     interpreted by freetype's Byte-Code Interpreter. This works best for
     incorporate nei font vengono interpretate dal Byte-Code Interpreter
     fonts with good hinting instructions. -->
    (BCI) di FreeType. Questa è la scelta migliore in caso di font
     contenenti buone istruzioni di hinting. -->
<edit mode="append" name="hinting">
<edit mode="append" name="hinting">
<bool>true</bool>
<bool>true</bool>
</edit>
</edit>


<!-- Auto-discovery for hinting. This looks worse than normal hinting for
<!-- Abilitando l'autohinter verranno ignorate le istruzioni di hinting
     fonts with good instructions, but better for those with poor or no
    contenute nei font ma verrà usato un algoritmo generico di hinting,
     instructions. The autohinter and subpixel rendering are not designed
     che è quasi sempre peggiore delle istruzioni ma potrebbe migliorare
     to work together and should not be used in combination. -->
     la visualizzazione dei font che non hanno istruzioni incorporate.
    L'autohinter e il subpixel rendering non sono programmati per lavorare
     insieme e non devono essere abilitati contemporaneamente. -->
<edit mode="append" name="autohint">
<edit mode="append" name="autohint">
<bool>false</bool>
<bool>false</bool>
</edit>
</edit>


<!-- Hint style is the amount of influence the hinting mode has. Hinting
<!-- L'hintstyle rappresenta quanto influenza avrà l'hinting sul risultato
     can be set to: "hintfull", "hintmedium", "hintslight" and "hintnone".
     finale. Può essere impostato in "hintfull", "hintmedium", "hintslight"
     With BCI hinting, "hintfull" should work best for most fonts.
    e "hintnone". Con autohint abilitato è consigliato "hintslight", mentre
     With the autohinter, "hintslight" is recommended. -->
     con autohint disabilitato (BCI) è consigliato "hintfull", ma è una
     scelta abbastanza soggettiva. -->
<edit mode="append" name="hintstyle">
<edit mode="append" name="hintstyle">
<const>hintslight</const>
<const>hintslight</const>
</edit>
</edit>


<!-- Subpixel rendering effectively triples the horizontal (or vertical)
<!-- Il subpixel rendering riesce a triplicare efficacemente la risoluzione
    resolution for fonts by making use of subpixels. The autohinter and
     orizzontale o verticale dei font usando i subpixel del monitor.
     subpixel rendering are not designed to work together and should not
     Fontconfig deve sapere che tipo di subpixel usa il vostro monitor per
    be used in combination. Most monitors manufactured today use the
     visualizzare correttamente i caratteri. Le possibili opzioni sono:
     Red, Green, Blue (RGB) specification. Fontconfig will need to know
     "rgb", "bgr", "vrgb", "vbgr", "unknown" e "none". Moltissimi monitor
     your monitor type to be able to display your fonts correctly.
    odierni usano le specifiche "rgb" (Red-Green-Blue).
     Values are "rgb" (most common), "bgr", "vrgb" (vertical), "vbgr",
    Non abilitare contemporaneamente questa opzione e l'autohinter. -->
    "unknown" or "none". -->
<edit mode="append" name="rgba">
<edit mode="append" name="rgba">
<const>rgb</const>
<const>rgb</const>
</edit>
</edit>


<!-- When using subpixel rendering, you should enable the LCD filter,
<!-- Quando si usa il subpixel rendering bisognerebbe abilitare il filtro
     which is designed to reduce colour fringing. The "lcddefault" filter
    LCD, che serve ad ridurre i bordi colorati dei font. Il filtro
    will work for most users. Other filters are available that can be
     "lcddefault" è quello più comune; "lcdlight" è un filtro leggero ideale
    used in special situations: "lcdlight"; a lighter filter ideal for
     per i font che sembrano troppo spessi o tenui; "lcdlegacy" è il filtro
     fonts that look too bold or fuzzy; "lcdlegacy", the original Cairo
     originale di Cairo; "lcdnone" disabilita il filtro. -->
     filter; "lcdnone" to disable it entirely. -->
<edit mode="append" name="lcdfilter">
<edit mode="append" name="lcdfilter">
<const>lcddefault</const>
<const>lcddefault</const>
</edit>
</edit>


<!-- Fontconfig should be able to detect DPI parameters as discovered
<!-- Fontconfig dovrebbe prendere il valore DPI da Xorg. Per controllare
    by the Xorg server. You can check Xorg's automatically discovered
     il valore di Xorg usare il comando 'xdpyinfo | grep resolution'
     DPI with the command 'xdpyinfo | grep resolution'
     Per impostare manualmente il DPI disabilitare i tag-commento sotto -->
     Uncomment the following to activate customized DPI -->
<!--
<!--
<edit mode="append" name="dpi">
<edit mode="append" name="dpi">
Riga 121: Riga 98:
-->
-->


<!-- Some scalable fonts have embedded bitmap versions which are rendered
<!-- Alcuni font includono una versione bitmap che potrebbe essere usata
     instead, mainly at smaller sizes. Force using scalable fonts at all
     al posto della vettoriale, specie alle dimensioni più piccole. Con
     sizes by disabling embedded bitmap. -->
     questa opzione si disattiva l'utilizzo di questi caratteri bitmap. -->
<edit mode="append" name="embeddedbitmap">
<edit mode="append" name="embeddedbitmap">
<bool>false</bool>
<bool>false</bool>
Riga 130: Riga 107:
</match>
</match>


<!-- Use font substitution to set your preferred fonts the default
<!-- Rifiuta l'uso di font bitmap, Fontconfig userà solo font vettoriali
     serif, sans-serif and monospace fonts. You can also substitute
     tipo TrueType, OpenType, Postscript, ecc. -->
    a specific font not installed on the system (e.g. Arial) with
<selectfont><rejectfont><pattern>
     an installed one (e.g. FreeSans) by adding other aliases like
<patelt name="scalable"><bool>false</bool></patelt>
     these. This only works if the original font is not on the system.
</pattern></rejectfont></selectfont>
     Uncomment the following to activate font substitution -->
 
<!-- I font predefiniti "Serif", "Sans-Serif" e "Monospace" sono in realtà
     degli alias, dei link, e possono essere cambiati usando la sostituzione
    font. Con lo stesso metodo si possono anche creare degli alias per altri
    font, l'importante è non dare un nome all'alias che sia uguale al nome di
    un font già presente nel sistema. Per esempio se non è installato Arial
     si può creare un alias con un suo font simile come FreeSans.
     Per personalizzare gli alias togliere i tag-commento sotto -->
<!--
<!--
<alias>
<alias>
<family>serif</family>
<family>serif</family>
<prefer><family>Droid Serif</family></prefer>
<prefer><family>DejaVu Serif</family></prefer>
</alias>
</alias>
<alias>
<alias>
<family>sans-serif</family>
<family>sans-serif</family>
<prefer><family>Droid Sans</family></prefer>
<prefer><family>Ubuntu</family></prefer>
</alias>
</alias>
<alias>
<alias>
<family>monospace</family>
<family>monospace</family>
<prefer><family>Droid Sans Mono</family></prefer>
<prefer><family>Ubuntu Mono</family></prefer>
</alias>
</alias>


Riga 155: Riga 139:
</alias>
</alias>
-->
-->
<!-- Reject bitmap fonts in favour of Truetype, Postscript, etc. -->
<selectfont><rejectfont><pattern>
<patelt name="scalable"><bool>false</bool></patelt>
</pattern></rejectfont></selectfont>


</fontconfig>
</fontconfig>
</pre>
</pre>
Salviamo il file e facciamo pulizia di altre impostazioni presenti, specie se abbiamo usato il comando presente nell'[[Migliorare l'aspetto dei font#Introduzione |Introduzione]]:
Per creare il file basta usare il proprio editor preferito (es. ''nano''). Per la configurazione di sistema:
<pre># rm /etc/fonts/conf.d/1*
<pre># nano /etc/fonts/local.conf</pre>
# rm /etc/fonts/conf.d/70*
oppure per il singolo utente:
<pre>$ nano ~/.fonts.conf</pre>
poi incollare il modello sopra, eventualmente modificarlo e salvare il file.
Meglio poi eliminare i link in <code>conf.d</code> che riguardano le stesse impostazioni, per evitare strani risultati:
<pre># rm /etc/fonts/conf.d/1*.conf
# rm /etc/fonts/conf.d/70*.conf
# dpkg-reconfigure fontconfig</pre>
# dpkg-reconfigure fontconfig</pre>
(per informazioni su <code>conf.d</code> leggere la sezione [[Migliorare l'aspetto dei font#Ubuntu |Ubuntu]])
dopo rigeneriamo la cache dei font con:
dopo rigeneriamo la cache dei font con:
<pre># fc-cache -fv
<pre># fc-cache -fv
$ fc-cache -fv</pre>
$ fc-cache -fv</pre>
e infine riavviamo X facendo logout e login oppure riavviando il sistema.<br>
e infine riavviamo X facendo logout e login (oppure riavviando tutto il sistema) per abilitare il nuovo aspetto dei caratteri.
La configurazione sopra riportata è una configurazione "standard" che cerca di fornire il miglior risultato possibile sulla maggior parte dei sistemi.
 
Però ci sono tanti fattori da considerare se i font elaborati con questa configurazione non sono ancora soddisfacenti. Potrebbe essere colpa del monitor che ad esempio usa uno schema [http://www.lagom.nl/lcd-test/subpixel.php subpixel BGR], differente dal comune RGB o semplicemente è una questione di gusto personale. Spesso i font hanno istruzioni di hinting codificate al loro interno e mentre alcuni possono dare un buon risultato con l'hinting "Slight", altri appariranno meglio con hinting "None" o "Full". In ogni caso basta modificare i parametri nel file <code>.conf</code> aiutandosi con le descrizioni fornite nelle parti commentate per ottenere il risultato su schermo migliore per i vostri occhi.<br>
La configurazione sopra riportata è una configurazione "standard" che cerca di fornire il miglior risultato possibile sulla maggior parte dei sistemi. Però ci sono tanti fattori da considerare se i font elaborati con questa configurazione non sono ancora soddisfacenti. Potrebbe essere ad esempio per via del monitor che usa uno schema [http://www.lagom.nl/lcd-test/subpixel.php subpixel BGR] (ma sono rari), differente dal comune RGB sul quale si basano le impostazioni predefinite; a volte è invece solo una questione di gusto personale.
C'è da considerare anche che l'ambiente desktop in uso può cambiare questi parametri, modificando direttamente il file <code>~/.fonts.conf</code> (KDE) o più spesso passando a ''Xft'' e/o ''fontconfig'' i propri valori di hinting con una priorità maggiore. Per esempio su Gnome3 le impostazioni predefinite (modificabili tramite ''gnome-tweak-tool'') sono "Hinting: Full" e "Antialiasing: Greyscale". Per evitare discrepanze e conflitti è meglio cambiare questi valori con quelli usati nei file <code>.conf</code>.<br>
 
Ogni desktop environment che si rispetti ha una sezione dove poter impostare i parametri base di fontconfig e spesso sembrano sufficienti per avere un buon risultato, ma per un controllo più accurato il ricorso ai file <code>.conf</code> è necessario. Ad esempio alcuni caratteri risultano più leggibili senza hinting sotto una certa dimensione. Ciò è correggibile aggiungendo una sezione simile a questa nel nostro file <code>.conf</code>:
Spesso i font hanno istruzioni di hinting codificate al loro interno e mentre alcuni possono dare un buon risultato con l'hinting "Slight", altri appariranno meglio con hinting "None", oppure con quello "Full". In ogni caso basta modificare i parametri nei file <code>.conf</code> aiutandosi con i commenti inclusi nel codice o con la documentazione (online e offline) per ottenere il risultato su schermo migliore per i vostri occhi.
 
C'è da considerare anche che l'ambiente desktop in uso può cambiare questi parametri, modificando direttamente il file <code>~/.fonts.conf</code> (caso raro) o più spesso passando direttamente a ''Xft'' i propri valori di hinting con una priorità maggiore. Per esempio su Gnome3 le impostazioni predefinite (modificabili tramite ''gnome-tweak-tool'') sono "Hinting: Full" e "Antialiasing: Greyscale". Per evitare discrepanze e conflitti è meglio cambiare questi valori con quelli usati nei file <code>.conf</code>.
 
Ogni desktop environment che si rispetti ha una sezione dove poter impostare i parametri base dell'aspetto dei caratteri e spesso sembrano sufficienti per avere un buon risultato, ma per un controllo più accurato il ricorso ai file <code>.conf</code> è necessario. Ad esempio alcuni caratteri risultano più leggibili senza hinting sotto una certa dimensione. Ciò è correggibile aggiungendo del codice simile a questo nel nostro file <code>.conf</code>:
<pre>
<pre>
<match target="font">
<match target="font">
Riga 189: Riga 176:
</match>
</match>
</pre>
</pre>
Questa ad esempio in caso di carattere "DejaVu Sans Mono" con una dimensione inferiore ai 7.5 punti, deve disabilitare l'hinting. Si possono fare tante altre cose simili con ''fontconfig'', come assegnare dei parametri di hinting diversi da quelli generali per un dato font che non rende bene; per approfondimenti leggete la documentazione di ''fontconfig'' (e visionate anche i file di configurazione del pacchetto [[Migliorare l'aspetto dei font#Infinality|<code>fontconfig-infinality</code>]] come esempio di applicazione pratica).<br>
Questo ad esempio in caso di carattere "DejaVu Sans Mono" con una dimensione inferiore ai 7.5 punti, deve disabilitare l'hinting. Si possono fare tante altre cose simili con ''Fontconfig'', come assegnare dei parametri di hinting diversi da quelli generali per un dato font che non rende bene; per approfondimenti leggete la documentazione di ''Fontconfig'' (e visionate anche i file di configurazione del pacchetto [[Migliorare l'aspetto dei font#Infinality|<code>fontconfig-infinality</code>]] come esempio di applicazione pratica).
 
Alla fine del tuning potrete testare la vostra configurazione corrente [http://www.infinality.net/files/font.html in questa pagina].
Alla fine del tuning potrete testare la vostra configurazione corrente [http://www.infinality.net/files/font.html in questa pagina].
{{Box|Nota importante|A partire dalla [http://cgit.freedesktop.org/fontconfig/commit/?id&#61;8c255fb185d5651b57380b0a9443001e8051b29d versione 2.10] di ''fontconfig'' (da Jessie in poi) il file <code>~/.fonts.conf</code> cambierà percorso, diventando <code>~/.config/fontconfig/fonts.conf</code> ma sarà mantenuta la compatibilità con il vecchio percorso ancora per qualche versione. Cambiano anche la posizione della cache dei caratteri, da <code>~/.fontconfig/</code> a <code>~/.cache/fontconfig/</code> e di <code>/etc/fonts/conf.avail/</code>, che diventa <code>/usr/share/fontconfig/conf.avail/</code>.}}
 
=== Jessie ===
A partire dalla [http://cgit.freedesktop.org/fontconfig/commit/?id&#61;8c255fb185d5651b57380b0a9443001e8051b29d versione 2.10] di ''Fontconfig'' (presente da Debian 8 "Jessie" in poi) il file <code>~/.fonts.conf</code> cambierà percorso, diventando <code>~/.config/fontconfig/fonts.conf</code> ma sarà mantenuta la compatibilità con il vecchio percorso ancora per qualche versione. Cambiano anche la posizione della cache dei caratteri, da <code>~/.fontconfig/</code> a <code>~/.cache/fontconfig/</code> e di <code>/etc/fonts/conf.avail/</code>, che diventa <code>/usr/share/fontconfig/conf.avail/</code>.


=== Ubuntu ===
=== Ubuntu ===
I parametri predefiniti di ''fontconfig'' di Ubuntu sono impostati (come in Debian e molte altre distibuzioni Linux) tramite <code>/etc/fonts/conf.d/</code>. Questa directory contiene tanti pezzi di configurazione che tutti insieme vanno a creare la configurazione globale di ''fontconfig'' per tutto il sistema (in pratica è un <code>local.conf</code> frammentato). Le varie opzioni che è possibile attivare/disattivare in <code>/etc/fonts/conf.d/</code> sono contenute in <code>/etc/fonts/conf.avail/</code> (in Jessie <code>/usr/share/fontconfig/conf.avail/</code>). Basta creare un link simbolico con:
Molti utenti che passano da Ubuntu a Debian o che li usano entrambi si lamentano dell'aspetto dei caratteri "out of the box", nettamente migliore su Ubuntu.
<pre># ln -s /etc/fonts/conf.avail/impostazione.conf /etc/fonts/conf.d/</pre>
 
e l'impostazione sarà attivata o viceversa, se viene cancellato il link, l'impostazione sarà disattivata. Il comando <code>dpkg-reconfigure fontconfig-config</code> suggerito nell'[[Migliorare l'aspetto dei font#Introduzione|Introduzione]] di questa guida apporta i cambiamenti proprio in questo modo, creando dei link in <code>conf.d</code> a seconda delle risposte date. Potete leggere il file <code>/etc/fonts/conf.d/README</code> per qualche informazione in più.<br>
Prima di Debian 7 "Wheezy" la differenza tra i due sistemi era più marcata, perché Ubuntu applicava delle patch al codice di Cairo e FreeType per migliorare la resa su schermo e se si voleva lo stesso risultato bisognava ricompilare i pacchetti interessati su Debian aggiungendo le patch.
La differenza tra Ubuntu e Debian è che quest'ultima appena installata contiene poche impostazioni di hinting dei caratteri in <code>conf.d</code> e mancano anche delle impostazioni in <code>conf.avail</code> per poter rimediare, come quella dell'antialiasing che è essenziale. In Ubuntu queste impostazioni invece ci sono e sono abilitate da subito, perché i pacchetti di ''fontconfig'' sono compilati con apposite patch.<br>
 
Si potrebbero creare i file mancanti in <code>conf.avail</code> per poi linkarli in <code>conf.d</code> ma è poco pratico, mentre un modo equivalente e più rapido è scrivere direttamente le singole impostazioni tutte in un file, come abbiamo fatto sopra con <code>/etc/fonts/local.conf</code> e/o <code>~/.fonts.conf</code> (in Jessie <code>~/.config/fontconfig/fonts.conf</code>). In caso di impostazioni discordanti tra configurazioni diverse, ''fontconfig'' dovrebbe usare quest'ordine di lettura, dove la priorità spetta all'ultima configurazione letta:
A partire da Wheezy queste patch sono presenti anche in Debian (perché assimilate in upstream) e l'unica differenza rimasta tra Debian e Ubuntu adesso è la configurazione iniziale di Fontconfig. Su Ubuntu questa configurazione è ottenuta sempre con delle patch nel codice di Fontconfig, ma per fortuna non è necessario ricompilare nulla in questo caso, basta solo applicare la stessa configurazione di Ubuntu con <code>local.conf</code> per avere risultati identici.
# <code>/etc/fonts/conf.d/</code>
 
# <code>/etc/fonts/local.conf</code>
La configurazione esposta nel paragrafo precedente è già uguale a quella di Ubuntu, quindi basta usarla senza modifiche se si vuole lo stesso risultato. Se si riscontrano delle piccole differenze nel rendering tra le due distribuzioni, ciò sarà dovuto alle differenti versioni delle librerie Fontconfig, FreeType e Cairo.
# <code>~/.fonts.conf</code>
 
# impostazioni font dell'ambiente desktop
Per completare l'opera di "Ubuntizzazione" si può installare il font predefinito di Ubuntu, che è possibile scaricare dai [http://it.archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-font-family-sources/ttf-ubuntu-font-family_0.80-0ubuntu6_all.deb repository di Ubuntu] e per installarlo basta un:
anche se molto dipende da come sono impostati i parametri all'interno delle configurazioni, che potrebbero cambiare le priorità. Per esempio usando <code>mode="assign"</code> per impostare un valore, questo rimarrà tale anche se ne verrà impostato uno diverso successivamente (ma alcune applicazioni potrebbero anche usare l'ultimo valore impostato a prescindere[https://bugs.freedesktop.org/show_bug.cgi?id=17722 *]). Per informazioni <code>man fonts-conf</code>.<br>
La configurazione predefinita del font rendering di Ubuntu è praticamente uguale a quella illustrata nel paragrafo precedente, ma se trovate delle differenze di resa su schermo è perché Ubuntu usa generalmente delle versioni più recenti delle librerie che si occupano del rendering e della gestione dei caratteri, ovvero ''freetype'' e ''fontconfig''.<br>
Ma può anche essere merito del font predefinito di Ubuntu, che è possibile scaricare dai [http://it.archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-font-family-sources/ttf-ubuntu-font-family_0.80-0ubuntu6_all.deb repository ufficiali di Ubuntu] e per installarlo basta un:
<pre># dpkg -i ttf-ubuntu-font-family_0.80-0ubuntu6_all.deb</pre>
<pre># dpkg -i ttf-ubuntu-font-family_0.80-0ubuntu6_all.deb</pre>
 
Il font è presente in vari formati tra i quali Light, Regular, Medium e Bold. Alcuni programmi però non sembrano gestire bene tutte le varianti del font: per esempio l'interfaccia di VLC usa il font Medium invece del Regular. La soluzione più veloce è quella di cancellare le varianti Light e Medium, così che rimangano solo i font canonici.
Se volete avere lo stesso hinting di Ubuntu potete aggiornare i pacchetti con le versioni compilate per Debian direttamente dai sorgenti di Ubuntu che trovate [https://drive.google.com/folderview?id=0B7AdLMiZn4FzZS0tb1RROE4xcFU qui].<br>
Per eliminarli, da terminale:
Altre versioni più aggiornate compilate per Debian direttamente dai sorgenti originali sono presenti [https://drive.google.com/folderview?id=0B7AdLMiZn4FzdGZNV2FpLWhPTkk qui].<br>
<pre>
Prima di installare è consigliabile fare un backup delle modifiche personali apportate (file <code>.conf</code>, contenuto di <code>/etc/fonts/conf.d</code>, ecc.) e poi, non obbligatoriamente, rimuovere completamente i pacchetti vecchi con:
# rm /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-L.ttf
<pre># dpkg --purge --force-depends libfreetype6 libfontconfig1 fontconfig fontconfig-config</pre>
# rm /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-LI.ttf
ma fate attenzione che così verranno rimossi tutti i link e i file contenuti in <code>/etc/fonts/conf.d</code> e anche <code>local.conf</code>.
# rm /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-M.ttf
Se avete attivato multiarch dovrete "appendere" <code>:i386</code> e/o <code>:amd64</code> ad ogni pacchetto, e il comando diventerà quindi
# rm /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-MI.ttf
<pre># dpkg --purge --force-depends libfreetype6:i386 libfontconfig1:i386 fontconfig:i386 libfreetype6:amd64 libfontconfig1:amd64 fontconfig:amd64 fontconfig-config</pre>
# fc-cache -fv
Questi comandi sono pericolosi, perché rimuovono forzosamente quei pacchetti ignorando le dipendenze (sono pacchetti essenziali e non si potrebbero rimuovere così facilmente altrimenti). Se avete scelto di rimuovere i pacchetti è meglio installare le nuove versioni subito dopo (il sistema è instabile senza quei pacchetti).<br>
$ fc-cache -fv
Create una nuova cartella e metteteci dentro '''solo''' i pacchetti .deb scaricati necessari (solo quelli per la vostra architettura, o se è abilitato multiarch fate riferimento a quelli già presenti nel sistema), poi aprite il terminale ed installare tutti i pacchetti con <pre># dpkg -i /percorso/nuovacartella/*.deb</pre>
</pre>
Se usate Wheezy, cancellate la directory della cache <code>~/.fontconfig</code> (che con i nuovi pacchetti cambierà in <code>~/.cache/fontconfig</code>, come conseguenza di ciò di cui si parla nella nota del paragrafo precedente), riavviare e poi aggiornare la cache con
<pre># fc-cache -fv
$ fc-cache -fv</pre>
Adesso se necessario si possono modificare le impostazioni di ''fontconfig'', oppure ripristinare quelle precedenti.<br>
Per ritornare ai pacchetti Debian ripetere la procedura di rimozione dei pacchetti (valgono le stesse considerazioni e gli stessi avvisi) per poi subito dopo installare con <code>apt-get</code> i pacchetti appena rimossi, che verranno prelevati però dai repository ufficiali.


=== Infinality ===
=== Infinality ===
Riga 249: Riga 231:
poi ripristinare eventuali backup pre-Infinality e riavviare.
poi ripristinare eventuali backup pre-Infinality e riavviare.


 
== Xft ==
== Configurazione Xft ==
"X FreeType interface library" come dice il nome stesso, è una libreria che serve ad interfacciare il rasterizzatore FreeType con X (precisamente con [http://en.wikipedia.org/wiki/X_Rendering_Extension XRender]).
"X FreeType interface library" come dice il nome stesso, è una libreria che serve ad interfacciare il rasterizzatore FreeType con X (precisamente con [http://en.wikipedia.org/wiki/X_Rendering_Extension XRender]).
Le applicazioni che si basano su X potrebbero ignorare le impostazioni di fontconfig e usare quelle di Xft.<br>
Le applicazioni che si basano su X potrebbero ignorare le impostazioni di fontconfig e usare quelle di Xft.<br>
Riga 289: Riga 270:


== DPI ==
== DPI ==
Se i caratteri a schermo sono troppo piccoli (o troppo grandi) perché il monitor ha risoluzioni elevate (o basse), si può cambiare il [http://en.wikipedia.org/wiki/Dots_per_inch DPI] specificando il valore DPI effettivo dello schermo (che sarebbe più corretto chiamare [http://en.wikipedia.org/wiki/Pixels_per_inch PPI]).<br>
Se i caratteri a schermo sono troppo piccoli (o troppo grandi) perché il monitor ha risoluzioni elevate (o basse), si può cambiare il valore del [http://en.wikipedia.org/wiki/Dots_per_inch DPI] specificando quello reale dello schermo (che sarebbe più corretto chiamare [http://en.wikipedia.org/wiki/Pixels_per_inch PPI]).<br>
Impostare il corretto DPI è necessario quando è richiesta una grande cura dei dettagli, come nel font rendering, ma anche in altri casi (software di grafica, di impaginazione, ecc.).<br>
Impostare il corretto DPI è necessario quando è richiesta una grande cura dei dettagli, come nel font rendering, ma anche in altri casi (software di grafica, di impaginazione, ecc.).<br>
In Debian e in tutte le distribuzioni Linux, sono presenti due DPI: quello usato da Xorg e quello usato da Xft (e fontconfig).
In Debian e in tutte le distribuzioni Linux, sono presenti due DPI: quello usato da Xorg e quello usato da Xft (e Fontconfig).


=== DPI di Xorg ===
=== DPI di Xorg ===
Xorg ricava il suo valore dall'[http://en.wikipedia.org/wiki/Extended_display_identification_data EDID] del monitor ma se non si discosta molto dallo standard (non ufficiale) dei 96 DPI, lascia tale valore. Potete controllare il valore attualmente impostato con il comando:
Xorg ricava il suo valore dall'[http://en.wikipedia.org/wiki/Extended_display_identification_data EDID] del monitor ma se non si discosta molto dallo standard (non ufficiale) dei 96 DPI, usa tale valore. Potete controllare il valore attualmente impostato con il comando:
<pre>$ xdpyinfo | grep -B2 resolution</pre>
<pre>$ xdpyinfo | grep -B2 resolution</pre>
Impostare il giusto valore DPI su Xorg è importante per avere una corrispondenza più realistica possibile delle dimensioni su schermo con quelle reali.<br>
Impostare il giusto valore DPI su Xorg è importante per avere una corrispondenza più realistica possibile delle dimensioni su schermo con quelle reali.<br>
Il valore del DPI reale di uno schermo è ottenibile dal rapporto della sua diagonale in pixel con quella in pollici. La diagonale in pollici è il classico valore che identifica la grandezza dello schermo (ad es. un monitor da 22", una tv da 42", ecc.), mentre per calcolare la diagonale in pixel bisogna applicare il teorema di Pitagora sulla risoluzione nativa dello schermo (ad es. 1366x768, 1920x1080, ecc.). Per facilitare il calcolo esistono delle calcolatrici online come [http://pxcalc.com/ questa] e [http://members.ping.de/~sven/dpi.html questa]. A volte la misura in pollici dello schermo è minore (raramente maggiore) di quella dichiarata, generalmente di circa mezzo pollice: tenetene conto quando fate il calcolo (per sicurezza potete misurare le dimensioni effettive e convertirle in pollici).<br>
Il valore del DPI reale di uno schermo è ottenibile dal rapporto della sua diagonale in pixel con quella in pollici. La diagonale in pollici è il classico valore che identifica la grandezza dello schermo (ad es. un monitor da 22", una tv da 42", ecc.), mentre per calcolare la diagonale in pixel bisogna applicare il teorema di Pitagora sulla risoluzione nativa dello schermo (ad es. 1366x768, 1920x1080, ecc.). Per facilitare il calcolo esistono delle calcolatrici online come [http://pxcalc.com/ questa] e [http://members.ping.de/~sven/dpi.html questa]. A volte la misura in pollici dello schermo è minore (raramente maggiore) di quella dichiarata: tenetene conto quando fate il calcolo (per sicurezza potete misurare le dimensioni effettive e convertirle in pollici).<br>
Ottenuto un valore DPI (ad es. ''102.46''), bisogna impostarlo su Xorg con il comando
Ottenuto un valore DPI (ad es. ''102.46''), bisogna impostarlo su Xorg con il comando
<pre>$ xrandr --dpi 102.46</pre>
<pre>$ xrandr --dpi 102.46</pre>
ma questo sarà resettato al vecchio valore dopo un riavvio di X. Per fare eseguire quel comando automaticamente ad ogni avvio di X, create un file con
ma questo sarà resettato al vecchio valore dopo un riavvio di X. Per fare eseguire quel comando automaticamente ad ogni avvio di X:
<pre># nano /etc/X11/Xsession.d/96setdpi</pre>
<pre>
e scriveteci dentro quel comando (ovviamente con il vostro DPI invece del 102.46). Questo è il metodo più veloce ma se volete approfondire ci sono altri modi per impostare il DPI su Xorg, leggete ad esempio [http://wiki.archlinux.org/index.php/Xorg#Display_Size_and_DPI qui].
# cat > /etc/X11/Xsession.d/96setdpi <<EOF
xrandr --dpi 102.46
EOF
</pre>
ovviamente cambiate il 102.46 con il vostro DPI. Questo è il metodo più veloce ma se volete approfondire ci sono altri modi per impostare il DPI su Xorg, leggete ad esempio [http://wiki.archlinux.org/index.php/Xorg#Display_Size_and_DPI qui].
Una volta impostato il DPI, potete verificare se è tutto ok aprendo un qualsiasi file pdf in formato A4 ([http://www.mediafire.com/download/kl37crw0n5k3ydy/A4.pdf come questo]), mettendo lo zoom al 100% e sovrapponendo sul foglio a schermo un foglio di carta A4: se le dimensioni sono uguali o quasi il calcolo e la configurazione sono andati a buon fine.
Una volta impostato il DPI, potete verificare se è tutto ok aprendo un qualsiasi file pdf in formato A4 ([http://www.mediafire.com/download/kl37crw0n5k3ydy/A4.pdf come questo]), mettendo lo zoom al 100% e sovrapponendo sul foglio a schermo un foglio di carta A4: se le dimensioni sono uguali o quasi il calcolo e la configurazione sono andati a buon fine.


=== DPI di Xft / fontconfig ===
=== DPI di Xft / Fontconfig ===
Questo DPI, rappresentato dalla variabile ''Xft.dpi'', serve praticamente solo per impostare la grandezza dei caratteri e di altri elementi grafici su schermo. Fontconfig usa il valore di Xft.dpi il quale, se non è stato impostato manualmente o dall'ambiente desktop, è uguale al DPI di Xorg.<br>
Questo DPI, rappresentato dalla variabile ''Xft.dpi'', serve praticamente solo per impostare la grandezza dei caratteri e di altri elementi grafici su schermo. Fontconfig usa il valore di ''Xft.dpi'' il quale, se non è stato impostato manualmente o dall'ambiente desktop, è uguale al DPI di Xorg.<br>
Per controllare l'attuale valore di Xft.dpi (e di altre variabili Xft impostate) usate il comando
Per controllare l'attuale valore di Xft.dpi (e di altre variabili Xft impostate) usate il comando
<pre>$ xrdb -query</pre>
<pre>$ xrdb -query</pre>
Riga 326: Riga 311:
* Non so se '''KDE4''' sovrascrive come Gnome3, ma in ogni caso si può cambiare il valore predefinito da "KDE menu" > "Personal Settings" > "Application Appearance" > "Fonts" > "Force fonts DPI".<br>
* Non so se '''KDE4''' sovrascrive come Gnome3, ma in ogni caso si può cambiare il valore predefinito da "KDE menu" > "Personal Settings" > "Application Appearance" > "Fonts" > "Force fonts DPI".<br>
* '''LXDE''' non manomette il valore di Xft.dpi, lasciando quello impostato nei file di configurazione di fontconfig/Xft/Infinality.
* '''LXDE''' non manomette il valore di Xft.dpi, lasciando quello impostato nei file di configurazione di fontconfig/Xft/Infinality.


== Installazione nuovi caratteri ==
== Installazione nuovi caratteri ==
Riga 357: Riga 341:


Da notare che, come per i vari software, anche i caratteri hanno un numero di versione, perché possono essere revisionati per svariati motivi (come per l'aggiunta del supporto ad una lingua non latina, per migliorare le istruzioni di hinting, per perfezionare il design, ecc.).
Da notare che, come per i vari software, anche i caratteri hanno un numero di versione, perché possono essere revisionati per svariati motivi (come per l'aggiunta del supporto ad una lingua non latina, per migliorare le istruzioni di hinting, per perfezionare il design, ecc.).


== Console Linux ==
== Console Linux ==
Riga 371: Riga 354:
<pre>FONTFACE="Terminus"
<pre>FONTFACE="Terminus"
FONTSIZE="10x20"</pre>
FONTSIZE="10x20"</pre>
Dopo aver salvato il file si può riavviare il sistema oppure se si è già nella console si può usare il comando <code>/etc/init.d/console-setup restart</code><br>
Dopo aver salvato il file si può riavviare il sistema oppure se si è già nella console si può usare il comando <code>/etc/init.d/console-setup restart</code>


In alternativa è possibile usare una procedura guidata con:
In alternativa è possibile usare una procedura guidata con:
Riga 377: Riga 360:


Per maggiori dettagli: <code>man console-setup</code>
Per maggiori dettagli: <code>man console-setup</code>


== Riferimenti ==
== Riferimenti ==
Per approfondimenti consiglio la lettura di [https://www.grc.com/cleartype.htm questo magnifico articolo], oltre che dei seguenti link:
Per approfondimenti sulla rasterizzazione consiglio la lettura di [https://www.grc.com/cleartype.htm questo articolo] dettagliato ma comprensibile. Invece [http://www.rastertragedy.com/ questa pagina] è più simile ad una tesi di laurea, con un approccio più scientifico.


Altre fonti di informazione:
http://wiki.debian.org/Fonts<br>
http://wiki.debian.org/Fonts<br>
https://wiki.archlinux.org/index.php/Font_Configuration<br>
https://wiki.archlinux.org/index.php/Font_Configuration<br>
Riga 405: Riga 388:
|Estesa_da =  
|Estesa_da =  
:[[Utente:BubuXP|BubuXP]] 02:46, 21 mag 2013 (CEST) (riscrittura totale)
:[[Utente:BubuXP|BubuXP]] 02:46, 21 mag 2013 (CEST) (riscrittura totale)
: [[Utente:Danielsan|Danielsan]] (aggiunto paragrafo "Procedura semplificata")
: [[Utente:Danielsan|Danielsan]]
}}
}}


[[Categoria:Browser]]
[[Categoria:Browser]]
[[Categoria:Ottimizzazione del sistema]]
[[Categoria:Ottimizzazione del sistema]]

Versione delle 01:39, 11 dic 2013

Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Molti nuovi utenti di Debian, subito dopo averlo installato, si lamentano del brutto aspetto che hanno i caratteri (ad alcuni invece piacciono, de gustibus). Il problema risiede principalmente nella configurazione predefinita di Debian, che non imposta il rendering dei caratteri adeguatamente.

Ci sono vari modi e tanti parametri per migliorare il rendering, di seguito si farà una carrellata quanto più esplicativa possibile (spero). Ulteriori approfondimenti sull'argomento si possono leggere nell'ultimo capitolo "Riferimenti". Se invece non vi interessano i particolari dettagliati e volete prendere la strada più breve allora leggete questa guida.

Prima di cominciare bisognerebbe controllare che siano installati i pacchetti responsabili della gestione dei font, e cioè fontconfig, libfreetype6, libcairo2 e libxft2, ma è un controllo superfluo, dato che questi pacchetti sono dipendenze di tutti i principali ambienti desktop (senza un desktop grafico ci sarebbero solo caratteri bitmap, e di questa guida si potrebbe usare solo il paragrafo che riguarda la console Linux in tal caso).

In parole povere, FreeType è come la "mano" che disegna i caratteri sullo schermo, mentre Cairo è sarebbe la "matita" usata da FreeType per disegnare. Fontconfig gestisce, configura e personalizza i caratteri, e infine Xft è un componente del server grafico X che usa e "coordina" FreeType e Fontconfig (in quanto questi ultimi sono pensati per essere universali e non dipendenti da X).

Fontconfig

Tra le varie funzioni di Fontconfig c'è anche quella di indicare a FreeType come disegnare i caratteri. Ad esempio può dirgli di usare l'antialiasing su tutti i font tranne che su quelli di lingua orientale, o di disabilitare l'hinting su un determinato font quando questo è di dimensioni inferiori a 8 punti.

La configurazione di Fontconfig si trova in /etc/fonts/conf.d ed è composta da tanti file, ognuno con una sua funzione specifica, intuibile dal nome stesso del file. In realtà tutti i file di configurazione si trovano in /etc/fonts/conf.avail/ nota e vengono creati (o rimossi) dei link simbolici in /etc/fonts/conf.d in base alla caratteristica che si vuole abilitare (o disabilitare).
Ad esempio se si digita

# dpkg-reconfigure fontconfig-config

in base alle risposte date nella procedura guidata verranno creati dei link in conf.d
Però si sconsiglia di cambiare la configurazione con conf.d perché in conf.avail non sono presenti tutte le opzioni che è possibile usare per migliorare l'aspetto del font (per esempio, grossa mancanza, non c'è l'antialiasing). Invece di creare i file mancanti in conf.avail per poi linkarli in conf.d diventa molto più pratico ricorrere ad un altro metodo.

Dopo aver letto la configurazione in conf.d, Fontconfig cerca altre configurazioni nel file /etc/fonts/local.conf e poi in ~/.fonts.conf nota. Entrambi i file servono proprio per personalizzare Fontconfig e non esistono inizialmente, a meno che non vengano creati dall'utente o da qualche software. Le impostazioni contenute nel primo file, local.conf, saranno applicate a tutti gli utenti del sistema mentre quelle del secondo file, .fonts.conf nota, risiedendo nella home dell'utente sono applicate solo a quel singolo utente. La sintassi dei due file è identica (come quella dei file in conf.d) e possono convivere insieme.
In caso di impostazioni discordanti tra i vari file di configurazione, Fontconfig dovrebbe usare quest'ordine di lettura, dove la priorità spetta all'ultima configurazione letta:

  1. /etc/fonts/conf.d/
  2. /etc/fonts/local.conf
  3. ~/.fonts.conf nota
  4. impostazioni font dell'ambiente desktop (Xft)

anche se molto dipende da come sono impostati i parametri all'interno delle configurazioni, che potrebbero cambiare le priorità. Per esempio usando mode="assign" per impostare un valore, questo rimarrà tale anche se ne verrà impostato uno diverso successivamente (ma alcune applicazioni potrebbero anche usare l'ultimo valore letto a prescindere*; per informazioni man fonts-conf). Per sicurezza quando si usa .fonts.conf nota è meglio sostituire nel modello riportato sotto tutti i mode="append" presenti con mode="assign"

Ecco il modello di configurazione da usare nei file .conf:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<match target="pattern">

<!-- La rasterizzazione dei caratteri converte i dati vettoriali dei font
     in immagini bitmap, così da poter essere visualizzati sullo schermo.
     Il risultato può apparire frastagliato per via dell'aliasing.
     L'anti-aliasing aumenta il dettaglio visivo dei bordi dei caratteri. -->
		<edit mode="append" name="antialias">
			<bool>true</bool>
		</edit>

<!-- Abilitando l'opzione "hinting", le istruzioni di hinting TrueType
     incorporate nei font vengono interpretate dal Byte-Code Interpreter
     (BCI) di FreeType. Questa è la scelta migliore in caso di font
     contenenti buone istruzioni di hinting. -->
		<edit mode="append" name="hinting">
			<bool>true</bool>
		</edit>

<!-- Abilitando l'autohinter verranno ignorate le istruzioni di hinting
     contenute nei font ma verrà usato un algoritmo generico di hinting,
     che è quasi sempre peggiore delle istruzioni ma potrebbe migliorare
     la visualizzazione dei font che non hanno istruzioni incorporate.
     L'autohinter e il subpixel rendering non sono programmati per lavorare
     insieme e non devono essere abilitati contemporaneamente. -->
		<edit mode="append" name="autohint">
			<bool>false</bool>
		</edit>

<!-- L'hintstyle rappresenta quanto influenza avrà l'hinting sul risultato
     finale. Può essere impostato in "hintfull", "hintmedium", "hintslight"
     e "hintnone". Con autohint abilitato è consigliato "hintslight", mentre
     con autohint disabilitato (BCI) è consigliato "hintfull", ma è una
     scelta abbastanza soggettiva. -->
		<edit mode="append" name="hintstyle">
			<const>hintslight</const>
		</edit>

<!-- Il subpixel rendering riesce a triplicare efficacemente la risoluzione
     orizzontale o verticale dei font usando i subpixel del monitor.
     Fontconfig deve sapere che tipo di subpixel usa il vostro monitor per
     visualizzare correttamente i caratteri. Le possibili opzioni sono:
     "rgb", "bgr", "vrgb", "vbgr", "unknown" e "none". Moltissimi monitor
     odierni usano le specifiche "rgb" (Red-Green-Blue).
     Non abilitare contemporaneamente questa opzione e l'autohinter. -->
		<edit mode="append" name="rgba">
			<const>rgb</const>
		</edit>

<!-- Quando si usa il subpixel rendering bisognerebbe abilitare il filtro
     LCD, che serve ad ridurre i bordi colorati dei font. Il filtro
     "lcddefault" è quello più comune; "lcdlight" è un filtro leggero ideale
     per i font che sembrano troppo spessi o tenui; "lcdlegacy" è il filtro
     originale di Cairo; "lcdnone" disabilita il filtro. -->
		<edit mode="append" name="lcdfilter">
			<const>lcddefault</const>
		</edit>

<!-- Fontconfig dovrebbe prendere il valore DPI da Xorg. Per controllare
     il valore di Xorg usare il comando 'xdpyinfo | grep resolution'
     Per impostare manualmente il DPI disabilitare i tag-commento sotto -->
<!--
		<edit mode="append" name="dpi">
			<double>96</double>
		</edit>
-->

<!-- Alcuni font includono una versione bitmap che potrebbe essere usata
     al posto della vettoriale, specie alle dimensioni più piccole. Con
     questa opzione si disattiva l'utilizzo di questi caratteri bitmap. -->
		<edit mode="append" name="embeddedbitmap">
			<bool>false</bool>
		</edit>

	</match>

<!-- Rifiuta l'uso di font bitmap, Fontconfig userà solo font vettoriali
     tipo TrueType, OpenType, Postscript, ecc. -->
	<selectfont><rejectfont><pattern>
		<patelt name="scalable"><bool>false</bool></patelt>
	</pattern></rejectfont></selectfont>

<!-- I font predefiniti "Serif", "Sans-Serif" e "Monospace" sono in realtà
     degli alias, dei link, e possono essere cambiati usando la sostituzione
     font. Con lo stesso metodo si possono anche creare degli alias per altri
     font, l'importante è non dare un nome all'alias che sia uguale al nome di
     un font già presente nel sistema. Per esempio se non è installato Arial
     si può creare un alias con un suo font simile come FreeSans.
     Per personalizzare gli alias togliere i tag-commento sotto -->
<!--
	<alias>
		<family>serif</family>
		<prefer><family>DejaVu Serif</family></prefer>
	</alias>
	<alias>
		<family>sans-serif</family>
		<prefer><family>Ubuntu</family></prefer>
	</alias>
	<alias>
		<family>monospace</family>
		<prefer><family>Ubuntu Mono</family></prefer>
	</alias>

	<alias>
		<family>Arial</family>
		<prefer><family>FreeSans</family></prefer>
	</alias>
-->

</fontconfig>

Per creare il file basta usare il proprio editor preferito (es. nano). Per la configurazione di sistema:

# nano /etc/fonts/local.conf

oppure per il singolo utente:

$ nano ~/.fonts.conf

poi incollare il modello sopra, eventualmente modificarlo e salvare il file. Meglio poi eliminare i link in conf.d che riguardano le stesse impostazioni, per evitare strani risultati:

# rm /etc/fonts/conf.d/1*.conf
# rm /etc/fonts/conf.d/70*.conf
# dpkg-reconfigure fontconfig

dopo rigeneriamo la cache dei font con:

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

e infine riavviamo X facendo logout e login (oppure riavviando tutto il sistema) per abilitare il nuovo aspetto dei caratteri.

La configurazione sopra riportata è una configurazione "standard" che cerca di fornire il miglior risultato possibile sulla maggior parte dei sistemi. Però ci sono tanti fattori da considerare se i font elaborati con questa configurazione non sono ancora soddisfacenti. Potrebbe essere ad esempio per via del monitor che usa uno schema subpixel BGR (ma sono rari), differente dal comune RGB sul quale si basano le impostazioni predefinite; a volte è invece solo una questione di gusto personale.

Spesso i font hanno istruzioni di hinting codificate al loro interno e mentre alcuni possono dare un buon risultato con l'hinting "Slight", altri appariranno meglio con hinting "None", oppure con quello "Full". In ogni caso basta modificare i parametri nei file .conf aiutandosi con i commenti inclusi nel codice o con la documentazione (online e offline) per ottenere il risultato su schermo migliore per i vostri occhi.

C'è da considerare anche che l'ambiente desktop in uso può cambiare questi parametri, modificando direttamente il file ~/.fonts.conf (caso raro) o più spesso passando direttamente a Xft i propri valori di hinting con una priorità maggiore. Per esempio su Gnome3 le impostazioni predefinite (modificabili tramite gnome-tweak-tool) sono "Hinting: Full" e "Antialiasing: Greyscale". Per evitare discrepanze e conflitti è meglio cambiare questi valori con quelli usati nei file .conf.

Ogni desktop environment che si rispetti ha una sezione dove poter impostare i parametri base dell'aspetto dei caratteri e spesso sembrano sufficienti per avere un buon risultato, ma per un controllo più accurato il ricorso ai file .conf è necessario. Ad esempio alcuni caratteri risultano più leggibili senza hinting sotto una certa dimensione. Ciò è correggibile aggiungendo del codice simile a questo nel nostro file .conf:

	<match target="font">
		<test name="family">
			<string>DejaVu Sans Mono</string>
		</test>
		<test name="pixelsize" compare="less">
			<double>7.5</double>
		</test>
		<edit name="hinting">
			<bool>false</bool>
		</edit>
	</match>

Questo ad esempio in caso di carattere "DejaVu Sans Mono" con una dimensione inferiore ai 7.5 punti, deve disabilitare l'hinting. Si possono fare tante altre cose simili con Fontconfig, come assegnare dei parametri di hinting diversi da quelli generali per un dato font che non rende bene; per approfondimenti leggete la documentazione di Fontconfig (e visionate anche i file di configurazione del pacchetto fontconfig-infinality come esempio di applicazione pratica).

Alla fine del tuning potrete testare la vostra configurazione corrente in questa pagina.

Jessie

A partire dalla versione 2.10 di Fontconfig (presente da Debian 8 "Jessie" in poi) il file ~/.fonts.conf cambierà percorso, diventando ~/.config/fontconfig/fonts.conf ma sarà mantenuta la compatibilità con il vecchio percorso ancora per qualche versione. Cambiano anche la posizione della cache dei caratteri, da ~/.fontconfig/ a ~/.cache/fontconfig/ e di /etc/fonts/conf.avail/, che diventa /usr/share/fontconfig/conf.avail/.

Ubuntu

Molti utenti che passano da Ubuntu a Debian o che li usano entrambi si lamentano dell'aspetto dei caratteri "out of the box", nettamente migliore su Ubuntu.

Prima di Debian 7 "Wheezy" la differenza tra i due sistemi era più marcata, perché Ubuntu applicava delle patch al codice di Cairo e FreeType per migliorare la resa su schermo e se si voleva lo stesso risultato bisognava ricompilare i pacchetti interessati su Debian aggiungendo le patch.

A partire da Wheezy queste patch sono presenti anche in Debian (perché assimilate in upstream) e l'unica differenza rimasta tra Debian e Ubuntu adesso è la configurazione iniziale di Fontconfig. Su Ubuntu questa configurazione è ottenuta sempre con delle patch nel codice di Fontconfig, ma per fortuna non è necessario ricompilare nulla in questo caso, basta solo applicare la stessa configurazione di Ubuntu con local.conf per avere risultati identici.

La configurazione esposta nel paragrafo precedente è già uguale a quella di Ubuntu, quindi basta usarla senza modifiche se si vuole lo stesso risultato. Se si riscontrano delle piccole differenze nel rendering tra le due distribuzioni, ciò sarà dovuto alle differenti versioni delle librerie Fontconfig, FreeType e Cairo.

Per completare l'opera di "Ubuntizzazione" si può installare il font predefinito di Ubuntu, che è possibile scaricare dai repository di Ubuntu e per installarlo basta un:

# dpkg -i ttf-ubuntu-font-family_0.80-0ubuntu6_all.deb

Il font è presente in vari formati tra i quali Light, Regular, Medium e Bold. Alcuni programmi però non sembrano gestire bene tutte le varianti del font: per esempio l'interfaccia di VLC usa il font Medium invece del Regular. La soluzione più veloce è quella di cancellare le varianti Light e Medium, così che rimangano solo i font canonici. Per eliminarli, da terminale:

# rm /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-L.ttf
# rm /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-LI.ttf
# rm /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-M.ttf
# rm /usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-MI.ttf
# fc-cache -fv
$ fc-cache -fv

Infinality

Infinality è una combinazione di patch e configurazioni che puntano al massimo rendimento dei caratteri. Come scrive l'autore sul suo sito, l'obiettivo primario è migliorare la resa dei font imitando quelle dei vari sistemi operativi, mentre quello secondario è di permettere all'utente di personalizzare al meglio le impostazioni.
Allo stato attuale, Infinality consiste in un set di patch da applicare al motore di rendering dei font freetype per cambiarne/migliorarne alcuni comportamenti, e di un sistema di configurazione che si integra con fontconfig e ne diventa un'alternativa di fatto. Tra le varie configurazioni è degno di nota un "database" con un gran numero di font e le opzioni di rendering migliore per ognuno di essi (per esempio abilita l'autohint per i font senza istruzioni di hinting).
Prima di installare Infinality, meglio prima fare pulizia di configurazioni ridondanti (che probabilmente Infinality riesce a scavalcare o ignorare, ma meglio andare sul sicuro). Innanzitutto eliminare o spostare in una directory di backup i file /etc/fonts/local.conf e ~/.fonts.conf (in Jessie ~/.config/fontconfig/fonts.conf), considerati obsoleti da Infinality, poi rimuovere le impostazioni di hinting (che cominciano con 1) e quelle relative ai caratteri bitmap (che cominciano con 70) da /etc/fonts/conf.d/ con:

# rm /etc/fonts/conf.d/1*
# rm /etc/fonts/conf.d/70*

così dovremmo essere tornati alla configurazione iniziale di Debian.
Adesso si può aggiornare libfreetype6 con la versione patchata e poi installare la configurazione di Infinality, contenuta in fontconfig-infinality:

Gli altri pacchetti, il codice sorgente e i log di compilazione sono disponibili qui.
Se avete abilitato multiarch, quasi sicuramente vi troverete installate entrambe le versioni i386 e amd64 di libfreetype6 e dovrete aggiornarle entrambe. Per installare il tutto basta mettere i pacchetti in una nuova cartella vuota e dare un:

# dpkg -i /percorso/nuovacartella/*.deb

Dopo l'installazione è meglio riavviare il pc prima di configurare Infinality. Già dopo il riavvio potrete notare dei miglioramenti evidenti (o peggioramenti, in base ai propri gusti o ai font utilizzati), però se volete potete cambiare configurazione con il comando

# /etc/fonts/infinality/infctl.sh setstyle

che permette di scegliere tra vari preset che imitano il font hinting di altri sistemi operativi (ed è quasi indispensabile avere installati su Debian i font usati dal sistema operativo scelto per avere un buon risultato).
È possibile creare anche altri preset e modificare altri parametri, ma per farlo rimando alla lettura del file /etc/fonts/infinality/README e dei file di configurazione /etc/fonts/infinality/infinality.conf e /etc/X11/Xsession.d/99infinality-settings.
Per rimuovere Infinality e ripristinare lo status quo:

# dpkg --purge --force-depends libfreetype6 fontconfig-infinality
# apt-get install libfreetype6

o in caso di multiarch:

# dpkg --purge --force-depends libfreetype6:i386 libfreetype6:amd64 fontconfig-infinality
# apt-get install libfreetype6:i386 libfreetype6:amd64

poi ripristinare eventuali backup pre-Infinality e riavviare.

Xft

"X FreeType interface library" come dice il nome stesso, è una libreria che serve ad interfacciare il rasterizzatore FreeType con X (precisamente con XRender). Le applicazioni che si basano su X potrebbero ignorare le impostazioni di fontconfig e usare quelle di Xft.
Xft comunque si poggia su fontconfig e ne dovrebbe assumere anche le impostazioni di hinting e se nessuna applicazione mostra differenze di rendering si può tranquillamente lasciare tutto com'è.
In caso ci sia necessità di impostare manualmente i parametri di Xft è consigliabile usare gli stessi valori di .fonts.conf o local.conf per evitare conflitti.
Creiamo o modifichiamo il file .Xresources nella nostra home con:

$ nano ~/.Xresources
Bulb.png Suggerimento
Se invece del file ~/.Xresources si inseriscono queste opzioni in /etc/X11/Xresources/x11-common i cambiamenti saranno applicati a tutto il sistema e non ad un solo utente


Poi inseriamo il codice seguente:

! You can define basic font resources without the need of a fonts.conf file
! or a desktop environment. Note however, the use of a desktop environment
! and/or fonts.conf can override these settings.
! Your best option is to use one or the other, but not both.

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


! Fontconfig will default to the Xft.dpi variable if it is set.
! Xft.dpi is usually set by desktop environments (usually to Xorg's DPI
! setting). Use "xrdb -query | grep dpi" to query for the value.

! Xft.dpi: 96

Salviamo il file e riavviamo X facendo logout e login.
Se usate Infinality lo script di avvio /etc/X11/Xsession.d/99infinality-settings già si occupa di impostare questi parametri, quindi non è necessario specificarli altrove; è invece possibile modificare lo script se si vuole cambiarli.
Cambiando le impostazioni del font hinting su Gnome3 (e probabilmente anche su altri desktop environment), questi va a modificare direttamente i valori di Xft. Potete verificarlo cambiando i valori con gnome-tweak-tool e poi dando il comando xrdb -query per vedere i nuovi valori cambiati.

Iceweasel

Stranamente Iceweasel usa XRender invece di qualcosa di più recente come OpenGL per disegnare i caratteri, e questo può causare vari problemi di visualizzazione, come tearing e caratteri che sembrano in grassetto.
Per dire ad Iceweasel di non usare più XRender basta aprire la pagina di configurazione all'indirizzo about:config e impostare con un doppio clic il valore di gfx.xrender.enabled su false e di layers.acceleration.force-enabled su true e riavviare il browser per applicare le modifiche.
Da notare che ciò risolve il problema di visualizzazione dei caratteri, ma potrebbe far sorgere altri problemi, come ad esempio strani comportamenti del plugin Flash non-free.

DPI

Se i caratteri a schermo sono troppo piccoli (o troppo grandi) perché il monitor ha risoluzioni elevate (o basse), si può cambiare il valore del DPI specificando quello reale dello schermo (che sarebbe più corretto chiamare PPI).
Impostare il corretto DPI è necessario quando è richiesta una grande cura dei dettagli, come nel font rendering, ma anche in altri casi (software di grafica, di impaginazione, ecc.).
In Debian e in tutte le distribuzioni Linux, sono presenti due DPI: quello usato da Xorg e quello usato da Xft (e Fontconfig).

DPI di Xorg

Xorg ricava il suo valore dall'EDID del monitor ma se non si discosta molto dallo standard (non ufficiale) dei 96 DPI, usa tale valore. Potete controllare il valore attualmente impostato con il comando:

$ xdpyinfo | grep -B2 resolution

Impostare il giusto valore DPI su Xorg è importante per avere una corrispondenza più realistica possibile delle dimensioni su schermo con quelle reali.
Il valore del DPI reale di uno schermo è ottenibile dal rapporto della sua diagonale in pixel con quella in pollici. La diagonale in pollici è il classico valore che identifica la grandezza dello schermo (ad es. un monitor da 22", una tv da 42", ecc.), mentre per calcolare la diagonale in pixel bisogna applicare il teorema di Pitagora sulla risoluzione nativa dello schermo (ad es. 1366x768, 1920x1080, ecc.). Per facilitare il calcolo esistono delle calcolatrici online come questa e questa. A volte la misura in pollici dello schermo è minore (raramente maggiore) di quella dichiarata: tenetene conto quando fate il calcolo (per sicurezza potete misurare le dimensioni effettive e convertirle in pollici).
Ottenuto un valore DPI (ad es. 102.46), bisogna impostarlo su Xorg con il comando

$ xrandr --dpi 102.46

ma questo sarà resettato al vecchio valore dopo un riavvio di X. Per fare eseguire quel comando automaticamente ad ogni avvio di X:

# cat > /etc/X11/Xsession.d/96setdpi <<EOF
xrandr --dpi 102.46
EOF

ovviamente cambiate il 102.46 con il vostro DPI. Questo è il metodo più veloce ma se volete approfondire ci sono altri modi per impostare il DPI su Xorg, leggete ad esempio qui. Una volta impostato il DPI, potete verificare se è tutto ok aprendo un qualsiasi file pdf in formato A4 (come questo), mettendo lo zoom al 100% e sovrapponendo sul foglio a schermo un foglio di carta A4: se le dimensioni sono uguali o quasi il calcolo e la configurazione sono andati a buon fine.

DPI di Xft / Fontconfig

Questo DPI, rappresentato dalla variabile Xft.dpi, serve praticamente solo per impostare la grandezza dei caratteri e di altri elementi grafici su schermo. Fontconfig usa il valore di Xft.dpi il quale, se non è stato impostato manualmente o dall'ambiente desktop, è uguale al DPI di Xorg.
Per controllare l'attuale valore di Xft.dpi (e di altre variabili Xft impostate) usate il comando

$ xrdb -query

Se il valore Xft.dpi non è presente, è implicito che è uguale a quello di Xorg. Per evitare possibili distorsioni dell'interfaccia grafica (tipo immagini bitmap che scalano male) è consigliabile impostare questo DPI sui dei valori "standard":

  • 48 (50%)
  • 72 (75%)
  • 96 (100%)
  • 120 (125%)
  • 144 (150%)
  • 168 (175%)
  • 192 (200%)

ma si può comunque usare un valore qualsiasi. Da notare che alcuni elementi dell'interfaccia grafica potrebbero non scendere sotto i 96 DPI.
Questi valori vanno impostati su /etc/fonts/local.conf e /etc/X11/Xresources/x11-common o nelle rispettive controparti per utente singolo ~/.fonts.conf e ~/.Xresources. Se per questi file avete usato i template sopra, le sezione dove inserire il DPI sono disattivate da un tag di commento: togliete quei tag per abilitare. Se usate Infinality, dovete impostate i valori del DPI nei file /etc/fonts/infinality/infinality.conf e /etc/X11/Xsession.d/99infinality-settings
Nei valori DPI con parte decimale (per esempio 102.46) si usa il punto e non la virgola. Riavviate per vedere il risultato e, se questo non è soddisfacente, rimettete tutto com'era per tornare al valori standard.

Gli ambienti desktop potrebbero impostare ad ogni avvio i parametri di Xft, sovrascrivendo quelli impostati nei file di configurazione, tra i quali anche Xft.dpi. In questi casi bisogna usare gli strumenti di configurazione messi a disposizione dal desktop per impostare il DPI.

  • Gnome3 imposta Xft.dpi a 96. Per cambiare questo valore bisogna installare gnome-tweak-tool e poi andare nel menù "Preferenze" > "Impostazioni avanzate" > "Tipi di carattere" > "Text scaling factor" e impostare il proprio valore, considerando che quello predefinito "1,0" corrisponde a 96 DPI (quindi 1,25 = 120 DPI, e così via).
  • Non so se KDE4 sovrascrive come Gnome3, ma in ogni caso si può cambiare il valore predefinito da "KDE menu" > "Personal Settings" > "Application Appearance" > "Fonts" > "Force fonts DPI".
  • LXDE non manomette il valore di Xft.dpi, lasciando quello impostato nei file di configurazione di fontconfig/Xft/Infinality.

Installazione nuovi caratteri

Quando si vuole installare un nuovo carattere che non è già presente nei repository di Debian, bisogna mettere il/i file del font in questione in determinate directory per essere utilizzabile.
La directory dove sono presenti tutti i font di sistema è /usr/share/fonts/ ma è preferibile non usare questa. I font vanno inseriti in ~/.fonts/ per poter essere usati dall'utente corrente, oppure in /usr/local/share/fonts/ per metterli a disposizione di tutti gli utenti del sistema.
È buona abitudine dopo l'installazione o la rimozione di nuovi font rigenerare la cache con:

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

Facciamo un esempio: per usare i caratteri Ubuntu presenti nel sito ufficiale come archivio .zip, basta estrarli direttamente nella cartella dei font dell'utente e aggiornare la cache dei font con:

$ unzip ubuntu-font-family-0.80.zip -d ~/.fonts/
$ fc-cache -fv

oppure, per renderli disponibili anche agli altri utenti estrarli nella cartella dei font locali con:

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

Se vi piacciono i font di Windows e questo è presente sul vostro pc in dual boot, basta usare questo metodo per montare la partizione di sistema di Windows e copiare i font da \Windows\Fonts alle directory dei font di Debian (se non avete Windows potete sempre cercarli sul web, e comunque considerate che il FreeType di Linux è pur sempre diverso dal ClearType di Windows e i caratteri possono sembrare diversi).
A chi interessa ecco alcuni dei caratteri usati nelle interfacce grafiche di vari sistemi operativi:
- Windows XP: Tahoma
- Windows 7 / 8: Segoe UI
- Mac OS X: Lucida Grande
- iOS: Helvetica Neue
- Android (< 4.0): famiglia di caratteri Droid (presente in Debian)
- Android: Roboto (presente in Debian Sid)
- Ubuntu: la già citata famiglia di caratteri Ubuntu
- Gnome 3: Cantarell (presente in Debian)
- KDE: Oxygen
Sul web ci sono tanti siti con collezioni di font, come Google Web Fonts. Dei font pacchettizzati in .deb potete trovarli qui, mentre su Typetester potrete fare dei confronti tra caratteri.

Da notare che, come per i vari software, anche i caratteri hanno un numero di versione, perché possono essere revisionati per svariati motivi (come per l'aggiunta del supporto ad una lingua non latina, per migliorare le istruzioni di hinting, per perfezionare il design, ecc.).

Console Linux

Si possono anche cambiare i font bitmap della console Linux (i font visibili quando X non è avviato, per esempio quando si avvia il sistema in modalità ripristino) per aumentare la leggibilità.

In breve, bisogna cambiare nel file /etc/default/console-setup il valore di FONTFACE= con il nome di un altro carattere e quello di FONTSIZE= con una grandezza del carattere, che varia in base al carattere scelto. Ecco i caratteri selezionabili e le possibili dimensioni per ciascuno:

  • VGA - dimensioni: 8x8, 8x14, 8x16, 16x28, 16x32
  • Terminus - dimensioni: 6x12, 8x14, 8x16, 10x20, 12x24, 14x28, 16x32
  • TerminusBold - dimensioni: 8x14, 8x16, 10x20, 12x24, 14x28, 16x32
  • TerminusBoldVGA - dimensioni: 8x14, 8x16
  • Fixed - dimensioni: 8x13, 8x14, 8x15, 8x16, 8x18

Un esempio:

FONTFACE="Terminus"
FONTSIZE="10x20"

Dopo aver salvato il file si può riavviare il sistema oppure se si è già nella console si può usare il comando /etc/init.d/console-setup restart

In alternativa è possibile usare una procedura guidata con:

# dpkg-reconfigure console-setup

Per maggiori dettagli: man console-setup

Riferimenti

Per approfondimenti sulla rasterizzazione consiglio la lettura di questo articolo dettagliato ma comprensibile. Invece questa pagina è più simile ad una tesi di laurea, con un approccio più scientifico.

Altre fonti di informazione: 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/
http://www.antigrain.com/research/font_rasterization/index.html
https://lists.ubuntu.com/archives/ubuntu-desktop/2008-December/001887.html
http://www.webupd8.org/2013/06/better-font-rendering-in-linux-with.html
https://en.wikipedia.org/wiki/Font_smoothing
https://en.wikipedia.org/wiki/Font_hinting
https://en.wikipedia.org/wiki/Cairo_%28graphics%29




Guida scritta da: Gash Swirl-auth60.png Debianized 60%
Estesa da:
BubuXP 02:46, 21 mag 2013 (CEST) (riscrittura totale)
Danielsan
Verificata da:
BubuXP 02:46, 21 mag 2013 (CEST)
--keltik 17:02, 21 giu 2013 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized