Provided by:
manpages-it_2.80-3_all 
NOME
Unicode - l’insieme universale di caratteri
DESCRIZIONE
Lo standard internazionale ISO 10646 definisce l’ Insieme universale di
caratteri (Universal Character Set). UCS contiene tutti i caratteri di
tutti gli altri standard per insiemi di caratteri. Garantisce anche
compatibilità ad andata e ritorno, cioè è possibile costruire tavole di
conversione in modo tale da non perdere nessuna informazione passando
da una qualsiasi altra codifica a UCS e viceversa.
UCS contiene i caratteri necessari alla rappresentazione di
praticamente tutte le lingue conosciute. Esso comprende non solo i
caratteri romano, greco, cirillico, ebreo, arabo, armeno e georgiano,
ma anche alfabeti ideografici cinese, giapponese e coreano han, e i
caratteri hiragana, katakana, hangul, devanagari, bengali, gurmukhi,
gujarati, oriya, tamil, telugu, kannada, malayalam, thai, lao, khmer,
bopomofo, tibetano, runico, etiopico, canadese sillabico, cherokee,
mongolo, ogham, myanmar, sinhala, thaana, yi e altri. Per caratteri non
ancora coperti la ricerca su come codificarli al meglio è ancora in
corso e prima o poi verranno aggiunti. Ciò potrebbe includere non solo
geroglifici e vari linguaggi storici indo-europei, ma anche alcuni
caratteri artistici selezionati come tengwar, cirth e klingon. UCS
copre anche un grande numero di simboli grafici, tipografici,
matematici e scientifici, inclusi quelli forniti da TeX, Postscript,
APL, MS-DOS, MS-Windows, Macintosh e font OCR, oltra a molti sistemi di
elaborazione testi e di pubblicazione, e altri ne sono stati aggiunti.
Lo standard UCS (ISO 10646) descrive una architettura di caratteri a 31
bit consistente di 128 grupi a 24 bit, ciascuno diviso in 256 piani a
16 bit, composti da 256 linee a 8 bit, con 256 colonne , una per
ciascun carattere. La parte 1 dello standard (ISO 10646-1) definisce le
prime 65534 posizioni (da 0x0000 a 0xfffd), che formano il Piano Multi-
linguistico di Base (BMP), ovvero il piano 0 del gruppo 0. La parte due
dello standard (ISO 10646-2) aggiunge caratteri al gruppo 0 al di fuori
del BMP in numerosi piani supplementari nel range da 0x10000 a
0x10ffff. Non ci sono piani per l’aggiunta di caratteri allo standard
oltre 0x10ffff, quindi, dell’intero spazio codice, solo una piccola
frazione del gruppo 0 verrà usata nel prossimo futuro. Il BMP contiene
tutti i caratteri che si trovano negli altri insiemi di caratteri
comunemente usati. I piani supplementari aggiunti da ISO 10646-2
coprono solo caratteri esotici per speciali bisogni scientifici, stampa
dizionario, industria editoriale, protocolli di livello più elevato, e
entusiasti.
La rappresentazione di ciascun carattere UCS come parola di 2 byte è
chiamato forma UCS-2 (solo per i caratteri BMP), mentre UCS-4 è la
rappresentazione di ciascun carattere in una parola a 4 byte. In
aggiunta esistono due forme di codifica UTF-8 per retrocompatibilitÃ
con software di processamento ASCII e UTF-16 per la gestione della
retrocompatibilità dei caratteri non BMP fino a 0x10ffff del software
UCS-2.
I caratteri UCS nelle posizioni da 0x0000 a 0x007f coincidono con
quelli classici di US-ASCII e i caratteri da 0x0000 a 0x00ff coincidono
con quelli dell’insieme ISO 8859-1 Latin-1.
Caratteri combinanti
Alcuni codici di UCS sono stati assegnati a caratteri combinanti.
Simile ad un tasto accentato che non avanza in una macchina da
scrivere, un carattere combinante aggiunge un accento al carattere
precedente. I caratteri accentati più importanti hanno un loro codice
in UCS, ma questo meccanismo permette di aggiungere accenti a altri
segni diacritici a qualsiasi carattere. I caratteri combinanti seguono
sempre il carattere che modificano. Ad esempio, il carattere tedesco Ä
(«A maiuscola romana con dieresi») può essere rappresentato sia col
codice UCS precomposto 0x00c4, oppure come combinazione di una normale
«A maiuscola romana» seguita da una «dieresi combinante»: 0x0041
0x0308.
I caratteri combinanti sono essenziali per esempio nella codifica dei
caratteri Thai o per la composizione matematica e per gli utenti
dell’alfabeto internazionale fonetico.
Livelli di implementazione
Siccome non ci si aspetta che tutti i sistemi possano supportare
meccanismi avanzati come i caratteri combinanti, ISO 10646-1 specifica
tre livelli d’implementazione per UCS:
Livello 1
I caratteri combinanti Hangul Jamo (una codifica variante
dell’alfabeto coreano, dove le sillabe Hangul sono codificate
come trio o coppia di codici vocale/consonante) non sono
supportati.
Livello 2
Come il livello 1, ma alcuni caratteri combinanti sono
permessi in alcuni alfabeti (per es., ebraico, arabo,
devangari, bengalese, gurmuco, gugiarato, oriya, tamil,
telugo, kannada, malese, tailandese e laotiano).
Livello 3
Tutti i caratteri UCS sono supportati.
Lo Standard Unicode 3.0 pubblicato dall’ Unicode Consortium contiene
esattamente il piano multi-linguistico di base UCS al livello 3
d’implementazione, come descritto in ISO 10646-1:2000. Unicode 3.1 ha
aggiunto i piani supplementari dell’ISO 10646-2. Lo standard Unicode e
i raporti tecnici pubblicati dall’Unicode Consortium forniscono molte
informazioni aggiuntive sulla semantica e sugli usi raccomandati dei
vari caratteri. Essi forniscono linee guida e algoritmi per editing,
ordinamento, comparazione, normalizzazione, conversione e
visualizzazione delle stringhe Unicode.
Unicode sotto Linux
Sotto GNU/Linux, il tipo C wchar_t è un tipo intero 32-bit con segno. I
suoi valori sono sempre interpretati dalla libreria C come valori del
codice UCS (in tutte le localizzazioni), una convenzione che è
segnalata alle applicazioni dalla libreria C di GNU definendo la
costante __STDC_ISO_10646__ come specificato nello standard ISO C 99.
UCS/Unicode può essere usato come semplice ASCII nei flussi
input/output, comunicazioni tra terminali, file di testo, nomi file e
variabili d’ ambiente nella codifica multi-byte UTF-8 compatibile
ASCII. Per segnalare l’uso di UTF-8 come codifica carattere a tutte le
applicazioni deve venire selezionata una localizzazione appropriata
attraverso variabili d’ambiente (es., "LANG=en_GB.UTF-8").
La funzione nl_langinfo(CODESET) restituisce il nome della codifica
selezionata. Le funzioni di libreria come wctomb(3) e mbsrtowcs(3)
possono essere usate per trasformare i caratteri interni e le stringhe
wchar_t nella codifica dei caratteri di sistema e viceversa e
wcwidth(3) dice di quante posizioni (0–2) il cursore viene avanzato
dall’output di un carattere.
In Linux in generale al momento bisognerebbe usare il BMP solo al
livello 1 di implementazione. Alcuni emulatori di terminale UTF-8 e
font ISO 10646 (livello 2) supportano anche fino a due caratteri
combinanti per base caratteri per certi alfabeti (in particolare thai),
ma, in generale, i caratteri precomposti devono essere preferiti ove
disponibili (Unicode la chiama Normalization Form C).
Area privata
L’intervallo da 0xe000 a 0xf8ff nel BMP, non verrà mai assegnato dallo
standard a nessun carattere ed è riservato per uso privato. Per la
comunità Linux questo intervallo è stato ulteriormente suddiviso
nell’intervallo da 0xe000 a 0xefff, che può essere usato dall’utente
finale, e nell’area Linux nell’intervallo da 0xf000 a 0xf8ff, le cui
estensioni sono coordinate fra tutti gli utenti di Linux. Il registro
dei caratteri assegnati all’area Linux è al momento mantenuto da H.
Peter Anvin <Peter.Anvin@linux.org>.
Bibliografia
* Information technology — Universal Multiple-Octet Coded Character Set
(UCS) — Part 1: Architecture and Basic Multilingual Plane.
International Standard ISO/IEC 10646-1, International Organization
for Standardization, Geneva, 2000.
Questa è la specifica ufficiale di UCS. Disponibile come file PDF su
CD-ROM da http://www.iso.ch/.
* The Unicode Standard, Version 3.0. The Unicode Consortium, Addison-
Wesley, Reading, MA, 2000, ISBN 0-201-61633-5.
* S. Harbison, G. Steele. C: A Reference Manual. Fourth edition,
Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3.
A good reference book about the C programming language. The fourth
edition covers the 1994 Amendment 1 to the ISO C 90 standard, which
adds a large number of new C library functions for handling wide and
multi-byte character encodings, but it does not yet cover ISO C 99,
which improved wide and multi-byte character support even further.
* Unicode Technical Reports.
http://www.unicode.org/unicode/reports/
* Markus Kuhn: UTF-8 e Unicode FAQ per Unix/Linux.
http://www.cl.cam.ac.uk/~mgk25/unicode.html
Fornisce informazioni sulla sottoscrizione alla mailing list linux-
utf8 che è il miglior posto in cui guardare per consigli sull’uso di
Unicode sotto Linux.
* Bruno Haible: Unicode HOWTO.
ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html
BACHI
_Al momento dell’ultima revisione di questa man page, la libreric GNU C
di supporto per le localizzazioni UTF-8 era matura e il supporto
XFree86 era ad uno stadio avanzato, ma il lavoro per rendere le
applicazioni (specialmente gli editor) adatte all’uso con le
localizzazioni UTF-8 era ancora in corso. Il supporto generale corrente
a UCS sotto Linux di solito fornisce caratteri per CJK a doppia
ampiezza, e talvolta anche semplici caratteri combinanti, ma
solitamente non include il supporto per alfabeti con direzione da
destra a sinistra o requisiti per la sostituzione della legatura come
negli alfabeti ebraico, arabo, o Indic. Questi alfabeti attualmente
sono supportati solo in certe aplicazioni GUI (visualizzatori HTML,
word processor) con motori sofisticati di disegno del testo.
AUTORE
Markus Kuhn <mgk25@cl.cam.ac.uk>
VEDERE ANCHE
setlocale(3), charsets(7), utf-8(7)