Menu Chiudi

UNICODE: Linux e UTF-8 :-)

di felipe

Nota: in questo testo si e’ preferito non usare accentate per cercare di essere piu’ leggibili possibile, in fondo alla pagina ci sono alcuni file di esempio con lettere accentate e in varie lingue

Capita spesso navigando siti, leggendo la posta o “chattando”… di leggere alcuni caratteri in modo strano. Un esempio e’ il classico simbolo dell’EURO (?), ma puo’ capitare di leggere veri e propri caratteri “runici”, specialemente quando si ha a che fare con lettere accentate, tipiche per esempio della lingua italiana. Se vi e’ successo di leggere perA” al posto di pero’, o piO^ al posto di piu’… sappiate che UTF-8 cerca di dare una soluzione a questo.

Non mi mettero’ a descrivere come, quando e dove e’ nato lo standard UTF-8, o cosa significhi UNICODE, sappiate solo che e’ un problema a livello mondiale e questa per adesso sembra essere una soluzione, e cmq questo non e’ un howto :-P

Tra le distribuzioni linux che gia’ adottano UTF-8 come impostazione predefinita ci sono Fedora Core 3, Ubuntu hoary (rilascio ufficiale: aprile 2005) e altre sicuramente. Se usate una di queste distro potete semplicemente dare un occhio alla sezione Applicazioni, piu’ in basso, visto che il sistema base e’ gia’ OK. Altrimenti ecco un elenco degli argomenti di questo articolo:

  • Configurare il kernel (se necessario)
  • Impostare la lingua del sistema (LANG)
  • Impostare e generare le localizzazioni (locales)
  • Installare font unicode X ed emulatori di terminale
  • Abilitare il tasto Compose per fare alcuni trucchetti con la tastiera
  • Controllare che le applicazioni funzionino

Configurare il kernel (se necessario)

Se state usando un kernel impacchettato dalla vostra distribuzione e’ solo questione di caricare il modulo nls_utf8 all’avvio, altrimenti se usate un kernel preparato da voi bastera’ ricompilare ed inserire il supporto ad UTF-8 nella sezione National Languages Support, e magari scegliere UTF-8 come “Default Encoding”. Ecco cosa riporta il config del mio kernel:

$: zcat /proc/config.gz | grep -i utf
CONFIG_NLS_DEFAULT="UTF8"
CONFIG_NLS_UTF8=y

Impostare la lingua del sistema

Se come me siete italiani (vabbe’ io sarei siciliano) la lingua da impostare per il vostro sistema e’ “it_IT.UTF-8”. Ecco come impostare questa variabile a *tutto* il sistema, il file da modificare e’ “/etc/environment”:

GTK_IM_MODULE=xim
LANG=it_IT.UTF-8

GT_IM_MODULE e’ una variabile che serve alle applicazioni GNOME/GTK. Questa impostazione avra’ valore solo dopo aver fatto “leggere” quel file al sistema, o aver riavviato :) Per far rileggere il file al sistema basta dare:

$: source /etc/environment

Impostare e generare le localizzazioni (locales)

Il secondo passo e’ di modificare il file /etc/locale.gen Il mio in questo momento contiene una sola riga:

it_IT.UTF-8 UTF-8

Questo file serve a `locale-gen` per generare i famosi “locales” di ogni sistema. Non ho mai avuto bisogno di piu’ di un locale, quindi a me va bene solo it_IT.

Bene, una volta impostato /etc/locale.gen lanciamo:

$: locale-gen

abbiamo completato questo passo. In teoria il nostro sistema e’ gia’ potenzialmente in UTF-8, ma abbiamo bisogno di font unicode.

Installare font unicode X ed emulatori di terminale

So che quello che interessa a tutti e’ principalmente X, e in alcune distro ormai non e’ raro che le console non si vedano nemmeno… esempio in debian ho sistemato i font della console perche’ mi capita di vederli spesso, in ubuntu no, quindi nella convinzione che un utente desktop non debba mai essere esposto alla vista della console :D descrivo solo il comportamento di X e degli emulatori di terminale:

X

Ormai tutti hanno Xorg, o al massimo Xfree >= 4.3, quindi in teoria tutti hanno fontconfig e una serie di sistemi che facilitano l’installazione di font con un semplice copia/incolla nella dir .fonts se non di gui GTK o QT per fare tutto in modo automatizzato. Mi limito solo a consigliare dei font utili e facilmente reperibili in internet o anche direttamente pacchettizzati dalle distro:

Bitstream Vera (comprende Sans, Serif e Mono) già questo basta per ogni sistema
Bitstream Cyberbase
Cyberbit
Evermono
Arialuni (distribuito con M$ WinXP - se proprio vi scappa)

Una volta installati questi font e riavviato X saremo in grado di leggere caratteri unicode senza problemi in ambiente grafico. Basterebbe installare solo Bitstream Vera per avere la maggior parte dei caratteri che in genere puo’ capitare di usare, ma grazie ad un trucchetto di fontconfig, se installiamo gli altri font X andra’ a pescare gli eventuali caratteri mancanti in Vera da font con caratteristiche simili! Io nei vari test fatti visualizzo di tutto… dall’armeno al cirillico, …non che ci capisca qualcosa :D

Emulatori di terminale

Se usate l’emulatore di terminale di KDE (konsole) o di GNOME (gnome-terminal) non dovete fare nessun passo aggiuntivo, al massimo potreste decidere di utilizzare un font piuttosto che un altro. consigliato “Bitstream Vera Mono”.

Io personalmente preferisco Aterm: leggerissima e molto configurabile, peccato che non supporti unicode! Ho dovuto quindi cercare altrove:

  • `xterm -u8` funziona bene ma xterm non mi piace
  • Eterm e’ troppo pesante e non mi piace nemmeno…

La soluzione che ho trovato e che vi consiglio e’ “urxvt”, altrimenti detta unicode-rxvt. In sostanza e’ una rxvt (quindi molto simile ad aterm) col supporto ai font unicode. Installare urxvt dovrebbe essere una sciocchezza visto che e’ impacchettata dalle maggiori distro, quindi quello che ci serve e’ solo un font unicode monospace e *bello* :)

Anche qui dopo varie ricerche su google ho trovato esattamente quello che mi serviva in un set di font chiamato “Bolkhov Unicode VGA font“, dal nome dello sviluppatore. Dal sito del progetto bisogna prelevare il file uni-vga.tgz, estrarlo e recuperare il file “u_vga16.bdf”, poi bisogna compiere i seguenti passi come utente root:

1 $: bdftopcf u_vga16.bdf -o u_vga16.pcf
2 $: gzip u_vga16.pcf
3 $: mv u_vga16.pcf.gz /usr/X11R6/lib/X11/fonts/misc/
4 $: cd /usr/X11R6/lib/X11/fonts/misc/
5 $: chmod a+r u_vga16.pcf.gz
6 $: mkfontdir

Spiegazione: 1 “compila” il font; 2 lo comprime; 3 lo sposta nella dir dei font “misc”; 4 5 e 6 si assicurano che il font sia installato e accessibile da tutti gli utenti.

A questo punto al successivo riavvio di X il font per urxvt e’ disponibile e accessibile per tutti, basta dire a urxvt di usarlo. Come per Aterm, io faccio partire urxvt con uno script, incollo qui la parte interessante:

#!/bin/bash
termfont="-bolkhov-vga-medium-r-normal--16-160-75-75-c-80-*-*"
urxvt -geometry 80x28 -tint grey -bc -vb -b 2 -w 2 +sb -tr -sh 30 -cr yellow -fg LightGrey -sl 1000 -fn $termfont -fb $termfont $* &

Ho chiamato questo script “term” e l’ho messo in /usr/bin, cosi’ il comando term, che potete impostare come “Terminale predefinito” in GNOME e KDE, richiama urxvt con varie opzioni (che capirete leggendo `man urxvt` e che non sono strettamente necessarie) e soprattutto con il nostro font unicode :)

Bene il sistema e’ perfettamente configurato e dovrebbe andare alla perfezione, voglio svelarvi ancora un altro “trucchetto”:

Abilitare il tasto Compose per fare alcuni trucchetti con la tastiera

Mi capita spesso di scrivere in spagnolo, e quindi ho necessita’ di usare caratteri come punto interrogativo ed sclamativo rovesciati e vocali con accento acuto.

Per fare questo bisogna abilitare il tasto Compose della nostra tastiera (supponendo che sia una classica 101/105) semplicemente aggiungendo questa riga nella sezione “Input Device” di /etc/X11/xorg.conf (se usate Xorg) oppure di /etc/X11/XF86Config(-4) (se usate XFree86):

Option "XkbOptions"  "compose:rwin"

Questo fara’ si che al …prossimo riavvio di X, il famoso “tasto winzozz” a destra di AltGr funga da tasto funzione per inserire quei caratteri di cui vi dicevo prima. ecco uno schema per ottenerli:

Compose + ' + a = á (a con accento acuto)
Compose + ' + o = ó (a con accento acuto - stessa cosa per le altre vocali)
Compose ? = ¿ (interrogativo rovesciato)
Compose ! = ¡ (esclamativo rovesciato)

Sono possibili letteralmente migliaia di combinazioni per inserire i caratteri piu’ strani.

Controllare che le applicazioni funzionino

In teoria se avete fatto tutto per bene queste sono le applicazioni che dovrebbero funzionare sicuramente:

  • Tutto GNOME (ottima la capacita’ di cambiare al volo da UTF-8 a locale nazionali)
  • Tutto KDE (ma ho notato che konqueror ha qualche problema)
  • Firefox e tutti i “derivati” di Mozilla (come GNOME)
  • L’editor Abiword
  • La suite OpenOffice.org
  • L’editor Vi
  • Il client irc Xchat (come GNOME)
  • Il client irc irssi
  • se avete qualche app da suggerirmi fate pure…

Ed ecco applicazioni che purtroppo *non* sono ancora pronte per UTF-8

  • Il visualizzatore di file testuali Less
  • L’emulatore di terminale Aterm (sigh)
  • Il client irc BitchX
  • se avete qualche app da suggerirmi fate pure…

Eccovi come promesso un link ad un file di testo per controllare se vi e’ riuscito indolore il passaggio ad UTF-8. UTF-8-demo.txt. Dovreste leggere alcune frasi in diverse lingue esotiche, vi consiglio di provare con Gedit Kate/Kwrite Firefox Konqueror e Vi. Non e’ detto che abbiate tutti i caratteri necessari a visualizzare *tutte* le lingue contenute nel file, ma da una buona misura di quello che potete fare :-)

Riferimenti e risorse:

http://www.jw-stumpel.nl/stestu.html
http://www.cl.cam.ac.uk/%7Emgk25/unicode.html
http://eyegene.ophthy.med.umich.edu/unicode/
http://www.maruko.ca/i18n/
http://www.alanwood.net/unicode/fonts.html

EOF

9 commenti

  1. Anonymous

    gran bell’articolo! interessante, chiarissimo. Il titolo poteva essere ‘UTF-8 for dummies’ :)

    topo

  2. Massimo

    Ciao, ho un piccolo problema, spero di spegarmi bene ;
    la mia configurazione = it_IT.UTF-8.
    faccio un mount su server WNT, ( non so il suo UNICODE )
    faccio un ls -1 ( da nt ) > verso linux creando un file.dat
    all’interno del file ex.:
    Appare Identit la à sparisce….
    hai una soluzione …..in maniera tale che l’unicode riprenda la à
    ti rigrazio in anticipo
    Massimo

  3. felipe

    @Massimo:
    provato a montare la partizione win come ISO-8859-15? guarda il manuale di mount per sapere come si fa

    effettivamente la compatibilità con winzoz è un po’ un macello

  4. Antonio

    Ho appena finito l’installazione di Fedora Core 6…
    Stranamente non mi funziona la lettera ‘d’. Ho provato tutte
    le lettere e simboli, tutto funziona ma la ‘d’ non va…OK la ‘D’.
    Sia da locale che via ssh il problema è identico.

  5. Zat

    Salve!
    Qualcuno sa dirmi invece come risolvere il problema con i nomi di files accentati creati in windows? Me lo fa sia sulle partizioni ntfs che con i cd/dvd.
    GRAZIE!

    PS- per il mount di ntfs uso ntfs-3g

  6. Davide

    Caro Felipe, è un pò che ti leggo, e ho deciso di darmi a Linux pure io. Installo Ubuntu Gutsy, faccio tutto quello che devo fare ed ecco il primo problema (spero di riuscire a risolvere gli eventuali altri da solo, ma questo proprio non riesco, nessuno mi aiuta). Ho installato i font di Windows, ho settato il charset in maniera corretta, tutto giusto, insomma. Però:

    Ho 3 blog su wordpress e su uno di questi, così come nel tuo, non riesco a visualizzare il simbolo dell’euro. Come mai?

    Su windows tutto ok. Su linux Firefox mi perde il simbolo dell’Euro e da quello che ho capito lo fa con alcuni template (in 2 dei miei blog infatti scrivo e leggo correttamente, mentre nel terzo e nel tuo campo ricerca in questa pagina vedo una sorta di trattino basso).

    Sei l’unico che utilizza Linux – Firefox – Blog su wordpress che ho trovato in rete e volevo sapere se anche a te fa questo scherzo e se c’è una soluzione.

    Grazie mille anticipatamente

Rispondi

%d blogger hanno fatto clic su Mi Piace per questo:
Vai alla barra degli strumenti