UNICODE(7)

NOME
Unicode - il super insieme di caratteri unificato a 16 bit

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. A parte le numerose lingue che fanno uso di estensioni dell'alfabeto romano, è possibile rappresentare anche i seguenti alfabeti e lingue: greco, cirillico, ebraico, arabo, armeno, gregoriano, giapponese, cinese, hiragana, katakana, coreano, hangul, devangari, bengalese, gurmuco, gugiarato, oriya, tamil, telugu, kannada, malese, tailandese, laotiano, bopomofo e numerosi altri. Si sta lavorando per aggiungere alfabeti come tibetano, khmer, runico, etiope, geroglifici, varie lingue indo-europee ed altri. Non era ben chiaro come codificare molti di questi ultimi alfabeti, quando lo standard è stato pubblicato nel 1993. In aggiunta ai caratteri richiesti da questi alfabeti, sono stati inclusi anche un gran numero di simboli grafici, tipografici, matematici e scientifici come quelli di TeX, PostScript, MS-DOS, Macintosh, Televideo, OCR (riconoscimento ottico dei caratteri) e di altri sistemi di elaborazione testi; e infine tutti quei codici speciali necessari a garantire una compatibilità ad andata e ritorno per tutti gli standard esistenti per insiemi di caratteri. Lo standard UCS (ISO 10646) descrive un'architettura di caratteri a 31 bit; però, a tutt'oggi, solo le prime 65534 posizioni (da 0x0000 a 0xfffd), chiamate Piano Multi-linguistico di Base (Basic Multilingual Plane), sono state assegnate a caratteri, e ci si aspetta che solo caratteri particolarmente esotici destinati a scopi scientifici particolari (geroglifici, per esempio) vengano in futuro sistemate al di fuori di questo BMP a 16 bit. 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 posto 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.

LIVELLI DI IMPLEMENTAZIONE
Siccome non ci si aspetta che tutti i sistemi possano supportare meccanismi avanzati come i caratteri combinanti, ISO 10646 specifica tre livelli d'implementazione per UCS:

Livello 1
    I caratteri combinanti e Jamo Hangul (una codifica speciale e più complicata dell'alfabeto coreano, dove le sillabe Hangul sono rappresentate con due o tre sotto-caratteri) 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 1.1 pubblicato dal Consorzio Unicode contiene esattamente il piano multi-linguistico di base ICS al livello 3 d'implementazione, come descritto in ISO 10646. Unicode 1.1 aggiunge pure alcune definizioni semantiche alle definizioni ISO 10646 di certi caratteri.

UNICODE SOTTO LINUX
Al momento, in Linux bisognerebbe usare l' BMP solo al livello 1 d'implementazione, al fine di mantenere la complessità d'implementazione dei caratteri combinanti al minimo. I livelli superiori d'implementazione sono adatti a formati speciali di elaborazione testi, ma non come insieme generico di caratteri di sistema. Il tipo di C wchar_t è in Linux di tipo unsigned integer a 16 bit e i suoi valori vengono interpretati come codici BMP di livello 1 UCS. L'impostazione del locale specifica se la codifica di carattere del sistema è ad esempio UTF-8 o ISO 8859-1. Funzioni di libreria come wctomb, mbtowc, o wprintf possono essere usate per trasformare i caratteri interni wchar_t e le stringhe nella di carattere del sistema e viceversa.

AREA PRIVATA
L'intervallo da 0xe000 a 0xf8ff nel BMP, non verrà mai assegnato dallo standard a nessun carattere ed è riservato per uso privato. Nella comunità Linux, questo intervallo è stato a suo volta suddiviso tra l'intervallo da 0xe000 a 0xefff, che può essere usato dall'utente finale, e l'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>, Yggdrasil Computing, Inc. Contiene alcuni caratteri grafici DEC VT100 che mancano in Unicode, dà accesso diretto al buffer di caratteri della console e contiene i caratteri usati da alcuni alfabeti come quello Klingon.

BIBLIOGRAFIA
* Information technology - Universal Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and Basic Multilingual Plane. International Standard ISO 10646-1, International Organization for Standardization, Geneva, 1993. Questa è la definizione ufficiale di UCS. Piuttosto ufficiale, piuttosto voluminosa, piuttosto cara. Per informazioni su come ordinare, contattare www.iso.ch

*   The Unicode Standard - Worldwide Character Encoding Version 1.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 1991. È già disponibile Unicode 1.1.4. Le modifiche al libro sulla versione 1.0 sono disponibili da ftp.unicode.org Unicode 2.0 sarà nuovamente pubblicato come libro nel 1996.

*   S. Harbison, G. Steele. C - A Reference Manual. Fourth edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3. Un ottimo libro di referenza sul linguaggio C. La quarta edizione copre il primo emendamento del 1994 allo standard ISO C (ISO/IEC 9899:1990) che aggiunge un gran numero di nuove funzioni di libreria C per maneggiare caratteri multi-byte.

BACHI
Al momento in cui questa pagina di manuale è stata scritta, il supporto della libc di Linux per era ben lungi dall'essere completo.

AUTORE
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>

VEDERE ANCHE
utf-8(7)