Migliorare l'aspetto dei font
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
Come comportamento standard, Debian non ha attivo nessun tipo di font rendering. Quindi ho cercato un po' in giro ed ho trovato vari spunti per migliorare la resa dei caratteri.
Configurazione fontconfig
Se assenti, cosa improbabile, installiamo queste tre librerie:
# apt-get install fontconfig libcairo2 libxft2
Creiamo il file .fonts.conf
nella nostra home:
$ nano ~/.fonts.conf
ed inseriamo quanto segue:
<?xml version='1.0'?> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <fontconfig> <match target="font"> <!-- Font rasterization converts vector font data to bitmap data so that it can be displayed. The result can appear jagged due to aliasing. Anti-aliasing increases the apparent resolution of font edges. --> <edit mode="assign" name="antialias"> <bool>true</bool> </edit> <!-- Using normal hinting, TrueType hinting instructions in the font are interpreted by freetype's Byte-Code Interpreter. This works best for fonts with good hinting instructions. --> <edit mode="assign" name="hinting"> <bool>true</bool> </edit> <!-- Auto-discovery for hinting. This looks worse than normal hinting for fonts with good instructions, but better for those with poor or no instructions. The autohinter and subpixel rendering are not designed to work together and should not be used in combination. --> <edit mode="assign" name="autohint"> <bool>false</bool> </edit> <!-- 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> </edit> <!-- Subpixel rendering effectively triples the horizontal (or vertical) resolution for fonts by making use of subpixels. The autohinter and subpixel rendering are not designed to work together and should not be used in combination. Most monitors manufactured today use the Red, Green, Blue (RGB) specification. Fontconfig will need to know your monitor type to be able to display your fonts correctly. Values are "rgb" (most common), "bgr", "vrgb" (vertical), "vbgr", "unknown" or "none". Ubuntu uses "none". --> <edit mode="assign" name="rgba"> <const>rgb</const> </edit> <!-- When using subpixel rendering, you should enable the LCD filter, which is designed to reduce colour fringing. The "lcddefault" filter will work for most users. Other filters are available that can be used in special situations: "lcdlight"; a lighter filter ideal for fonts that look too bold or fuzzy; "lcdlegacy", the original Cairo filter; "lcdnone" to disable it entirely. --> <edit mode="assign" name="lcdfilter"> <const>lcddefault</const> </edit> </match> <!-- Fontconfig should be able to detect DPI parameters as discovered by the Xorg server. You can check the automatically discovered DPI with the command xdpyinfo --> <!-- remove this line to activate customized DPI <match target="pattern"> <edit name="dpi" mode="assign"> <double>102</double> </edit> </match> remove this line to activate customized DPI --> <!-- Reject bitmap fonts, it's advisable to not touch this --> <selectfont><rejectfont><pattern><patelt name="scalable"> <bool>false</bool> </patelt></pattern></rejectfont></selectfont> <!-- Use font substitution to make your preferred font become the default font for a typeface (serif, sans-serif, monospace). Write the name of the font inside the <prefer><family> tags --> <!-- remove this line to activate font substitution <alias> <family>serif</family> <prefer><family>Droid Serif</family></prefer> </alias> <alias> <family>sans-serif</family> <prefer><family>Droid Sans</family></prefer> </alias> <alias> <family>monospace</family> <prefer><family>Droid Sans Mono</family></prefer> </alias> remove this line to activate font substitution --> <!-- <alias> <family>fantasy</family> <prefer><family>URW Gothic L</family></prefer> </alias> <alias> <family>cursive</family> <prefer><family>URW Chancery L</family></prefer> </alias> --> </fontconfig>
Salviamo il file e diamo:
# dpkg-reconfigure fontconfig
dopo rigeneriamo la cache dei font con:
# fc-cache -fv $ fc-cache -fv
e infine riavviamo X facendo logout e login. Se i font così elaborati non soddisfano ancora i vostri occhi potrebbe essere colpa del monitor o semplicemente una questione di gusto personale. In ogni caso basta modificare i parametri nel file aiutandosi con le descrizioni fornite nelle parti commentate per ottenere un risultato più adatto al vostro hardware o gusto.
Nota Dalla versione 2.10 di fontconfig (non ancora disponibile in Debian Jessie al momento della scrittura di questa pagina) il file ~/.fonts.conf cambierà percorso, diventando ~/.config/fontconfig/fonts.conf (anche se probabilmente sarà mantenuta la compatibilità con il vecchio percorso, salvo cambiamenti da parte della Debian Fonts Task Force).
|
Font rendering di Ubuntu
La configurazione del font rendering predefinito di Ubuntu è uguale a quella sopra, eccetto per il valore di "rgba" che è "none".
Se trovate differenze di resa su schermo è possibile che sia per via di apposite patch che Ubuntu applica sui suoi pacchetti e che Debian non usa.
Può anche essere merito del font di default di Ubuntu, che è possibile ottenere dal sito ufficiale come archivio .zip oppure dai repository ufficiali di Ubuntu come pacchetto .deb.
Per usare i caratteri dall'archivio .zip estrarlo in /usr/local/share/fonts
per mettere i font a disposizione di tutti gli utenti del sistema (se siete gelosi dei vostri font allora basta estrarli in ~/.fonts/
):
# unzip ubuntu-font-family-0.80.zip -d /usr/local/share/fonts/
È preferibile, ed è anche più semplice, installare il pacchetto .deb, in quanto formato nativo di Debian ed è possibile gestirlo meglio. Basta un:
# dpkg -i ttf-ubuntu-font-family_0.80-0ubuntu5_all.deb
In ogni caso, dopo l'installazione di nuovi font è consigliabile rigenerare la cache con:
# fc-cache -fv $ fc-cache -fv
A chi piace il font predefinito dei sistemi operativi OSX può installare questo pacchetto seguendo il metodo appena descritto. La resa del carattere potrebbe essere simile ma non uguale a quella dei sistemi OSX e in tal caso si può giocare sui parametri di .fonts.conf
(o local.conf
) per ottenere un risultato migliore (anche se gli altri caratteri potrebbero risentirne).
Configurazione Xft
Alcune applicazioni ignorano le impostazioni sopra perché non supportano fontconfig. In questo caso possiamo intervenire su Xft (X FreeType interface library).
Se non si usa nessuna di queste applicazioni è consigliabile tralasciare questa procedura e lasciare soltanto la configurazione di fontconfig. L'importante è usare gli stessi valori impostati su fontconfig tramite .fonts.conf
(o local.conf
) per evitare problemi.
Creiamo o modifichiamo il file .Xresources
nella nostra home con:
$ nano ~/.Xresources
ed aggiungiamo quanto segue:
! You can define basic font resources without the need of a fonts.conf file ! or a desktop environment. Note however, the use of a desktop environment ! and/or fonts.conf can override these settings. ! Your best option is to use one or the other, but not both. Xft.antialias: 1 Xft.hinting: 1 Xft.autohint: 0 Xft.hintstyle: hintslight Xft.rgba: rgb Xft.lcdfilter: lcddefault ! Fontconfig will default to the Xft.dpi variable if it is set. ! Xft.dpi is usually set by desktop environments (usually to Xorg's DPI ! setting). Use "xrdb -query | grep dpi" to query for the value. ! Xft.dpi: 102
Salviamo il file e riavviamo X facendo logout e login.
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
|
DPI
Se non siamo ancora soddisfatti del risultato oppure il nostro monitor è grande e i caratteri sono piccoli, si può provare a cambiare il valore DPI dei caratteri usando quello del monitor (che sarebbe più corretto chiamare PPI).
Generalmente fontconfig ricava tale valore automaticamente da Xorg oppure usa lo standard non ufficiale dei 96 DPI.
Per trovare il valore del nostro monitor, bisogna trovare prima la diagonale in pixel (applicando il teorema di Pitagora alla risoluzione nativa dello schermo) e poi dividerla con la diagonale effettiva del monitor in pollici (generalmente si trova nelle specifiche del monitor).
Es.: il mio monitor è un AOC 2236Vw da 22" con risoluzione nativa di 1920x1080. Guardando le specifiche però trovo che la diagonale visibile non è 22" ma 21,5". Allora calcolo:
sqrt(1920^2 + 1080^2) / 21.5 = 102.46 PPI
Per fare più in fretta ci si può aiutare usando questo calcolatore.
Una volta trovato il valore DPI (o PPI) del monitor basta sostituirlo nelle righe commentate dei file .fonts.conf
e .Xresources
, togliendo ovviamente i commenti per abilitare.
Fate logout e login per vedere il risultato e, se questo non è soddisfacente, commentate nuovamente le righe per tornare ai valori standard.
Alcuni sostengono che il valore DPI da inserire nelle configurazioni deve essere arrotondato, senza parte decimale. Però il fatto che sia usato un valore double per memorizzare il DPI mi fa pensare che sia fatto apposta per usare anche la parte decimale.
È consigliata la lettura di questo vecchio messaggio per capire un po' meglio il ruolo dei DPI nel sistema operativo.
KDE
Se, una volta avviato KDE, la dimensione dei caratteri è piccola, ciò è dovuto al fatto che KDM sta utilizzando di default i 75dpi.
Bisogna quindi modificare il file /etc/kde4/kdm/kdmrc
(o /usr/share/config/kdm/kdmrc
). Cercare la riga:
ServerArgsLocal=-nolisten tcp
e aggiungere il valore DPI desiderato:
ServerArgsLocal=-nolisten tcp -dpi 96
Riferimenti
Per approfondimenti:
http://wiki.debian.org/Fonts
https://wiki.archlinux.org/index.php/Font_Configuration
http://www.freedesktop.org/software/fontconfig/fontconfig-user.html
http://www.keithp.com/~keithp/render/Xft.tutorial
https://en.wikipedia.org/wiki/Pixels_per_inch
http://weirdfellow.wordpress.com/2010/07/25/valid-autohinting-hinting-style-options/
http://duganchen.ca/writings/slackware/fonts/
Guida scritta da: Gash | Debianized 20% |
Estesa da:
| |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |