UNICODE
Section: Manuel de l'administrateur Linux (7) Updated: 25 juillet 2003 Index
NOM
DESCRIPTION
CARACTÈRES COMPOSÉS
NIVEAUX D'IMPLÉMENTATION
UNICODE SOUS LINUX
ZONE PRIVÉE
LITTÉRATURE
BOGUES
AUTEUR
VOIR AUSSI
TRADUCTION
NOM
Unicode - Le jeu de caractères universel.
DESCRIPTION
Le standard international
ISO 10646
définit le
Universal Character Set (UCS).
UCS
contient tous les caractères de tous les autres jeux de caractères standards.
Il garantit également une compatibilité circulaire, ce qui signifie que les
tables de conversions permettent de ne perdre aucune information quand une
chaîne de caractères est convertie dans un autre codage, puis reconvertie
en sens inverse.
UCS
contient les caractères nécessaires pour représenter presque tous les
langages connus. Il inclut non seulement les alphabets Latin, Grec,
Cyrillique, Hébreu, Arabe, Arménien, et Géorgien, mais également Chinois
Japonais, Hiragana, Katakana, Coréen, Hangul, Devanagari,
Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayam,
Thai, Lao, Khmer, Bopomofo, Tibétain, Runique, Ethiopien, Canadien
Syllabique, Cherokee, Mongol, Ogham, Myanmar, Sinhala, Thaana, Yi, et
d'autres. Pour les écritures pas encore intégrées, des recherches sont en
cours pour optimiser l'encodage et elles seront ajoutées. Ceci peut inclure
non seulement des hiéroglyphes et des langues indo-européennes, mais aussi
des écritures artistiques comme Tengwar, Cirth, ou Klingon. UCS contient
un grand nombre de symboles graphiques, typographiques, mathématiques, ou
scientifiques comme ceux fournis par TeX, Postscript, MS-DOS, MacIntosh,
Videotext, OCR, et de nombreux traitements de texte et système d'édition.
Le standard UCS (ISO 10646) décrit un jeu de caractères sur 31 bits,
constitué de 128
groupes
sur 24 bits, chacun d'eux divisés en 256
plans
sur 16 bits, composés de 256
rangées
de 8 bits, avec 256 positions en
colonne
contenant chacune un caractère. La première partie du standard
(ISO 10646-1)
définit les 65534 premiers codes (0x0000 à 0xFFFD) qui forme le
Basic Multilingual Plane (BMP),
c'est à dire le plan 0 du groupe 0. La partie 2 du standard
(ISO 10646-2)
ajoute des caractères au groupe 0, dans plusieurs
plans supplémentaires
dans l'espace 0x10000 à 0x10ffff. On ne prévoit pas d'ajouter de caractères
au-delà de 0x10ffff, ainsi sur l'ensemble de l'espace disponible, une faible
fraction du groupe 0 est effectivement utilisable dans un futur à court
terme. Le BMP contient tous les caractères des jeux habituels. Les plans
supplémentaires ajoutés par ISO 10646-2 ne contiennent que des caractères
exotiques pour des notations scientifiques spéciales, l'industrie de
l'impression, des protocoles de haut-niveau, et les besoins de quelques
enthousiastes.
La représentation des caractères UCS sur des mots de 2 octets est
appelée
UCS-2
(ne contient que les caractères du BMP), alors que
UCS-4
est la représentation sur un mot de 4 octets. De plus, il existe deux formes
UTF-8
pour les compatibilités avec les logiciels traitant l'ASCII et
UTF-16
pour les traitement des caractères au-delà de
0x10ffff par des logiciels UCS-2.
Les caractères UCS 0x0000 à 0x007F sont identiques à ceux du classique jeu
US-ASCII,
et ceux de l'intervalle 0x0000 à 0x00FF sont identiques à ceux du
jeu de caractères
ISO 8859-1 Latin-1.
CARACTÈRES COMPOSÉS
Quelques codes du
UCS
ont été assignés à des
caractères composés.
Ils sont semblables aux touches accentuées sans avance sur les machines à
écrire. Un caractère composé ajoute simplement un accent sur le caractère
précédent (contrairement aux machines à écrire qui agissent sur le caractère
suivant).
Les caractères accentués les plus importants ont leurs propres codes dans
l'UCS
néanmoins le mécanisme des caractères composés permet d'ajouter des accents
ou des signes diacritiques sur n'importe quel caractère de base.
Les caractères composés suivent toujours le caractère qu'ils modifient.
Par exemple, le caractère allemand A-Umlaut (A majuscule avec un tréma)
peut être représenté soit par le code UCS précomposé 0x00C4, ou par la
combinaison d'un A majuscule normal, suivi d'un
"tréma composé" (combining diaeresis), 0x0041 0x0308.
Les caractères composés sont essentiels par exemple pour l'encodage de
l'écriture Thai ou pour les notations mathématiques et l'alphabet phonétique
international.
NIVEAUX D'IMPLÉMENTATION
Comme tous les systèmes ne sont pas censés supporter les mécanismes comme les
caractères composés, ISO 10646-1 spécifie les trois niveaux d'implémentation
suivants pour l'UCS :
- Niveau 1
-
Les caractères composés et les caractères Hangul Jamo (un encodage spécial et
compliqué de l'écriture Coréenne, où les syllabes Hangul sont codées sur 2 ou
3 sous-caractères) ne sont pas supportés.
- Niveau 2
-
Comme le niveau 1, mais ce n'est qu'avec certaines écritures
(par exemple Hébreu, Arabe, Devangari, Bengali, Gurmukhi,
Gujarati, Oriya, Tamil, Telugo, Kannada, Malayalam, Thai et Lao) qu'il
y a des caractères composés non supportés.
- Niveau 3
-
Tous les caractères
UCS
sont supportés.
Le standard
Unicode 3.0
publié par le
Unicode Consortium
contient exactement le
Basic Multilingual Plane UCS
au niveau d'implémentation 3, comme décrit dans le ISO 10646-1:2000.
Unicode 3.1
ajoute les plans supplémentaires de l'ISO 10646-2. Le standard Unicode et
les rapports techniques publiés par le Consortium fournissent beaucoup
d'informations supplémentaires sur la sémantique et les recommandations
d'usage. Ils fournissent des guides et des algorithmes pour éditer, trier
comparer, normaliser, convertir et afficher des chaînes Unicode.
UNICODE SOUS LINUX
Sous Gnu/Linux le type C
wchar_t
est un entier 32 bits signé sous Linux, et sa valeur est
interprétée comme un code
UCS
(dans toutes les localisations), une convention signalée par la bibliothèque
C Gnu en définissant la constante
__STDC_ISO_10646__
comme indiquée dans le standard ISO C 99.
L'UCS/Unicode peut être employé comme l'ASCII dans les flux d'entrée/sortie,
les communications avec les terminaux, les fichiers de texte, les noms de
fichiers et les variables d'environnement dans un encodage multi-octets
compatible
UTF-8.
Pour signaler l'utilisation de l'UTF-8 comme encodage pour toutes les
applications, une
locale
correcte doit être configurée dans les variables d'environnement (ex.
"LANG=en_GB.UTF-8").
La fonction
nl_langinfo(CODESET)
renvoie le nom de l'encodage sélectionné.
Les fonctions de bibliothèques comme
wctomb(3)
et
mbsrtowcs(3)
peuvent être utilisées pour transformer les caractères
wchar_t
et les chaînes dans le jeu de caractères du système et inversement.
La fonction
wcwidth(3)
indique combien de positions (0-2) le curseur est avancé en sortant
un caractère.
Sous Linux, en général, seule une implémentation BMP de niveau 1 devrait
être utilisée pour le moment. Pour certaines écritures (en particulier Thai)
certains émulateurs de terminaux UTF-8 gèrent jusqu'à deux caractères
combinés avec une fonte ISO 10646 (niveau 2), mais il vaut mieux
préférer les caractères précomposés s'ils sont disponibles.
ZONE PRIVÉE
L'intervalle entre 0xE000 et 0xF8FF du
BMP,
ne sera jamais assigné a aucun caractère par le standard, et est
réservé pour un usage privé.
Pour la communauté Linux, cette zone privée a été subdivisée en deux.
L'intervalle entre 0xe000 et 0xefff peut être utilisé individuellement
par n'importe quelle application.
L'intervalle s'étendant de 0xF000 à 0xF8FF est réservé à Linux, et
les extensions y sont coordonnées entre les divers utilisateurs de Linux.
L'enregistrement des caractères assignés à la zone Linux est actuellement
maintenu par H. Peter Anvin < Peter.Anvin@linux.org>.
LITTÉRATURE
- *
-
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, 2000.
Ce sont les spécifications officielles de l'UCS.
Disponible en fichier PDF sur CD-ROM sur 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.
Un bon livre de référence à propos du langage C. La 4eme édition
couvre maintenant l'amendement 1 (1994) au standard ISO C
(ISO/IEC 9899:1990) qui ajoute un grand nombre de fonctions de
bibliothèque C pour manipuler les jeux de caractères, mais ne couvre
pas encore C99.
- *
-
Unicode Technical Reports.
-
http://www.unicode.org/unicode/reports/
- *
-
Markus Kuhn: UTF-8 and Unicode FAQ for Unix/Linux.
-
http://www.cl.cam.ac.uk/~mgk25/unicode.html
Fournit les informations sur la liste de diffusion
linux-utf8,
le meilleur endroit pour trouver des conseils sur l'utilisation de l'Unicode
sous Linux
- *
-
Bruno Haible: Unicode HOWTO.
-
ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html
BOGUES
Au moment de la rédaction de cette page, le support libc de Linux
pour les locales
UTF-8
était mûr, et le support XFree86 était avancé, mais le travail nécessaire
pour rendre les applications (principalement les éditeurs) compatibles avec
l'UTF-8 était en cours. Le support général actuel de
UCS
sous Linux fournit les caractères double-largeur CJK, et parfois les
surcharges des caractères combinés, mais ne permet pas l'écriture de droite
à gauche ou les ligatures nécessaires en Hébreu, Arabe, ou Indien. Ces
écritures ne sont pour le moment supportées que par certaines applications
graphiques (visualisateurs HTML, traitements de texte) avec des moteurs
d'affichage perfectionnés.
AUTEUR
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1997-2003.
|