Qui si volgiono trattare quelle localizzazioni che sono un po' piú hardware-dipendenti, e in particolar modo che riguardano i PC compatibili. Molto probabilmente molte di queste cose non si applicano alle altre piattaforme su cui gira Linux, ne chiedo venia.
Le cose sono due, o mi regalate un PPC, una Sparc, un Alpha, un A4000, un MAC, ... oppure se avete altre note per queste macchine da aggiungere fatemelo sapere. ;-)
Linux permette di cambiare il font standard presente nella ROM della scheda video, in modo da avere il set di caratteri ISO-8859-1 completo a disposizione. La cosa può essere semplicemente ottenuta con :
# carica il set di caratteri Latin1 (ISO-8859-1) setfont /usr/lib/kbd/consolefonts/lat1u-16.psf # attiva la mappa di traslazione nulla mapscrn /usr/lib/kbd/consoletrans/trivial # rende attiva la nuova mappa di traslazione nella console corrente. # andrebbe ripetuto per ogni console... echo -ne '\033(B'
Il primo comando carica un nuovo set di caratteri, il secondo permette di eseguire una traslazione ``al volo'' tra caratteri richiesti e voluti e il terzo rende attiva la nuova coppia tabella-tavola di traslazione.
Ad esempio di default non viene caricata nessuna tabella e viene eseguita la traslazione Latin1 (quello che Linux vuole) con CP437 (quello che il PC ha). Ovviamente le manpages di setfont(1) e mapscrn(1) sono utili letture.
Ovviamente, se la propria scheda video supporta modi testo diversi da 80x25, è
anche conveniente caricare un font di dimensione diversa. Si possono
controllare i font e le mappe di traduzione disponibile nelle directory
/usr/share/consolefont
e /usr/share/consoletrans
.
Caricando un tipo di caratteri come lat1u-*.psf
si ha anche il vantaggio
di avere l'allocazione dei caratteri UNICODE, e non serve caricare nessuna
tabella di traslazione.
Ai fini pratici si può evitare di eseguire mapscrn
e si ottengono
contemporaneamente tutti i carateri accentati propri del set Latin1 e i
caratteri semigrafici IBM che servono per disegnare correttamente le finestre
di mc(1) e dialog(1).
Per avere tutto questo occorre però avere un kernel decentemente nuovo, una versione recente di ncurses (libncurses.so.3.x.y) e kbd-0.91, altrimenti è facile che l'abilitazione del set Latin1 completo elimini il supporto per i caratteri IBM semigrafici e viceversa.
Ma c'è una soluzione piú elegante. Esiste un programma che si chiama SVGATextMode(8) che fa tutta una serie di operazioni sulla console testo molto simpatiche.
Permette di definire dimensioni ``non standard'' per la console (diverse da 80x25, insomma), permette di alzare la frequenza di refresh del video di modo da stancare meno gli occhi, gestisce chipset avanzati...
Ha un file di configurazione, /etc/TextConfig
che ha una sintassi
molto simile al file di configurazione di XFree e che permette in un sol colpo
di definire il font da caricare. Ci penserà poi il programma stesso ad
attivare il font e renderlo disponibile.
Basta modificare leggermente il file, facendo in modo che si presenti all'incirca come:
Option "LoadFont" FontProg "/usr/bin/setfont" FontPath "/usr/share/consolefonts" FontSelect "lat1u-16.psf" 8x16 9x16 8x15 9x15 FontSelect "lat1u-14.psf" 8x14 9x14 8x13 9x13 FontSelect "lat1u-12.psf" 8x12 9x12 8x11 9x11 FontSelect "lat1u-08.psf" 8x8 9x8 8x7 9x7 FontSelect "lat1u-08.psf" 8x32 9x32 8x31 9x31
E si ottengono magicamente tutte le cose volute.
Buona parte dei caratteri installati con X seguono lo standard Latin1, e idem i font PostScript normalmente reperibili (come quelli dell'ATM). Quindi, nessun problema!!!
Se stampate file DVI, PostScript o comunque in grafica, non ci sono problemi. Ci penserà il vostro programma per la stampa a convertire il vostro file nel formato matrice-di-punti più consono alla vostra stampante. Ma se volete stampare in puro testo, senza formattazioni? Resta, soprattutto per le stampanti ad aghi, il metodo più veloce. Ma quanto è standard il set ISO-8859-1?
ISO-8859-1 è il set di caratteri di Unix in generale, di Windows, Amiga, OS/2. Mancano all'appello il DOS e Macintosh. Ma in DOS la CP850 è in pratica il set Latin1, con i caratteri rimescolati un po' per essere compatibile verso il basso con la CP437. Sentitevi liberi quindi da qualsiasi ``sindrome da 8 bit'', e usate tranquillamente questo set di caratteri. Se dovete importare dei testi Linux in Macintosh, semplicemente usate il filtro per ``puro testo Windows'' o cose simili.
Se volete stampare puro testo con le accentate da Linux, a questo punto non vi resta che provare una delle soluzioni seguenti:
recode latin1:cp850 file
dove file
è il file da
convertire, che viene sovrascritto.
Per automatizzare la procedura si può anche installare come filtro
per la stampa.
Per avere automaticamente la conversione, si può utilizzare questo filtro:
#!/bin/sh if /usr/local/bin/recode latin1:cp850 then exit 0 else exit -1 fi
potete salvare questo filtro come /usr/local/bin/iso2850
e poi dargli
i permessi di esecuzione (chmod ugo+x /usr/local/bin/iso2850
). ora
non vi resta che aggiungere nel file di configurazione delle stampanti
/etc/printcap
:
# esempio di filtro, sostituire ``lp2'' con il device corretto # i file log e acct vanno creati # cp850|dos:\ :lp=/dev/lp2:\ :sd=/var/spool/lp2:\ :lf=/var/spool/lp2/log:\ :af=/var/spool/lp2/acct:\ :if=/var/local/bin/iso2850:\ :sh:
Ora, se la stampante è impostata per usare la codepage 850, basta un bel
lpr -Pcp850 nomefile
per stampare un file latin1 con tutte le accentate
al loro posto.
Libpaper è una piccola libreria e un programmino che dovrebbe
``standardizzare'' la gestione dei formati di carta sotto linux.
In pratica fornisce delle funzioni da linkare al proprio programma che
permettono di usare delle informazioni sul formato di carta centralizzate
(prese da /etc/papersize
o dalla variabile d'ambiente PAPERSIZE.
In debian è installata di default e gs la usa. Potrebbe essere una cosa utile, e va incentivata.
Maggiori informazioni le potete trovare alla manpage di paperconf(1), ovviamente se avete libpaper installata nel vostro sistema.