UNICODE(7)

NOM
Unicode - Le sur-ensemble unifie de caracteres sur 16 bits.

DESCRIPTION
Le standard international ISO 10646 definit le Universal Character Set (UCS). UCS contient tous les caracteres de tous les autres jeux de caracteres standards. Il garantit egalement une compatibilite circulaire, ce qui signifie que les tables de conversions permettent de ne perdre aucune information quand une chaine de caracteres est convertie dans un autre codage, puis reconvertie en sens inverse. UCS contient les caracteres necessaires pour representer presque tous les langages connus. En plus des langues utilisant une extension de l'alphabet latin, il inclut : Grec, Cyrillique, Hebreu, Arabe, Armenien, Gregorien, Japonais, Chinois, Hiragana, Katakana, Coreen, Hangul, Devangari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayam, Thai, Lao, Bopomofo, et d'autres encore. Un travail en cours permettra d'inclure les caracteres des langages Tibetain, Khmer, Runique, Ethiopien, Hieroglyphes, diverses langues Indo-Europeennes et de nombreux autres. Pour la plupart de ces derniers alphabets, l'encodage n'etait pas encore tres clair quand le standard fut publie en 1993. En plus des caracteres necessaires a ces langages, furent inclus un grand nombre de symboles graphiques, typographiques, mathematiques, ou scientifiques comme ceux fournis par TeX, Postscript, MS-DOS, MacIntosh, Videotext, OCR, et de nombreux traitements de texte. Des codes speciaux ont ete ajoutes pour garantir la compatibilite circulaire avec les autres jeux de caracteres. le standard UCS (ISO 10646) decrit un jeu de caracteres sur 31 bits, neanmoins actuellement seuls les 65534 premiers codes (0x0000 a 0xFFFD) ont ete assignes. C'est ce que l'on appelle le Basic Multilingual Plane (BMP). On espere qu'un petit nombre seulement de caracteres exotiques (par exemple les hieroglyphes) utilises a des fins scientifiques, prendront place en dehors de la BMP 16 bits. Les caracteres UCS 0x0000 a 0x007F sont identiques a ceux du classique jeux de caracteres US-ASCII, et ceux de l'intervalle 0x0000 a 0x00FF sont identiques a ceux du jeu de caracteres ISO 8859-1 Latin-1. [NDT] : Bonne nouvelle pour les francophones !

CARACTERES COMPOSES
Quelques codes du UCS ont ete assignes a des caracteres composes. Ils sont semblables aux touches accentuees sans avance sur les machines a ecrire. Un caractere compose ajoute simplement un accent sur le caractere precedent (contrairement aux machines a ecrire qui agissent sur le caractere suivant). Les caracteres accentues les plus importants ont leurs propres codes dans l'UCS, neanmoins le mecanisme des caracteres composes permet d'ajouter des accents ou des signes diacritiques sur n'importe quel caractere de base. Les caracteres composes suivent toujours le caractere qu'ils modifient. Par exemple, le caractere allemand A-Umlaut (A majuscule avec un trema) peut etre represente soit par le code UCS precompose 0x00C4, ou par la combinaison d'un A majuscule normal, suivi d'un "trema compose" (combining diaeresis), 0x0041 0x0308.

NIVEAUX D'IMPLEMENTATION
Comme tous les systemes ne sont pas censes supporter les mecanismes comme les caracteres composes, ISO 10646 specifie les trois niveaux d'implementation suivants pour l'UCS :

Niveau 1
    Les caracteres composes et les caracteres Hangul Jamo (un encodage special et complique de l'ecriture Coreenne, ou les syllabes Hangul sont codees sur 2 ou 3 sous-caracteres) ne sont pas supportes.

Niveau 2
    Comme le niveau 1, mais ce n'est qu'avec certaines ecritures (par exemple Hebreu, Arabe, Devangari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugo, Kannada, Malayalam, Thai et Lao) qu'il y a des caracteres composes non supportes.

Niveau 3
    Tous les caracteres UCS sont supportes.

Le standard Unicode 1.1, publie par le Unicode Consortium contient exactement le Basic Multilingual Plane UCS au niveau d'implementation 3, comme decrit dans le ISO 10646. Unicode 1.1 ajoute egalement quelques definitions semantiques pour certains caracteres par rapport au ISO 10646.

UNICODE SOUS LINUX
Sous Linux, seul le niveau d'implementation 1 BMP devrait etre utilise pour le moment, afin de garder la complexite des caracteres combines raisonnable. Les niveaux d'implementation superieurs ne sont pas envisages comme formats speciaux de traitement de textes, mais comme un jeu de caracteres generique du systeme. Le type C wchar_t est un entier 16 bits non signe sous Linux, et sa valeur est interpretee comme un code BMP de niveau 1 UCS. La localisation (voir locale(7)) indique si le codage du jeu de caracteres est par exemple UTF-8 ou ISO 8859-1. Les fonctions de bibliotheques comme wctomb, mbtowc, ou wprintf peuvent etre utilisees pour transformer les caracteres wchar_t et les chaines dans le jeu de caracteres du systeme et inversement.

ZONE PRIVEE
L'intervalle 0xE000 et 0xF8FF du BMP, ne sera jamais assigne a aucun caractere par le standard, et est reserve pour un usage prive. Pour la communaute Linux, cette zone privee a ete subdivisee en deux. L'intervalle entre 0xe000 et 0xefff peut etre utilise individuellement par n'importe quelle application. L'intervalle s'etendant de 0xF000 a 0xF8FF est reserve a Linux, et les extensions y sont coordonnees entre les divers utilisateurs de Linux. L'enregistrement des caracteres assignes a la zone Linux est actuellement maintenu par H. Peter Anvin <Peter.Anvin@linux.org>, Yggdrasil Computing, Inc. Il contient quelques codes graphiques DEC VT100 absents de l'Unicode, fournit l'acces direct aux caracteres dans le buffer de fontes de la console, et inclut les caracteres utilises par certaines ecritures avancees comme le Klingon.

LITERATURE

*   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. Ce sont les specifications officielles de l'UCS. Tres officiel, tres epais, et tres cher. Voir www.iso.ch pour les commandes.

*   The Unicode Standard - Worldwide Character Encoding Version 1.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 1991. Il existe deja un Unicode 1.1.4 disponible. Les modifications apportees au livre 1.0 sont disponibles sur ftp.unicode.org. Unicode 2.0 sera publie en 1996.

*   S. Harbison, G. Steele. C - A Reference Manual. Fourth edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3. Un bon livre de reference a propos du langage C. La 4eme edition couvre maintenant l'amendement 1 (1994) au standard ISO C (ISO/IEC 9899:1990) qui ajoute un grand nombre de fonctions de bibliotheque C pour manipuler les jeux de caracteres.

BUGS
Au moment de la redaction de cette page, le support libc de Linux pour UCS est loin d'etre complet

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

VOIR AUSSI
utf-8(7)