Gentili utenti vi informiamo che il team di MyTech si è spostato sul canale Hitech & Scienza di Panorama.it

      non hai uno username? regìstrati   /   recupera la password

apple / google / microsoft
unmapped

Usare e gestire i font sotto Linux

Scritto da Guido Sintoni

In questo articolo esamineremo i componenti di Linux che influiscono sulla visualizzazione dei font e vedremo come sfruttarli al meglio.
Da oltre un decennio la gestione dei font sotto Windows non rappresenta più un problema: sin dalla versione 3.1, infatti, l’ambiente Microsoft supporta la tecnologia TrueType che permette una visualizzazione gradevole dei caratteri a schermo.

Per Linux, e in genere per i cloni di Unix, la situazione invece non è mai stata particolarmente felice, sia per motivi architetturali che per ragioni legate al rilascio dei font stessi da parte dei produttori.

In questo articolo ci proponiamo un’analisi dei componenti che influiscono sulla visualizzazione dei caratteri a video. I prerequisiti per chi volesse mettere in pratica gli esempi sono del tutto generici. Dovrebbe essere sufficiente l’uso di una distribuzione moderna, comprendente XFree 4: i componenti di base, quindi, per un uso workstation del proprio box Linux.

Font di tutti i tipi

Per iniziare, esaminiamo alcuni concetti di base. Una bitmap è un insieme di punti. I font di tipo bitmap sono rappresentati esattamente in questo modo: come una matrice di punti. Per questo, sono font device dependent: vengono visualizzati in maniera corretta solo ad una determinata risoluzione. Un font a 75 dpi concepito per lo schermo rimane tale anche sulla nostra nuova stampante capace di 1.200 dpi: chi ha provato a stampare da Linux si è trovato per questo motivo davanti a risultati deludenti e a marcati effetti di scalettatura.

In Linux, sono due i tipi di font bitmap: quelli per stampante (i font pk generati da dvips) e quelli per lo schermo, utilizzati da X e dalla console (che hanno estensione bdf o pcf). Tali font risultano utili per i terminali, le console e alcuni spartani editor di testo (vi, ad esempio) nei quali la mancanza di scalabilità non è un problema.

I font Type 1 derivano da uno standard sviluppato da Adobe, e sono supportati da PostScript, tecnologia della stessa Adobe. Su Linux, vengono correttamente gestiti da X e ghostscript, l’interprete PostScript che sovrintende alla visualizzazione e alla stampa; i font Type 1 sono storicamente la miglior scelta per qualsiasi applicazione che faccia capo ad un server grafico e a un server di stampa sotto Unix.

Un font Type 1 è costituito da un file che contiene la metrica del font stesso e uno o più file di contorno. Il primo contiene le informazioni relative allo spazio richiesto dal font: è una specie di box entro il quale sviluppare e definire il font. La metrica è essenziale per il layout a schermo e sulla pagina, e include le informazioni sull’eventuale crenatura (ovvero la spaziatura tra particolari coppie di caratteri). I font a passo variabile, in quanto tali, hanno bisogno di informazioni tanto sulla metrica quanto sulla forma. Nella directory /usr/X11R6/lib/ X11/fonts (in genere il percorso di default per i font gestiti dal server grafico X), troviamo varie subdirectory relative ai font: Type1 contiene vari file (possiamo verificarlo con un semplice ls -l) contraddistinti dall’estensione afm, pfb e pfa. L’estensione afm contraddistingue i file per metrica e crenatura; pfb e pfa rappresentano i file di contorno, rispettivamente i binari per la stampa e per la visualizzazione secondo la codifica Ascii. I file pfa e pfb contengono un’intestazione e i glyph. I glifi (la traduzione letterale di glyph) sono le “forme” dei font e ne definiscono l’aspetto finale.
Gli ambienti grafici di Linux prevedono varie utilità per la gestione dei font: qui è rappresentato Font Selector di Gnome, che permette l’anteprima ma non l’importazione al volo di nuovi font.
I font True Type, infine, sono stati sviluppati da Apple, che voleva evitare di pagare costose royalty ad Adobe per l’utilizzo dei font Type 1. Microsoft ha adottato questa tecnologia a partire da Windows 3.1, rilasciato nell’aprile del 1992.

È con i font True Type che l’utente dei sistemi IBM e compatibili ha iniziato a comprendere il senso del termine Wysiwyg, What you see is what you get. La tecnologia TrueType prevede l’uso di un singolo file (contraddistinto dall’estensione ttf nota alla maggioranza degli utenti Windows) che racchiude le informazioni sia sulla metrica sia sulla forma del font.

In Linux è possibile gestire i font True Type con font server appositi: si tratta di applicazioni che lavorano in background rendendo disponibili i font al server grafico XFree, che si occupa di restituire a video le istruzioni impartite da dispositivi di input quali tastiera o mouse ed eseguite all’interno di applicazioni.

Il confronto tra font Type 1 e True Type non è certo lo scopo di questo articolo; è comunque il caso di sottolineare come entrambi siano scalabili e come i font Type 1 utilizzino curve cubiche (al posto delle quadratiche dei True Type) per i glifi. Ciò significa che, sulla carta, i font Type 1 includono tutte le possibilità di curvatura dei font True Type; in pratica, tuttavia, la differenza è inavvertibile.

La vera differenza risiede nella disponibilità e nel supporto alle applicazioni: i font True Type hanno seguito la diffusione di Windows, e le logiche di mercato hanno fatto il resto. Su Linux, la maggior parte delle applicazioni supporta font Type 1; difficilmente ciò accade con i True Type (anche se in questi ultimi mesi stiamo assistendo a un’incoraggiante inversione di tendenza). Nuovi font per X

È possibile aggiungere font al server grafico X in vari modi. Diversamente da Windows, tuttavia, la procedura non è banale: si deve infatti ricorrere a un editor di testo o alla shell a linea di comando.

Per questo motivo, prima di iniziare, è consigliabile effettuare un backup del file di configurazione di X, in questo modo. Da root eseguiamo:

cp /etc/X11/XF86Config /etc/X11/XF86Config.0

pronti a ripristinare in qualsiasi momento la situazione di partenza con un semplice

cp /etc/X11/XF86Config.0 /etc/X11/XF86Config

nel caso in cui X si rifiutasse di partire.

Per installare i font, bisogna interagire con l’applicazione di font server, cui abbiamo prima accennato. Un font server offre un vantaggio molto interessante: è in grado, infatti, di inviare i propri caratteri a display remoti. Purtroppo, diverse versioni di font server si sono alternate in breve tempo, rendendo la situazione complessa. Xfs è il font server storico di XFree (il suo codice è legato ai sorgenti di XFree): inizialmente non prevedeva il supporto ai font True Type, aggiunto in seguito con patch (la via seguita da Red Hat e successivamente Debian) o con applicazioni alternative (xfsft o xfstt).
Il supporto ai font Type 1 e TrueType delle ultime versioni di XFree permette di visualizzare pagine Web in maniera senz’altro più gradevole di quanto accadeva in passato.
La situazione è migliorata con le ultime release di XFree (>4.0): xfs è ancora il font server di default, e ora prevede il supporto nativo ai True Type. La quarta versione di XFree, adottata da un paio di anni dalle principali distribuzioni, prevede una completa riscrittura del codice per rendere l’applicazione modulare; ciò, fortunatamente, rende il nostro scopo (l’installazione di nuovi font) molto più semplice.

Con l’editor di testo, apriamo il file XF86Config (o, a seconda delle distribuzioni, XF86Config-4), posizionandoci sulla sezione denominata Section Files. Dopo avere scaricato i nuovi font (Type 1 o True Type) in una directory a piacimento (consigliamo comunque /usr/X11R6/lib/X11/fonts per coerenza con gli altri font preinstallati), aggiungiamo la seguente riga all’interno di “Section Files”.

FontPath”/usr/X11R6/lib/X11/fonts/[mieifont]/”

L’istruzione aggiunge un percorso di ricerca per il font server, che successivamente bisogna riavviare con l’istruzione (eseguita da root)

/etc/rc.d/init.d/xfs restart

A seconda delle distribuzioni, è possibile che compaia un messaggio quale

Riavvio del server dei font X [OK]

In un eccesso di zelo, verifichiamo che il processo sia effettivamente in esecuzione, con il comando:

ps ax | grep xfs

che restituisce un output del tipo:

[numero Pid] S 0:00 xfs [parametri di xfs]

È il momento di riavviare X: usciamo dalla sessione, rientriamo e, da una qualsiasi applicazione o utilità di gestione dei font, verifichiamo che xfs ora gestisca il nuovo font (o la famiglia di font) installato: ad esempio, in Gnome 2 è sufficiente richiamare il menu Applicazioni / Preferenze del desktop / Font.

Problemi potenziali (e come aggirarli)

Linux non è ancora pronto per un Wysiwyg completo; almeno non lo è per chi vi si è accostato da poco. Le applicazioni nate per supportare uno specifico ambiente grafico si giovano dell’interazione di quest’ultimo con xfs e XFree; ad esempio, l’elaboratore di testo AbiWord, concepito per Gnome (ma disponibile anche per Kde) è da subito in grado di visualizzare i font appena installati.

L’architettura di Linux è fortemente basata sul modello client/server: ciò comporta vantaggi e svantaggi. Tra i primi, la possibilità di usare font che risiedono fisicamente su una macchina diversa dalla nostra workstation, su un server (xfs o simile) che gira sulla porta 7100: per l’azienda è un grande vantaggio in termini di versatilità e scalabilità, ma non lo è per l’utente domestico. Lo stesso vale per il server di stampa: Lpr, Cups o simili possono essere installati su macchine diverse. Per contro, un simile approccio fa sì che l’interazione tra server grafico, layer applicativo e server di stampa non sia immediata. Vi sono molti sistemi per allineare manualmente i tre livelli, ma spesso essi richiedono competenze tecniche piuttosto elevate. Eppure, qualcosa si sta muovendo: già oggi è possibile ottenere applicazioni Wysiwyg sotto Unix (e non va dimenticato che produttori di font quali Bitstream hanno reso disponibili per Linux i propri font, che vengono compresi nelle distribuzioni più aggiornate). La palla ora è passata a chi realizza le applicazioni; è ipotizzabile che, entro il prossimo anno, le nuove release principali di programmi workstation per la produttività individuale (Open Office su tutti) o per la grafica supporteranno librerie (al momento recentissime) come quelle che stiamo per descrivervi.

FreeType è un font engine altamente portabile, che gestisce glifi di elevata qualità. È una libreria per il rastering richiamata da altre librerie grafiche, server grafici, strumenti per la conversione di font e l’elaborazione di testo. Non a caso, è una delle basi su cui poggia XFree 4.x. Si tratta di un’Api che permette l’accesso ai font in maniera uniforme, indipendentemente dal formato dei file sottostanti. FreeType supporta nativamente font TrueType o Type 1 e si occupa di restituire ai client i font processati.

È interessante notare che l’attuale versione di FreeType (FreeType 2) si basa su moduli che possono essere legati staticamente alle librerie in fase di compilazione, o richiamate dinamicamente mediante moduli: dal punto di vista dell’utente desktop, questo significa la possibilità di aggiungere font al volo (o quasi), proprio come abbiamo appena fatto. La velocità di rastering risulta elevata perché FreeType prevede un sistema di cache dei font e delle informazioni ad essi relative. L’attuale frontiera di Linux (che presumibilmente porterà risultati visibili all’utente finale entro il prossimo anno) è data da xft2 e fontconfig, due librerie di basso livello che nascono - con l’intento di unificarla - la gestione dei font da parte dei programmi e di X.

Xft2 rappresenta uno strato tra FreeType e il server X: l’applicazione che richiama xft2 decide cosa, come e dove disegnare (quindi, metrica e aspetto dei font presenti in xfs) mediante la libreria Fontconfig (cui accenniamo in seguito), e si occupa di passare la richiesta al server grafico X. L’operazione in sé richiederebbe risorse macchina supplementari, ma anche in questo campo Linux ha una risposta coerente: l’uso di un modulo per il rendering in X. Quest’ultimo è noto come dri ed utilizzato dai driver X per la programmazione diretta dell’hardware: l’accelerazione 2D e 3D avviene in questo modo a livello di Gpu, non di Cpu. È così possibile definire in maniera precisa funzioni evolute quali l’antialiasing. Controllando in /etc/XF86Config, troviamo infatti una sezione chiamata Section “Module” contenente varie istruzioni, tra cui

Load “dri”
Load “freetype”


che si occupano di caricare le librerie FreeType e Dri.

Fontconfig è una libreria che mette in comunicazione l’applicazione che l’adotta con X o con una console di testo, usando (ma non necessariamente) xft2: serve per localizzare, selezionare e configurare font. È questa la via per avere la tanto sospirata uniformità nella gestione dei font che è alla base di un vero Wysiwyg: quando le prossime release delle applicazioni adotteranno fontconfig, si avranno informazioni coerenti che, processate da X e dall’interprete PostScript (su cui si basa il sistema di stampa di Linux e di Unix in genere), permetteranno l’allineamento tra i font a video e quelli stampati.

Commenti   (Inserisci un commento)

Ancora nessun commento.

Effettua il login