<- ext2fs - Copertina - Indice -> |
Articolo
Caratteri TrueType in X-Window
Chi ha avuto modo di provare la distribuzione Debian di Linux, versione Hamm, avrà notato che vi sono alcuni programmi sperimentali per l'utilizzo di font TrueType; in particolare c'è un programma che si chiama xfstt, acronimo di X Font Server, True Type. Tramite questo font server è possibile utilizzare i font True Type in X-Window. Vediamo come.
Non c'è molta documentazione su cosa sia e a cosa serva un font server. Anche le man page sono estremamente scarne:
DESCRIPTION Xfs is the X Window System font server. It supplies fonts to X Window System display servers.
è la descrizione che viene data sulla man page di xfs, mentre per xfstt non c'è assolutamente niente!!! Io non sono un esperto di font server, quindi quello che vi fornirò sarà solo un manuale di sopravvivenza. Ricordate inoltre che tutto il software linux per i TTF è ancora in fase di test (alpha o beta), quindi dovete aspettarvi qualche magagna. Per ciò che ci interessa assumeremo che un font server sia una applicazione che fornisce ad un client le caratteristiche dei font che ha a disposizione e, se necessario, anche il font stesso. Il client può essere inteso sia come macchina (un PC con Linux, una workstation...), sia come server X, sia come una applicazione che gira sotto X.
Prendete tutti i file con estensione ".ttf" che contengono i font che volete utilizzare e copiateli in /var/ttfonts. Non copiate file con altre estensioni; ad esempio, i file con estensione ".fot" non servono.
Al primo avvio il font server crea nella directory /var/ttfonts i suoi cataloghi. Normalmente un font server lavora sulla porta tcp 7100. Poiché questa porta potrebbe essere già occupata dal font server standard, faremo girare xfstt sulla porta 7001. I comandi da dare al primo avvio devono essere eseguiti da root e sono:
xfstt --sync # Crea il database dei font a partire # dal contenuto della directory /var/ttfonts (xfstt --port 7101 &) # Manda in esecuzione (in background e in una # nuova shell) il font server sulla porta 7101
È una operazione abbastanza semplice, che può essere eseguita anche quando il server X è già in esecuzione: aprite un xterm, anche se non siete superutente, e date il comando xset +fp unix/:7101. Fatto questo provate, ad esempio, ad aprire Netscape e collegarvi ad un sito che sapete usare i TTF. Se vi mancano le idee provate http://www.raisport.rai.it, nella pagine che trattano di Formula 1; negli articoli viene utilizzato molto spesso il font Comic Sans, e potrete quindi notare subito la differenza.
Per scollegarvi dal font server è sufficiente dare il comando xset -fp unix/:7101
Per quanto riguarda l'apertura del font server insieme al sistema e la sua chiusura nella fase di shutdown occorre:
Lo script, derivato da /etc/init.d/xfs, è:
#!/bin/sh
# /etc/init.d/xfstt: start or stop the X TrueType font server
set -e
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/bin/X11/xfstt
OPTIONS="--port 7101"
#PIDFILE=/var/run/xfstt.pid
test -x $DAEMON || exit 0
test -f /etc/X11/config || exit 0
if grep -q ^xbase-not-configured /etc/X11/config
then
exit 0
fi
run_xfstt=1
case "$1" in
start)
if [ $run_xfstt = 1 ]
then
echo -n "Starting X True Type font server: xfstt"
start-stop-daemon --start --quiet --exec ${DAEMON} -- ${OPTIONS}& # Cannot || echo -n " already running"
echo "."
fi
;;
restart)
$0 stop
$0 start
;;
reload)
if [ $run_xfstt = 1 ]
then
echo -n "Reloading X font server configuration..."
start-stop-daemon --stop --signal 10 --quiet --exec ${DAEMON}&
echo "done."
fi
;;
force-reload)
$0 reload
;;
stop)
if [ $run_xfstt = 1 ]
then
echo -n "Stopping X True Type font server: xfstt"
start-stop-daemon --stop --quiet --exec $DAEMON || echo -n " not running"
echo "."
fi
;;
*)
echo "Usage: /etc/init.d/xfstt {start|stop|restart|reload|force-reload}"
exit 1
;;
esac
exit 0
I link da creare sono invece:
/etc/rc0.d/K80xfstt -> /etc/init.d/xfstt /etc/rc1.d/K80xfstt -> /etc/init.d/xfstt /etc/rc2.d/S80xfstt -> /etc/init.d/xfstt /etc/rc3.d/S80xfstt -> /etc/init.d/xfstt /etc/rc4.d/S80xfstt -> /etc/init.d/xfstt /etc/rc5.d/S80xfstt -> /etc/init.d/xfstt /etc/rc6.d/K80xfstt -> /etc/init.d/xfstt
In breve, lo script attiva il font server quando viene chiamato con il parametro start e lo disattiva quando viene chiamato col parametro stop. Sul come questo avvenga non dovete preoccuparvi, è un lavoro che viene eseguito da un programma chiamato start-stop-daemon. Per quanto riguarda invece i link simbolici, dobbiamo premettere che essi vengono utilizzati quando il sistema entra in un certo runlevel (se vi state chiedendo cos'è un runlevel, diciamo che è una modalità o configurazione di esecuzione del sistema, la cui definizione è contenuta nel file /etc/inittab. Ad esempio sulla Debian Hamm il runlevel 2 è quello in cui il sistema parte con il display manager -per intenderci, quando potete effettuare il login direttamente sotto X siete nel runlevel 2-; il runlevel 0 è quello che corrisponde alla fase di spegnimento del sistema. Per maggiori informazioni su questi e su tutti gli altri runlevel vi consiglio di accendere il vostro linux box e aprire due terminali: sul primo eseguite il comando less /etc/inittab e sul secondo man inittab.
Il nome dei link è composto di tre parti: una lettera maiuscola (S oppure K), un numero intero di due cifre (per esempio, 05, 99, 40) e un nome che corrisponde a quello del file linkato dalla directory /etc/init.d. Vediamo il significato di questi nomi:
Dunque assegnando un valore di 80 a xfstt stiamo dicendo al sistema di eseguire lo script in fase avanzata sia durante l'avvio che durante lo shutdown (viene comunque avviato prima del display manager, xdm, che ha priorità 99 per l'avvio -il più tardi possibile quindi- e la sua chiusura avviene dopo quella di xdm, che ha priorità 01 -il prima possibile-).
Per ciò che riguarda poi la connessione ad xfstt ad ogni
vostra sessione X, è sufficiente aggiungere in
.xinitrc e .xsession il comando xset +fp
unix/:7101
. L'unica limitazione è che questa
non deve essere l'ultima istruzione dello script!
Se non copiate direttamente i font sulla vostra partizione ma li "importate" da una partizione Windows dovete fare attenzione che la partizione sia montata prima dell'avvio di xfstt e che non venga smontata durante il suo funzionamento. Se queste circostanze dovessero verificarsi, il comportamento delle applicazioni che stanno girando in quel momento sotto X diventa imprevedibile.
La presenza di un font server con font True Type non era prevista quando molte applicazioni sono state create. Come conseguenza, le applicazioni che usano il font di default (quello indicato dalla stringa -*-*-*-*-*-*-*-*-*-*-*-*-*-*, per intenderci) useranno il primo font true type catalogato dal server. Può ben accadere che il font non possieda i caratteri minuscoli o, peggio!, sia composto da simboli: in questi casi il testo delle scritte e dei pulsanti di quelle applicazioni verranno sconvolti. Il trucco è creare un link al font che si vuole assumere come default, dandogli come nome uno che risulti al primo posto in ordine alfabetico, e rifare il sync; ad esempio:
cd /var/ttfonts ln -s arial.ttf a0.ttf xfstt --sync
Come detto all'inizio, non molta:
[1] | xfstt --help |
---|---|
[2] | man xfs |
[3] | man xinitrc per quanto riguarda il file .xinitrc, e... |
[4] | man xdm per quanto riguarda il file .xsession :-) |
<- ext2fs - Copertina - Indice -> |