Come avere i font con antialiasing in Wine e integrarne meglio l’aspetto grafico

A dire il vero non mi capita spesso di utilizzare Wine, per il semplice fatto che in genere trovo per Linux tutto ciò di cui ho bisogno. Tuttavia in questo periodo sto facendo un lavoro di gruppo per un esame e ho deciso di installare il client Windows di Evernote per sfruttare le funzioni che l’interfaccia web non offre. Avevo provato Nevernote/Nixnote ma a volte scombina il layout di alcune note, e comunque si tratta solo di una situazione temporanea.

Se c’è una cosa che non apprezzo particolarmente di Wine, comunque, è la perseveranza con cui rimane non integrato con tutto il resto del sistema. Ovviamente non si può pretendere di avere un look perfettamente analogo a GNOME o KDE, però non capisco proprio come la loro implementazione del font Tahoma (basata in realtà sul Bitstream Vera Sans) sia stata realizzata di proposito con i caratteri senza antialiasing a determinate dimensioni, per imitare il comportamento discutibile di alcune versioni di Windows.

Per chi non lo sapesse, l’antialiasing (o più precisamente l’hinting, nel caso dei font) è una sfumatura dei pixel per migliorare la leggibilità. Sapete già che sono abbastanza esigente dal punto di vista dell’integrazione grafica dei software, però in questo caso costituisce anche un problema serio di leggibilità delle finestre.

Ho scoperto recentemente che si può installare il Tahoma semplicemente usando winetricks e questo risolve parzialmente il problema. Tuttavia personalmente ho notato che Evernote continuava a non metterlo in alcune schermate (e presumibilmente anche altri programmi per Windows). Per questo motivo ho deciso di trovare una soluzione alternativa e già che c’ero anche di applicare un tema trovato in rete tempo fa. Il procedimento non è lungo ma il risultato è molto soddisfacente.

Elaborazione grafica delle preferenze di Wine prima e dopo il "trattamento"

Partiamo dal tema: si tratta di uno stile per Windows XP chiamato Wooden e lo potete scaricare da questo sito russo (cliccate dove vedete scritto “wooden.zip [7.74 Mb]“). Una volta scompattato, andate nelle preferenze di Wine alla scheda Integrazione della Scrivania e premete Installa un tema: Vi verrà chiesto di scegliere il file con estensione .msstyles. Tenete presente che in alcune finestre i bottoni rimarranno senza angoli arrotondati, però in genere avrà tutto un’aspetto migliore e i colori somiglieranno al tema di Ubuntu.

Riguardo ai font, la mia idea è stata quella di usare la famiglia Droid Sans (quella dei primi dispositivi Android, per intenderci) e inserire nella cartella di sistema di Wine una copia dei file appositamente rinominati. Per farlo, dovrete assicurarvi tramite il Software Center (o gestore di pacchetti della vostra distribuzione) di avere installati questi font e anche il pacchetto fonttools, necessario per quello che andremo a fare tra poco. Per installarli su Ubuntu si può fare così:

sudo apt-get install ttf-droid fonttools

A questo punto è il momento di copiare i font nell’apposita directory:

cd ~/.wine/drive_c/windows/Fonts/
cp /usr/share/fonts/truetype/ttf-droid/DroidSans.ttf tahoma.ttf
cp /usr/share/fonts/truetype/ttf-droid/DroidSans-Bold.ttf tahomabd.ttf

Come anticipato prima, ai font dev’essere attribuito un nuovo nome. Non è sufficiente rinominare i file perché all’interno contengono salvato il nome originale. Andiamo quindi a convertire i file in formato XML per poi sostituire il nome con Tahoma:

ttx tahoma*.ttf
rm tahoma*.ttf
sed -si "s/Droid\ Sans/Tahoma/g" tahoma*.ttx
sed -si "s/DroidSans/Tahoma/g" tahoma*.ttx
ttx tahoma*.ttx
rm tahoma*.ttx

In sostanza dopo la prima conversione sostituiamo con sed tutte le occorrenze necessarie e poi procediamo alla riconversione, mentre i comandi rm fanno pulizia quando serve. A questo punto il gioco è fatto, basta avviare un programma che gira con Wine per notare la differenza. Ho provato anche con altri font, compreso quello di Ubuntu, ma i risultati erano meno soddisfacenti. Voi che ne dite? 🙂

Convertire i font OpenType in font TrueType

Per lunedì dovevo fare una relazione sugli algoritmi di ordinamento e portarla a scuola. Pertanto ho voluto cercare qualche font di bell’aspetto. Ovviamente non ho esitato a consultare Dafont, il mio archivio preferito di font gratuiti e liberamente usabili. La mia scelta è ricaduta sul font Qlassik.

Entusiasta per la bellezza e l’eleganza del font, e ansioso di applicarlo ai titoli dei paragrafi, lo scarico, e mi accorgo subito che è composto di due file di tipo OpenType. Io da perfetto incompetente, non sapevo che fosse un formato registrato da Microsoft, anzi pensavo che quell’open significasse qualcos’altro. Dopo aver messo i font nella cartella /usr/share/fonts/truetype e aver visto che non funzionavano, ho deciso di trovare un modo di convertirli. Ebbene, ce l’ho! 🙂

Seguo la guida e installo Fontforge:

sudo aptitude install fontforge

A questo punto creo un file che dice a Fontforge cosa fare:

sudo gedit /usr/bin/script-otf2ttf.sh

E ci inserisco le istruzioni:

#!/usr/local/bin/fontforge
 # Quick and dirty hack: converts a font to truetype (.ttf)
 Print("Opening "+$1);
 Open($1);
 Print("Saving "+$1:r+".ttf");
 Generate($1:r+".ttf");
 Quit(0);

Salvo ed esco. Se copiate il contenuto del file state attenti alle virgolette!

Poi ho creato un nuovo eseguibile in questo modo:

sudo gedit /usr/bin/otf2ttf

E ci ho inserito:

#!/bin/bash
 for i in $@; do
 fontforge -script /usr/bin/script-otf2ttf.sh $i
 done

A questo punto ho salvato, poi gli ho dato i permessi di esecuzione:

sudo chmod a+x /usr/bin/otf2ttf

Fatto.

Mi sono trovato con un programmino che accetta in input i font di tipo .otf e li converte in .ttf, ovvero TrueType, perfettamente gestibili da tutti i programmi. Come fare per convertire tutti i file OpenType in una directory?

Semplice. Ci si sposta nella cartella in cui sono contenuti e si da il comando:

otf2ttf *.otf

In questo modo il programma esegue una istanza della conversione per ogni file che trova. A questo punto è possibile ad esempio spostarli tutti in una cartella:

mkdir ttf
mv *.ttf ttf/

E questo è quanto.:)

Per finire, vi linko la guida che mi ha portato sulla giusta strada. Ditemi che ne pensate! 😀

Aggiornamento 19/03/2009: ho aggiornato questo post con una modifica per rendere più semplice l’utilizzo dello script con un numero arbitrario di font.