Migliorare l'aspetto dei font: differenze tra le versioni

aggiunta Infinality, correzioni varie
(aggiunta Infinality, correzioni varie)
Riga 8: Riga 8:


== Configurazione fontconfig ==
== Configurazione fontconfig ==
Se assenti installiamo queste tre librerie:
Se assenti installiamo queste librerie:
<pre># apt-get install libfreetype6 fontconfig libcairo2 libxft2</pre>
<pre># apt-get install libfreetype6 fontconfig libcairo2 libxft2</pre>
ma essendo usate da tutti i principali ambienti desktop è praticamente impossibile non averle (anche perché senza un desktop grafico ci sarebbero solo [http://en.wikipedia.org/wiki/Computer_font#Bitmap_fonts caratteri bitmap] e questa guida non servirebbe a molto).<br>
ma essendo usate da tutti i principali ambienti desktop è praticamente impossibile non averle (anche perché senza un desktop grafico ci sarebbero solo [http://en.wikipedia.org/wiki/Computer_font#Bitmap_fonts caratteri bitmap] e questa guida non servirebbe a molto).<br>
Riga 133: Riga 133:
$ fc-cache -fv</pre>
$ fc-cache -fv</pre>
e infine riavviamo X facendo logout e login oppure riavviando il sistema.<br>
e infine riavviamo X facendo logout e login oppure riavviando il sistema.<br>
La configurazione sopra riportata è una configurazione "standard" che cerca di dare il miglior risultato possibile su tutti i sistemi.
La configurazione sopra riportata è una configurazione "standard" che cerca di fornire il miglior risultato possibile sulla maggior parte dei sistemi.
Però ci sono tanti fattori da considerare se i font elaborati con questa configurazione non vi soddisfano ancora. Potrebbe essere colpa del monitor che ad esempio usa uno schema di subpixel differente dallo standard RGB, o semplicemente è una questione di gusto personale. Spesso i font hanno istruzioni di hinting codificati al loro interno e mentre alcuni possono dare un buon risultato con l'hinting "Slight", altri appariranno meglio con hinting "None" o "Full". In ogni caso basta modificare i parametri nel file <code>.conf</code> aiutandosi con le descrizioni fornite nelle parti commentate per ottenere un risultato su schermo più adatto ai vostri occhi.<br>
Però ci sono tanti fattori da considerare se i font elaborati con questa configurazione non vi soddisfano ancora. Potrebbe essere colpa del monitor che ad esempio usa uno schema di subpixel differente dallo standard RGB, o semplicemente è una questione di gusto personale. Spesso i font hanno istruzioni di hinting codificati al loro interno e mentre alcuni possono dare un buon risultato con l'hinting "Slight", altri appariranno meglio con hinting "None" o "Full". In ogni caso basta modificare i parametri nel file <code>.conf</code> aiutandosi con le descrizioni fornite nelle parti commentate per ottenere il risultato su schermo migliore  per i vostri occhi.<br>
C'è da considerare anche che l'ambiente desktop in uso può cambiare questi parametri, non modificando il nostro file .conf direttamente ma passando a fontconfig i propri valori 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> (che se non modificati sono "Hinting: Slight" e "Antialiasing: Rgba").<br>
C'è da considerare anche che l'ambiente desktop in uso può cambiare questi parametri, non modificando il nostro file .conf direttamente ma passando a Xft e/o fontconfig i propri valori di hinting con una priorità maggiore. Per esempio su Gnome3 le impostazioni predefinite (modificabili tramite ''gnome-tweak-tool'') sono "Hinting: Full" e "Antialiasing: Greyscale". Per evitare discrepanze e conflitti è meglio cambiare questi valori con quelli usati nei file <code>.conf</code> (che se non modificati sono "Hinting: Slight" e "Antialiasing: Rgba").<br>
Ogni desktop environment che si rispetti ha una sezione dove poter impostare molti dei parametri di fontconfig e per alcuni potrebbero essere sufficienti per avere un buon risultato, ma per un controllo più fine il ricorso al file <code>.conf</code> è necessario. Per esempio alcuni caratteri risultano più leggibili senza hinting sotto una certa dimensione, o possono avere dei piccoli difetti con le impostazioni correnti che vanno però bene con gli altri font. Ciò è correggibile aggiungendo una sezione simile a questa nel nostro file .conf:
Ogni desktop environment che si rispetti ha una sezione dove poter impostare molti dei parametri di fontconfig e per alcuni potrebbero essere sufficienti per avere un buon risultato, ma per un controllo più fine il ricorso al file <code>.conf</code> è necessario. Ad esempio alcuni caratteri risultano più leggibili senza hinting sotto una certa dimensione, o possono avere dei piccoli difetti con le impostazioni di hinting correnti che però vanno bene con gli altri font. Ciò è correggibile aggiungendo una sezione simile a questa nel nostro file .conf:
<pre>
<pre>
<match target="font">
<match target="font">
Riga 155: Riga 155:


=== Font rendering di Ubuntu ===
=== Font rendering di Ubuntu ===
I parametri predefiniti di fontconfig di Ubuntu sono impostati (come in Debian e molte altre distibuzioni Linux) tramite <code>/etc/fonts/conf.d/</code>. Questa directory contiene tanti pezzi di configurazione che tutti insieme vanno a creare la configurazione globale di fontconfig per tutto il sistema. Le varie opzioni che è possibile inserire in <code>/etc/fonts/conf.d/</code> sono contenute in <code>/etc/fonts/conf.avail/</code>. Basta creare (con <code>ln -s /etc/fonts/conf.avail/nomefile /etc/fonts/conf.d/</code>) o cancellare un link simbolico in <code>conf.d</code> del file presente in <code>conf.avail</code> contenente l'opzione scelta e questa sarà attivata o, se cancellata, disattivata. Il comando suggerito nell'Introduzione di questa guida apporta dei cambiamenti proprio in questo modo. Leggere il file <code>/etc/fonts/conf.d/README</code> per informazioni più precise.<br>
I parametri predefiniti di fontconfig di Ubuntu sono impostati (come in Debian e molte altre distibuzioni Linux) tramite <code>/etc/fonts/conf.d/</code>. Questa directory contiene tanti pezzi di configurazione che tutti insieme vanno a creare la configurazione globale di fontconfig per tutto il sistema (in pratica è un <code>local.conf</code> frammentato). Le varie opzioni che è possibile attivare/disattivare in <code>/etc/fonts/conf.d/</code> sono contenute in <code>/etc/fonts/conf.avail/</code>. Basta creare un link simbolico con:
La differenza tra Ubuntu e Debian è che quest'ultima appena installata non contiene alcuna impostazione di hinting dei caratteri in <code>conf.d</code> e mancano anche delle impostazioni in <code>conf.avail</code> per poterlo fare, come l'antialiasing. In Ubuntu queste impostazioni ci sono e sono abilitate da subito.<br>
<pre>ln -s /etc/fonts/conf.avail/impostazione.conf /etc/fonts/conf.d/</pre>
Creare i file mancanti in <code>conf.avail</code> e linkarli in <code>conf.d</code> è poco pratico, mentre un modo equivalente e più rapido è scrivere direttamente le singole impostazioni tutte in un file, come abbiamo fatto sopra con <code>/etc/fonts/local.conf</code> (o <code>~/.fonts.conf</code>). In caso di impostazioni discordanti, fontconfig dovrebbe usare questa scala di priorità:<br>
oppure cancellarlo e l'impostazione sarà attivata o, se cancellata, sarà disattivata. Il comando <code>dpkg-reconfigure fontconfig-config</code> suggerito nell'Introduzione di questa guida apporta i cambiamenti proprio in questo modo, creando dei link in <code>conf.d</code> a seconda delle risposte date. Potete leggere il file <code>/etc/fonts/conf.d/README</code> per qualche informazione in più.<br>
La differenza tra Ubuntu e Debian è che quest'ultima appena installata non contiene alcuna impostazione di hinting dei caratteri in <code>conf.d</code> e mancano anche delle impostazioni in <code>conf.avail</code> per poterlo fare, come quella dell'antialiasing, che è essenziale. In Ubuntu queste impostazioni ci sono e sono abilitate da subito.<br>
Creare i file mancanti in <code>conf.avail</code> e linkarli in <code>conf.d</code> è poco pratico, mentre un modo equivalente e più rapido è scrivere direttamente le singole impostazioni tutte in un file, come abbiamo fatto sopra con <code>/etc/fonts/local.conf</code> (o <code>~/.fonts.conf</code>). In caso di impostazioni discordanti tra configurazioni diverse, fontconfig dovrebbe usare questa scala di priorità:<br>
'''1)''' impostazioni font dell'ambiente desktop<br>
'''1)''' impostazioni font dell'ambiente desktop<br>
'''2)''' <code>~/.fonts.conf</code><br>
'''2)''' <code>~/.fonts.conf</code><br>
'''3)''' <code>/etc/fonts/local.conf</code><br>
'''3)''' <code>/etc/fonts/local.conf</code><br>
'''4)''' <code>/etc/fonts/conf.d/</code><br>
'''4)''' <code>/etc/fonts/conf.d/</code><br>
La configurazione predefinita del font rendering di Ubuntu è quasi uguale a quella nostra sopra, eccetto per la mancanza dei valori di ''autohint'' (che quindi dovrebbe essere considerato ''false'') e di ''rgba'' (che quindi dovrebbe essere considerato ''none'').<br>
anche se molto dipende da come sono impostati i parametri all'interno delle configurazioni, che potrebbero cambiare le priorità. Per informazioni <code>man fonts-conf</code>.<br>
Se dopo aver allineato le configurazioni trovate ancora delle differenze di resa su schermo è possibile che sia per via di apposite patch che Ubuntu applica sui suoi pacchetti e che Debian non usa.<br>
La configurazione predefinita del font rendering di Ubuntu è quasi uguale a quella illustrata sopra, eccetto per la mancanza dei valori di ''autohint'' (che quindi dovrebbe essere considerato ''false'') e di ''rgba'' (che quindi dovrebbe essere considerato ''none'').<br>
Se dopo aver allineato le configurazioni trovate ancora delle differenze di resa su schermo è possibile che sia per via di apposite patch che Ubuntu applica sui pacchetti adibiti al rendering e che Debian non ha [ancora] introdotto.<br>
Ma può anche essere merito del font predefinito di Ubuntu, che è possibile scaricare dai [http://it.archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-font-family-sources/ttf-ubuntu-font-family_0.80-0ubuntu5_all.deb repository ufficiali di Ubuntu] e per installarlo basta un:
Ma può anche essere merito del font predefinito di Ubuntu, che è possibile scaricare dai [http://it.archive.ubuntu.com/ubuntu/pool/main/u/ubuntu-font-family-sources/ttf-ubuntu-font-family_0.80-0ubuntu5_all.deb repository ufficiali di Ubuntu] e per installarlo basta un:
<pre># dpkg -i ttf-ubuntu-font-family_0.80-0ubuntu5_all.deb</pre>
<pre># dpkg -i ttf-ubuntu-font-family_0.80-0ubuntu5_all.deb</pre>
{{Warningbox|Se volete proprio avere lo stesso font hinting di Ubuntu, potete fare una pazzia e aggiornare questi pacchetti prendendo le versioni dei repository Ubuntu: '''libfreetype6 libfontconfig fontconfig fontconfig-config''' ma è altamente sconsigliabile e la responsabilità per eventuali problemi sarà solo vostra. Se proprio volete qualcosa di "particolare", leggete il prossimo paragrafo.}}
=== Infinality ===
Infinality è un insieme di patch e configurazioni che puntano al massimo rendimento dei caratteri. Come scrive l'autore [http://www.infinality.net/blog/infinality-freetype-patches/ sul suo sito], l'obiettivo primario è fornire la migliore resa dei font dei vari sistemi operativi, mentre quello secondario è di permettere all'utente di personalizzare al meglio le impostazioni.<br>
Allo stato attuale, Infinality consiste in un set di patch da applicare al motore di rendering dei font <code>freetype</code> per cambiarne/migliorarne alcuni comportamenti, e di un sistema di configurazione che si integra con <code>fontconfig</code> e ne diventa un'alternativa di fatto. Tra le varie configurazioni è degno di nota un "database" con un gran numero di font e le opzioni di rendering migliore per ognuno di essi (ad esempio sui font senza istruzioni di hinting abilita l'autohint).
Prima di installare Infinality, meglio prima fare pulizia di configurazioni ridondanti (che probabilmente Infinality riesce a scavalcare o ignorare, ma meglio andare sul sicuro).
Innanzitutto eliminare o spostare in una directory di backup i file <code>/etc/fonts/local.conf</code> e <code>~/.fonts.conf</code>, considerati obsoleti da Infinality, poi rimuovere le impostazioni di hinting (che cominciano con 1) e quelle relativa ai caratteri bitmap (che cominciano con 70) da <code>/etc/fonts/conf.d/</code> con:
<pre># rm /etc/fonts/conf.d/1*
# rm /etc/fonts/conf.d/70*</pre>
così dovremmo essere tornati alla configurazione iniziale di Debian.<br>
Adesso si può aggiornare <code>libfreetype6</code> con la versione patchata e aggiungere la configurazione di Infinality. Ho adattato le versioni presenti in [https://launchpad.net/~no1wantdthisname/+archive/ppa/+packages questo PPA di Ubuntu] per Debian, ecco i pacchetti:
* [http://www.mediafire.com/?og2zqs1cdelzajs versione ''i386''] di <code>libfreetype6</code> per Wheezy, Jessie e Sid;
* [http://www.mediafire.com/?nycgi3wi1gz2bwz versione ''amd64''] di <code>libfreetype6</code> per Wheezy, ricompilata causa dipendenza non soddisfatta (<code>libc6 < 2.14</code>), dovrebbe funzionare anche su Jessie e Sid;
* [http://www.mediafire.com/?3n3n8ial7xniu4u versione ''amd64''] di <code>libfreetype6</code> per Jessie e Sid;
* [http://www.mediafire.com/?tres1e3xwo5rv3v configurazione <code>fontconfig-infinality</code>] per tutte le architetture e versioni.
Se avete abilitato il multiarch, quasi sicuramente vi troverete installate entrambe le versioni ''i386'' e ''amd64'' di <code>libfreetype6</code> e dovrete aggiornarle entrambe. Per installare il tutto basta un: <pre># dpkg -i libfreetype6_versione.deb fontconfig-infinality_versione.deb</pre>
Dopo l'installazione è meglio riavviare il pc prima di configurare Infinality. Già dopo il riavvio potrete notare dei miglioramenti evidenti, però se volete potete cambiare configurazione con il comando <pre># /etc/fonts/infinality/infctl.sh setstyle</pre> che permette di scegliere tra vari preset che imitano fedelmente il font hinting dei più famosi sistemi operativi (ed è consigliabile anche avere installati su Debian i font usati dal sistema operativo scelto per avere un risultato ancora più fedele).<br>
È possibile aggiungere anche altri preset creati da noi e modificare altri parametri, ma per farlo rimando alla lettura del file <code>/etc/fonts/infinality/README</code> e dei file di configurazione <code>/etc/fonts/infinality/infinality.conf</code> e <code>/etc/profile.d/infinality-settings.sh</code>.


== Installazione nuovi caratteri ==
== Installazione nuovi caratteri ==
Riga 200: Riga 222:
Alcune applicazioni (generalmente quelle più vecchie) potrebbero ignorare le impostazioni di fontconfig perché non lo supportano. In questo caso possiamo intervenire su Xft (X FreeType interface library).<br/>
Alcune applicazioni (generalmente quelle più vecchie) potrebbero ignorare le impostazioni di fontconfig perché non lo supportano. In questo caso possiamo intervenire su Xft (X FreeType interface library).<br/>
Se nessuna applicazione dà problemi con i caratteri si può anche tralasciare questa procedura ma l'importante è usare gli stessi valori di <code>.fonts.conf</code> (o <code>local.conf</code>) per evitare conflitti.<br>
Se nessuna applicazione dà problemi con i caratteri si può anche tralasciare questa procedura ma l'importante è usare gli stessi valori di <code>.fonts.conf</code> (o <code>local.conf</code>) per evitare conflitti.<br>
Se usate ''Infinality'', potete saltare questa sezione in quanto ci pensa uno script a configurare Xft.<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:
317

contributi