Ero abbastanza insoddisfatto della visualizzazione dei font TrueType (.ttf) nelle varie distribuzioni Linux (SuSe, Fedora, Mandrake...) per il fatto che non fosse qualitativamente all'altezza di Windows nonostante le librerie di rendering FreeType2 promettano grandi cose ed i font fossero i medesimi (presi da una installazione Windows dalla directory C:\Windows\Fonts).
Ed anche la mia recente installazione di SuSe Professional 9.3 era afflitta dal medesimo problema.
* FreeType1 is in freetype-1.0
* FreeType2 is in freetype-1.1 / 1.4
* FreeType6 is in freetype-2.0.1 and higher
In realtà a tutt'oggi quasi sempre con il termine FreeType2 si intendono le FreeType rel. >=2.0.1 , ossia le FreeType6.
In questo documento anch'io (come SuSe) userò il termine FreeType2 per indicare le librerie con versione >= 2.0.1 (FreeType6)
I problemi che rilevavo erano:
- disabilitando l'antialias (KDE menù Control_Center/Appearance_&_Themes/Fonts/Use_Antialiasing) i font TTF (esempio Arial, Verdana, Tahoma, ...) erano visualizzati in modo pessimo, con dei pixel spuri nei caratteri (esempio http://www.antikoerperchen.de/files/freetype/alias-autohint.png ).
- abilitando l'antialias la situazione era buona con i font di grandi dimensioni (>15pt) ma i caratteri a dimensione più piccola sembravano sfuocati. Questo è causato dal fatto che l'antialias pone dei pixel grigi adiacenti alle linee/punti che formano il carattere per ammorbidirne la visione. Nei caratteri piccoli ciò è controproducente in quanto produce un effetto di marcato sfuocamento. Sui caratteri di grandi dimensioni invece l'antialias ne migliora visione.
- disabilitando in modo selettivo l'antialias (KDE menù Control_Center/Appearance_&_Themes/Fonts/Configure/Exclude_Range) per i caratteri sino a 15 pt la situazione era un mix delle precedenti: i caratteri grandi si vedevano discretamente bene grazie alla presenza dell'antialias ma nei caratteri piccoli (<15pt) erano presenti i pixel spuri e si vedevano male.
- disponendo io di un buon monitor LCD l'attivazione del sub-pixel hinting nelle sue varie modalità (RGB,BGR,...) invece di migliorare la situazione la peggiorava. Il sub-pixel hinting è una metodica che sostituisce il colore grigio usato dall'antialias con il pixel colorato più vicino possibile nell'ambio della matrice TFT. Dovrebbe migliorare l'antialias nei monitor LCD ma onestamente in tutte le mie prove con vari monitor non ho mai visto grandi risultati.
- anche giocando con l'hinting style (none, slight, medium, full) non ottenevo risultati soddisfacenti.
Ero convinto che ci fosse una soluzione e dopo aver passato un pò di tempo a cercare con Google ho scoperto l'arcano (articoli di riferimento http://lists.suse.com/archive/suse-kde/2005-Jun/0122.html e http://www.antikoerperchen.de/deutsch/howto-30.php ).
Questo provoca l'effetto dei pixel spuri sui caratteri TrueType di piccola dimensione senza antialias.
Quindi la soluzione finale si riduce a sostituire le librerie FreeType2 presenti nel vostro sistema con le medesime ricompilate abilitando tale algoritmo.
Ora ho una visione dei font TTF veramente perfetta (esattamente come in Windows) e tutti i problemi sono risolti (esempio http://www.antikoerperchen.de/files/freetype/alias.png ).
Innanzi tutto vediamo se avete le librerie FreeType2 installate ed in quale versione
Name : freetype2 Relocations: (not relocatable)
Version : 2.1.9 Vendor: (none)
Release : 4
Ok, sono installate le librerie FreeType2 ver. 2.1.9-4
Cercando con YAST ottengo comunque la stessa informazione (cercate la parola 'freetype').
Andiamo ora a recuperare i sorgenti .src.rpm delle librerie FreeType2 da uno dei tanti mirror a disposizione, ad esempio http://suse.inode.at/pub/i386/9.3/suse/src/ oppure http://suse.inode.at/pub/i386/update/9.3/rpm/src/ se avete una versione più recente che è stata updatata.
Nel caso preso qui in esame (ver. 2.1.9-4) prelevate il file freetype2-2.1.9-4.src.rpm (da http://suse.inode.at/pub/i386/9.3/suse/src/ ).
Installate i sorgenti
Editate il file /usr/src/packages/SPECS/freetype2.spec
Circa alla riga 68 troverete
# if you want to turn on the bytecode interpreter.
# But first read http://www.freetype.org/freetype2/2.1.3-explained.html
# I.3. Do I still need to enable the TrueType bytecode interpreter ?
#
# Short answer: No for most people !!
#
#%%patch100 -p 1 -b .bytecode
Togliete il "#%" posto all'inizio della riga "#%%patch100 -p 1 -b .bytecode" ottenendo così
# if you want to turn on the bytecode interpreter.
# But first read http://www.freetype.org/freetype2/2.1.3-explained.html
# I.3. Do I still need to enable the TrueType bytecode interpreter ?
#
# Short answer: No for most people !!
#
%patch100 -p 1 -b .bytecode
e salvate il file.
Premessa: assicuratevi di avere installato le librerie zlib-devel (usate YAST).
Ricompilate le librerie FreeType2 con
E' quasi certo che la compilazione non andrà in porto in quanto mancheranno una serie di librerie/pacchetti aggiuntivi. Per correttezza formale dovreste installare tali librerie/pacchetti (usate YAST) e rilanciare la compilazione.
Se siete certi di quello che fate potete usare l'alternativa di ignorare le dipendenze compilando con
Se tutto è andato bene in /usr/src/packages/RPMS/i586 avrete le vostre nuove librerie FreeType2 con il ByteCode Interpreter abilitato !
Ora non rimane altro che installare le librerie (sovrascrivendo le precedenti) con
# rpm -Uvh /usr/src/packages/RPMS/i586/freetype2-devel-2.1.9-4.i586.rpm --force
Andate nel Control Center di KDE nel menù Appearance_&_Themes/Fonts/
- cambiate tutti i font con uno TrueType. Io uso 'Tahoma'. Provate anche 'Verdana' (per quello 'Fixed Width' uso 'Andale Mono').
- abilitate l'antialias
- andate nella sezione Configure ed escludete dall'antialias i font compresi tra 0pt e 15pt
- non abilitate il sub-pixel hinting
- ponete hinting style a 'medium' (o comunque non ponetelo MAI a 'NONE')
Fate un logout, riavviate X e .... buona visione.
E' abbastanza semplice ricompilare le librerie partendo dai sorgenti originali presenti su http://www.freetype.org
Prelevate i sorgenti ver. 2.1.9 (o superiori)
Decomprimeteli ed editate il file freetype-2.1.9/include/freetype/config/ftoption.h
Circa alla riga 439 togliete il commento alla riga "#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER"
Assicuratevi di avere installate le librerie zlib-devel
Loggati come root, ricompilate ed installate con gli usuali comandi
# make
# make install
Commenti
Inviato da Stefano il Lun, 15/08/2005 - 17:02.
Complimenti...
Guida davvero interessante ed uso dei tag dei formattazione davvero impeccabile.
Voto: 9
Stefano Mainardi - Founder of ILDN & CEO of Twinbit
Inviato da ZeroPerCento il Gio, 26/04/2007 - 14:21.
Re: Complimenti...
Ciao a tutti vorrei condividere la mia personale esperienza riguardo la visione dei caratteri True Type su openSUSE 10.2
Forza DPI per i caratteri a 96dpi attivato
Premesso che ho una ATI Radeon X1300 e con i driver ufficiali ATI funziona perfettamente e ho un monitor settato alla risoluzione di 1280 x 1024 ho proceduto semplicemente così:
1) Ho installato i font True Type di Microsoft
2) In Aspetto e Temi -> Tipi di carattere ho i seguenti settaggi:
a) Utilizza Antialiasing per i caratteri attivato su Medio e escludi Intervallo 0,0pixel 11 pixel
c) Tutti i fonts settati ad Arial a 10 punti
In questo modo ho una visione perfetta dei fonts senza bisogno di attivare il Bytecode Interpreter
Spero di essere stato utile. Ciao
W Linux!!!!!!!!!!!!
Inviato da paulatz il Mar, 16/08/2005 - 14:46.
La migliore
La migliore delle guide disponibili al momento sul sito.
Aggiungo che se si ricompilano le librerie con la stessa versione di quelle installate sul sistema si deve usare l'opzione --force per installarle.
Grazie mille.
Inviato da Krystyan il Mar, 16/08/2005 - 20:50.
Re: La migliore
Guida davvero perfetta... senti puoi postarmi il pacchetto che hai ricompilato? così non appesantisco il sistema con i devel... grazie!
Suse Linux 10.0 su P4 3.2 Ock 4.3Ghz - Motherboard asus P4C800 Dlx - Ram 512x2 Vdata utt @250 2.2.2.5 - Video Nvidia6800ultra
Inviato da Stefano il Gio, 18/08/2005 - 06:30.
Re: La migliore
Ho aggiornata la guida.
Abbiamo hostato anche le librerie per evitare di farvele ricompilare a mano...
Ma quanto vi vogliamo bene??? :-P
Stefano Mainardi - Founder of ILDN & CEO of Twinbit
Inviato da ambroxa il Gio, 18/08/2005 - 18:47.
Leggete anche questo post !
Ciao da Ambroxa.
A posteriori ho trovato alcune ulteriori possibilità di configurare in modo fine la gestione dei font non-truetype lavorando direttamente in XML con i file .fonts.conf e soci.
Leggete questo post http://www.suseitalia.org/modules/newbb/viewtopic.php?topic_id=2890 se siete interessati all'argomento.
Ciao e grazie per l'attenzione.
Inviato da mazda3 il Gio, 18/08/2005 - 19:16.
Ottima.........
al primo tentativo i risultati non erano stati quelli sperati, probabilmente avrò sbagliato qualcosa, ora con le librerie già compilate tutto OK.
Complimenti, da mettere in rilievo "perenne"
Inviato da danylele74 il Lun, 22/08/2005 - 13:25.
piccola informazione
Ciao a tutti.
Volevo sapere se una volta installate le librerie freetype2-2.1.9-4.i586.rpm e freetype2-devel-2.1.9-4.i586.rpm (vedi punto 5 della giuda) e possibile ritornare alle librerie originarie.
Inviato da ambroxa il Lun, 22/08/2005 - 20:23.
Certo !
Certo, riprendi le librerie originali e con lo stesso meccanismo "rpm -Uvh .... --force" le reinstalli.
Quindi tutto tornerà come prima.
I comandi usati al punto "5. Installazione" fanno sì che le librerie sia SOVRASCRITTE.
Quindi tu hai installate le lib originali e le sovrascrivi installando quelle modificate. Se vuoi tornare indietro basta che prendi le librerie originali, le reinstalli e sovrascriveranno le precedenti modificate.
Semplicissimo.
Inviato da danylele74 il Lun, 22/08/2005 - 20:32.
Re: Certo !
Scusa ma siccome non sono un grande esperto del mondo linux mi potresti dire cortesemente quali sono le librerie e dove reperirle?
Grazie 1000