TrueType Fonts in Debian mini-HOWTO <author>Bear Giles, <tt><htmlurl url="mailto:bgiles@coyotesong.com" name="bgiles@coyotesong.com"></tt> <date>v0.3, 10 gennaio 2000 <abstract> Questo documento descrive come configurare un sistema Debian per usare i font TrueType per la visualizzazione e la stampa. La versione più recente di questo documento può essere ottenuta in formato HTML a <tt><htmlurl url="http://www.dimensional.com/~bgiles/debian-tt.html" name="http://www.dimensional.com/~bgiles/debian-tt.html"></tt>. Traduzione a cura di Giovanni Bortolozzo, <htmlurl url="mailto:borto@pluto.linux.it" name="borto (at) pluto.linux.it">. </abstract> <toc> <sect> Introduzione <p> Una installazione di Linux tipicamente contiene parecchi insiemi indipendenti di font e metriche di font. Un'occhiata veloce al mio sistema rivela font e metriche di font sparse nelle seguenti directory: <itemize> <item><tt>XFree86</tt> conserva i suoi font in <tt>/usr/X11R6/lib/X11/fonts/</tt>; <item><tt>Ghostscript</tt> li conserva in <tt>/usr/lib/ghostscript/fonts/</tt>; <item<tt>TeX</tt> li tiene in <tt>/usr/lib/texmf/fonts/</tt>; <item>Il pacchetto <tt>kbd</tt> di Debian mette i suoi font in <tt>/usr/share/consolefonts/</tt>; <item><tt>Groff</tt> conserva le sue metriche in <tt>/usr/share/font/devps/</tt>; <item><tt>Enscript</tt> (convertitore da ASCII a PostScript) tiene le sue metriche in <tt>/usr/share/enscript/*.afm</tt>. </itemize> Neanche a dirlo, questi font non sono coordinati. I font TrueType sono stati progettati per eliminare questo problema permettendo che gli stessi file di font siano usati sia per la visualizzazione che per la stampa. Questo Howto prova a mostrare come usare questi font TrueType per la visualizzazione, la stampa e la preparazione di documenti su sistemi Debian GNU/Linux. <sect1>Liberatoria <p> Le informazioni in questo documento sono, al meglio delle mie conoscenze, corrette. Comunque questo HOWTO è ancora in versione preliminare e quel che funziona per me potrebbe non funzionare per qualcun'altro. Anche se funziona, non sono uno scrittore tecnico professionista e sono noto per sorvolare sui dettagli critici. Quindi divertitevi, ma giocando sicuri e facendo dei backup. <sect1> Crediti <p> Creato da Bear Giles, <tt><htmlurl url="mailto:bgiles@coyotesong.com" name="<bgiles@coyotesong.com>"></tt> I miei ringraziamenti vanno a: <itemize> <item> Brion Vibber, <tt><htmlurl url="mailto:brion@pobox.com" name="<brion@pobox.com>"></tt>, che ha scritto il <tt><htmlurl url="http://pobox.com/~brion/linux/TrueType-HOWTO.html" name="(preliminare) TrueType HOW-TO (http://pobox.com/~brion/linux/TrueType-HOWTO.html)"></tt> <item> Doug Holland, <tt><htmlurl url="mailto:meldroc@frii.com" name="<meldroc@frii.com>"></tt>, che ha scritto l'<tt><htmlurl url="http://www.frii.com/~meldroc/Font-Deuglification.html" name="XFree86 Font Deuglification HOW-TO (http://www.frii.com/~meldroc/Font-Deuglification.html)"></tt> </itemize> <sect1> Link addizionali <p> Anche se questi link non discutono direttamente problematiche relative ai sistemi o ai pacchetti Debian, possono comunque risultare interessanti per i lettori di questo mini-HOWTO. <itemize> <item> Using TrueType Fonts with RedHat Linux <tt><htmlurl url="http://www.kegel.com/linux/tt.html" name="(http://www.kegel.com/linux/tt.html)"></tt> <item> X Font Tools <tt><htmlurl url="http://www.hex.net/~cbbrowne/xfonts.html" name="(http://www.hex.net/~cbbrowne/xfonts.html)"></tt> <item> Getting fonts to look pretty under GNU/Linux for applications like StarOffice <tt><htmlurl url="http://king.ccrc.wustl.edu/~zubin/fonts.html" name="(http://king.ccrc.wustl.edu/~zubin/fonts.html)"></tt> <item>How to use True Type © fonts for StarOffice Under Linux <tt><htmlurl url="http://www.mindspring.net/~john_mcl/adding_fonts.html" name="(http://www.mindspring.net/~john_mcl/adding_fonts.html)"></tt> </itemize> <sect1> Storia delle revisioni <p> <itemize> <item>0.1. 16 set. 1999: prima versione. <item>0.2. 16 set. 1999: aggiunta la sezione «Link addizionali». <item>0.3. 10 gen. 2000: commenti dei lettori! Aggiunti chiarimenti su diversi dettagli. </itemize> <sect1> Commenti <p> Commenti, correzioni, aggiunte e critiche sono sempre benvenuti. Mi si può raggiungere a <htmlurl url="mailto:bgiles@coyotesong.com" name="bgiles@coyotesong.com">. <sect1> Progetti correlati <p> <itemize> <item> FreeType <url url="http://www.freetype.org/" name="http://www.freetype.org/"> <p> Il motore FreeType è un motore libero e portabile per il rendering TrueType. Il codice è una buona implementazione totalmente indipendente da quelle di Apple o Microsoft (comunque recentemente è sorto un problema riguardo un possibile <em>brevetto</em> della Apple). FreeType è una libreria non un server per i font o una libreria completa per il rendering del testo. </itemize> <sect1> Distribuzione <p> Questa è la prima stesura e mi aspetto di cambiarla significativamente dopo la sua pubblicazione. Invito a fare riferimento all'ultima versione a <tt><htmlurl url="http://www.dimensional.com/~bgiles/debian-tt.html" name="http://www.dimensional.com/~bgiles/debian-tt.html"></tt>. La home permanente per questo documento alla fine sarà a <tt><htmlurl url="http://www.coyotesong.com/" name="http://www.coyotesong.com/"></tt> <sect> Schermi (quel che non vi hanno mai detto) <p> Prima di tuffarci nell'impostazione dei font TrueType sotto X, rivediamo la differenza tra punti e pixel... e perché ce ne preoccupiamo tanto. Tutti i font visualizzati sono misurati in <em>punti</em>. Un pollice è esattamente 72 punti. Perché 72? In parte a causa delle limitazioni delle macchine tipografiche meccaniche e in parte perché è sempre divisibile per 2, 3, 4, 6, 8, 9, 12, 18 e 24. Non è male notare che l'unità predefinita in PostScript è un punto. (Nota storica: Ho mentito. Prima dell'introduzione di PostScript un pollice era esattamente 72,27 punti, ma tale dimensione del punto era stata impostata nell'epoca delle stampatrici meccaniche con stampi in metallo. Con gli schermi dei computer e le stampanti laser è semplice ottenere font di qualsiasi dimensione e quindi 72 ha <em>molto</em> più senso per le ragioni suddette.) Come regola generale, la maggior parte del testo dovrebbe essere tra i 7 e i 12 punti. Qualsiasi cosa più piccola di 6 punti è detto letteralmente «fine print». Le stampanti ad aghi usano caratteri a 9 o 12 punti (rispettivamente per 8 o 6 righe/pollice). Viceversa, tutti i driver video devono misurare i font usando il <em>pixel</em> come unità fondamentale. Per il proprio driver video, il proprio schermo è 1024x800 pixel, non 10 per 8 pollici (o 720 per 576 punti). Per passare da punti (usati per specificare la dimensione dei font) a pixel (usati per i riferimenti nella memoria video) si deve conoscere la risoluzione del proprio schermo. Questa è solitamente misurata in «punti per pollice» (dpi) (Ndt: «point» sono i punti usati per misurare i font, mentre questi punti sono «dot»), sebbene siano in realtà pixel per pollice. Questa è l'unità di misura utilizzata in due insiemi di font bitmap inclusi con XFree86: l'insieme <tt>fonts-75</tt> è pensato è per l'uso con schermi di fascia bassa con una risoluzione di circa 75 dpi, mentre <tt>fonts-100</tt> è pensato per schermi di fasci media con una risoluzione di circa 100 dpi. Non ci sono font bitmap per l'uso con schermi di fascia elevata con risoluzione oltre i 120 dpi. Come esempio concreto, uno schermo di 13" di diagonale (11.1" utilizzabili) che visualizza un'immagine di 640x480 pixel ha una risoluzione di 72.0 dpi. Questa Non È Una Coincidenza. Infatti, la maggior parte delle pagine web (e applicazioni Microsoft) sono progettate attorno ad uno schermo canonico con una risoluzione di esattamente 72 dpi. La configurazione predefinita di XFree86 assume uno schermo con una risoluzione di 75 dpi. Tornando al mondo reale, nessuno usa più i video a 640x480, così come nessuno usa più schermi con 13" di diagonale. Poiché le schede video sono migliorate più velocemente dei monitor non è strano avere una configurazione come la mia: schermo con 19" di diagonale (più di 17" usabili), 1600x1200 pixel, risoluzione di 117 dpi. Se utilizzo una configurazione standard di X, tutti i miei font sono approssimativamente 2/3 delle dimensione voluta. Non è un'esagerazione dire che tutti i font sembrano ridotti di «un'ordine di grandezza»: i font più grandi (12 punti) sembrano quelli medi (9 punti), mentre i font medi (9 punti) sembrano quelli piccoli (6 punti). Si possono fare tre cose per correggere questo problema. Per prima cosa si dovrebbe dire al server X la risoluzione reale del proprio schermo: <tscreen> <em>/etc/X11/xdm/Xservers</em> <code> #:0 local /usr/X11R6/bin/X -bpp 16 :0 local /usr/X11R6/bin/X -bpp 16 -dpi 120 </code></tscreen> Poi, ci si deve assicurare di usare come font bitmap preferenziali quelli a 100 dpi piuttosto di quelli a 75 dpi: <tscreen> <em>/etc/X11/XF86Config</em> <code> Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" EndSection </code></tscreen> Per finire, se il server <tt>X</tt> non trova un font bitmap che corrisponde esattamente a quanto richiede, proverà a «scalare» un font simile replicando i pixel («pixel replication»). Raramente i risultati sono piacevoli da usare. Assumendo di possedere un sistema ragionevolmente potente, possiamo dire al server di usare come prima scelta i font scalati, poi i bitmap per le corrispondenze esatte e come ultima risorsa i bitmap scalati. <tscreen> <em>/etc/X11/XF86Config</em> <code> Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" EndSection </code></tscreen> <sect1>Uno sguardo al prossimo XFree86 4.0 <p> Sono appena venuto a sapare che XFree86 supporterà le comunicazioni DDC, se sia il monitor che la scheda video le supportano. Ciò permetterà al server X di interrogare il monitor sulle sue reali dimensioni fisiche, permettendogli così di calcolare automaticamente le impostazioni DPI corrette. Si dovranno ancora fare le modifiche appropriate al proprio font path poiché al server non dovrebbe essere permesso ignorare le impostazioni esplicite dell'utente in base a ciò che ha scoperto. <sect1>Panoramica: Preparazione prima di modificare i file di configurazione di <tt>X</tt> <p> Ogni volta che si fanno delle modifiche ai file di configurazione di X11, è un'idea eccellente disabilitare <tt>XDM</tt> mettendo <tt>exit 0</tt> da qualche parte all'inizio del file. Se non lo si fa e <tt>X</tt> per qualche ragione non riesce a partire, <tt>XDM</tt> metterà il sistema in un brutto circolo vizioso dal quale è difficile uscire. Uomo Avvisato, Mezzo Salvato. <sect> Visualizzazione (<tt>X</tt> e i font server) <p> A rigore, non è assolutamente necessario impostare dei font server per usare i font TrueType con i server <tt>X</tt>. Se si vogliono usare file statici invece di un font server, si vedano le istruzioni per impostare i font TrueType per <tt>ghostscript</tt>. <sect1>Impostare il font server <tt>xfs</tt> <p> A questo punto assumo si abbia un file <tt>/etc/X11/XF86Config</tt> funzionante che carica le directory specificate esplicitamente nel <tt>FontPath</tt>. Lo si convertirà per usare il font server <tt>xfs</tt>. <itemize> <item>Installare <tt>XFS</tt> <p> Se non lo si è già fatto, si installi <tt>main/binary-*/x11/xfs_*.deb</tt>. <item>Configurare <tt>XFS</tt> <p> Si editi <tt>/etc/X11/xfs/config</tt> e si cambi <tt>catalogue</tt> per contenere la propria <tt>FontList</tt>. Può essere utile anche cambiare il valore di <tt>default-resolutions</tt> (risoluzioni predefinite). <tscreen> <em>/etc/X11/xfs/config</em> <code> # percorsi nei quali cercare i font catalogue = /usr/X11R6/lib/X11/fonts/100dpi/:unscaled, /usr/X11R6/lib/X11/fonts/75dpi/:unscaled, /usr/X11R6/lib/X11/fonts/misc/, /usr/X11R6/lib/X11/fonts/Speedo/, /usr/X11R6/lib/X11/fonts/Type1/, /usr/X11R6/lib/X11/fonts/100dpi/, /usr/X11R6/lib/X11/fonts/75dpi/ # x1,y1,x2,y2,... default-resolutions = 100,100,75,75 </code></tscreen> <item>Riavviare <tt>XFS</tt> <p> Riavviare <tt>XFS</tt> nel modo solito di Debian: <tscreen> <em>shell di root</em> <code> # /etc/init.d/xfs restart </code></tscreen> <item>Verificare che <tt>XFS</tt> stia funzionando <p> Prima di modificare il file <tt>XF86Config</tt>, si dovrebbe verificare che il server <tt>xfs</tt> stia funzionando elencando i font tramite il font server: <tscreen> <em>shell utente</em> <code> $ fslsfonts -server unix/:7100 -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1 .... </code></tscreen> <item>Modificare <tt>/etc/X11/XF86Config</tt> per usare <tt>xfs</tt> <p> Ora si è pronti per dire al server X di usare il font server <tt>xfs</tt>. Si mantenga un font path statico come posizione di ripiego in caso di problemi con <tt>xfs</tt> (conviene mantenere «misc» poiché contiene <tt>fixed</tt>, il font predefinito). <tscreen> <em>/etc/X11/XF86Config</em> <code> Section "Files" FontPath "unix/:7100" FontPath "/usr/X11R6/lib/X11/fonts/misc/" EndSection </code></tscreen> <item>Riavviare <tt>X</tt> <p> Riavviare <tt>X</tt> con <tt>startx</tt>, a meno che non si viva pericolosamente. Se così è, mi si nomini beneficiario della propria polizza vita inusualmente grande e si riavvii <tt>xdm</tt>. <item>Verificare che i font di <tt>XFS</tt> siano visibili <p> Una volta stabilita una sessione X, si può verificare che il proprio server veda tutti i font di <tt>xfs</tt> elencandoli attraverso il server <tt>X</tt>. <tscreen> <em>shell utente</em> <code> $ xlsfonts -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1 .... </code></tscreen> </itemize> <sect1>Impostare il font server <tt>xfstt</tt> ed installare i font TrueType <p> A questo punto assumo che si abbia un font server <tt>xfs</tt> funzionante e che si voglia aggiungere il supporto TrueType attraverso <tt>xfstt</tt>. <itemize> <item>Installare <tt>XFSTT</tt> <p> Se non lo si è già fatto, si installi <tt>main/binary-*/x11/xfstt_*.deb</tt>. <item>Installare i font TrueType <p> Si copino i propri font TrueType nella directory <tt>/usr/share/fonts/truetype</tt>. Questi file solitamente hanno l'estensione <tt>.ttf</tt> e dovrebbero avere i permessi <tt>0444</tt>. <item>Riavviare il font server <tt>XFSTT</tt> <p> Si riavvii il server <tt>xfstt</tt> con l'opzione <tt>force-reload</tt> <tscreen> <em>shell di root</em> <code> # /etc/init.d/xfstt force-reload </code></tscreen> <item>Verificare che <tt>XFSTT</tt> stia funzionando <p> Prima di modificare il nostro file <tt>XF86Config</tt>, si dovrebbe verificare che il server <tt>xfstt</tt> stia funzionando. <em>Importante: il server <tt>xfstt</tt> della Debian è in ascolto sulla porta 7101 non sulla 7100. Inoltre i permessi predefiniti richiedono che si esegua questa interrogazione come root. </em> <tscreen> <em>shell di un utente e di root</em> <code> $ fslsfonts -server unix/:7101 _FSTransSocketUNIXConnect: Can't connect: errno = 111 fslsfonts: unable to open server "unix/:7101" # fslsfonts -server unix/:7101 -ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1 -ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1 -ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1 </code></tscreen> <item>Modificare <tt>/etc/X11/XF86Config</tt> per usare <tt>xfstt</tt> <p> Ora si è pronti per dire all'X server di usare il font server <tt>xfstt</tt>. Vogliamo che preferibilmente usi i font TrueType piuttosto che tutti gli altri. <tscreen> <em>/etc/X11/XF86Config</em> <code> Section "Files" FontPath "unix/:7101" FontPath "unix/:7100" FontPath "/usr/X11R6/lib/X11/fonts/misc/" EndSection </code></tscreen> <item>Verificare che i font di <tt>XFSTT</tt> siano visibili <p> Una volta stabilita una sessione X, possiamo verificare che il nostro server veda tutti i font TrueType elencandoli. <tscreen><code> $ xlsfonts | grep ttf -ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1 -ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1 -ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1 .... </code></tscreen> </itemize> <sect1> Usare i font TrueType <p> A questo punto dovrebbe essere possibile usare un font TrueType in applicazioni come <tt>GIMP</tt>, <tt>Netscape</tt> o <tt>StarOffice</tt>. Poiché la maggior parte dei font TrueType non sono «equispaziati» (monospaced) probabilmente non conviene usarli con <tt>xterm</tt>. <!--Since most TrueType fonts aren't monospaced you probably don't want to use one of them with <tt>xterm</tt> - these programs use monospacing the size of the largest character cell.--> <sect1> Installare font TrueType addizionali <p> Se si sta usando il font server <tt>xfstt</tt>, è banale installare font TrueType addizionali. <itemize> <item>Copiare i nuovi font in <tt>/usr/share/fonts/truetype/</tt> <item>Riavviare <tt>xfs</tt> con <tt>/etc/init.d/xfs restart</tt> </itemize> <sect1> Internazionalizzazione <p> <tt>xfstt</tt> ha la capacità di generare diverse codifiche di font, a patto che i font TrueType contengano i glifi (glyph) necessari. Per abilitare font diversi da iso8859-1/unicode-1, si deve modificare manualmente lo script <tt>/etc/init.d/xfstt</tt>: <tscreen> <em>/etc/init.d/xfstt</em> <code> - start-stop-daemon --start --quiet --exec $XFSTT -- \ --port $portno --daemon + start-stop-daemon --start --quiet --exec $XFSTT -- \ --port $portno --encoding iso8859-1,koi8-r,windows-1252,symbol-0 \ --daemon </code></tscreen> Le codifiche riconosciute in Debian 2.1 sono: <itemize> <item>iso8859-1 (Latin 1 - Europa occidentale) <item>iso8859-2 (Latin 2 - Europa centrale e orientale) <item>iso8859-3 (Latin 3 - esperanto e maltese) <item>iso8859-4 (Latin 4 - rimpiazzata da Latin 6) <item>iso8859-5 (cirillico) <item>iso8859-6 (arabo) <item>iso8859-7 (greco) <item>iso8859-8 (ebraico) <item>iso8859-9 (Latin 5 - Latin 1 con turco invece di islandese) <item>iso8859-10 (Latin 6 - lingue nordiche, rimpiazza Latin 4) <item>koi8-r (cirillico) <item>windows-1250 (Europa centrale) <item>windows-1251 (cirillico) <item>windows-1252 <item>windows-1253 (greco) <item>windows-1254 <item>windows-1255 <item>windows-1256 <item>windows-1257 <item>symbol-0 <item>wingding-0 <item>wingreek-0 <item>cp-437 (varie pagine di codice IBM) <item>cp-737 <item>cp-850 <item>cp-851 <item>cp-852 <item>cp-853 <item>cp-855 <item>cp-857 <item>cp-860 <item>cp-861 <item>cp-862 <item>cp-863 <item>cp-864 <item>cp-865 <item>cp-866 <item>cp-869 <item>cp-895 <item>atari-st <item>unicode-2 </itemize> I primi 128 caratteri nelle codifiche <tt>iso8859-x</tt> sono sempre l'ASCII. I font <tt>windows-</tt> abbracciano e estendono gli <tt>iso8859-1</tt> con caratteri addizionali come «smart quotes» (poiché queste estensioni, come le «smart quotes» non sono definite in <tt>iso8859-1</tt>, sono solitamente rese con dei punti di domanda). Eccellenti fonti di informazioni aggiuntiva sulle codifiche dei set di caratteri si possono trovare a <itemize> <item><tt><htmlurl url="http://ppewww.ph.gla.ac.uk/%7Eflavell/iso8859/iso8859-pointers.html" name="http://ppewww.ph.gla.ac.uk/%7Eflavell/iso8859/iso8859-pointers.html"></tt>, <item><tt><htmlurl url="http://anubis.dkuug.dk/i18n/" name="http://anubis.dkuug.dk/i18n/"></tt> e <item><tt><htmlurl url="http://czyborra.com/charsets/iso8859.html" name="http://czyborra.com/charsets/iso8859.html"></tt>. </itemize> <sect1> Questioni di sicurezza <p> Qua sopra ho usato i socket Unix, ma i pacchetti Debian standard configurano anche <tt>xfs</tt> e <tt>xfstt</tt> per restare in ascolto sulle porte 7100 e 7101, rispettivamente. L'accesso a queste porte dovrebbe essere controllato dal campo <tt>trusted-clients</tt> in <tt>/etc/X11/xfs/config</tt>, ma questa opzione non è implementata in XFree86 3.3.2.3a. Ciò significa che chiunque, da ovunque, può connettersi al font server. Poiché <tt>xfs</tt> (e presumibilmente <tt>xfsts</tt>) si «clonano» per supportare più utenti esiste un banale attacco tipo denial-of-service contro questi sistemi. Probabilmente è sicuro utilizzare i font server su linee in dialup (poiché si è presenti per gestire il problema), ma gli utenti di DSL e cable modem dovrebbero usare un firewall. <sect>Stampa (<tt>ghostscript</tt>) <p> A partire dalla versione 4, <tt>ghostscript</tt> supporta i font TrueType con un'opzione in compilazione. Due pacchetti Debian forniscono <tt>ghostscript</tt>: <itemize> <item><tt>main/binary-*/text/gs_*.deb</tt> versione 5.10 conforme alle DFSG, <item><tt>non-free/binary-*/gs-aladdin_*.deb</tt> versione 5.50 non conforme alle DFSG. </itemize> Entrambe le versioni supportano i font TrueType. <sect1>Configurare <tt>Ghostscript</tt> per usare i font TrueType <p> Se si ha un server <tt>xfstt</tt> funzionante, è facile configurare <tt>ghostscript</tt> per usare i font TrueType. Si esegua semplicemente il comando seguente: <tscreen><code> # xfstt --gslist --sync >> /etc/gs.Fontmap </code></tscreen> Nella pratica ho scoperto che trae vantaggio da alcune piccole modifiche alle definizioni dei font generate da <tt>xfstt</tt>. Per prima cosa, se un nome di font non contiene alcuno spazio, cambio il nome nella notazione usuale. Se un nome di font contiene degli spazi, rimpiazzo tutti gli spazi con trattini e il nome originale viene aggiunto come alias per il nuovo nome. Per finire, antepongo <tt>TTF-</tt> (o <tt>MS-</tt>) a tutti i nomi dei font per minimizzare i problemi causati da font TrueType che hanno lo stesso nome di font preesistenti. Quindi <tscreen><code> (Arial) (/usr/share/fonts/truetype/arial.ttf) ; (Arial Bold Italic) (/usr/share/fonts/truetype/arialbi.ttf) ; </code></tscreen> diventa <tscreen><code> /MS-Arial (/usr/share/fonts/truetype/arial.ttf) ; /MS-Arial-Bold-Italic (/usr/share/fonts/truetype/arialbi.ttf) ; (Arial Bold Italic) /MS-Arial-Bold-Italic ; /Arial /MS-Arial ; </code></tscreen> Gli alias assicurano che <tt>ghostscript</tt> e <tt>xfstt</tt> possano ancora specificare lo stesso font con un nome comune. Molto più importante, con le modifiche ai nomi dei font è possibile istruire <tt>ghostscript</tt> ad usare il font TrueType invece dei font standard. La documentazione afferma che questo è possibile anche con la notazione con le parentesi, ma io non sono riuscito a farlo funzionare. Per esempio, possiamo istruire <tt>ghostscript</tt> a rimpiazzare i font Helvetica con i font Arial gratuiti della Microsoft aggiungendo le righe seguenti al file <tt>/etc/gs.Fontmap</tt>: <tscreen><code> /Helvetica /MS-Arial ; /Helvetica-Oblique /MS-Arial-Italic ; /Helvetica-Bold /MS-Arial-Bold ; /Helvetica-BoldOblique /MS-Arial-Bold-Italic ; </code></tscreen> Alias simili possono essere definiti per gli altri font standard. Questi alias possono essere molto utili sulle stampanti <tt>samba</tt> che servono client Windows. <sect1>Stampare i campioni dei font TrueType <p> Il modo migliore per verificare che <tt>ghostscript</tt> sia configurato propriamente per usare i font TrueType è di stampare le pagine «campione» dei font. Assumendo di usare <tt>ghostscript</tt> 5.50 e che sia la propria coda di stampa predefinita, si possono stampare tutti i font TrueType con il seguente comando: <tscreen><code> # xfstt --gslist --sync | printfont </code></tscreen> dove <tt>printfont</tt> è il seguente script shell <tscreen><code> #!/bin/sh set -e IFS= ')' while read fontname rest do cat << EOM | lpr %!PS (/usr/lib/ghostscript/5.50/prfont.ps) run $fontname) DoFont EOM done </code></tscreen> Se si vogliono stampare solo alcuni font, lo script seguente sarà più facile da usare: <tscreen><code> #!/bin/sh set -e while read -p "Nome di font, o ^D per uscire: " fontname do cat << EOM | lpr %!PS (/usr/lib/ghostscript/5.50/prfont.ps) run $fontname DoFont EOM done </code></tscreen> <sect> Generazione dei contenuti <sect1> Generare le metriche di font <tt>AFM</tt> <p> I file di metrica <tt>AFM</tt> non sono necessari per visualizzare file già esistenti con i font TrueType, ma sono necessari per creare nuovi file. Per generare questi file di metrica potrebbe essere usato il programma di ghostscript <tt>/usr/lib/ghostscript/5.50/printafm.ps</tt>, ma io ho trovato che il programma <tt>ttf2afm</tt> del pacchetto <tt>tetex-bin</tt> è più facile da usare. Lo script seguente genererà un file <tt>afm</tt> per tutti i font TrueType in una directory: <tscreen><code> #!/bin/sh set -e for i in *.TTF do /usr/bin/ttf2afm $i > ${i%TTF}afm done for i in *.ttf do /usr/bin/ttf2afm $i > ${i%ttf}afm done </code></tscreen> Un problema minore con <tt>ttf2afm</tt> è che alcune applicazioni si aspettano che i file <tt>afm</tt> comincino con il tag <tt>StartFontMetrics</tt>, mentre i file creati da <tt>ttf2afm</tt> iniziano con un commento. Questo «problema» è facilmente risolvibile modificando ciascun file con un editor di testo. <sect1>Generare i file <tt>font.map</tt> <p> Una volta che si hanno i file <tt>afm</tt>, si deve dire al sistema come trovarli. Questo spesso è fatto attraverso il file <tt>font.map</tt>. Non mi è stato possibile trovare documentazione sul formato di questo file, diversamente da <tt>fonts.dir</tt>, <tt>fonts.scale</tt> e <tt>fonts.alias</tt>, tutti creati dal programma <tt>mkfontdir</tt>. Comunque il formato minimo sembra abbastanza semplice: <itemize> <item>Nome del font, senza spazi <item>nome del file <tt>AFM</tt>, senza estensione </itemize> Gli alias sembrano essere implementati tramite voci multiple e l'estensione dei file deve essere in caratteri minuscoli. <sect1>Manipolazione di immagini: <tt>GIMP</tt> <p> <tt>GIMP</tt> è il programma di grafica e manipolazione di immagini della GNU. Non è servito fare modifiche ulteriori per usare i font TrueType con <tt>gimp</tt>. <sect1>Conversione da ASCII a PostScript: <tt>enscript</tt> <p> <tt>Enscript</tt> è un programma che converte ASCII in PostScript. Altri programmi che servono per scopi simili sono <tt>a2ps</tt> e <tt>mpage</tt>. <!-- <tt>Enscript</tt> allows two-up rotation, watermarks, headers, and keyword-based syntax coloring. --> Non riformatta il testo e solitamente è usato per stampare listati di codice sorgente. Per usare i font TrueType con <tt>enscript</tt>, si devono fare due cose: <itemize> <item>Aggiungere <tt>/usr/share/fonts/truetype</tt> al proprio <tt>AFMPath</tt>. <item>Specificare un font TrueType, esplicitamente o come alias di un font predefinito. </itemize> Per i dettagli si veda la documentazione di <tt>enscript</tt>. Una volta fatte queste modifiche, non ho avuto problemi ad usare i font TrueType. <sect1>Formattazione e composizione di testi: <tt>groff</tt> <p> <tt>Groff</tt> è l'interfaccia Gnu al sistema di formattazione di documenti groff/troff. È con le pagine <tt>man</tt> che si può meglio apprezzare la potenza di <tt>Groff</tt>. <tscreen> <em>shell utente</em> <code> $ zcat /usr/man/man1/groff.1.gz | groff -man | lpr </code> </tscreen> A parte le pagine man, una quantità incredibile di documentazione Unix usa la formattazione <tt>troff</tt> con le macro <tt>ms</tt> (e qualche volta <tt>me</tt>). Il pacchetto <tt>xbooks</tt> di Debian, per esempio, contiene 43 file che usano <tt>troff</tt> con le macro <tt>ms</tt>. Con <tt>groff</tt> questo materiale può essere stampato in maniera elegante. <tt>Groff</tt> è un sistema molto potente, ma è il nipote (o il pronipote) di un programma utilizzato per la composizione dei testi per le presse di stampa degli anni '60. Il supporto dei font in <tt>groff</tt> riflette questo retaggio. <tt>Groff</tt>, diversamente dai suoi predecessori, usa PostScript come formato d'uscita predefinito e quindi il precedente lavoro fatto con <tt>ghostscript</tt> risolve metà del problema: <tt>groff</tt> non si deve preoccupare della lettura dei file dei font TrueType. Ha bisogno di avere a disposizione metriche di font accurate e questa sezione descrive come rigenerare i file di <tt>groff</tt> necessari: <tscreen> <em>File di descrizione PostScript di Groff</em> <code> /usr/share/groff/font/devps/DESC File di descrizione del dispositivo /usr/share/groff/font/devps/text.enc Codifica usata per i font testo /usr/share/groff/font/devps/generate/textmap Mappa predefinita /usr/share/groff/font/devps/generate/Makefile Makefile standard </code> </tscreen> Si deve modificare il Makefile, <tscreen> <em>/usr/share/groff/font/devps/generate/Makefile</em> <code> - afmdir=/usr/local/afm + afmdir=/usr/share/fonts/truetype </code> </tscreen> cambiando il nome dei font con il loro equivalente TrueType (e.g., se si usano i font TrueType gratuiti di Microsoft si rimpiazzerà <tt>Helvetica</tt> con <tt>Arial</tt>), e modificare <tt>TEXTFONTS</tt> e simile per includere solo questi font ridefiniti. Si deve pure modificare <tt>/usr/share/groff/font/devps/generate/afmname</tt> per usare i nomi dei font TrueType e i file <tt>afm</tt> e per rimuovere un'opzione <tt>"-e"</tt> da <tt>awk</tt>. Dopo tutto questo, si possono ricostruire le tabelle di <tt>groff</tt> con <tscreen> <em>shell utente</em> <code> $ cd /usr/share/groff/font/devps $ make -f generate/Makefile </code> </tscreen> Come al solito, il modo migliore per verificare le modifiche è usare font facilmente riconoscibili. E.g. se si stanno usando i font TrueType gratuiti della Microsoft si può usare <tt>Mistral</tt> per <tt>TR</tt>. (Il 1° aprile prossimo mi aspetto delle royalty da chiunque riconfigurerà il proprio sistema per stampare le pagine man con il font Old English!) <sect1>Formattazione e composizione di testi: <tt>TeX</tt> <p> <tt>TeX</tt> è un altro insieme molto comune di programmi per la formattazione e composizione del testo presente sulla maggior parte dei sistemi GNU/Linux. I font di <tt>TeX</tt> possono essere creati con <tt>mktexmf</tt>, ma ho poche informazioni sull'esatto processo. Maggiori dettagli saranno forniti al più presto. <sect>Domande non risposte <p> <itemize> <item> Applicazioni <p> La principale domanda senza risposta è perché se <tt>netscape communicator</tt> può usare i font TrueType, e <tt>ghostscript</tt> può usare gli stessi font TrueType, le pagine stampate da <tt>netscape</tt> non assomigliano a quelle sullo schermo. La risposta breve è che <tt>netscape</tt> genera l'output PostScript con i font standard (Helvetica e Times-Roman) invece di quelli specificati dall'utente o specificati nel file HTML. La risposta lunga è che non ho assolutamente idea del perché forzi questo comportamento o se ci sia un modo per evitarlo. </itemize> <sect> Ottenere i font TrueType <p> Se si cercano font TrueType ecco qui diversi posti dove si può cominciare a guardare: <itemize> <item>c:\windows\fonts sul fermaporte che c'è nell'angolo <item>Microsoft's Free TrueType Fonts <tt><url url="http://www.microsoft.com/typography/fontpack/"></tt> <item>Acid Fonts <tt><url url="http://www.acidcool.com/"></tt> <item>The Font Ring <tt><url url="http://www.webring.org/cgi-bin/webring?ring=fontring&list"></tt> </itemize> <sect1> Un commento sull'uso dei font TrueType gratuiti di Microsoft <p> Nessun articolo sul supporto TrueType sotto Linux potrebbe essere completo senza un commento sui font TrueType gratuiti di Microsoft. Vediamo prima se sia legale utilizzare questi font gratuiti di Microsoft: <quote> <em><tt><url url="http://www.microsoft.com/typography/faq/faq8.htm"></tt></em> <code> Q. Cosa posso fare con questi font? · Chiunque può scaricare ed installare questi font per il proprio uso personale. · I progettisti [di pagine web] possono specificare questi font all'interno delle loro pagine web ... </code> </quote> Chiaramente, è legale e ragionevole per gli utenti Linux scaricare e installare questi font e quindi vorrei ringraziare la Microsoft per averli resi disponibili. Poiché un'altra clausola restringe la loro redistribuzione «in qualsiasi forma che aggiunga valore a prodotti commerciali» non mi aspetto di vedere molto presto dentro a <tt>main</tt> il pacchetto con questi font (potrebbero essere impacchettati dentro a <tt>non-free</tt>, forse utilizzando un pacchetto installatore...?). Ora che questo è stato chiarito, voglio dirigere la vostra attenzione sulla seconda clausola. Microsoft incoraggia attivamente gli sviluppatori di pagine web a specificare i suoi font nelle pagine web e molti editor HTML chiamano esplicitamente questi font. Molti siti web, quando vengono visti con un Netscape/Linux standard, possono al più essere descritti come... decifrabili. Alcuni non lo sono nemmeno. Non è una coincidenza che i siti che sono, diciamo, leggibili sono solitamente quelli che specificano esplicitamente tutte le informazioni sui font nelle loro pagine web. Dopo aver installato questi font ho notato che la maggior parte di questi siti problematici sono diventati significativamente più attraenti. Molti erano ancora altamente Windows-centrici, ma almeno non devo ritrarmi schifato ogni volta che carico le loro pagine. La mia raccomandazione è di installare i font TrueType gratuiti della Microsoft per il proprio browser. Non è richiesto di creare pagine web usandoli e nemmeno di configurare <tt>ghostscript</tt> per usarli. <sect>Copyright (in inglese) <p> Copyright © 1999 by Bear Giles. Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed whole or in part, in any medium physical or electronic, as long as this copyright notice is retained in all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions. All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may produce a derivative work from a HOWTO and impose additional restrictions on distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO cordinator for more information. In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would very much like to be notified of any plans to redistribute the HOWTOs, this one in particular! Web page authors are free to link to this HOWTO without restriction, though the author would appreciate an email informing him of this, just so he can boost his ego by knowing who else reads and links to this document. Many of the terms mentioned in this document are trade names. Unless otherwise stated, all trademarks are property of their respectve owners. </article>