Migliorare l'aspetto dei font: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (correzione nome e percorso del file local.conf)
m (→‎Xft: Nascosto box informativo riguardante Infinality e rimosso del vecchio testo nascosto riguardante Iceweasel)
 
(134 versioni intermedie di 7 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili|Wheezy|Jessie|Testing_2016|Unstable_2016}}
 
== Introduzione ==
== 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.
Molti nuovi utenti di Debian, specie se provengono da altre distribuzioni Linux più "rifinite", si lamentano del brutto aspetto che hanno i caratteri, (anche se ad alcuni invece piacciono, de gustibus). Il problema risiede nella configurazione predefinita di Debian, che non imposta il [http://en.wikipedia.org/wiki/Font_rasterization rendering dei caratteri] adeguatamente. Nelle ultime versioni di Debian la situazione "out of the box" è un po' migliorata, ma si può fare di più.
 
Ci sono vari modi e tanti parametri per migliorare il rendering, di seguito si farà un'esposizione quanto più esplicativa possibile (spero). Ulteriori approfondimenti tecnici sull'argomento si possono reperire nell'ultimo capitolo "[[Migliorare l'aspetto dei font#Riferimenti|Riferimenti]]".<br>
A chi invece interessa solo il risultato finale può leggere direttamente la "[[Migliorare l'aspetto dei font#Guida rapida|Guida rapida]]".
 
In passato, prima di cominciare si sarebbe dovuto controllare che fossero state installate le librerie responsabili della gestione e visualizzazione dei font, e cioè [http://freetype.org/ FreeType], [http://fontconfig.org/ Fontconfig], [http://fribidi.org/ FriBidi], [http://www.freedesktop.org/wiki/Software/HarfBuzz HarfBuzz], [http://pango.org Pango], [http://www.freedesktop.org/wiki/Software/Xft/ Xft] e [http://www.cairographics.org/ Cairo], ma ora sarebbe un controllo superfluo, dato che queste librerie sono dipendenze di molti software e dei principali ambienti desktop. Quasi tutti i software che utilizzano una GUI avranno tra le dipendenze anche qualcuna di queste librerie.


== Configurazione fontconfig ==
Se invece si utilizza Debian senza un interfaccia grafica, e quindi si visualizzano a schermo solo dei [http://en.wikipedia.org/wiki/Computer_font#Bitmap_fonts caratteri bitmap], questa guida potrebbe risultare utile solo per il paragrafo che riguarda la [[Migliorare l'aspetto dei font#Console Linux|console Linux]].
Se assenti, cosa improbabile, installiamo queste tre librerie:
<pre># apt-get install fontconfig libcairo2 libxft2</pre>


== Fontconfig ==
''Fontconfig'' è la libreria responsabile di fornire l'elenco dei caratteri disponibili nel sistema alle applicazioni e tra le varie funzioni c'è anche quella di indicare a ''FreeType'' come disegnare i caratteri. Ha un linguaggio di configurazione in XML che permette un'elevata personalizzazione, ma che ne [https://eev.ee/blog/2015/05/20/i-stared-into-the-fontconfig-and-the-fontconfig-stared-back-at-me/ limita la semplicità d'uso]. Ad esempio può essere configurato per usare l'antialiasing su tutti i font tranne che su quelli di lingue orientali, oppure può disabilitare l'hinting su uno specifico font quando questo è di dimensioni inferiori a 8 punti.


Apriamo un terminale con i permessi di root e diamo:
La configurazione predefinita 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>/usr/share/fontconfig/conf.avail/</code> 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 esegue
<pre># dpkg-reconfigure fontconfig-config</pre>
<pre># dpkg-reconfigure fontconfig-config</pre>
e rispondiamo nell'ordine <code>Nativo - Sempre - No</code>, poi possiamo dare:
in base alle risposte date nella procedura guidata verranno creati o rimossi dei link in <code>conf.d/</code><br>
<pre># dpkg-reconfigure fontconfig</pre>
Però si sconsiglia di cambiare la configurazione in questo modo perché in <code>conf.avail/</code> non sono presenti tutte le opzioni che è possibile impostare con ''Fontconfig'' per migliorare l'aspetto del font. Invece di creare dei file con le configurazioni mancanti in <code>conf.d/</code> diventa molto più pratico ricorrere ad un altro metodo, illustrato di seguito.
e dopo rigeneriamo la cache dei font con:
<pre># fc-cache -fv
$ fc-cache -fv</pre>


Dopo aver letto le configurazioni in <code>conf.d/</code>, ''Fontconfig'' ne cerca delle altre nel file <code>/etc/fonts/local.conf</code> e poi in <code>~/.config/fontconfig/fonts.conf</code>. Entrambi i file non esistono inizialmente, e sono creati dall'utente o da qualche applicazione. Le impostazioni contenute in <code>/etc/fonts/local.conf</code> sono applicate a tutti gli utenti del sistema, mentre quelle in <code>~/.config/fontconfig/fonts.conf</code> risiedono nella home dell'utente e sono applicate solo a quell'utente. La sintassi dei due file è identica (come quella dei file in <code>conf.d/</code>) e possono convivere insieme.<br>
In caso un'opzione fosse presente in più 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>~/.config/fontconfig/fonts.conf</code>
# impostazioni font degli ambienti desktop (che usano ''Xft'')
A seconda di come sono impostati i parametri all'interno delle configurazioni, ciò potrebbe rendere nulla la priorità. Per esempio usando <code>mode="assign"</code> per impostare un valore, questo rimarrà tale anche se ne verrà impostato uno diverso successivamente; per informazioni [http://www.freedesktop.org/software/fontconfig/fontconfig-user.html <code>man fonts-conf</code>].


Ora, con i normali permessi utente, creiamo il file <code>.fonts.conf</code> nella nostra home:
Ecco la configurazione suggerita da usare nel file <code>/etc/fonts/local.conf</code>:
<pre>$ nano ~/.fonts.conf</pre>
ed inseriamo quanto segue:
<pre>
<pre>
<?xml version='1.0'?>
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<fontconfig>
<match target="font">
<match target="pattern">


<!-- Font rasterization converts vector font data to bitmap data so that it can be displayed.
<!-- La rasterizzazione dei caratteri converte i dati vettoriali dei font
     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.
<edit mode="assign" name="antialias">
     L'anti-aliasing aumenta il dettaglio visivo dei bordi dei caratteri. -->
<edit mode="append" name="antialias">
<bool>true</bool>
<bool>true</bool>
</edit>
</edit>


<!-- Using normal hinting, TrueType hinting instructions in the font are interpreted by
<!-- Abilitando l'opzione "hinting", le istruzioni di hinting TrueType
     freetype's Byte-Code Interpreter. This works best for fonts with good hinting instructions. -->
     incorporate nei font vengono interpretate dal Byte-Code Interpreter
<edit mode="assign" name="hinting">
    (BCI) di FreeType. Questa è la scelta migliore in caso di font
    contenenti buone istruzioni di 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 fonts with good instructions,
<!-- L'hintstyle rappresenta quanto influenza avrà l'hinting sul risultato
     but better for those with poor or no instructions. The autohinter and subpixel rendering are not
     finale. Può essere impostato in "hintfull", "hintmedium", "hintslight"
    designed to work together and should not be used in combination. -->
    e "hintnone". Con autohint abilitato è consigliato "hintslight", mentre
<edit mode="assign" name="autohint">
    con autohint disabilitato (BCI) è consigliato "hintfull", ma è una
<bool>false</bool>
     scelta abbastanza soggettiva. -->
</edit>
<edit mode="append" name="hintstyle">
 
<!-- Hint style is the amount of influence the hinting mode has. Hinting can be set to:
    "hintfull", "hintmedium", "hintslight" and "hintnone". With BCI hinting, "hintfull" should
     work best for most fonts. With the autohinter, "hintslight" is recommended. -->
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
<const>hintslight</const>
</edit>
</edit>


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


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


</match>
<!-- Abilitando l'autohinter verranno ignorate le istruzioni di hinting
 
    contenute nei font e verrà usato invece un algoritmo generico di
<!-- Manually set the DPI value
    hinting che risulta spesso peggiore ma potrebbe migliorare la
<match target="pattern">
    visualizzazione dei font che non hanno istruzioni incorporate, come
<edit name="dpi" mode="assign">
    molti font nel formato OpenType.
<double>102</double>
    Nelle più recenti versioni di FreeType, se l'hintstyle è impostato su
    "hintslight", verrà usato automaticamente l'autohinter se il font non
    contiene le istruzioni incorporate, quindi meglio ignorare questa
    opzione, così da essere gestita automaticamente. -->
<!--
<edit mode="append" name="autohint">
<bool>false</bool>
</edit>
</edit>
</match>
-->
-->


</fontconfig>
<!-- Fontconfig dovrebbe prendere il valore DPI da Xorg. Per controllare
</pre>
    il valore di Xorg usare il comando 'xdpyinfo | grep resolution'
Salviamo il file e riavviamo X facendo logout e login.
    Per impostare manualmente il DPI disabilitare i tag-commento sotto -->
 
NOTA: dalla versione 2.10 di fontconfig (non ancora disponibile in debian al momento della scrittura) il file  <code>~/.fonts.conf</code> cambierà percorso, diventando  <code>~/.config/fontconfig/fonts.conf</code> (salvo cambiamenti della [http://pkg-fonts.alioth.debian.org/ Debian Fonts Task Force]).
 
 
=== Preset fontconfig di Ubuntu ===
Se vi piace il font rendering di Ubuntu, possiamo copiarne le sue impostazioni.<br>
Ubuntu usa il metodo di configurazione globale creando dei link simbolici delle configuzioni predefinite (contenute in <code>/etc/fonts/conf.avail/</code>) dentro la directory che viene usata per impostare il rendering di fontconfig in assenza di impostazioni utente (ovvero <code>/etc/fonts/conf.d/</code>). 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.
 
Per evitare "mix" tra le impostazioni di Ubuntu e quelle predefinite di Debian, disattiviamo queste ultime per sicurezza con:
<pre># mv /etc/fonts/conf.d /etc/fonts/bak.conf.d</pre>
 
Ho riunito tutte le impostazioni contenute in <code>/etc/fonts/conf.d/</code> di Ubuntu in un unico file. Basta creare il file <code>/etc/fonts/conf.d/51-local.conf</code> con:
<pre>
# mkdir /etc/fonts/conf.d
# nano /etc/fonts/conf.d/51-local.conf
</pre>
fare un copia-incolla e salvare. Il contenuto del file essendo abbastanza grande l'ho messo [[Appendice | alla fine]] di questa pagina per non rovinare la leggibilità.
 
Fatto ciò dare i comandi:
<pre>
# sudo dpkg-reconfigure fontconfig
# fc-cache -fv
$ fc-cache -fv
</pre>
poi fare logout e login e già siamo a posto. Così facendo tutti gli utenti del sistema avranno questa configurazione, ma ognuno se vuole può usare <code>~/.fonts.conf</code> per cambiare la propria configurazione.
 
Se si vuole ancora più un "Ubuntu-style" si può scaricare la [http://font.ubuntu.com/ famiglia] di [http://font.ubuntu.com/download/ubuntu-font-family-0.80.zip caratteri Ubuntu], ed estrarre l'archivio in <code>/usr/local/share/fonts</code> per mettere i font a disposizione di tutti gli utenti del sistema (se siete gelosi dei vostri font allora basta estrarli in <code>~/.fonts/</code>):
<pre>
# unzip ubuntu-font-family-0.80.zip -d /usr/local/share/fonts/
# fc-cache -fv
$ fc-cache -fv
</pre>
 
Per ripristinare la configurazione di default di Debian:
<pre>
# rm -R /etc/fonts/conf.d
# mv /etc/fonts/bak.conf.d /etc/fonts/conf.d
</pre>
 
 
== 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 <code>.Xresources</code> nella nostra home con:
<pre>$ nano ~/.Xresources</pre>
ed aggiungiamo quanto segue:
<pre>
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
</pre>
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 [http://members.ping.de/~sven/dpi.html questo calcolatore].
 
Una volta trovato il valore DPI (o PPI) del monitor basta sostituirlo nelle righe commentate dei file <code>.fonts.conf</code> e <code>.Xresources</code>, 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 <code>/etc/kde3/kdm/kdmrc</code>. Cercare la riga:
<pre>ServerArgsLocal=-nolisten tcp</pre>
e aggiungere il valore DPI desiderato:
<pre>ServerArgsLocal=-nolisten tcp -dpi 96</pre>
 
 
== Appendice ==
Configurazione fontconfig di default di Ubuntu
<pre>
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--  Use the Antialiasing -->
  <match target="font">
    <edit name="antialias" mode="assign"><bool>true</bool></edit>
  </match>
<!--  Use Hinting -->
  <match target="font">
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
  </match>
<!--  Use Slight Hinting -->
  <match target="font">
    <edit name="hintstyle" mode="assign"><const>hintslight</const></edit>
  </match>
<!-- Use lcddefault as default for LCD filter -->
  <match target="font">
    <edit mode="assign" name="lcdfilter">
      <const>lcddefault</const>
    </edit>
  </match>
<!--
<!--
  Some Asian fonts misadvertise themselves as monospaced when
<edit mode="append" name="dpi">
  in fact they are dual-spaced (half and full).  This makes
<double>96</double>
  FreeType very confused as it forces all widths to match.
  Undo this magic by disabling the width forcing code -->
<match target="font">
<test name="family"><string>GulimChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>
 
<match target="font">
<test name="family"><string>DotumChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>
 
<match target="font">
<test name="family"><string>BatangChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>
 
<match target="font">
<test name="family"><string>GungsuhChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>
<!--
The Bitstream Vera fonts have GASP entries suggesting that hinting be
disabled below 8 ppem, but FreeType ignores those, preferring to use
the data found in the instructed hints.  The initial Vera release
didn't include the right instructions in the 'prep' table. Fix this
by disabling hinting manually at smaller sizes (< 8ppem) -->
<match target="font">
<test name="family">
<string>Bitstream Vera Sans</string>
</test>
<test name="pixelsize" compare="less">
<double>7.5</double>
</test>
<edit name="hinting">
<bool>false</bool>
</edit>
</edit>
</match>
-->


<match target="font">
<!-- Alcuni font incorporano una versione bitmap che potrebbe essere usata
<test name="family">
    al posto della vettoriale, specie alle dimensioni più piccole. Con
<string>Bitstream Vera Serif</string>
    questa opzione si disattiva l'utilizzo di questi caratteri bitmap. -->
</test>
<edit mode="append" name="embeddedbitmap">
<test name="pixelsize" compare="less">
<double>7.5</double>
</test>
<edit name="hinting">
<bool>false</bool>
<bool>false</bool>
</edit>
</edit>
</match>


<match target="font">
<test name="family">
<string>Bitstream Vera Sans Mono</string>
</test>
<test name="pixelsize" compare="less">
<double>7.5</double>
</test>
<edit name="hinting">
<bool>false</bool>
</edit>
</match>
</match>
<!-- Alias similar/metric-compatible families from various sources:
PostScript fonts:
Helvetica
Times
Courier
URW fonts:
Nimbus Sans L
Nimbus Roman No9 L
Nimbus Mono L


Microsoft fonts:
<!-- Rifiuta l'uso di font bitmap, Fontconfig userà solo font vettoriali
Arial
    tipo TrueType, OpenType, Postscript, ecc. -->
Times New Roman
<selectfont><rejectfont><pattern>
Courier New
<patelt name="scalable"><bool>false</bool></patelt>
Liberation fonts:
</pattern></rejectfont></selectfont>
Liberation Sans
Liberation Serif
Liberation Mono
StarOffice fonts:
Albany
Thorndale
Cumberland
AMT fonts:
Albany AMT
Thorndale AMT
Cumberland AMT


    Of these, URW fonts are design compatible with PostScrict fonts,
<!-- Rifiuta i font Type 1 perché non hanno un buon rendering -->
    and the Liberation, StarOffice, and AMT ones are compatible with
<selectfont><rejectfont><pattern>
    Microsoft fonts.
<patelt name="fontformat"><string>Type 1</string></patelt>
</pattern></rejectfont></selectfont>


    We want for each of them to fallback to any of these
<!-- I font predefiniti "Serif", "Sans-Serif" e "Monospace" sono in realtà
    available, but in an order preferring similar designs
    degli alias a dei font predefiniti, e possono essere cambiati usando la
    first.  We do this in three steps:
    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
1) Alias each specific to it's generic family.
    uguale al nome di un font già presente nel sistema. Per esempio se non è
  eg. Liberation Sans to Arial
    installato Arial si può creare un alias con un suo font simile come FreeSans.
 
    Per personalizzare gli alias togliere i tag-commento sotto -->
2) Weak alias each generic to the other generic of its family.
  eg. Arial to Helvetica
 
3) Alias each generic to its specifics.
  eg. Arial to Liberation Sans, Albany, and Albany AMT
-->
<!-- Map specifics to generics -->
 
<!-- PostScript -->
<alias binding="same">
  <family>Nimbus Sans L</family>
  <default>
  <family>Helvetica</family>
  </default>
</alias>
 
<alias binding="same">
  <family>Nimbus Roman No9 L</family>
  <default>
  <family>Times</family>
  </default>
</alias>
 
<alias binding="same">
  <family>Nimbus Mono L</family>
  <default>
  <family>Courier</family>
  </default>
</alias>
 
 
<!-- Microsoft -->
<alias binding="same">
  <family>Liberation Sans</family>
  <family>Albany</family>
  <family>Albany AMT</family>
  <default>
  <family>Arial</family>
  </default>
</alias>
 
<alias binding="same">
  <family>Liberation Serif</family>
  <family>Thorndale</family>
  <family>Thorndale AMT</family>
  <default>
  <family>Times New Roman</family>
  </default>
</alias>
 
<alias binding="same">
  <family>Liberation Mono</family>
  <family>Cumberland</family>
  <family>Cumberland AMT</family>
  <default>
  <family>Courier New</family>
  </default>
</alias>
 
 
 
<!-- Accept the other group as fallback -->
 
 
<!-- PostScript -->
<alias>
  <family>Helvetica</family>
  <default>
  <family>Arial</family>
  </default>
</alias>
 
<alias>
  <family>Times</family>
  <default>
  <family>Times New Roman</family>
  </default>
</alias>
 
<alias>
  <family>Courier</family>
  <default>
  <family>Courier New</family>
  </default>
</alias>
 
 
<!-- Microsoft -->
<alias>
  <family>Arial</family>
  <default>
  <family>Helvetica</family>
  </default>
</alias>
 
<alias>
  <family>Times New Roman</family>
  <default>
  <family>Times</family>
  </default>
</alias>
 
<alias>
  <family>Courier New</family>
  <default>
  <family>Courier</family>
  </default>
</alias>
 
 
 
<!-- Map generics to specifics -->
 
 
<!-- PostScript -->
<alias binding="same">
  <family>Helvetica</family>
  <accept>
  <family>Nimbus Sans L</family>
  </accept>
</alias>
 
<alias binding="same">
  <family>Times</family>
  <accept>
  <family>Nimbus Roman No9 L</family>
  </accept>
</alias>
 
<alias binding="same">
  <family>Courier</family>
  <accept>
  <family>Nimbus Mono L</family>
  </accept>
</alias>
 
 
<!-- Microsoft -->
<alias binding="same">
  <family>Arial</family>
  <accept>
  <family>Liberation Sans</family>
  <family>Albany</family>
  <family>Albany AMT</family>
  </accept>
</alias>
 
<alias binding="same">
  <family>Times New Roman</family>
  <accept>
  <family>Liberation Serif</family>
  <family>Thorndale</family>
  <family>Thorndale AMT</family>
  </accept>
</alias>
 
<alias binding="same">
  <family>Courier New</family>
  <accept>
  <family>Liberation Mono</family>
  <family>Cumberland</family>
  <family>Cumberland AMT</family>
  </accept>
</alias>
<!--
<!--
  URW provides metric and shape compatible fonts for some Adobe families.
  Helvetica, Courier, and Times are handled in 30-metric-aliases.conf -->
<alias binding="same">
  <family>Avant Garde</family>
  <accept><family>URW Gothic L</family></accept>
</alias>
<alias binding="same">
  <family>Bookman</family>
  <accept><family>URW Bookman L</family></accept>
</alias>
<alias binding="same">
  <family>New Century Schoolbook</family>
  <accept><family>Century Schoolbook L</family></accept>
</alias>
<alias binding="same">
  <family>Palatino</family>
  <accept><family>URW Palladio L</family></accept>
</alias>
<alias binding="same">
  <family>Zapf Chancery</family>
  <accept><family>URW Chancery L</family></accept>
</alias>
<alias binding="same">
  <family>Zapf Dingbats</family>
  <accept><family>Dingbats</family></accept>
</alias>
<match target="pattern">
  <test name="family">
    <string>Symbol</string>
  </test>
  <edit name="family" mode="append" binding="same">
    <string>Standard Symbols L</string>
  </edit>
</match>
<!--
  Mark common families with their generics so we'll get
  something reasonable -->
<!-- Serif faces -->
<alias>
<alias>
<family>Nazli</family>
<family>serif</family>
<family>Lotoos</family>
<prefer><family>DejaVu Serif</family></prefer>
<family>Mitra</family>
<family>Ferdosi</family>
<family>Badr</family>
<family>Zar</family>
<family>Titr</family>
<family>Jadid</family>
<family>Kochi Mincho</family>
<family>AR PL SungtiL GB</family>
<family>AR PL Mingti2L Big5</family>
<family>MS 明朝</family>
<family>NanumMyeongjo</family>
<family>UnBatang</family>
<family>Baekmuk Batang</family>
<family>MgOpen Canonica</family>
<family>Sazanami Mincho</family>
<family>AR PL ZenKai Uni</family>
<family>ZYSong18030</family>
<family>FreeSerif</family>
<default><family>serif</family></default>
</alias>
</alias>
<!-- Sans-serif faces -->
<alias>
<alias>
<family>Arshia</family>
<family>sans-serif</family>
<family>Elham</family>
<prefer><family>DejaVu Sans</family></prefer>
<family>Farnaz</family>
<family>Nasim</family>
<family>Sina</family>
<family>Roya</family>
<family>Koodak</family>
<family>Terafik</family>
<family>Kochi Gothic</family>
<family>AR PL KaitiM GB</family>
<family>AR PL KaitiM Big5</family>
<family>MS ゴシック</family>
<family>NanumGothic</family>
<family>UnDotum</family>
<family>Baekmuk Dotum</family>
<family>Baekmuk Gulim</family>
<family>SimSun</family>
<family>MgOpen Modata</family>
<family>MgOpen Moderna</family>
<family>Sazanami Gothic</family>
<family>AR PL ShanHeiSun Uni</family>
<family>ZYSong18030</family>
<family>FreeSans</family>
<default><family>sans-serif</family></default>
</alias>
</alias>
<!-- Monospace faces -->
<alias>
<family>NanumGothicCoding</family>
<family>NSimSun</family>
<family>ZYSong18030</family>
<family>FreeMono</family>
<default><family>monospace</family></default>
</alias>
<!-- Fantasy faces -->
<alias>
<alias>
<family>Homa</family>
<family>monospace</family>
<family>Kamran</family>
<prefer><family>DejaVu Sans Mono</family></prefer>
<family>Fantezi</family>
<family>Tabassom</family>
<default><family>fantasy</family></default>
</alias>
</alias>


<!-- Cursive faces -->
<alias>
<alias>
<family>IranNastaliq</family>
<family>Nafees Nastaleeq</family>
<default><family>cursive</family></default>
</alias>
<!--
  Mark common families with their generics so we'll get
  something reasonable -->
<!-- Serif faces -->
<alias>
<family>Bitstream Vera Serif</family>
<family>DejaVu Serif</family>
<family>Liberation Serif</family>
<family>Times New Roman</family>
<family>Times</family>
<family>Nimbus Roman No9 L</family>
<family>Luxi Serif</family>
<family>Thorndale AMT</family>
<family>Thorndale</family>
<default><family>serif</family></default>
</alias>
<!-- Sans-serif faces -->
<alias>
<family>Bitstream Vera Sans</family>
<family>DejaVu Sans</family>
<family>Liberation Sans</family>
<family>Arial</family>
<family>Arial</family>
<family>Helvetica</family>
<prefer><family>FreeSans</family></prefer>
<family>Verdana</family>
<family>Albany AMT</family>
<family>Albany</family>
<family>Nimbus Sans L</family>
<family>Luxi Sans</family>
<default><family>sans-serif</family></default>
</alias>
<!-- Monospace faces -->
<alias>
<family>Bitstream Vera Sans Mono</family>
<family>DejaVu Sans Mono</family>
<family>Liberation Mono</family>
<family>Inconsolata</family>
<family>Courier New</family>
<family>Courier</family>
<family>Andale Mono</family>
<family>Luxi Mono</family>
<family>Cumberland AMT</family>
<family>Cumberland</family>
<family>Nimbus Mono L</family>
<default><family>monospace</family></default>
</alias>
<!-- Fantasy faces -->
<alias>
<family>Impact</family>
<family>Copperplate Gothic Std</family>
<family>Cooper Std</family>
<family>Bauhaus Std</family>
<default><family>fantasy</family></default>
</alias>
<!-- Cursive faces -->
<alias>
<family>ITC Zapf Chancery Std</family>
<family>Zapfino</family>
<family>Comic Sans MS</family>
<default><family>cursive</family></default>
</alias>
</alias>
-->


<!-- If the font still has no generic name, add sans-serif -->
</fontconfig>
<match target="pattern">
</pre>
<test qual="all" name="family" compare="not_eq">
Se si usa il modello sopra per creare <code>~/.config/fontconfig/fonts.conf</code> bisognerebbe sostituire tutti i <code>mode="append"</code> presenti con <code>mode="assign"</code> per far convivere configurazioni di sistema e dell'utente senza problemi di priorità.
<string>sans-serif</string>
Per creare il file basta usare il proprio editor preferito (es. ''nano''). Per la configurazione di sistema:
</test>
<pre># nano /etc/fonts/local.conf</pre>
<test qual="all" name="family" compare="not_eq">
oppure per il singolo utente:
<string>serif</string>
<pre>$ nano ~/.config/fontconfig/fonts.conf</pre>
</test>
poi incollare il modello sopra, eventualmente modificarlo e salvare il file.<br>
<test qual="all" name="family" compare="not_eq">
Dopo rigeneriamo le cache dei font (di sistema e dell'utente) con:
<string>monospace</string>
<pre># fc-cache -fv
</test>
$ fc-cache -fv</pre>
<edit name="family" mode="append_last">
e infine riavviamo X facendo logout e login (o riavviando il sistema) per abilitare il nuovo aspetto dei caratteri.
<string>sans-serif</string>
</edit>
</match>


<!-- Load per-user customization file -->
La configurazione sopra riportata è uno "standard" che cerca di fornire il miglior risultato possibile sulla maggior parte dei sistemi. Però ci sono tanti fattori da considerare se l'aspetto dei font con questa configurazione non è ancora soddisfacente. Potrebbe essere ad esempio per via del monitor che usa uno schema [http://www.lagom.nl/lcd-test/subpixel.php subpixel BGR] (casi rari), differente dal comune RGB sul quale si basano le impostazioni predefinite; a volte è invece solo una questione di gusto personale.
<include ignore_missing="yes">~/.fonts.conf.d</include>
<include ignore_missing="yes">~/.fonts.conf</include>


<!-- Load local system customization file -->
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 "Full" o abilitando "autohint". 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.<br>
<include ignore_missing="yes">local.conf</include>
Meglio ancora, si possono specificare delle impostazioni specifiche per un determinato font, se questo appare meglio con impostazioni diverse da quelle generali. Nell'esempio seguente, vengono specificati alcuni parametri per il carattere Oxygen-Sans:
 
<pre>
<!-- Use legacy LCD filter on smaller Monospace fonts -->
   <match target="font">
   <match target="font">
    <test name="force_autohint">
      <bool>false</bool>
    </test>
     <test name="family">
     <test name="family">
       <string>DejaVu Sans Mono</string>
       <string>Oxygen-Sans</string>
      <string>Bitstream Vera Sans Mono</string>
     </test>
     </test>
     <test name="pixelsize" compare="less_eq">
     <edit name="antialias" mode="assign">
       <double>12.0</double>
       <bool>true</bool>
     </test>
     </edit>
 
     <edit name="hinting" mode="assign">
     <edit name="lcd_filter" mode="assign">
       <bool>true</bool>
       <const>lcdlegacy</const>
     </edit>
     </edit>
     <edit name="hintstyle" mode="assign">
     <edit name="hintstyle" mode="assign">
       <const>hintfull</const>
       <const>hintfull</const>
    </edit>
    <edit name="autohint" mode="assign">
      <bool>false</bool>
     </edit>
     </edit>
   </match>
   </match>
<alias>
</pre>
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>
<family>Bitstream Vera Serif</family>
<family>Times New Roman</family>
<family>Thorndale AMT</family>
<family>Luxi Serif</family>
<family>Nimbus Roman No9 L</family>
<family>Times</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>DejaVu Sans</family>
<family>Bitstream Vera Sans</family>
<family>Verdana</family>
<family>Arial</family>
<family>Albany AMT</family>
<family>Luxi Sans</family>
<family>Nimbus Sans L</family>
<family>Helvetica</family>
<family>Lucida Sans Unicode</family>
<family>BPG Glaho International</family> <!-- lat,cyr,arab,geor -->
<family>Tahoma</family> <!-- lat,cyr,greek,heb,arab,thai -->
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>
<family>Bitstream Vera Sans Mono</family>
<family>Inconsolata</family>
<family>Andale Mono</family>
<family>Courier New</family>
<family>Cumberland AMT</family>
<family>Luxi Mono</family>
<family>Nimbus Mono L</family>
<family>Courier</family>
</prefer>
</alias>
<!-- Fantasy faces -->
<alias>
<family>fantasy</family>
<prefer>
<family>Impact</family>
<family>Copperplate Gothic Std</family>
<family>Cooper Std</family>
<family>Bauhaus Std</family>
</prefer>
</alias>
<!-- Cursive faces -->
<alias>
<family>cursive</family>
<prefer>
<family>ITC Zapf Chancery Std</family>
<family>Zapfino</family>
<family>Comic Sans MS</family>
</prefer>
</alias>


<!-- fonts-persian.conf
C'è da considerare anche che l'ambiente desktop in uso può cambiare questi parametri, modificando direttamente il file <code>~/.config/fontconfig/fonts.conf</code> (KDE) o passando direttamente a ''Xft'' i propri valori di hinting con una priorità maggiore (GNOME, Xfce, LXDE).
  To configure Persian fonts from The FarsiWeb Project.
*In ''GNOME 3'' le impostazioni predefinite sono "Hinting: Full" e "Antialiasing: Greyscale" (Greyscale utilizza l'autohint al posto del subpixel hinting). Dato che GNOME sovrascrive le impostazioni di sistema con le sue, è meglio installare il pacchetto ''gnome-tweak-tool'', lanciare l'omonima utility e cambiare questi valori con quelli già usati nei vostri <code>/etc/fonts/local.conf</code> e/o <code>~/.config/fontconfig/fonts.conf</code>.<br>
*In ''Xfce'' e ''LXDE'' non ci dovrebbero essere conflitti con la configurazione di Fontconfig se l'utente non modifica le impostazioni dell'ambiente desktop, altrimenti vale lo stesso discorso di ''GNOME 3'' (eccetto che questi ambienti già forniscono il pannello di configurazione dei font).<br>
*''KDE'' invece utilizza solo Fontconfig, precisamente memorizza le opzioni dell'utente in <code>~/.config/fontconfig/fonts.conf</code>. In realtà anche KDE imposta i valori Xft ma gli servono solo per la compatibilità con alcune applicazioni (tipo quelle in GTK). Un [http://bugs.kde.org/show_bug.cgi?id=245664 bug] di KDE4 (non presente in KDE5) imposta sempre e comunque dei parametri di hinting predefiniti in <code>~/.config/fontconfig/fonts.conf</code> anche se l'utente sceglie di mantenere quelli di sistema; quindi l'unica soluzione al momento è impostare i parametri così come in GNOME3.


  Copyright (C) 2005  Sharif FarsiWeb, Inc. <license@farsiweb.info>
Alla fine del tuning potrete testare la vostra configurazione corrente [http://www.infinality.net/files/font.html in questa pagina].


  Permission to use, copy, modify, distribute, and sell this software and its
=== Ubuntu ===
  documentation for any purpose is hereby granted without fee, provided that
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.
  the above copyright notice appear in all copies and that both that
  copyright notice and this permission notice appear in supporting
  documentation, and that the name of Sharif FarsiWeb, Inc. not be used in
  advertising or publicity pertaining to distribution of the software without
  specific, written prior permission.  Sharif FarsiWeb, Inc. makes no
  representations about the suitability of this software for any purpose.  It
  is provided "as is" without express or implied warranty.


  SHARIF FARSIWEB, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
Prima di Debian 7 "Wheezy" la differenza tra i due sistemi era più marcata, perché Ubuntu applicava delle patch a Cairo e FreeType per migliorare la resa su schermo e se si voleva lo stesso risultato in Debian bisognava ricompilare i pacchetti interessati aggiungendo le patch.
  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  PERFORMANCE OF THIS SOFTWARE.


  ChangeLog:
A partire da Wheezy queste patch sono presenti anche in Debian (perché adottate 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.
    2005-04-03  Behdad Esfahbod:  Initial revision.
    2005-10-09  Behdad Esfahbod:  Turned off back-slant and Tahoma sections.
    2005-11-30  Behdad Esfahbod:  Set Titr susbtitution size to 24 points.
    2008 Behdad Esfahbod:  Cleanup.  Add fantasy and cursive.
-->


<!-- Deprecated fonts are discouraged -->
Il modello di configurazione esposto nel paragrafo precedente è già uguale a quella di Ubuntu, quindi basta usare quella configurazione 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 (o dei font).


<!-- Nesf[2] is officially deprecated and has problematic tables -->
Per completare l'opera di "Ubuntizzazione" si può installare il font predefinito di Ubuntu, che è possibile scaricare da [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzczI0Q0UwMWU4UWc qui] già pacchettizzato per Debian, e per installarlo basta un:
<alias binding="same">
<pre># dpkg -i fonts-ubuntu_0.83-1.1_all.deb</pre>
  <family>Nesf</family>
  <accept><family>Nesf2</family></accept>
</alias>
<alias binding="same">
  <family>Nesf2</family>
  <accept><family>Persian_sansserif_default</family></accept>
</alias>


<!-- Name changes and spelling variant aliases -->
=== Debian 7 e precedenti ===
A partire dalla [http://cgit.freedesktop.org/fontconfig/commit/?id&#61;8c255fb185d5651b57380b0a9443001e8051b29d versione 2.10] di ''Fontconfig'' (da Debian 8 "Jessie" in poi) sono cambiate le posizioni di alcuni file di configurazione, ma sarà mantenuta la compatibilità con alcuni dei vecchi percorsi ancora per qualche versione. Ecco una tabella comparativa:


<alias binding="same">
{| class="wikitable"
  <family>Nazanin</family>
|-
  <accept><family>Nazli</family></accept>
! !! Percorso attuale !! Vecchio percorso
</alias>
|-
<alias binding="same">
| '''Directory di configurazione utente''' || <code>~/.config/fontconfig/conf.d/</code> || <code>~/.fonts.conf.d/</code>
  <family>Lotus</family>
|-
  <accept><family>Lotoos</family></accept>
| '''File di configurazione utente''' || <code>~/.config/fontconfig/fonts.conf</code> || <code>~/.fonts.conf</code>
</alias>
|-
<alias binding="same">
| '''Directory caratteri utente''' || <code>~/.local/share/fonts/</code> || <code>~/.fonts/</code>
  <family>Yaqut</family>
|-
  <accept><family>Yaghoot</family></accept>
| '''Cache caratteri utente''' || <code>~/.cache/fontconfig/</code> || <code>~/.fontconfig/</code>
</alias>
|-
<alias binding="same">
| '''Configurazioni sistema disponibili''' || <code>/usr/share/fontconfig/conf.avail/</code> || <code>/etc/fonts/conf.avail/</code>
  <family>Yaghut</family>
|-
  <accept><family>Yaghoot</family></accept>
|}
</alias>
<alias binding="same">
  <family>Traffic</family>
  <accept><family>Terafik</family></accept>
</alias>
<alias binding="same">
  <family>Ferdowsi</family>
  <accept><family>Ferdosi</family></accept>
</alias>
<alias binding="same">
  <family>Fantezy</family>
  <accept><family>Fantezi</family></accept>
</alias>


== 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]).<br>
Generalmente non dovrebbe esserci necessità di configurare Xft ma, come vedremo più avanti, può essere meglio impostarne manualmente i parametri per un risultato finale migliore. Per farlo è consigliabile usare gli stessi valori presenti in <code>~/.config/fontconfig/fonts.conf</code> o <code>/etc/fonts/local.conf</code> per evitare possibili conflitti.<br>
Creiamo o modifichiamo il file <code>.Xresources</code> nella nostra home con:
<pre>$ nano ~/.Xresources</pre>
{{Suggerimento|Se invece del file <code>~/.Xresources</code> si inseriscono queste opzioni in <code>/etc/X11/Xresources/x11-common</code> i cambiamenti saranno applicati a tutto il sistema e non ad un solo utente.}}
Poi aggiungiamo il codice seguente:
<pre>
! 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.


<!-- Classify fonts. -->
Xft.antialias: 1
Xft.hinting: 1
Xft.hintstyle: hintslight
Xft.rgba: rgb
Xft.lcdfilter: lcddefault


<!-- Persian_title class -->
<alias binding="same">
  <family>Jadid</family>
  <accept><family>Persian_title</family></accept>
</alias>
<alias binding="same">
  <family>Titr</family>
  <accept><family>Persian_title</family></accept>
</alias>


<!-- Persian_fantasy class -->
! FreeType can set this automatically, better not forcing this on or off.
<alias binding="same">
  <family>Kamran</family>
  <accept>
  <family>Persian_fantasy</family>
  <family>Homa</family>
  </accept>
</alias>
<alias binding="same">
  <family>Homa</family>
  <accept>
  <family>Persian_fantasy</family>
  <family>Kamran</family>
  </accept>
</alias>
<alias binding="same">
  <family>Fantezi</family>
  <accept><family>Persian_fantasy</family></accept>
</alias>
<alias binding="same">
  <family>Tabassom</family>
  <accept><family>Persian_fantasy</family></accept>
</alias>


<!-- Persian_square class -->
!Xft.autohint: 0
<alias binding="same">
  <family>Arshia</family>
  <accept><family>Persian_square</family></accept>
</alias>
<alias binding="same">
  <family>Nasim</family>
  <accept><family>Persian_square</family></accept>
</alias>
<alias binding="same">
  <family>Elham</family>
  <accept>
  <family>Persian_square</family>
  <family>Farnaz</family>
  </accept>
</alias>
<alias binding="same">
  <family>Farnaz</family>
  <accept>
  <family>Persian_square</family>
  <family>Elham</family>
  </accept>
</alias>
<alias binding="same">
  <family>Sina</family>
  <accept><family>Persian_square</family></accept>
</alias>


<!-- Font ordering per class -->


<!-- Persian_title class -->
! Fontconfig will default to the Xft.dpi variable if it is set.
<alias binding="same">
! Xft.dpi is usually set by desktop environments (usually to Xorg DPI
  <family>Persian_title</family>
! setting). Use "xrdb -query | grep dpi" to query for the value.
  <accept>
  <family>Titr</family>
  <family>Jadid</family>
  <family>Persian_serif</family>
  </accept>
</alias>


<!-- Persian_fantasy class -->
!Xft.dpi: 96
<alias binding="same">
</pre>
  <family>Persian_fantasy</family>
Salviamo il file e riavviamo X facendo logout e login.
  <accept>
  <family>Homa</family>
  <family>Kamran</family>
  <family>Fantezi</family>
  <family>Tabassom</family>
  <family>Persian_square</family>
  </accept>
</alias>


<!-- Persian_square class -->
Da notare però che '''KDE 5''' (e probabilmente anche altri ambienti desktop) sovrascrivono questi valori con quelli impostati nelle loro schermate di configurazione. Per fare una prova empirica, impostiamo <code>~/.Xresources</code> come sopra e poi mettiamo dei valori diversi in ''KDE 5'' > ''Impostazioni di sistema'' > ''Carattere'', e per l'esattezza ''Tipo di sub-pixel hinting'' "BGR" e ''Stile di hinting'' "Intero". Se riavviamo la sessione e controlliamo i valori Xft attuali con il comando:
<alias binding="same">
<pre>$ xrdb -query | grep Xft</pre>
  <family>Persian_square</family>
i due valori cambiati, e cioè ''Xft.hintstyle'' e ''Xft.rgba'', corrisponderanno a quelli di KDE 5 e non a quelli di <code>~/.Xresources</code>.<br>
  <accept>
È tuttavia consigliato impostare ugualmente questi valori in <code>~/.Xresources</code> perché KDE 5 non modifica tutti i valori (ad es. ''Xft.autohint'' e ''Xft.lcdfilter'' non sembrano essere presi in considerazione). E dato che molte applicazioni in GTK sembrano dipendere da Xft per il loro rendering (es. Synaptic), avere tutte le impostazioni configurate a dovere e con gli stessi valori tra '''fontconfig''', '''Xft''' e ambiente desktop, risulterà in un aspetto uniforme tra le varie applicazioni, a prescindere che siano in Qt, in GTK o altri toolkit.
  <family>Arshia</family>
<!-- {{Box|Nota|Se usate [[Migliorare l'aspetto dei font#Infinality|Infinality]] lo script di avvio <code>/etc/X11/Xsession.d/99infinality-settings</code> già si occupa di impostare questi parametri, quindi non è necessario specificarli altrove, se non nelle impostazioni dell'ambiente desktop, come appena visto sopra.}}-->
  <family>Elham</family>
  <family>Farnaz</family>
  <family>Nasim</family>
  <family>Sina</family>
  <family>Persian_serif</family>
  </accept>
</alias>


<!-- Register the fonts that we actually do have -->
== DPI ==
Se i caratteri a schermo sono troppo piccoli (o troppo grandi) perché il monitor ha una risoluzione elevata (o bassa), 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>
In Debian e in tutte le distribuzioni Linux con Xorg, sono presenti due DPI: quello usato da Xorg e quello usato da Xft/Fontconfig.


<match target="scan">
=== DPI di Xorg ===
<test name="family">
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:
<string>Elham</string>
<pre>$ xdpyinfo | grep -B2 resolution</pre>
</test>
Impostare il giusto valore DPI su Xorg è importante per avere una corrispondenza più realistica possibile delle dimensioni su schermo con quelle reali.<br>
<edit name="foundry">
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>
<string>farsiweb</string>
Ottenuto un valore DPI (ad es. ''102.46''), bisogna impostarlo su Xorg con il comando
</edit>
<pre>$ xrandr --dpi 102.46</pre>
</match>
ma questo sarà resettato al vecchio valore dopo un riavvio di X. Per fare eseguire quel comando automaticamente ad ogni avvio di X:
<pre>
# cat > /etc/X11/Xsession.d/96setdpi <<EOF
xrandr --dpi 102.46
EOF
</pre>
ovviamente cambiate quel 102.46 con il DPI del vostro schermo. 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].<br>
Se si ha una postazione multi-schermo o si collega spesso un monitor esterno, potrete trovare informazioni molto utili su come configurare in questi casi [[Xrandr_e_udev:_configurare_un_monitor_esterno_in_automatico|in questa guida qui]].<br>
Una volta impostato il DPI, potete verificare che questo sia giusto 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 nello schermo un foglio reale di carta in A4: se le dimensioni sono uguali il calcolo e la configurazione sono andati a buon fine.
{{Box|Nota|Testando KDE, sembrerebbe che questo ambiente desktop rilevi automaticamente il DPI esatto dello schermo, in quanto il test del foglio A4 viene superato senza l'uso della procedura sopra (utilizzando il visualizzatore di documenti predefinito di KDE, ''okular''). Provando ad installare ed usare ''evince'' (il visualizzatore predefinito di GNOME) su KDE questo non sembra beneficiare della rilevazione automatica, rendendo necessario l'utilizzo della procedura sopra per una visualizzazione in scala 1:1. Probabilmente è una questione di toolkit: [http://qt-project.org/ Qt] da questo punto di vista sembra superiore a [http://www.gtk.org/ GTK].}}


<match target="scan">
=== DPI di Xft / Fontconfig ===
<test name="family">
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>
<string>Homa</string>
Per controllare l'attuale valore di ''Xft.dpi'' (e di altre variabili Xft impostate) usate il comando
</test>
<pre>$ xrdb -query | grep -i dpi</pre>
<edit name="foundry">
Se il valore ''Xft.dpi'' non è presente, è implicito che è uguale a quello di Xorg.
<string>farsiweb</string>
Per evitare possibili distorsioni dell'interfaccia grafica (tipo immagini bitmap che scalano male) è consigliabile impostare questo DPI sui dei valori "standard":
</edit>
* 48 (50%)
</match>
* 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 delle interfacce grafiche potrebbero non scendere sotto i 96 DPI.<br>
Generalmente è meglio impostare questo DPI tramite gli strumenti di configurazione messi a disposizione dall'ambiente desktop, perché tanto questo andrebbe a sovrascrivere o ad interferire con i settaggi inseriti manualmente.<br>
* '''GNOME 3''' imposta automaticamente Xft.dpi a 96. Per cambiare questo valore bisogna installare <code>gnome-tweak-tool</code> 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).<br>
* '''Xfce''' non imposta automaticamente il DPI, ma per farlo manualmente andare in "Impostazioni" > "Aspetto" > "Caratteri".<br>
* '''LXDE''' si comporta come Xfce.<br>
* Anche '''KDE ''' non cambia il DPI se non facendolo manualmente da "Impostazioni di sistema" > "Aspetto delle applicazioni" > "Caratteri".<br>
Se necessario, i valori del DPI possono anche essere impostati su <code>/etc/fonts/local.conf</code> e <code>/etc/X11/Xresources/x11-common</code> o nelle rispettive controparti per utente singolo <code>~/.config/fontconfig/fonts.conf</code> e <code>~/.Xresources</code>. Se per creare questi file avete usato le configurazioni-modello dei paragrafi precedenti, le sezioni dove inserire il DPI sono già presenti ma sono disattivate da un tag di commento: togliete quei tag per abilitare.
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.


<match target="scan">
== Installazione nuovi caratteri ==
<test name="family">
Quando si vuole installare un nuovo carattere non presente nei repository di Debian, bisogna mettere i file del font in questione in determinate directory per essere utilizzabile.<br>
<string>Koodak</string>
La directory dove sono presenti tutti i font di sistema è <code>/usr/share/fonts/</code> ma è meglio non usare questa, perché appunto di sistema. I font vanno inseriti in <code>~/.local/share/fonts/</code> per poter essere usati dall'utente corrente, oppure in <code>/usr/local/share/fonts/</code> per metterli a disposizione di tutti gli utenti del sistema.<br>
</test>
È buona abitudine dopo l'installazione o la rimozione di font rigenerare la cache con:
<edit name="foundry">
<pre># fc-cache -fv
<string>farsiweb</string>
$ fc-cache -fv</pre>
</edit>
</match>


<match target="scan">
Facciamo un esempio: per usare i caratteri Ubuntu presenti nel [http://font.ubuntu.com/ sito ufficiale] (archivio .zip), basta estrarli direttamente nella directory dei font dell'utente e aggiornare la cache dei font con:
<test name="family">
<pre>$ unzip ubuntu-font-family-0.83.zip -d ~/.local/share/fonts/
<string>Nazli</string>
$ fc-cache -fv</pre>
</test>
oppure, per renderli disponibili anche agli altri utenti estrarli nella cartella dei font locali con:
<edit name="foundry">
<pre># unzip ubuntu-font-family-0.83.zip -d /usr/local/share/fonts/
<string>farsiweb</string>
# fc-cache -fv
</edit>
$ fc-cache -fv</pre>
</match>


<match target="scan">
Se vi piacciono i font di Windows e questo è già installato sul vostro pc in dual boot, basta usare questo metodo per montare la partizione di sistema di Windows e copiare i font da <code>\Windows\Fonts</code> alle directory dei font di Debian (se non avete Windows potete sempre cercarli sul web, e comunque considerate che il [https://en.wikipedia.org/wiki/FreeType FreeType] di Linux è diverso dal [https://en.wikipedia.org/wiki/ClearType ClearType] di Windows e i caratteri potrebbero apparire diversi).<br>
<test name="family">
A chi interessa ecco alcuni dei caratteri usati nelle interfacce grafiche di vari sistemi operativi:<br>
<string>Roya</string>
- Windows XP: ''[https://www.microsoft.com/typography/fonts/family.aspx?FID=19 Tahoma]''<br>
</test>
- Windows 7 / 8.x / 10: ''[https://www.microsoft.com/typography/fonts/family.aspx?FID=331 Segoe UI]''<br>
<edit name="foundry">
- Mac OS X: ''[https://en.wikipedia.org/wiki/Lucida_Grande Lucida Grande]''<br>
<string>farsiweb</string>
- iOS: ''[https://en.wikipedia.org/wiki/Helvetica#Neue_Helvetica_.281983.29 Helvetica Neue]''<br>
</edit>
- ultime versioni di OSX e iOS: ''[https://en.wikipedia.org/wiki/San_Francisco_%282014_typeface%29 San Francisco]''<br>
</match>
- Android (< 4.0): famiglia di caratteri ''[http://www.droidfonts.com/ Droid]'' (presente in Debian)<br>
- Android: ''[https://developer.android.com/design/style/typography.html Roboto]'' (presente in Debian)<br>
- Ubuntu: la già citata famiglia di caratteri ''[http://font.ubuntu.com/ Ubuntu]''<br>
- Gnome 3: ''[https://wiki.gnome.org/action/show/Projects/CantarellFonts Cantarell]'' (presente in Debian)<br>
- KDE 5: ''[https://projects.kde.org/projects/unmaintained/oxygen-fonts Oxygen]'' (presente da Debian Stretch)<br>
Sul web ci sono tanti siti con collezioni di font, come [https://github.com/google/fonts/ Google Fonts]. Alcuni font pacchettizzati per Debian potete trovarli [https://drive.google.com/folderview?id=0B7AdLMiZn4FzNUtxeU9uT2RTU1U qui], mentre su [https://www.typetester.org/ Typetester] potrete fare dei confronti tra caratteri.<br>


<match target="scan">
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 dei glifi di una lingua non latina, per migliorarne le istruzioni di hinting, per perfezionare il design, ecc.).
<test name="family">
<string>Terafik</string>
</test>
<edit name="foundry">
<string>farsiweb</string>
</edit>
</match>


<match target="scan">
== Console Linux ==
<test name="family">
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à.<br>
<string>Titr</string>
</test>
<edit name="foundry">
<string>farsiweb</string>
</edit>
</match>


In breve, bisogna cambiare nel file <code>/etc/default/console-setup</code> 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:
<pre>FONTFACE="Terminus"
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>


<!-- Our fonts should oblique to the other side (TURNED-OFF) -->
In alternativa è possibile usare una procedura guidata con:
<pre># dpkg-reconfigure console-setup</pre>


<match target="font">
Per maggiori dettagli: <code>man console-setup</code>
<test name="foundry">
<!--string>farsiweb</string-->
<string>TURNED-OFF</string>
</test>
<test name="foundry">
<string>farsiweb</string>
</test>
<!-- check to see if the font is roman -->
<test name="slant">
<const>roman</const>
</test>
<!-- check to see if the pattern requested non-roman -->
<test target="pattern" name="slant" compare="not_eq">
<const>roman</const>
</test>
<!-- multiply the matrix to slant the font -->
<edit name="matrix" mode="assign">
<times>
<name>matrix</name>
<matrix><double>1</double><double>-0.2</double>
<double>0</double><double>1</double>
</matrix>
</times>
</edit>
<!-- pretend the font is oblique now -->
<edit name="slant" mode="assign">
<const>oblique</const>
</edit>
</match>


== Guida rapida ==
Questa guida è un estratto di quanto scritto finora e serve da riferimento rapido, ma tralascia dei particolari (come ad esempio il [[Migliorare l'aspetto dei font#DPI|DPI]]). Se non siete alle prime armi e volete più controllo sulla configurazione, consiglio di leggere tutta la guida.


<!--
=== Configurazione di sistema ===
   We can't hint our fonts well, so turn off hinting.
Come utente root creare il file <code>/etc/fonts/local.conf</code> con un editor di testi (es. ''nano''):
   Moreover, the bitmaps we have designed (well, they
<pre># nano /etc/fonts/local.conf</pre>
  have designed), suck, so disable them too. -->
e incollare quanto segue:
<pre>
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
   <match target="pattern">
    <edit mode="append" name="antialias">
      <bool>true</bool>
    </edit>
    <edit mode="append" name="hinting">
      <bool>true</bool>
    </edit>
    <edit mode="append" name="hintstyle">
      <const>hintslight</const>
    </edit>
    <edit mode="append" name="rgba">
      <const>rgb</const>
    </edit>
    <edit mode="append" name="lcdfilter">
      <const>lcddefault</const>
    </edit>
    <edit mode="append" name="embeddedbitmap">
      <bool>false</bool>
    </edit>
  </match>
  <selectfont><rejectfont><pattern>
    <patelt name="scalable"><bool>false</bool></patelt>
  </pattern></rejectfont></selectfont>
  <selectfont><rejectfont><pattern>
    <patelt name="fontformat"><string>Type 1</string></patelt>
   </pattern></rejectfont></selectfont>
</fontconfig>
</pre>
Il rendering ottenuto con queste impostazioni sarà adottato in modo predefinito da tutti gli utenti del sistema, anche dalla schermata iniziale di login. Ma ogni utente può cambiare queste impostazioni nel proprio profilo, come spiegato di seguito (e spesso <u>deve</u> farlo perché alcuni ambienti desktop tendono a sovrascrivere le preferenze di sistema in modo predefinito, anche se non impostate dall'utente).


<match target="font">
=== Configurazione utente ===
<test name="foundry">
A livello utente:
<string>farsiweb</string>
*se si usa '''Wheezy''' (o versioni precedenti) creare o cambiare il file <code>~/.fonts.conf</code>
</test>
*se si usa '''Jessie''' (o versioni successive) creare o cambiare il file <code>~/.config/fontconfig/fonts.conf</code>
<edit name="autohint">
Il contenuto del file è il seguente:
<bool>false</bool>
<pre>
</edit>
<?xml version='1.0'?>
<edit name="hinting">
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<bool>false</bool>
<fontconfig>
</edit>
  <match target="font">
<edit name="embeddedbitmap">
    <edit mode="assign" name="antialias">
<bool>false</bool>
      <bool>true</bool>
</edit>
    </edit>
</match>
    <edit mode="assign" name="hinting">
      <bool>true</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>
    <edit mode="assign" name="dpi">
      <double>96</double>
    </edit>
  </match>
</fontconfig>
</pre>
che è quasi uguale a <code>local.conf</code> ma con l'uso di ''mode="assign"'' invece di ''mode="append"'', che permette di sovrascrivere le impostazioni di sistema ai singoli utenti.<br>
Creare anche il file <code>~/.Xresources</code> con il seguente contenuto (se già esistente aggiungere semplicemente queste righe):
<pre>
Xft.antialias: 1
Xft.hinting: 1
Xft.hintstyle: hintslight
Xft.rgba: rgb
Xft.lcdfilter: lcddefault
Xft.dpi: 96
</pre>
Attivare le nuove impostazioni riavviando il server X (riavviando la sessione oppure il sistema).<br>
Le impostazioni usate nel file creano un rendering uguale a quello di Ubuntu, che piace a molti utenti. Ovviamente sono delle impostazioni consigliate e potrete cambiarle a vostro piacimento. Ma, <u>cosa molto importante</u>, assicurarsi che i due file dell'utente utilizzino le stesse impostazioni, o si avranno problemi di omogeneità nella visualizzazione.


=== Ambienti desktop ===
L'utente deve poi usare gli strumenti messi a disposizione dall'ambiente desktop in uso per modificare le impostazioni dei font, al fine di riprendere quelle dei due file utente appena esposti. Questo perché, come già detto sopra, alcuni ambienti desktop impostano i loro parametri predefiniti andando a sovrascrivere quelli di sistema e a volte anche quelli dei due file utente.
[[Image:Kde-font-rendering.jpg|thumb|150px|right|KDE 4]]
[[Image:Gnome-font-rendering.png|thumb|150px|right|GNOME 3]]
[[Image:Xfce-font-rendering.png|thumb|150px|right|Xfce]]


<!-- Alias our fonts to common families -->


<!-- Persian serif fonts -->
==== KDE 4/5 ====
<alias>
In KDE le impostazioni si trovano in "Impostazioni di sistema" > "Aspetto delle applicazioni" > "Caratteri" > "Utilizza l'antialiasing per i caratteri". Qui è possibile scegliere tra ''Abilitato'' (consigliato), ''Disabilitato'' (sconsigliato) e ''Impostazioni di sistema'' ([http://bugs.kde.org/show_bug.cgi?id=245664 che funziona solo su KDE 5]). L'unica scelta logica per KDE 4 rimane quindi ''Abilitato'', dove poi è possibile con il tasto ''Configura'' cambiare le impostazioni (valori consigliati nell'immagine a destra).<br>
<family>serif</family>
KDE salva le impostazioni in <code>~/.config/fontconfig/fonts.conf</code>, modificandolo se già esistente (quindi in tal caso meglio controllare che non abbia stravolto qualcosa).
<accept>
<family>Nazli</family>
<family>Lotoos</family>
<family>Mitra</family>
<family>Ferdosi</family>
<family>Badr</family>
<family>Zar</family>
</accept>
</alias>


<!-- Persian sans-serif fonts -->
<alias>
<family>sans-serif</family>
<accept>
<family>Roya</family>
<family>Koodak</family>
<family>Terafik</family>
</accept>
</alias>


<!-- Persian monospace fonts -->
==== GNOME 3 ====
<alias>
GNOME Shell imposta automaticamente una configurazione generica che non sfrutta bene le caratteristiche degli schermi LCD (e che va a sovrascrivere quella di sistema), per cui sarà necessario cambiarla. Per farlo bisogna prima installare il pacchetto <code>gnome-tweak-tool</code>, successivamente andare in "Preferenze" > "Impostazioni avanzate" > "Tipi di carattere" e da qui cambiare i valori di ''Hinting'' e ''Antialiasing'' con quelli che avete inserito nei due file utente.
<family>monospace</family>
<accept>
<!-- Not really monospace -->
<family>Terafik</family>
</accept>
</alias>


<!-- Persian fantasy fonts -->
<alias>
<family>fantasy</family>
<accept>
<family>Homa</family>
<family>Kamran</family>
<family>Fantezi</family>
<family>Tabassom</family>
</accept>
</alias>


<!-- Persian (and Urdu) Nastaliq/cursive fonts -->
==== Xfce ====
<alias>
In Xfce le impostazioni si trovano in "Impostazioni" > "Aspetto" > "Caratteri".
<family>cursive</family>
<accept>
<family>IranNastaliq</family>
<family>Nafees Nastaleeq</family>
</accept>
</alias>


<!-- Use Titr in titles -->


<!-- Both serif... -->
==== LXDE, Mate, Cinnamon ====
<match>
Anche questi ambienti desktop, come i precedenti, includono dei pannelli di configurazione per cambiare il rendering dei font.
<test name="family">
<string>serif</string>
</test>
<test name="weight" compare="more_eq">
<int>200</int>
</test>
<test name="size" compare="more_eq">
<double>24</double>
</test>
<edit name="family" mode="prepend">
<string>Titr</string>
</edit>
</match>


<!-- and sans-serif. -->
<match>
<test name="family">
<string>sans-serif</string>
</test>
<test name="weight" compare="more_eq">
<int>200</int>
</test>
<test name="size" compare="more_eq">
<double>24</double>
</test>
<edit name="family" mode="prepend">
<string>Titr</string>
</edit>
</match>


<!-- and more. -->
==== Altri desktop ====
<match>
Altri ambienti desktop o windows manager (come [[Enlightenment]], [[Openbox]], ecc.) potrebbero avere degli strumenti di configurazione dei font poco pratici, incompleti o non averne affatto. In questi casi, basta usare [[Migliorare_l%27aspetto_dei_font#Configurazione_utente|i due file utente]] per avere tutto configurato a dovere.
<test name="family">
<string>Persian_sansserif_default</string>
</test>
<test name="weight" compare="more_eq">
<int>200</int>
</test>
<test name="size" compare="more_eq">
<double>24</double>
</test>
<edit name="family" mode="prepend" binding="same">
<string>Titr</string>
</edit>
</match>


<!-- Infinality non sembra più essere mantenuto stabilmente da nessuno, non rimuovo ma lascio il testo nascosto per consultazione o possibili futuri sviluppi -->
<!-- == Infinality ==
Infinality è una combinazione di patch e configurazioni che puntano, come scrive l'autore [http://www.infinality.net/blog/infinality-freetype-patches/ sul suo sito], a migliorare la resa dei font imitando quelle dei vari sistemi operativi, e di permettere all'utente di personalizzare al meglio le impostazioni.


Principalmente, Infinality consiste di due parti:
*un set di patch da applicare al motore di rendering dei font ''FreeType'' per poterne cambiare alcuni parametri non modificabili a nostro piacimento;
*una configurazione di ''Fontconfig'' totalmente personalizzata, che va a sostituire quella standard. 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 elenca tutti i font senza istruzioni di hinting, li raggruppa in un insieme e abilita l'autohint solo per questo insieme).


<!-- Default substituted for deprecated sans-serif fonts -->
Alcuni utenti che hanno provato Infinality non ne sono rimasti colpiti, altri hanno espresso un'opinione negativa. Probabilmente avranno giudicato senza provare a cambiare le molte opzioni di configurazione messe a disposizione, oppure non hanno installato alcuni dei font tipici dei sistemi operativi che cerca di imitare Infinality, che è un requisito importante.


<match>
Il creatore del progetto (conosciuto proprio con il nickname Infinality) non lavora più su questo progetto da tempo, e attualmente sembra abbandonato da parte sua. L'utente [https://github.com/bohoomil/fontconfig-ultimate bohoomil] cominciò a portare avanti il progetto autonomamente, poi ha avuto il [http://www.infinality.net/forum/viewtopic.php?f=2&t=350 riconoscimento ufficiale].<br>
<test name="family">
Bohoomil chiama il suo progetto [http://bohoomil.com/ Infinality ultimate], perché l'ha modificato sostanzialmente, aggiungendo ad esempio anche delle patch per la libreria ''Cairo'' e cambiando radicalmente le configurazioni di ''Fontconfig'' usate precedentemente.<br>
<string>Persian_sansserif_default</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Roya</string>
</edit>
</match>


<alias>
Comunque a detta di molti, il rendering di FreeType è ormai ottimo anche senza bisogno di queste patch, basta configurare per bene ''Fontconfig''.
<family>serif</family>
<prefer>
<family>Artsounk</family> <!-- armenian -->
<family>BPG UTF8 M</family> <!-- georgian -->
<family>Kinnari</family> <!-- thai -->
<family>Norasi</family> <!-- thai -->
<family>Frank Ruehl</family> <!-- hebrew -->
<family>Dror</family>  <!-- hebrew -->
<family>JG LaoTimes</family>  <!-- lao -->
<family>Saysettha Unicode</family>  <!-- lao -->
<family>Pigiarniq</family> <!-- canadian syllabics -->
<family>B Davat</family> <!-- arabic (fa) -->
<family>B Compset</family>  <!-- arabic (fa) -->
<family>Kacst-Qr</family> <!-- arabic (ar) -->
<family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
<family>Raghindi</family> <!-- devanagari -->
<family>Mukti Narrow</family> <!-- bengali -->
<family>malayalam</family> <!-- malayalam -->
<family>Sampige</family> <!-- kannada -->
<family>padmaa</family> <!-- gujarati -->
<family>Hapax Berbère</family> <!-- tifinagh -->
<family>MS Gothic</family> <!-- han (ja) -->
<family>UmePlus P Gothic</family> <!-- han (ja) -->
<family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
<family>PMingLiu</family> <!-- han (zh-tw) -->
<family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
<family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
<family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
<family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
<family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
<family>HanyiSong</family> <!-- han (zh-cn,zh-tw) -->
<family>MgOpen Canonica</family>
<family>Sazanami Mincho</family>
<family>IPAMonaMincho</family>
<family>IPAMincho</family>
<family>Kochi Mincho</family>
<family>AR PL SungtiL GB</family>
<family>AR PL Mingti2L Big5</family>
<family>AR PL Zenkai Uni</family>
<family>MS 明朝</family>
<family>ZYSong18030</family>
<family>NanumMyeongjo</family> <!-- hangul (ko) -->
<family>UnBatang</family> <!-- hangul (ko) -->
<family>Baekmuk Batang</family> <!-- hangul (ko) -->
<family>KacstQura</family>
<family>Frank Ruehl CLM</family>
<family>Lohit Bengali</family>
<family>Lohit Gujarati</family>
<family>Lohit Hindi</family>
<family>Lohit Marathi</family>
<family>Lohit Maithili</family>
<family>Lohit Kashmiri</family>
<family>Lohit Konkani</family>
<family>Lohit Nepali</family>
<family>Lohit Sindhi</family>
<family>Lohit Punjabi</family>
<family>Lohit Tamil</family>
<family>Meera</family>
<family>Lohit Malayalam</family>
<family>Lohit Kannada</family>
<family>Lohit Telugu</family>
<family>Lohit Oriya</family>
<family>LKLUG</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Nachlieli</family> <!-- hebrew -->
<family>Lucida Sans Unicode</family>
<family>Yudit Unicode</family>
<family>Kerkis</family> <!-- greek -->
<family>ArmNet Helvetica</family> <!-- armenian -->
<family>Artsounk</family> <!-- armenian -->
<family>BPG UTF8 M</family> <!-- georgian -->
<family>Waree</family> <!-- thai -->
<family>Loma</family> <!-- thai -->
<family>Garuda</family> <!-- thai -->
<family>Umpush</family> <!-- thai -->
<family>Saysettha Unicode</family> <!-- lao? -->
<family>JG Lao Old Arial</family> <!-- lao -->
<family>GF Zemen Unicode</family> <!-- ethiopic -->
<family>Pigiarniq</family> <!-- canadian syllabics -->
<family>B Davat</family> <!-- arabic (fa) -->
<family>B Compset</family> <!-- arabic (fa) -->
<family>Kacst-Qr</family> <!-- arabic (ar) -->
<family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
<family>Raghindi</family> <!-- devanagari -->
<family>Mukti Narrow</family> <!-- bengali -->
<family>malayalam</family> <!-- malayalam -->
<family>Sampige</family> <!-- kannada -->
<family>padmaa</family> <!-- gujarati -->
<family>Hapax Berbère</family> <!-- tifinagh -->
<family>MS Gothic</family> <!-- han (ja) -->
<family>UmePlus P Gothic</family> <!-- han (ja) -->
<!-- chinese fonts are actually serifed -->
<family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
<family>PMingLiu</family> <!-- han (zh-tw) -->
<family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
<family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
<family>AR PL ShanHeiSun Uni</family> <!--han (ja,zh-cn,zh-tw) -->
<family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
<family>MgOpen Modata</family>
<family>VL Gothic</family>
<family>IPAMonaGothic</family>
<family>IPAGothic</family>
<family>Sazanami Gothic</family>
<family>Kochi Gothic</family>
<family>AR PL KaitiM GB</family>
<family>AR PL KaitiM Big5</family>
<family>AR PL ShanHeiSun Uni</family>
<family>AR PL SungtiL GB</family>
<family>AR PL Mingti2L Big5</family>
<family>MS ゴシック</family>
<family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
<family>TSCu_Paranar</family> <!-- tamil -->
<family>NanumGothic</family> <!-- hangul (ko) -->
<family>UnDotum</family> <!-- hangul (ko) -->
<family>Baekmuk Dotum</family> <!-- hangul (ko) -->
<family>Baekmuk Gulim</family> <!-- hangul (ko) -->
<family>KacstQura</family>
<family>Lohit Bengali</family>
<family>Lohit Gujarati</family>
<family>Lohit Hindi</family>
<family>Lohit Marathi</family>
<family>Lohit Maithili</family>
<family>Lohit Kashmiri</family>
<family>Lohit Konkani</family>
<family>Lohit Nepali</family>
<family>Lohit Sindhi</family>
<family>Lohit Punjabi</family>
<family>Lohit Tamil</family>
<family>Meera</family>
<family>Lohit Malayalam</family>
<family>Lohit Kannada</family>
<family>Lohit Telugu</family>
<family>Lohit Oriya</family>
<family>LKLUG</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Miriam Mono</family> <!-- hebrew -->
<family>VL Gothic</family>
<family>IPAMonaGothic</family>
<family>IPAGothic</family>
<family>Sazanami Gothic</family>
<family>Kochi Gothic</family>
<family>AR PL KaitiM GB</family>
<family>MS Gothic</family> <!-- han (ja) -->
<family>UmePlus Gothic</family> <!-- han (ja) -->
<family>NSimSun</family> <!-- han (zh-cn,zh-tw) -->
<family>MingLiu</family> <!-- han (zh-tw) -->
<family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
<family>AR PL New Sung Mono</family> <!-- han (zh-cn,zh-tw) -->
<family>HanyiSong</family> <!-- han (zh-cn) -->
<family>AR PL SungtiL GB</family>
<family>AR PL Mingti2L Big5</family>
<family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
<family>NanumGothicCoding</family> <!-- hangul (ko) -->
<family>NanumGothic</family> <!-- hangul (ko) -->
<family>UnDotum</family> <!-- hangul (ko) -->
<family>Baekmuk Dotum</family> <!-- hangul (ko) -->
<family>Baekmuk Gulim</family> <!-- hangul (ko) -->
<family>TlwgTypo</family> <!-- thai -->
<family>TlwgTypist</family> <!-- thai -->
<family>TlwgTypewriter</family> <!-- thai -->
<family>TlwgMono</family> <!-- thai -->
<family>Hasida</family> <!-- hebrew -->
<family>Mitra Mono</family> <!-- bengali -->
<family>GF Zemen Unicode</family> <!-- ethiopic -->
<family>Hapax Berbère</family> <!-- tifinagh -->
<family>Lohit Bengali</family>
<family>Lohit Gujarati</family>
<family>Lohit Hindi</family>
<family>Lohit Marathi</family>
<family>Lohit Maithili</family>
<family>Lohit Kashmiri</family>
<family>Lohit Konkani</family>
<family>Lohit Nepali</family>
<family>Lohit Sindhi</family>
<family>Lohit Punjabi</family>
<family>Lohit Tamil</family>
<family>Meera</family>
<family>Lohit Malayalam</family>
<family>Lohit Kannada</family>
<family>Lohit Telugu</family>
<family>Lohit Oriya</family>
<family>LKLUG</family>
</prefer>
</alias>


<alias>
=== Installazione ===
<family>serif</family>
Con le versioni precedenti c'era bisogno di fare un backup della configurazione in uso di fontconfig e poi di rimuovere i file di configurazione interessati, tutto manualmente. Con l'attuale versione è cambiato radicalmente il meccanismo di funzionamento interno e le vecchie configurazioni sono completamente bypassate e ignorate. Quando Infinality sarà rimosso, le vecchie configurazioni saranno ancora al loro posto e ritorneranno a funzionare automaticamente. L'unico file di cui si potrebbe fare un backup per sicurezza prima di installare è <code>/etc/fonts/fonts.conf</code>, in quanto è l'unico interessato a cambiamenti.<br>
<prefer>
Controllare anche che il file <code>/etc/X11/Xresources/x11-common</code> NON contenga righe con impostazioni [[Migliorare l'aspetto dei font#Xft|Xft]] (se sono presenti e non volete cancellarle direttamente si possono commentare con un '''''!''''' all'inizio della riga).
<family>FreeSerif</family>
<family>Code2000</family>
<family>Code2001</family> <!-- plane1 and beyond -->
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>FreeSans</family>
<family>Arial Unicode MS</family>
<family>Arial Unicode</family>
<family>Code2000</family> <!-- almost everything; serif actually -->
<family>Code2001</family> <!-- plane1 and beyond -->
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>FreeMono</family>
</prefer>
</alias>


<!-- Reject bitmap fonts -->
Adesso si possono aggiornare <code>libfreetype6</code>, <code>libcairo2</code> e <code>libcairo-gobject2</code> con le versioni patchate e poi installare la configurazione di Infinality, contenuta in <code>fontconfig-infinality</code>:
<selectfont>
{| class="wikitable"
  <rejectfont>
|- align="center"
  <pattern>
| '''Repository<br> completo''' || libfreetype6 || libcairo2 || libcairo-gobject2 || fontconfig-infinality
    <patelt name="scalable"><bool>false</bool></patelt>
|- align="center"
  </pattern>
| rowspan=2 | [https://drive.google.com/open?id=0B7AdLMiZn4FzT1FGTERscGtzc0E '''Wheezy'''] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzMnBpVlRzZTNjNVE i386] || n.d. || n.d. || rowspan=2 | [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzVnZXT3NUYW1rbVU all]
  </rejectfont>
|- align="center"
</selectfont>
| [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4Fzd3NidFRkTWRqejg amd64] || n.d. || n.d.
|- align="center"
| rowspan=2 | [https://drive.google.com/open?id=0B7AdLMiZn4FzZWVXYmM5TE5YVUE '''Jessie'''] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzcWhxblF6akRlRFk i386] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzRmx0enI2Wi1jWWM i386] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzT3JHRk5FSnB0MlE i386] || rowspan=2 | [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzelR3d21DOElEcWc all]
|- align="center"
| [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzX3FsS3p4dGFRVWM amd64] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzOG52Y19iYWtrazA amd64] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzektRMzJfRHJWMWM amd64]
|- align="center"
| rowspan=2 | [https://drive.google.com/open?id=0B7AdLMiZn4FzflZIWDFMWUxMR2F4WGQwQkRkcThsaFFxV2x1S0dGWjgzcEdlVjgtaGV5U2c '''Stretch/Sid'''] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzLWx5c2V3N29LaVE i386] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzcUFRUXJYOXhGLWs i386] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzclQtaVEwOXFic2s i386] || rowspan=2 | [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzeEJqR08ycE0yb3c all]
|- align="center"
| [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzS0haV1FtMWQ2anc amd64] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzaWFwNUw2MnJ1Ulk amd64] || [https://drive.google.com/uc?export=download&id=0B7AdLMiZn4FzMkQ4Zk55MlE5eFU amd64]
|}
Gli altri pacchetti, il codice sorgente e i log di compilazione sono disponibili nei repository completi (cliccare sul nome della distribuzione per accedervi).


<!-- Fix-ups for Delicious family -->
Se avete abilitato [[Usare pacchetti a 32 bit su sistemi a 64 bit|multiarch]], molto probabilmente avrete già installato entrambe le versioni ''i386'' e ''amd64'' delle librerie sopra, quindi dovrete aggiornarle entrambe. Per installare il tutto:
<pre>
# dpkg -i ~/Scaricati/libfreetype6*infinality*.deb ~/Scaricati/libcairo*infinality*.deb ~/Scaricati/fontconfig-infinality*.deb
</pre>
I pacchetti usano un [https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version epoch] per evitare che, se si aggiorna il sistema ed è disponibile una nuova versione Debian di questi pacchetti, quelli patchati non vengano sovrascritti (perché avranno una versione maggiore).


<!-- Delicious 'heavy' variant says its Medium weight -->
=== Configurazione ===
<match target="scan">
È fortemente raccomandato che il file <code>~/.Xresources</code> di ogni utente del sistema contenga le seguenti righe (se non esiste createlo):
<test name="family">
<pre>Xft.antialias: 1
<string>Delicious</string>
Xft.autohint: 0
</test>
Xft.dpi: 96
<test name="style">
Xft.hinting: 1
<string>Heavy</string>
Xft.hintstyle: hintfull
</test>
Xft.lcdfilter: lcddefault
<edit name="weight">
Xft.rgba: rgb</pre>
<const>heavy</const>
e che si modifichino le impostazioni del proprio ambiente desktop ([[Migliorare_l%27aspetto_dei_font#Ambienti_desktop|vedi qui]]) affinché rispecchino questi parametri, altrimenti il risultato non sarà quello voluto e non soddisferà le aspettative.
</edit>
</match>


<!--  
La configurazione vera e propria di Infinality si modifica cambiando i preset di ''fontconfig-infinality'' e/o gli stili di ''freetype-infinality''.
Artificial oblique for fonts without an italic or oblique version
Per cambiare i primi si usa il comando:
-->
<pre>
# fc-presets set
<match target="font">
</pre>
<!-- check to see if the font is roman -->
mentre per i secondi dovrete andare a modificare il file <code>/etc/X11/Xsession.d/99infinality-settings</code> alla riga 60, de-commentandola e cambiando il valore della variabile ''export INFINALITY_FT''; per conoscere i possibili valori da utilizzare leggete la lista ivi presente.<br>
<test name="slant">
Per applicare appieno le modifiche bisogna riavviare la sessione o il sistema.<br>
<const>roman</const>
È possibile creare anche altri preset e modificare finemente i parametri degli stili, ma per farlo rimando alla lettura del file <code>/etc/fonts/infinality.d/README</code> e di <code>/etc/X11/Xsession.d/99infinality-settings</code>.
</test>
<!-- check to see if the pattern requested non-roman -->
<test target="pattern" name="slant" compare="not_eq">
<const>roman</const>
</test>
<!-- multiply the matrix to slant the font -->
<edit name="matrix" mode="assign">
<times>
<name>matrix</name>
<matrix><double>1</double><double>0.2</double>
<double>0</double><double>1</double>
</matrix>
</times>
</edit>
<!-- pretend the font is oblique now -->
<edit name="slant" mode="assign">
<const>oblique</const>
</edit>
<!-- and disable embedded bitmaps for artificial oblique -->
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>


<!-- Synthetic emboldening for fonts that do not have bold face available -->
È altresì consigliato installare alcuni dei font presenti tra i pacchetti raccomandati e suggeriti di <code>fontconfig-infinality*.deb (potete usare aptitude o Synaptic per vedere l'elenco e installarli in modo semplice).</code>


<match target="font">
=== Disinstallazione ===
<!-- check to see if the font is just regular -->
Per rimuovere Infinality e ripristinare lo status quo ante:
<test name="weight" compare="less_eq">
<pre>
<const>medium</const>
# dpkg --purge --force-depends libfreetype6 libcairo2 libcairo-gobject2 fontconfig-infinality
</test>
# apt-get install libfreetype6 libcairo2 libcairo-gobject2
<!-- check to see if the pattern requests bold -->
</pre>
<test target="pattern" name="weight" compare="more">
o in caso di multiarch:
<const>medium</const>
<pre>
</test>
# dpkg --purge --force-depends libfreetype6:i386 libcairo2:i386 libcairo-gobject2:i386 libfreetype6:amd64 libcairo2:amd64 libcairo-gobject2:amd64 fontconfig-infinality
<!--
# apt-get install libfreetype6:i386 libcairo2:i386 libcairo-gobject2:i386 libfreetype6:amd64 libcairo2:amd64 libcairo-gobject2:amd64
  set the embolden flag
  needed for applications using cairo, e.g. gucharmap, gedit, ...
-->
<edit name="embolden" mode="assign">
<bool>true</bool>
</edit>
<!--
set weight to bold
needed for applications using Xft directly, e.g. Firefox, ...
-->
<edit name="weight" mode="assign">
<const>bold</const>
</edit>
</match>
 
</fontconfig>
</pre>
</pre>
 
La configurazione pre-Infinality verrà automaticamente ripristinata appieno dopo un riavvio. -->


== Riferimenti ==
== Riferimenti ==
Per approfondimenti:
Per approfondimenti sulla rasterizzazione consiglio la lettura di [https://www.grc.com/cleartype.htm questo articolo], dettagliato ma comprensibile.<br>
Invece [http://www.rastertragedy.com/ quest'altro] è più simile ad una tesi di laurea, con un approccio più scientifico.


Altre fonti di informazione:<br>
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 1 469: Riga 565:
http://weirdfellow.wordpress.com/2010/07/25/valid-autohinting-hinting-style-options/<br>
http://weirdfellow.wordpress.com/2010/07/25/valid-autohinting-hinting-style-options/<br>
http://duganchen.ca/writings/slackware/fonts/<br>
http://duganchen.ca/writings/slackware/fonts/<br>
http://www.antigrain.com/research/font_rasterization/index.html<br>
https://lists.ubuntu.com/archives/ubuntu-desktop/2008-December/001887.html<br>
http://www.webupd8.org/2013/06/better-font-rendering-in-linux-with.html<br>
https://en.wikipedia.org/wiki/Font_smoothing<br>
https://en.wikipedia.org/wiki/Font_hinting<br>
https://en.wikipedia.org/wiki/Cairo_(graphics)<br>


{{Autori
| Autore = [[Utente:Gash|Gash]]
| Verificata_da =
: [[Utente:BubuXP|BubuXP]] 02:46, 21 mag 2013 (CEST)
: [[Utente:Keltik|keltik]] 17:02, 21 giu 2013 (CEST)
: [[Utente:Usmnunter|Usmnunter]] 07:22 17 ago 2014 (CEST)
| Numero_revisori = 3
| Estesa_da =
: [[Utente:BubuXP|BubuXP]] 02:46, 21 mag 2013 (CEST) (riscrittura totale)
: [[Utente:Danielsan|Danielsan]]
}}


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

Versione attuale delle 23:38, 19 lug 2017

Edit-clear-history.png Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.

Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione.


Debian-swirl.png Versioni Compatibili

Debian 7 "wheezy"
Debian 8 "jessie"

Introduzione

Molti nuovi utenti di Debian, specie se provengono da altre distribuzioni Linux più "rifinite", si lamentano del brutto aspetto che hanno i caratteri, (anche se ad alcuni invece piacciono, de gustibus). Il problema risiede nella configurazione predefinita di Debian, che non imposta il rendering dei caratteri adeguatamente. Nelle ultime versioni di Debian la situazione "out of the box" è un po' migliorata, ma si può fare di più.

Ci sono vari modi e tanti parametri per migliorare il rendering, di seguito si farà un'esposizione quanto più esplicativa possibile (spero). Ulteriori approfondimenti tecnici sull'argomento si possono reperire nell'ultimo capitolo "Riferimenti".
A chi invece interessa solo il risultato finale può leggere direttamente la "Guida rapida".

In passato, prima di cominciare si sarebbe dovuto controllare che fossero state installate le librerie responsabili della gestione e visualizzazione dei font, e cioè FreeType, Fontconfig, FriBidi, HarfBuzz, Pango, Xft e Cairo, ma ora sarebbe un controllo superfluo, dato che queste librerie sono dipendenze di molti software e dei principali ambienti desktop. Quasi tutti i software che utilizzano una GUI avranno tra le dipendenze anche qualcuna di queste librerie.

Se invece si utilizza Debian senza un interfaccia grafica, e quindi si visualizzano a schermo solo dei caratteri bitmap, questa guida potrebbe risultare utile solo per il paragrafo che riguarda la console Linux.

Fontconfig

Fontconfig è la libreria responsabile di fornire l'elenco dei caratteri disponibili nel sistema alle applicazioni e tra le varie funzioni c'è anche quella di indicare a FreeType come disegnare i caratteri. Ha un linguaggio di configurazione in XML che permette un'elevata personalizzazione, ma che ne limita la semplicità d'uso. Ad esempio può essere configurato per usare l'antialiasing su tutti i font tranne che su quelli di lingue orientali, oppure può disabilitare l'hinting su uno specifico font quando questo è di dimensioni inferiori a 8 punti.

La configurazione predefinita 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 /usr/share/fontconfig/conf.avail/ 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 esegue

# dpkg-reconfigure fontconfig-config

in base alle risposte date nella procedura guidata verranno creati o rimossi dei link in conf.d/
Però si sconsiglia di cambiare la configurazione in questo modo perché in conf.avail/ non sono presenti tutte le opzioni che è possibile impostare con Fontconfig per migliorare l'aspetto del font. Invece di creare dei file con le configurazioni mancanti in conf.d/ diventa molto più pratico ricorrere ad un altro metodo, illustrato di seguito.

Dopo aver letto le configurazioni in conf.d/, Fontconfig ne cerca delle altre nel file /etc/fonts/local.conf e poi in ~/.config/fontconfig/fonts.conf. Entrambi i file non esistono inizialmente, e sono creati dall'utente o da qualche applicazione. Le impostazioni contenute in /etc/fonts/local.conf sono applicate a tutti gli utenti del sistema, mentre quelle in ~/.config/fontconfig/fonts.conf risiedono nella home dell'utente e sono applicate solo a quell'utente. La sintassi dei due file è identica (come quella dei file in conf.d/) e possono convivere insieme.
In caso un'opzione fosse presente in più 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. ~/.config/fontconfig/fonts.conf
  4. impostazioni font degli ambienti desktop (che usano Xft)

A seconda di come sono impostati i parametri all'interno delle configurazioni, ciò potrebbe rendere nulla la priorità. Per esempio usando mode="assign" per impostare un valore, questo rimarrà tale anche se ne verrà impostato uno diverso successivamente; per informazioni man fonts-conf.

Ecco la configurazione suggerita da usare nel file /etc/fonts/local.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>

<!-- 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>

<!-- Abilitando l'autohinter verranno ignorate le istruzioni di hinting
     contenute nei font e verrà usato invece un algoritmo generico di
     hinting che risulta spesso peggiore ma potrebbe migliorare la
     visualizzazione dei font che non hanno istruzioni incorporate, come
     molti font nel formato OpenType.
     Nelle più recenti versioni di FreeType, se l'hintstyle è impostato su
     "hintslight", verrà usato automaticamente l'autohinter se il font non
     contiene le istruzioni incorporate, quindi meglio ignorare questa
     opzione, così da essere gestita automaticamente. -->
<!--
		<edit mode="append" name="autohint">
			<bool>false</bool>
		</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 incorporano 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>

<!-- Rifiuta i font Type 1 perché non hanno un buon rendering -->
	<selectfont><rejectfont><pattern>
		<patelt name="fontformat"><string>Type 1</string></patelt>
	</pattern></rejectfont></selectfont>

<!-- I font predefiniti "Serif", "Sans-Serif" e "Monospace" sono in realtà
     degli alias a dei font predefiniti, 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>DejaVu Sans</family></prefer>
	</alias>
	<alias>
		<family>monospace</family>
		<prefer><family>DejaVu Sans Mono</family></prefer>
	</alias>

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

</fontconfig>

Se si usa il modello sopra per creare ~/.config/fontconfig/fonts.conf bisognerebbe sostituire tutti i mode="append" presenti con mode="assign" per far convivere configurazioni di sistema e dell'utente senza problemi di priorità. 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 ~/.config/fontconfig/fonts.conf

poi incollare il modello sopra, eventualmente modificarlo e salvare il file.
Dopo rigeneriamo le cache dei font (di sistema e dell'utente) con:

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

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

La configurazione sopra riportata è uno "standard" che cerca di fornire il miglior risultato possibile sulla maggior parte dei sistemi. Però ci sono tanti fattori da considerare se l'aspetto dei font con questa configurazione non è ancora soddisfacente. Potrebbe essere ad esempio per via del monitor che usa uno schema subpixel BGR (casi 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 "Full" o abilitando "autohint". 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.
Meglio ancora, si possono specificare delle impostazioni specifiche per un determinato font, se questo appare meglio con impostazioni diverse da quelle generali. Nell'esempio seguente, vengono specificati alcuni parametri per il carattere Oxygen-Sans:

  <match target="font">
    <test name="force_autohint">
      <bool>false</bool>
    </test>
    <test name="family">
      <string>Oxygen-Sans</string>
    </test>
    <edit name="antialias" mode="assign">
      <bool>true</bool>
    </edit>
    <edit name="hinting" mode="assign">
      <bool>true</bool>
    </edit>
    <edit name="hintstyle" mode="assign">
      <const>hintfull</const>
    </edit>
    <edit name="autohint" mode="assign">
      <bool>false</bool>
    </edit>
  </match>

C'è da considerare anche che l'ambiente desktop in uso può cambiare questi parametri, modificando direttamente il file ~/.config/fontconfig/fonts.conf (KDE) o passando direttamente a Xft i propri valori di hinting con una priorità maggiore (GNOME, Xfce, LXDE).

  • In GNOME 3 le impostazioni predefinite sono "Hinting: Full" e "Antialiasing: Greyscale" (Greyscale utilizza l'autohint al posto del subpixel hinting). Dato che GNOME sovrascrive le impostazioni di sistema con le sue, è meglio installare il pacchetto gnome-tweak-tool, lanciare l'omonima utility e cambiare questi valori con quelli già usati nei vostri /etc/fonts/local.conf e/o ~/.config/fontconfig/fonts.conf.
  • In Xfce e LXDE non ci dovrebbero essere conflitti con la configurazione di Fontconfig se l'utente non modifica le impostazioni dell'ambiente desktop, altrimenti vale lo stesso discorso di GNOME 3 (eccetto che questi ambienti già forniscono il pannello di configurazione dei font).
  • KDE invece utilizza solo Fontconfig, precisamente memorizza le opzioni dell'utente in ~/.config/fontconfig/fonts.conf. In realtà anche KDE imposta i valori Xft ma gli servono solo per la compatibilità con alcune applicazioni (tipo quelle in GTK). Un bug di KDE4 (non presente in KDE5) imposta sempre e comunque dei parametri di hinting predefiniti in ~/.config/fontconfig/fonts.conf anche se l'utente sceglie di mantenere quelli di sistema; quindi l'unica soluzione al momento è impostare i parametri così come in GNOME3.

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

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 a Cairo e FreeType per migliorare la resa su schermo e se si voleva lo stesso risultato in Debian bisognava ricompilare i pacchetti interessati aggiungendo le patch.

A partire da Wheezy queste patch sono presenti anche in Debian (perché adottate 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.

Il modello di configurazione esposto nel paragrafo precedente è già uguale a quella di Ubuntu, quindi basta usare quella configurazione 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 (o dei font).

Per completare l'opera di "Ubuntizzazione" si può installare il font predefinito di Ubuntu, che è possibile scaricare da qui già pacchettizzato per Debian, e per installarlo basta un:

# dpkg -i fonts-ubuntu_0.83-1.1_all.deb

Debian 7 e precedenti

A partire dalla versione 2.10 di Fontconfig (da Debian 8 "Jessie" in poi) sono cambiate le posizioni di alcuni file di configurazione, ma sarà mantenuta la compatibilità con alcuni dei vecchi percorsi ancora per qualche versione. Ecco una tabella comparativa:

Percorso attuale Vecchio percorso
Directory di configurazione utente ~/.config/fontconfig/conf.d/ ~/.fonts.conf.d/
File di configurazione utente ~/.config/fontconfig/fonts.conf ~/.fonts.conf
Directory caratteri utente ~/.local/share/fonts/ ~/.fonts/
Cache caratteri utente ~/.cache/fontconfig/ ~/.fontconfig/
Configurazioni sistema disponibili /usr/share/fontconfig/conf.avail/ /etc/fonts/conf.avail/

Xft

"X FreeType interface library" come dice il nome stesso, è una libreria che serve ad interfacciare il rasterizzatore FreeType con X (precisamente con XRender).
Generalmente non dovrebbe esserci necessità di configurare Xft ma, come vedremo più avanti, può essere meglio impostarne manualmente i parametri per un risultato finale migliore. Per farlo è consigliabile usare gli stessi valori presenti in ~/.config/fontconfig/fonts.conf o /etc/fonts/local.conf per evitare possibili 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 aggiungiamo 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.

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


! FreeType can set this automatically, better not forcing this on or off.

!Xft.autohint: 0


! Fontconfig will default to the Xft.dpi variable if it is set.
! Xft.dpi is usually set by desktop environments (usually to Xorg 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.

Da notare però che KDE 5 (e probabilmente anche altri ambienti desktop) sovrascrivono questi valori con quelli impostati nelle loro schermate di configurazione. Per fare una prova empirica, impostiamo ~/.Xresources come sopra e poi mettiamo dei valori diversi in KDE 5 > Impostazioni di sistema > Carattere, e per l'esattezza Tipo di sub-pixel hinting "BGR" e Stile di hinting "Intero". Se riavviamo la sessione e controlliamo i valori Xft attuali con il comando:

$ xrdb -query | grep Xft

i due valori cambiati, e cioè Xft.hintstyle e Xft.rgba, corrisponderanno a quelli di KDE 5 e non a quelli di ~/.Xresources.
È tuttavia consigliato impostare ugualmente questi valori in ~/.Xresources perché KDE 5 non modifica tutti i valori (ad es. Xft.autohint e Xft.lcdfilter non sembrano essere presi in considerazione). E dato che molte applicazioni in GTK sembrano dipendere da Xft per il loro rendering (es. Synaptic), avere tutte le impostazioni configurate a dovere e con gli stessi valori tra fontconfig, Xft e ambiente desktop, risulterà in un aspetto uniforme tra le varie applicazioni, a prescindere che siano in Qt, in GTK o altri toolkit.

DPI

Se i caratteri a schermo sono troppo piccoli (o troppo grandi) perché il monitor ha una risoluzione elevata (o bassa), 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 con Xorg, sono presenti due DPI: quello usato da Xorg e quello usato da Xft/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 quel 102.46 con il DPI del vostro schermo. Questo è il metodo più veloce ma se volete approfondire ci sono altri modi per impostare il DPI su Xorg, leggete ad esempio qui.
Se si ha una postazione multi-schermo o si collega spesso un monitor esterno, potrete trovare informazioni molto utili su come configurare in questi casi in questa guida qui.
Una volta impostato il DPI, potete verificare che questo sia giusto aprendo un qualsiasi file pdf in formato A4 (come questo), mettendo lo zoom al 100% e sovrapponendo sul foglio nello schermo un foglio reale di carta in A4: se le dimensioni sono uguali il calcolo e la configurazione sono andati a buon fine.

Info.png Nota
Testando KDE, sembrerebbe che questo ambiente desktop rilevi automaticamente il DPI esatto dello schermo, in quanto il test del foglio A4 viene superato senza l'uso della procedura sopra (utilizzando il visualizzatore di documenti predefinito di KDE, okular). Provando ad installare ed usare evince (il visualizzatore predefinito di GNOME) su KDE questo non sembra beneficiare della rilevazione automatica, rendendo necessario l'utilizzo della procedura sopra per una visualizzazione in scala 1:1. Probabilmente è una questione di toolkit: Qt da questo punto di vista sembra superiore a GTK.


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 | grep -i dpi

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 delle interfacce grafiche potrebbero non scendere sotto i 96 DPI.
Generalmente è meglio impostare questo DPI tramite gli strumenti di configurazione messi a disposizione dall'ambiente desktop, perché tanto questo andrebbe a sovrascrivere o ad interferire con i settaggi inseriti manualmente.

  • GNOME 3 imposta automaticamente 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).
  • Xfce non imposta automaticamente il DPI, ma per farlo manualmente andare in "Impostazioni" > "Aspetto" > "Caratteri".
  • LXDE si comporta come Xfce.
  • Anche KDE non cambia il DPI se non facendolo manualmente da "Impostazioni di sistema" > "Aspetto delle applicazioni" > "Caratteri".

Se necessario, i valori del DPI possono anche essere impostati su /etc/fonts/local.conf e /etc/X11/Xresources/x11-common o nelle rispettive controparti per utente singolo ~/.config/fontconfig/fonts.conf e ~/.Xresources. Se per creare questi file avete usato le configurazioni-modello dei paragrafi precedenti, le sezioni dove inserire il DPI sono già presenti ma sono disattivate da un tag di commento: togliete quei tag per abilitare. 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.

Installazione nuovi caratteri

Quando si vuole installare un nuovo carattere non presente nei repository di Debian, bisogna mettere 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 è meglio non usare questa, perché appunto di sistema. I font vanno inseriti in ~/.local/share/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 font rigenerare la cache con:

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

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

$ unzip ubuntu-font-family-0.83.zip -d ~/.local/share/fonts/
$ fc-cache -fv

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

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

Se vi piacciono i font di Windows e questo è già installato 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 è diverso dal ClearType di Windows e i caratteri potrebbero apparire diversi).
A chi interessa ecco alcuni dei caratteri usati nelle interfacce grafiche di vari sistemi operativi:
- Windows XP: Tahoma
- Windows 7 / 8.x / 10: Segoe UI
- Mac OS X: Lucida Grande
- iOS: Helvetica Neue
- ultime versioni di OSX e iOS: San Francisco
- Android (< 4.0): famiglia di caratteri Droid (presente in Debian)
- Android: Roboto (presente in Debian)
- Ubuntu: la già citata famiglia di caratteri Ubuntu
- Gnome 3: Cantarell (presente in Debian)
- KDE 5: Oxygen (presente da Debian Stretch)
Sul web ci sono tanti siti con collezioni di font, come Google Fonts. Alcuni font pacchettizzati per Debian 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 dei glifi di una lingua non latina, per migliorarne 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

Guida rapida

Questa guida è un estratto di quanto scritto finora e serve da riferimento rapido, ma tralascia dei particolari (come ad esempio il DPI). Se non siete alle prime armi e volete più controllo sulla configurazione, consiglio di leggere tutta la guida.

Configurazione di sistema

Come utente root creare il file /etc/fonts/local.conf con un editor di testi (es. nano):

# nano /etc/fonts/local.conf

e incollare quanto segue:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <edit mode="append" name="antialias">
      <bool>true</bool>
    </edit>
    <edit mode="append" name="hinting">
      <bool>true</bool>
    </edit>
    <edit mode="append" name="hintstyle">
      <const>hintslight</const>
    </edit>
    <edit mode="append" name="rgba">
      <const>rgb</const>
    </edit>
    <edit mode="append" name="lcdfilter">
      <const>lcddefault</const>
    </edit>
    <edit mode="append" name="embeddedbitmap">
      <bool>false</bool>
    </edit>
  </match>
  <selectfont><rejectfont><pattern>
    <patelt name="scalable"><bool>false</bool></patelt>
  </pattern></rejectfont></selectfont>
  <selectfont><rejectfont><pattern>
    <patelt name="fontformat"><string>Type 1</string></patelt>
  </pattern></rejectfont></selectfont>
</fontconfig>

Il rendering ottenuto con queste impostazioni sarà adottato in modo predefinito da tutti gli utenti del sistema, anche dalla schermata iniziale di login. Ma ogni utente può cambiare queste impostazioni nel proprio profilo, come spiegato di seguito (e spesso deve farlo perché alcuni ambienti desktop tendono a sovrascrivere le preferenze di sistema in modo predefinito, anche se non impostate dall'utente).

Configurazione utente

A livello utente:

  • se si usa Wheezy (o versioni precedenti) creare o cambiare il file ~/.fonts.conf
  • se si usa Jessie (o versioni successive) creare o cambiare il file ~/.config/fontconfig/fonts.conf

Il contenuto del file è il seguente:

<?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="hintstyle">
      <const>hintslight</const>
    </edit>
    <edit mode="assign" name="rgba">
      <const>rgb</const>
    </edit>
    <edit mode="assign" name="lcdfilter">
      <const>lcddefault</const>
    </edit>
    <edit mode="assign" name="dpi">
      <double>96</double>
    </edit>
  </match>
</fontconfig>

che è quasi uguale a local.conf ma con l'uso di mode="assign" invece di mode="append", che permette di sovrascrivere le impostazioni di sistema ai singoli utenti.
Creare anche il file ~/.Xresources con il seguente contenuto (se già esistente aggiungere semplicemente queste righe):

Xft.antialias: 1
Xft.hinting: 1
Xft.hintstyle: hintslight
Xft.rgba: rgb
Xft.lcdfilter: lcddefault
Xft.dpi: 96

Attivare le nuove impostazioni riavviando il server X (riavviando la sessione oppure il sistema).
Le impostazioni usate nel file creano un rendering uguale a quello di Ubuntu, che piace a molti utenti. Ovviamente sono delle impostazioni consigliate e potrete cambiarle a vostro piacimento. Ma, cosa molto importante, assicurarsi che i due file dell'utente utilizzino le stesse impostazioni, o si avranno problemi di omogeneità nella visualizzazione.

Ambienti desktop

L'utente deve poi usare gli strumenti messi a disposizione dall'ambiente desktop in uso per modificare le impostazioni dei font, al fine di riprendere quelle dei due file utente appena esposti. Questo perché, come già detto sopra, alcuni ambienti desktop impostano i loro parametri predefiniti andando a sovrascrivere quelli di sistema e a volte anche quelli dei due file utente.

KDE 4
GNOME 3
Xfce


KDE 4/5

In KDE le impostazioni si trovano in "Impostazioni di sistema" > "Aspetto delle applicazioni" > "Caratteri" > "Utilizza l'antialiasing per i caratteri". Qui è possibile scegliere tra Abilitato (consigliato), Disabilitato (sconsigliato) e Impostazioni di sistema (che funziona solo su KDE 5). L'unica scelta logica per KDE 4 rimane quindi Abilitato, dove poi è possibile con il tasto Configura cambiare le impostazioni (valori consigliati nell'immagine a destra).
KDE salva le impostazioni in ~/.config/fontconfig/fonts.conf, modificandolo se già esistente (quindi in tal caso meglio controllare che non abbia stravolto qualcosa).


GNOME 3

GNOME Shell imposta automaticamente una configurazione generica che non sfrutta bene le caratteristiche degli schermi LCD (e che va a sovrascrivere quella di sistema), per cui sarà necessario cambiarla. Per farlo bisogna prima installare il pacchetto gnome-tweak-tool, successivamente andare in "Preferenze" > "Impostazioni avanzate" > "Tipi di carattere" e da qui cambiare i valori di Hinting e Antialiasing con quelli che avete inserito nei due file utente.


Xfce

In Xfce le impostazioni si trovano in "Impostazioni" > "Aspetto" > "Caratteri".


LXDE, Mate, Cinnamon

Anche questi ambienti desktop, come i precedenti, includono dei pannelli di configurazione per cambiare il rendering dei font.


Altri desktop

Altri ambienti desktop o windows manager (come Enlightenment, Openbox, ecc.) potrebbero avere degli strumenti di configurazione dei font poco pratici, incompleti o non averne affatto. In questi casi, basta usare i due file utente per avere tutto configurato a dovere.


Riferimenti

Per approfondimenti sulla rasterizzazione consiglio la lettura di questo articolo, dettagliato ma comprensibile.
Invece quest'altro è 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_(graphics)




Guida scritta da: Gash Swirl-auth80.png Debianized 80%
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)
Usmnunter 07:22 17 ago 2014 (CEST)

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