Migliorare l'aspetto dei font: differenze tra le versioni

Revisione generale
(→‎Infinality: aggiornamenti vari)
(Revisione generale)
Riga 2: Riga 2:


== Introduzione ==
== Introduzione ==
Molti nuovi utenti di Debian, subito dopo averlo installato, si lamentano del brutto aspetto che hanno i caratteri (ad alcuni invece piacciono, de gustibus). Il problema risiede principalmente nella configurazione predefinita di Debian, che non imposta il [http://en.wikipedia.org/wiki/Font_rasterization rendering dei caratteri] adeguatamente.
Molti nuovi utenti di Debian, subito dopo l'installazione, si lamentano del brutto aspetto che hanno i caratteri (mentre alcuni invece piacciono, de gustibus). Il problema risiede principalmente nella configurazione predefinita di Debian, che non imposta il [http://en.wikipedia.org/wiki/Font_rasterization rendering dei caratteri] adeguatamente.


Ci sono vari modi e tanti parametri per migliorare il rendering, di seguito si farà una carrellata quanto più esplicativa possibile (spero). Ulteriori approfondimenti sull'argomento si possono leggere nell'ultimo capitolo "[[Migliorare l'aspetto dei font#Riferimenti |Riferimenti]]". <u>Se invece non vi interessano i particolari dettagliati e volete prendere la strada più breve allora leggete [[Migliorare l'aspetto dei caratteri |questa guida]]</u>.
Ci sono vari modi e tanti parametri per migliorare il rendering, di seguito si farà una carrellata quanto più esplicativa possibile (spero). Ulteriori approfondimenti sull'argomento si possono leggere nell'ultimo capitolo "[[Migliorare l'aspetto dei font#Riferimenti |Riferimenti]]". <u>Se invece non vi interessano i particolari dettagliati e volete prendere la strada più breve allora leggete [[Migliorare l'aspetto dei caratteri |quest'altra guida]]</u>.


Prima di cominciare bisognerebbe controllare che siano installati i pacchetti responsabili della gestione dei font, e cioè <code>fontconfig</code>, <code>libfreetype6</code>, <code>libcairo2</code> e <code>libxft2</code>, ma è un controllo superfluo, dato che questi pacchetti sono dipendenze di tutti i principali ambienti desktop (senza un desktop grafico ci sarebbero solo [http://en.wikipedia.org/wiki/Computer_font#Bitmap_fonts caratteri bitmap], e di questa guida si potrebbe usare solo il paragrafo che riguarda la [[Migliorare l'aspetto dei font#Console Linux |console Linux]] in tal caso).
Prima di cominciare bisognerebbe controllare che siano installati i pacchetti responsabili della gestione dei font, e cioè <code>fontconfig</code>, <code>libfreetype6</code>, <code>libcairo2</code> e <code>libxft2</code>, ma è un controllo superfluo, dato che questi pacchetti sono dipendenze di tutti i principali ambienti desktop (senza un interfaccia grafica ci sarebbero solo [http://en.wikipedia.org/wiki/Computer_font#Bitmap_fonts caratteri bitmap], e in tal caso questa guida potrebbe essere utile solo per il paragrafo che riguarda la [[Migliorare l'aspetto dei font#Console Linux |console Linux]]).


In parole povere, [http://www.freetype.org/ FreeType] è come la "mano" che disegna i caratteri sullo schermo, mentre [http://cairographics.org/ Cairo] è sarebbe la "matita" usata da FreeType per disegnare. [http://www.freedesktop.org/wiki/Software/fontconfig/ Fontconfig] gestisce, configura e personalizza i caratteri, e infine [http://www.freedesktop.org/wiki/Software/Xft/ Xft] è un componente del server grafico X che usa e "coordina" FreeType e Fontconfig (in quanto questi ultimi sono pensati per essere universali e non dipendenti da X).
Volendo fare una similitudine, [http://www.freetype.org/ FreeType] è come la "mano" che disegna i caratteri sullo schermo, mentre [http://cairographics.org/ Cairo] è la "matita" usata da FreeType per disegnare. [http://www.freedesktop.org/wiki/Software/fontconfig/ Fontconfig] gestisce, configura e personalizza i caratteri, e infine [http://www.freedesktop.org/wiki/Software/Xft/ Xft] è un componente del server grafico X che usa e "coordina" FreeType e Fontconfig (in quanto questi ultimi sono pensati per essere universali e non dipendenti da X).


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


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


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


Ecco il modello di configurazione da usare nei file <code>.conf</code>:
Ecco il modello di configurazione da usare nel file <code>/etc/fonts/local.conf</code>:
<pre>
<pre>
<?xml version='1.0'?>
<?xml version='1.0'?>
Riga 98: Riga 98:
-->
-->


<!-- Alcuni font includono una versione bitmap che potrebbe essere usata
<!-- Alcuni font incorporano una versione bitmap che potrebbe essere usata
     al posto della vettoriale, specie alle dimensioni più piccole. Con
     al posto della vettoriale, specie alle dimensioni più piccole. Con
     questa opzione si disattiva l'utilizzo di questi caratteri bitmap. -->
     questa opzione si disattiva l'utilizzo di questi caratteri bitmap. -->
Riga 114: Riga 114:


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


Riga 142: Riga 142:
</fontconfig>
</fontconfig>
</pre>
</pre>
Se si usa il modello sopra per <code>~/.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup> bisogna sostituire tutti i <code>mode="append"</code> presenti con <code>mode="assign"</code> (quasi indispensabile per far convivere entrambe le configurazioni senza problemi di priorità).
Per creare il file basta usare il proprio editor preferito (es. ''nano''). Per la configurazione di sistema:
Per creare il file basta usare il proprio editor preferito (es. ''nano''). Per la configurazione di sistema:
<pre># nano /etc/fonts/local.conf</pre>
<pre># nano /etc/fonts/local.conf</pre>
Riga 147: Riga 148:
<pre>$ nano ~/.fonts.conf</pre>
<pre>$ nano ~/.fonts.conf</pre>
poi incollare il modello sopra, eventualmente modificarlo e salvare il file.
poi incollare il modello sopra, eventualmente modificarlo e salvare il file.
Meglio poi eliminare i link in <code>conf.d</code> che riguardano le stesse impostazioni, per evitare strani risultati:
<!-- Meglio poi eliminare i link in <code>conf.d</code> che riguardano le stesse impostazioni, per evitare strani risultati:
<pre># rm /etc/fonts/conf.d/1*.conf
<pre># rm /etc/fonts/conf.d/1*.conf
# rm /etc/fonts/conf.d/70*.conf
# rm /etc/fonts/conf.d/70*.conf
# dpkg-reconfigure fontconfig</pre>
# dpkg-reconfigure fontconfig</pre> -->
dopo rigeneriamo la cache dei font con:
Dopo rigeneriamo la cache dei font con:
<pre># fc-cache -fv
<pre># fc-cache -fv
$ fc-cache -fv</pre>
$ fc-cache -fv</pre>
Riga 160: Riga 161:
Spesso i font hanno istruzioni di hinting codificate al loro interno e mentre alcuni possono dare un buon risultato con l'hinting "Slight", altri appariranno meglio con hinting "None", oppure con quello "Full". In ogni caso basta modificare i parametri nei file <code>.conf</code> aiutandosi con i commenti inclusi nel codice o con la documentazione (online e offline) per ottenere il risultato su schermo migliore per i vostri occhi.
Spesso i font hanno istruzioni di hinting codificate al loro interno e mentre alcuni possono dare un buon risultato con l'hinting "Slight", altri appariranno meglio con hinting "None", oppure con quello "Full". In ogni caso basta modificare i parametri nei file <code>.conf</code> aiutandosi con i commenti inclusi nel codice o con la documentazione (online e offline) per ottenere il risultato su schermo migliore per i vostri occhi.


C'è da considerare anche che l'ambiente desktop in uso può cambiare questi parametri, modificando direttamente il file <code>~/.fonts.conf</code> (caso raro) o più spesso passando direttamente a ''Xft'' i propri valori di hinting con una priorità maggiore. Per esempio su Gnome3 le impostazioni predefinite (modificabili tramite ''gnome-tweak-tool'') sono "Hinting: Full" e "Antialiasing: Greyscale". Per evitare discrepanze e conflitti è meglio cambiare questi valori con quelli usati nei file <code>.conf</code>.
C'è da considerare anche che l'ambiente desktop in uso può cambiare questi parametri, modificando direttamente il file <code>~/.fonts.conf</code> (KDE) o passando direttamente a ''Xft'' i propri valori di hinting con una priorità maggiore (Gnome, Xfce, LXDE).
 
In ''Gnome3'' le impostazioni predefinite sono "Hinting: Full" e "Antialiasing: Greyscale" (cioè utilizza l'autohint al posto del subpixel hinting). Per evitare discrepanze e conflitti è meglio installare il pacchetto ''gnome-tweak-tool'', lanciare l'omonima utility e cambiare questi valori con quelli usati in <code>/etc/fonts/local.conf</code> o in <code>~/.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup>.<br>
Ogni desktop environment che si rispetti ha una sezione dove poter impostare i parametri base dell'aspetto dei caratteri e spesso sembrano sufficienti per avere un buon risultato, ma per un controllo più accurato il ricorso ai file <code>.conf</code> è necessario. Ad esempio alcuni caratteri risultano più leggibili senza hinting sotto una certa dimensione. Ciò è correggibile aggiungendo del codice simile a questo nel nostro file <code>.conf</code>:
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 Gnome3 (eccetto che questi ambienti già forniscono il pannello per configurare i font).<br>
<pre>
''KDE'' invece utilizza solo Fontconfig, precisamente memorizza le opzioni dell'utente in <code>~/.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup>, rispettando gli standard. In realtà anche KDE imposta i valori Xft ma gli servono solo per la compatibilità con alcune applicazioni (credo quelle in GTK). Un fastidioso comportamento (forse un bug) di KDE è quello di scrivere sempre e comunque dei parametri di hinting predefiniti in <code>~/.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup> anche se l'utente sceglie di mantenere quelli di sistema; l'unica soluzione è scegliere di personalizzare i parametri.
<match target="font">
<test name="family">
<string>DejaVu Sans Mono</string>
</test>
<test name="pixelsize" compare="less">
<double>7.5</double>
</test>
<edit name="hinting">
<bool>false</bool>
</edit>
</match>
</pre>
Questo ad esempio in caso di carattere "DejaVu Sans Mono" con una dimensione inferiore ai 7.5 punti, deve disabilitare l'hinting. Si possono fare tante altre cose simili con ''Fontconfig'', come assegnare dei parametri di hinting diversi da quelli generali per un dato font che non rende bene; per approfondimenti leggete la documentazione di ''Fontconfig'' (e visionate anche i file di configurazione del pacchetto [[Migliorare l'aspetto dei font#Infinality|<code>fontconfig-infinality</code>]] come esempio di applicazione pratica).


Alla fine del tuning potrete testare la vostra configurazione corrente [http://www.infinality.net/files/font.html in questa pagina].
Alla fine del tuning potrete testare la vostra configurazione corrente [http://www.infinality.net/files/font.html in questa pagina].
Riga 183: Riga 171:
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.
Molti utenti che passano da Ubuntu a Debian o che li usano entrambi si lamentano dell'aspetto dei caratteri "out of the box", nettamente migliore su Ubuntu.


Prima di Debian 7 "Wheezy" la differenza tra i due sistemi era più marcata, perché Ubuntu applicava delle patch al codice di Cairo e FreeType per migliorare la resa su schermo e se si voleva lo stesso risultato bisognava ricompilare i pacchetti interessati su Debian aggiungendo le patch.
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é assimilate in upstream) e l'unica differenza rimasta tra Debian e Ubuntu adesso è la configurazione iniziale di Fontconfig. Su Ubuntu questa configurazione è ottenuta sempre con delle patch nel codice di Fontconfig, ma per fortuna non è necessario ricompilare nulla in questo caso, basta solo applicare la stessa configurazione di Ubuntu con <code>local.conf</code> per avere risultati identici.
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.


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


Per completare l'opera di "Ubuntizzazione" si può installare il font predefinito di Ubuntu, che è possibile scaricare dai [http://it.archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-font-family-sources/ttf-ubuntu-font-family_0.80-0ubuntu6_all.deb repository di Ubuntu] e per installarlo basta un:
Per completare l'opera di "Ubuntizzazione" si può installare il font predefinito di Ubuntu, che è possibile scaricare da [http://drive.google.com/file/d/0B7AdLMiZn4FzMDYtc2IwSlJsam8/ qui] pacchettizzato per Debian, e per installarlo basta un:
<pre># dpkg -i ttf-ubuntu-font-family_0.80-0ubuntu6_all.deb</pre>
<pre># dpkg -i fonts-ubuntu_0.80-6.2_all.deb</pre>
Il font è presente in vari formati tra i quali Light e Medium. Alcuni programmi però [https://bugs.launchpad.net/ubuntu-font-family/+bug/744812 non sembrano gestire bene queste varianti] del font: per esempio l'interfaccia di VLC (in Qt) usa il font Medium invece del Regular. Una possibile soluzione è quella di creare il file <code>81-ubuntu.conf</code> in <code>/etc/fonts/conf.d/</code> contenente il seguente codice:
<pre>
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
 
<!-- Fixes for Ubuntu family:
    - Medium variant is used instead of Regular on Qt apps:
      https://bugs.launchpad.net/ubuntu-font-family/+bug/744812
    - Medium and Bold looks the same in certain applications:
      https://bugs.launchpad.net/ubuntu/+source/gnome-specimen/+bug/813373
-->
 
<match target="scan">
<test name="fullname" compare="eq">
<string>Ubuntu Light</string>
</test>
<edit name="family" mode="assign">
<string>Ubuntu</string>
</edit>
<edit name="style" mode="assign">
<string>Light</string>
</edit>
</match>
 
<match target="scan">
<test name="fullname" compare="eq">
<string>Ubuntu Light Italic</string>
</test>
<edit name="family" mode="assign">
<string>Ubuntu</string>
</edit>
<edit name="style" mode="assign">
<string>Light Italic</string>
</edit>
</match>
 
<match target="scan">
<test name="fullname" compare="eq">
<string>Ubuntu Medium</string>
</test>
<edit name="family" mode="assign">
<string>Ubuntu</string>
</edit>
<edit name="style" mode="assign">
<string>Medium</string>
</edit>
<edit name="weight" mode="assign">
<const>demibold</const>
</edit>
</match>
 
<match target="scan">
<test name="fullname" compare="eq">
<string>Ubuntu Medium Italic</string>
</test>
<edit name="family" mode="assign">
<string>Ubuntu</string>
</edit>
<edit name="style" mode="assign">
<string>Medium Italic</string>
</edit>
<edit name="weight" mode="assign">
<const>demibold</const>
</edit>
</match>
 
</fontconfig>
</pre>
e successivamente di aggiornare la cache dei font con:
<pre>
# fc-cache -fv
$ fc-cache -fv
</pre>


=== Jessie ===
=== Jessie ===
A partire dalla [http://cgit.freedesktop.org/fontconfig/commit/?id&#61;8c255fb185d5651b57380b0a9443001e8051b29d versione 2.10] di ''Fontconfig'' (presente solo a partire da Debian 8 "Jessie" in poi) cambierà la posizione di alcuni file di configurazione, anche se sarà mantenuta la compatibilità con i vecchi percorsi ancora per qualche versione. Ecco una tabella dei cambiamenti:
A partire dalla [http://cgit.freedesktop.org/fontconfig/commit/?id&#61;8c255fb185d5651b57380b0a9443001e8051b29d versione 2.10] di ''Fontconfig'' (presente da Debian 8 "Jessie" in poi) cambierà la posizione di alcuni file di configurazione, anche se sarà mantenuta la compatibilità con i vecchi percorsi ancora per qualche versione. Ecco una tabella dei cambiamenti:


{| class="wikitable"
{| class="wikitable"
Riga 284: Riga 198:


== Xft ==
== Xft ==
"X FreeType interface library" come dice il nome stesso, è una libreria che serve ad interfacciare il rasterizzatore FreeType con X (precisamente con [http://en.wikipedia.org/wiki/X_Rendering_Extension XRender]).
"X FreeType interface library" come dice il nome stesso, è una libreria che serve ad interfacciare il rasterizzatore FreeType con X (precisamente con [http://en.wikipedia.org/wiki/X_Rendering_Extension XRender]).<br>
Le applicazioni che si basano su X potrebbero ignorare le impostazioni di fontconfig e usare quelle di Xft.<br>
Generalmente sono gli ambienti desktop ad impostare i parametri Xft a seconda delle scelte dell'utente (per verificare ciò si può usare il comando <code>xrdb -query | grep Xft</code> prima e dopo aver cambiato delle opzioni nell'ambiente desktop). Se l'ambiente desktop non dovesse impostare questi valori, Xft comunque dovrebbe assumere le impostazioni di Fontconfig, quindi non ci dovrebbe essere alcuna necessità di intervenire direttamente su Xft, tranne se qualche applicazione mostrasse un rendering diverso.<br>
Xft comunque si poggia su fontconfig e ne dovrebbe assumere anche le impostazioni di hinting e se nessuna applicazione mostra differenze di rendering si può tranquillamente lasciare tutto com'è.<br>
In caso ci sia necessità di impostare manualmente i parametri di Xft è consigliabile usare gli stessi valori presenti in <code>~/.fonts.conf</code> o <code>/etc/fonts/local.conf</code> per evitare conflitti.<br>
In caso ci sia necessità di impostare manualmente i parametri di Xft è consigliabile usare gli stessi valori di <code>.fonts.conf</code> o <code>local.conf</code> per evitare conflitti.<br>
Creiamo o modifichiamo il file <code>.Xresources</code> nella nostra home con:
Creiamo o modifichiamo il file <code>.Xresources</code> nella nostra home con:
<pre>$ nano ~/.Xresources</pre>
<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}}
{{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 inseriamo il codice seguente:
Poi aggiungiamo il codice seguente:
<pre>
<pre>
! You can define basic font resources without the need of a fonts.conf file
! You can define basic font resources without the need of a fonts.conf file
Riga 312: Riga 225:
! Xft.dpi: 96
! Xft.dpi: 96
</pre>
</pre>
Salviamo il file e riavviamo X facendo logout e login.<br>
Salviamo il file e riavviamo X facendo logout e login.
Se usate ''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; è invece possibile modificare lo script se si vuole cambiarli.<br>
{{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; è invece possibile modificare lo script se si vuole cambiarli.}}
Cambiando le impostazioni del font hinting su Gnome3 (e probabilmente anche su altri desktop environment), questi va a modificare direttamente i valori di Xft. Potete verificarlo cambiando i valori con <code>gnome-tweak-tool</code> e poi dando il comando <code>xrdb -query</code> per vedere i nuovi valori cambiati.


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


== Infinality ==
== Infinality ==
Riga 329: Riga 241:


=== Installazione ===
=== Installazione ===
'''''Al momento è possibile installare Infinality solo su Debian Wheezy. Al più presto arriverà la versione aggiornata per Jessie/Sid.'''''
{{Box|Nota|Al momento è possibile installare Infinality solo su Debian Wheezy. Il creatore del progetto (conosciuto proprio come Infinality) non lo aggiorna da più di un anno, e attualmente sembra abbandonato da parte sua. L'utente [https://github.com/bohoomil/fontconfig-ultimate bohoomil] sembra stia portando avanti il progetto autonomamente.}}


Prima di installare Infinality, meglio fare pulizia di configurazioni ridondanti (che probabilmente Infinality riesce ad ignorare, ma meglio esserne sicuri).
Prima di installare Infinality è meglio fare pulizia di configurazioni ridondanti (che probabilmente Infinality riesce a bypassare, ma meglio esserne sicuri).
Innanzitutto spostare in una directory di backup o eliminare i file <code>/etc/fonts/local.conf</code> e <code>~/.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup>, poi rimuovere le impostazioni di hinting (''1*.conf'') da <code>/etc/fonts/conf.d/</code> con:
Innanzitutto spostare in una directory di backup o eliminare i file <code>/etc/fonts/local.conf</code> e <code>~/.fonts.conf</code> <sup>[[Migliorare l'aspetto dei font#Jessie |nota]]</sup>, poi rimuovere o spostare le impostazioni di hinting (''1*.conf'') da <code>/etc/fonts/conf.d/</code> con:
<pre># rm /etc/fonts/conf.d/1*.conf</pre>
<pre># mv /etc/fonts/conf.d/1*.conf directoryBackup/</pre>
così dovremmo essere tornati alla configurazione iniziale di Debian.
così dovremmo essere tornati alla configurazione iniziale di Debian.


Adesso si può aggiornare <code>libfreetype6</code> con la versione patchata e poi installare la configurazione di Infinality, contenuta in <code>fontconfig-infinality</code>:
Adesso si può aggiornare <code>libfreetype6</code> con la versione patchata e poi installare la configurazione di Infinality, contenuta in <code>fontconfig-infinality</code>:
* '''libfreetype6'''  [https://drive.google.com/file/d/0B7AdLMiZn4FzM3g1Q0U4aDdSWU0/edit i386]  [https://drive.google.com/file/d/0B7AdLMiZn4FzYlNITlQ0YWhjVk0/edit amd64]
* '''libfreetype6'''  [https://drive.google.com/file/d/0B7AdLMiZn4FzM3g1Q0U4aDdSWU0/ i386]  [https://drive.google.com/file/d/0B7AdLMiZn4FzYlNITlQ0YWhjVk0/ amd64]
* '''fontconfig-infinality'''  [https://drive.google.com/file/d/0B7AdLMiZn4FzeGlsRFFIMVNDbjA/edit i386 e amd64]
* '''fontconfig-infinality'''  [https://drive.google.com/file/d/0B7AdLMiZn4FzeGlsRFFIMVNDbjA/ i386 e amd64]
Gli altri pacchetti, il codice sorgente e i log di compilazione sono disponibili [https://drive.google.com/folderview?id=0B7AdLMiZn4FzT1FGTERscGtzc0E qui].<br>
Gli altri pacchetti, il codice sorgente e i log di compilazione sono disponibili [https://drive.google.com/folderview?id=0B7AdLMiZn4FzT1FGTERscGtzc0E qui].<br>
Se avete abilitato ''multiarch'', quasi sicuramente avrete già installato entrambe le versioni ''i386'' e ''amd64'' di <code>libfreetype6</code> e quindi dovrete aggiornarle entrambe. Per installare il tutto basta mettere i pacchetti in una nuova cartella vuota e dare un:
Se avete abilitato ''multiarch'', quasi sicuramente avrete già installato entrambe le versioni ''i386'' e ''amd64'' di <code>libfreetype6</code> e quindi dovrete aggiornarle entrambe. Per installare il tutto basta mettere i pacchetti in una nuova cartella vuota e dare un:
<pre># dpkg -i /percorso/nuovacartella/*.deb</pre>
<pre># dpkg -i ~/Scaricati/nuovacartella/*.deb</pre>
Dopo l'installazione cambiate configurazione con il comando:
Dopo l'installazione cambiate configurazione con il comando:
<pre># /etc/fonts/infinality/infctl.sh setstyle</pre>
<pre># /etc/fonts/infinality/infctl.sh setstyle</pre>
Riga 359: Riga 271:


== DPI ==
== DPI ==
Se i caratteri a schermo sono troppo piccoli (o troppo grandi) perché il monitor ha risoluzioni elevate (o basse), si può cambiare il 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>
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>
Impostare il corretto DPI è necessario quando è richiesta una grande cura dei dettagli, come nel font rendering, ma anche in altri casi (software di grafica, di impaginazione, ecc.).<br>
In Debian e in tutte le distribuzioni Linux, sono presenti due DPI: quello usato da Xorg e quello usato da Xft (e Fontconfig).
In Debian e in tutte le distribuzioni Linux con Xorg, sono presenti due DPI: quello usato da Xorg e quello usato da Xft/Fontconfig.


=== DPI di Xorg ===
=== DPI di Xorg ===
Riga 376: Riga 288:
EOF
EOF
</pre>
</pre>
ovviamente cambiate il 102.46 con il vostro DPI. Questo è il metodo più veloce ma se volete approfondire ci sono altri modi per impostare il DPI su Xorg, leggete ad esempio [http://wiki.archlinux.org/index.php/Xorg#Display_Size_and_DPI qui].
ovviamente cambiate il 102.46 sopra con il vostro DPI. Questo è il metodo più veloce ma se volete approfondire ci sono altri modi per impostare il DPI su Xorg, leggete ad esempio [http://wiki.archlinux.org/index.php/Xorg#Display_Size_and_DPI qui].
Una volta impostato il DPI, potete verificare se è tutto ok aprendo un qualsiasi file pdf in formato A4 ([http://www.mediafire.com/download/kl37crw0n5k3ydy/A4.pdf come questo]), mettendo lo zoom al 100% e sovrapponendo sul foglio a schermo un foglio di carta A4: se le dimensioni sono uguali o quasi il calcolo e la configurazione sono andati a buon fine.
Una volta impostato il DPI, potete verificare se è tutto ok aprendo un qualsiasi file pdf in formato A4 ([http://www.mediafire.com/download/kl37crw0n5k3ydy/A4.pdf come questo]), mettendo lo zoom al 100% e sovrapponendo sul foglio a schermo un foglio di carta A4: se le dimensioni sono uguali o quasi il calcolo e la configurazione sono andati a buon fine.
{{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. Provando ad installare ed usare evince (il visualizzatore predefinito di Gnome) 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].}}


=== DPI di Xft / Fontconfig ===
=== DPI di Xft / Fontconfig ===
Riga 392: Riga 305:
* 168 (175%)
* 168 (175%)
* 192 (200%)
* 192 (200%)
ma si può comunque usare un valore qualsiasi. Da notare che alcuni elementi dell'interfaccia grafica potrebbero non scendere sotto i 96 DPI.<br>
ma si può comunque usare un valore qualsiasi. Da notare che alcuni elementi delle interfacce grafiche potrebbero non scendere sotto i 96 DPI.<br>
Questi valori vanno impostati su <code>/etc/fonts/local.conf</code> e <code>/etc/X11/Xresources/x11-common</code> o nelle rispettive controparti per utente singolo <code>~/.fonts.conf</code> e <code>~/.Xresources</code>. Se per questi file avete usato i template sopra, le sezione dove inserire il DPI sono disattivate da un tag di commento: togliete quei tag per abilitare. Se usate [[Migliorare l'aspetto dei font#Infinality|Infinality]], dovete impostate i valori del DPI nei file <code>/etc/fonts/infinality/infinality.conf</code> e <code>/etc/X11/Xsession.d/99infinality-settings</code><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>
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.<br>
* '''Gnome3''' 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 '''KDE4''' non cambia il DPI se non facendolo manualmente da "Impostazioni di sistema" > "Aspetto delle applicazioni" > "Caratteri".<br>


Gli ambienti desktop potrebbero impostare ad ogni avvio i parametri di Xft, sovrascrivendo quelli impostati nei file di configurazione, tra i quali anche Xft.dpi. In questi casi bisogna usare gli strumenti di configurazione messi a disposizione dal desktop per impostare il DPI.<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>~/.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.
* '''Gnome3''' imposta 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>
{{Box|Nota|Se usate [[Migliorare l'aspetto dei font#Infinality|Infinality]], dovete impostate i valori del DPI nei file <code>/etc/fonts/infinality/infinality.conf</code> e <code>/etc/X11/Xsession.d/99infinality-settings</code>}}
* Non so se '''KDE4''' sovrascrive come Gnome3, ma in ogni caso si può cambiare il valore predefinito da "KDE menu" > "Personal Settings" > "Application Appearance" > "Fonts" > "Force fonts DPI".<br>
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.
* '''LXDE''' non manomette il valore di Xft.dpi, lasciando quello impostato nei file di configurazione di fontconfig/Xft/Infinality.


== Installazione nuovi caratteri ==
== Installazione nuovi caratteri ==
Riga 423: Riga 338:
- iOS: ''[http://en.wikipedia.org/wiki/Helvetica#Neue_Helvetica_.281983.29 Helvetica Neue]''<br>
- iOS: ''[http://en.wikipedia.org/wiki/Helvetica#Neue_Helvetica_.281983.29 Helvetica Neue]''<br>
- Android (< 4.0): famiglia di caratteri ''[http://www.droidfonts.com/ Droid]'' (presente in Debian)<br>
- Android (< 4.0): famiglia di caratteri ''[http://www.droidfonts.com/ Droid]'' (presente in Debian)<br>
- Android: ''[http://developer.android.com/design/style/typography.html Roboto]'' (presente in Debian Sid)<br>
- Android: ''[http://developer.android.com/design/style/typography.html Roboto]'' (presente in Debian Jessie)<br>
- Ubuntu: la già citata famiglia di caratteri ''[http://font.ubuntu.com/ Ubuntu]''<br>
- Ubuntu: la già citata famiglia di caratteri ''[http://font.ubuntu.com/ Ubuntu]''<br>
- Gnome 3: ''[http://live.gnome.org/CantarellFonts Cantarell]'' (presente in Debian)<br>
- Gnome 3: ''[http://live.gnome.org/CantarellFonts Cantarell]'' (presente in Debian)<br>
- KDE: ''[http://projects.kde.org/projects/playground/artwork/oxygen-fonts Oxygen]''<br>
- KDE: dovrebbe usare in futuro il font ''[http://projects.kde.org/projects/playground/artwork/oxygen-fonts Oxygen]''<br>
Sul web ci sono tanti siti con collezioni di font, come [https://code.google.com/p/googlefontdirectory/source/browse/ Google Web Fonts]. Dei font pacchettizzati in .deb potete trovarli [http://www.mediafire.com/?baybc7br4c4kt qui], mentre su [http://www.typetester.org/ Typetester] potrete fare dei confronti tra caratteri.<br>
Sul web ci sono tanti siti con collezioni di font, come [https://code.google.com/p/googlefontdirectory/source/browse/ Google Web Fonts]. Dei font pacchettizzati in .deb potete trovarli [https://drive.google.com/folderview?id=0B7AdLMiZn4FzNUtxeU9uT2RTU1U qui], mentre su [http://www.typetester.org/ Typetester] potrete fare dei confronti tra caratteri.<br>


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

contributi