CG 1995 20 1 0
CG 1995 20 1 0
CG 1995 20 1 0
GUTenberg
m CODAGE DES CARACTÈRES ET
MULTI-LINGUISME : DE L’ASCII À UNICODE
ET ISO/IEC-10646
P Jacques André, Michel Goossens
Cahiers GUTenberg, n 20 (1995), p. 1-53.
<http://cahiers.gutenberg.eu.org/fitem?id=CG_1995___20_1_0>
Résumé. Après avoir rappelé les notions de glyphe et de caractère, nous étudions les
normes classiques d’échange de caractères, telles que A SCII ou I SO L ATIN-1. Puis, nous dé-
crivons U NICODE, une norme de codage 16-bits qui a comme but de représenter tous les
caractères des langues vivantes pour permettre l’échange sans problèmes de textes rédigés
dans les langues parlées des différentes parties du monde. I SO /I EC-10646 est une généra-
lisation à quatre octets – dont les 2 premiers octets coincident avec ceux d’U NICODE – qui
permet aussi la représentation de caractères spéciaux et anciens en les codant sur 32 bits.
Abstract. After revieiwing the difference between glyphs and characters, we discuss charac-
ter exchange standards, like A SCII and I SO -L ATIN 1. Then we turn our attention to U NICODE,
a 16-bit encoding standard that will eventually represent the characters of all living languages
and thus will make it possible to exchange without problems texts written in the languages
spoken in various parts of the world. I SO / I EC-10646 is a 4-byte generalisation—the first two
bytes coinciding with U NICODE—but whose full 32-bits wide encoding space allows the re-
presentation of special or ancient characters.
1. Introduction
La base de données Ethnologue [24] mentionne plus de 6000 langues parlées dans le
monde (l’arborescence génétique de toutes ces langues est disponible sur Internet, tout
comme la base de données elle-même 1 ). La plupart de ces langues n’a qu’une tradition
orale et, selon des spécialistes lors d’un récent congrès organisé par l’U NESCO, plus de
la moitié d’entre elles auront disparu avant la fin du siècle sous l’influence de la radio
et de la télévision, voire de pressions culturelles, sociales et économiques de langues
plus « fortes ». Nous donnons en annexe, table 11, les codes permettant de désigner les
langues les plus importantes adoptés par la norme I SO 639 et la proposition d’extension
à trois lettres.
1
Information générale : gopher://sil.org/11/gopher_root/ethnologue/,
arborescence : ftp://nestroy.wu-wien.ac.at/pub/src/Languages/linguist/wgt.lst.gz,
base de données : ftp://ftp.std.com/obi/Ethnologue/eth.Z.
1
Jacques ANDRÉ et Michel GOOSSENS
La dernière question montre bien le problème : notre Américain n’aura probablement pas
ce caractère « Œ » sur son imprimante. Ou plutôt, il faudra qu’il utilise un filtre ou qu’il
« bidouille » quelques tables de codage (car en fait, contrairement à ce que beaucoup
croient, ces caractères « Œ, œ » existent bel et bien dans la majorité des fontes com-
mercialisées). Mais que dire si un Chinois envoie ce même mot « Œil », écrit en chinois,
vers un pays arabe ?
Bien qu’il y en ait beaucoup d’autres, les principales normes qui ont été définies sont
1. les normes pour la saisie des caractères (notamment pour les claviers) ;
2
Nous utilisons ici le mot « norme » de préférence à celui de « standard », non pas parce que ce dernier n’est pas
français, mais parce qu’il a pris une connotation de « normal », « banal » (comme le four) et parce qu’il ne reflète pas,
en français, tout ce qu’implique de « normatif » le mot norme ! Les « normes » sont définies par des institutions de nor-
malisation, en France l’Afnor (Association Française de NORmalisation, Tour Europe, 92049 Paris La Défense cedex), en
Allemagne DIN (Deutsches Institut für Normalisation), aux USA l’ASA (American Standard Association) – les photographes
connaissent bien ces deux dernières ! – etc., tous ces organismes étant regroupés au sein d’un organisme mondial : l’ISO
(International Standard Organization), dont le siège est à Genève. D’autres organismes, comme le CCITT (Comité Consul-
tatif International des Télégraphes et Téléphones), ou l’Ecma (Consortium des constructeurs européens d’ordinateurs) ont
aussi défini des normes liées aux caractères. Enfin, il existe des « standards » de facto (par exemple E BCDIC ou PostScript)
mais qui n’ont pas le statut légal d’une norme !
2
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
Ici, nous allons essentiellement parler des normes d’échange, dont les plus connues
sont A SCII, I SO L ATIN 1 et maintenant U NICODE ou I SO/I EC-10646. Nous citerons toutefois
d’autres normes, réelles ou de facto (voir par exemple les sections 6.3 ou 7.1).
Mais pour commencer, voici quelques rappels.
2. Concepts de base
Le principe de l’écriture 3 de la plupart des langues utilisant l’alphabet latin est très
simple : les caractères s’écrivent horizontalement, de gauche à droite, sans chevauche-
ment ni changement de direction ; les seuls éléments hors de la ligne sont les signes
diacritiques qui se placent au-dessus ou au-dessous de certaines lettres. Même dans ce
dernier cas, le nombre de combinaisons différentes dans une langue donnée est en gé-
néral assez limité pour qu’on puisse donner un code spécifique à chaque lettre combinée
à un signe diacritique.
Cependant, en général les systèmes d’écriture ne sont pas si simples. Certaines
langues, bien qu’utilisant une écriture basée sur l’alphabet latin, ont une structure plus
complexe. Ainsi le vietnamien nécessite-t-il souvent deux signes diacritiques sur une
seule lettre, l’un étant un signe tonal. L’alphabet phonétique international (IPA) positionne
des éléments diacritiques en indice inférieur ou supérieur ou utilise des signes liant plu-
sieurs lettres. Par ailleurs, il n’est pas possible d’énumérer toutes les combinaisons entre
lettres et signes diacritiques pour IPA, puisque le système permet la création de nouvelles
combinaisons inédites si nécessaire.
L’arabe et l’hébreu s’écrivent de droite à gauche, mais d’une part les chiffres et
d’autre part l’insertion de caractères latins peuvent nécessiter un changement du sens
d’écriture dans la même ligne. Seulement les consonnes et voyelles longues sont notées
dans ces deux langues ; les voyelles courtes, si elles sont exprimées, sont notées avec
des points au-dessus ou en-dessous des consonnes. Les lettres arabes relèvent plus de
la tradition calligraphique que de la typographie ; elles ont des formes initiales, médiales,
finales et isolées distinctes 4 ; l’hébreu connaı̂t aussi quelques-unes de ces formes ; le
grec en garde deux.
3
Au mot « écriture » est attaché une polysémie évidente. Mais, même aujourd’hui, ou surtout aujourd’hui ?, des lin-
guistes se posent des questions sur l’acceptation du sens de ce mot. Voir par exemple les travaux de Jacques Anis à
Nanterre [6].
4
Certaines propositions de simplification de l’écriture arabe essaient de remédier à cette situation, en utilisant des
lettres à deux formes (cf. [45] et [51, fig. 76]) ou même une seule forme (cf. [51, fig. 57], caractères particulièrement
beaux). On reviendra là-dessus dans le Cahier GUTenberg dédié à TEX et l’écriture arabe.
3
Jacques ANDRÉ et Michel GOOSSENS
Parmi les autres systèmes d’écriture complexes, citons ceux dérivés du brâhmı̂ (la
plus ancienne écriture de l’Inde classique) qui contiennent beaucoup de ligatures, ou le
syllabaire hangul du coréen, où les lettres de base se combinent pour former des blocs
syllabiques [13, 15, 18, 19, 30, 47, 48].
Autrefois, les caractères en plomb étaient mis dans des casses (comme celle de la
figure 1) qui étaient « normalisées » : un compositeur trouvait toujours les mêmes lettres
au même endroit dans une casse parisienne. On peut dire qu’à chaque caractère était
implicitement associé un certain code (x; y), x et y étant les coordonnées de la case cor-
respondante dans la casse. On trouvera dans [9] et [59] quelques éléments sur le contenu
de ces casses qui avaient environ entre 90 et 150 cassetins.
Vers 1900, les porte-matrices de la Linotype (figure 2), puis les films des photocom-
poseuses firent de même : chaque caractère (matrice ou lettre gravée sur le film) était
assigné à une place précise. Au lieu de parler de x; y, on a simplement numéroté ces
,
cases de 1 à n (ou plutôt de 0 à n 1), n étant en général une puissance de 2.
Mais entre la Linotype et les premières photocomposeuses est apparu quelque
chose dont on n’a peut-être pas bien signalé l’importance : en 1932 le système TeleType-
Setter (TTS) utilisa les premières bandes perforées (à 6 canaux) pour conserver et trans-
mettre les textes « composés » [59]. Même si cette technologie n’a pas vraiment été
4
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
utilisée avant 1950, c’est, à notre avis, la première apparition de la notion d’échange de
textes balisés. Le soucis d’homogénéiser les diverses balises utilisées par la suite par les
photocomposeuses a d’ailleurs conduit à deux types extrèmes de normes (dont nous ne
parlerons plus ici) : SGML et les PDL (langages de description de page comme PostScript
ou SPDL ; voir [20]). Par contre, cette notion de texte balisé correspond plutôt à la notion
d’« échange » tandis que la notion de casse ou de matrice correspond à celle de table de
codage des fontes (voir section 2.4).
1. un numéro de code associé à un caractère, par exemple (en octal) 073 pour « ; »,
101 pour « A », 102 pour « B », 340 pour « à », etc.
5
Jacques ANDRÉ et Michel GOOSSENS
Un « caractère » est une unité d’information utilisée pour coder du texte, alors qu’un
« glyphe » est une forme géométrique (une collection homogène de telles formes consti-
tue une police) utilisée pour présenter un texte. Le processus de présentation nécessite
une application (par nécessairement bi-univoque) des caractères vers des glyphes.
6
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
En fait cette notion correspond à celle d’« œil » en typographie française. L’encyclopé-
die La chose imprimée donne par exemple comme première définition à œil : « Quelle que
soit l’origine d’une composition (chaude ou froide), l’œil des caractères est ce que l’on voit
sur le papier. L’œil d’un A ou d’un a, d’un B ou d’un b, etc. est le signe imprimé permet-
tant d’identifier chacune de ces lettres respectivement en tant que A, a, B, b, etc. » [16].
Mais le néologisme américain « glyphe » commence à être très employé, ainsi le gardons
nous ici. D’autant qu’il a quand même l’avantage de supprimer la polysémie du mot œil !
Cette distinction conduit à deux principes pour la création d’un jeu de caractères
(dans le cadre de normes d’échange) :
2. les variations de forme (des glyphes multiples) exigées par une présentation de
qualité supérieure d’un texte ne doivent pas être codées comme des caractères
séparés si leurs significations sont identiques.
Notons également que cette notion permet de traiter le cas des caractères compo-
sites utilisés, par exemple, pour les formules mathématiques de TEX : un symbole inté-
grale, une grande accolade, etc. correspondent à un caractère ; mais leur représentation
est formée de glyphes en nombre variable. Pour une intégrale, par exemple, on aura la
crosse supérieure, plusieurs barres verticales et la crosse inférieure. Il n’y a pas de glyphe
« intégrale », mais trois glyphes formant une intégrale.
Une anecdote : comme nous le verrons, le code A SCII comprend des caractères
(comme celui dont le nom est BELL ; voir ces noms au début de la table 10 en annexe)
qui ne sont pas imprimables, c’est-à-dire qui n’ont pas de glyphe associé. Mais U NICODE
a ajouté une série de caractères (Pictures for Control Codes) dont le glyphe est le nom
du caractère (voir par exemple, dans ce Cahier [9, figure 3]).
7
Jacques ANDRÉ et Michel GOOSSENS
8
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
Chappe ou les fanions de la marine (voir figure 3) ; mais ce sont les alphabets Morse et
ceux du Télex qui auront été les premiers « alphabets internationaux » 5 . Ces alphabets,
à 6 moments (donc avec 26 = 64 caractères) ne comprenaient que les lettres majus-
cules, les chiffres, quelques signes de ponctuation et certains codes réservés (le Télex
utilise par exemple un code pour « sonnerie »). Parmi eux, il convient aussi de citer le
« standard » d’IBM appelé BCD Binary Coded Decimal d’où est issu E BCDIC (voir sec-
tion 7.2).
C’est donc dans l’esprit d’échange que plusieurs normes pour l’informatique ont été
définies, à 7 moments (27 = 128 caractères) comme l’A SCII (American Standard Co-
ded Information Interchange). Ce dernier a été légèrement modifié et adopté comme
« alphabet international Numero 13 » IA5 en 1963 par l’I SO (International Standard Or-
ganization) et le C CITT (Commité Consultatif International du Télégraphe et Téléphone)
sous le nom de norme I SO 646. Depuis, de nombreuses normes (voir [50]) ont été re-
définies pour coder les caractères avec plus de bits ou moments ou pour s’adapter à di-
verses langues, dont les célèbres I SO/I EC-8859-n sur 8 bits et U NICODE à 16 bits, étendu
à 32 bits pour devenir I SO/I EC-10646. Ces normes assurent toutes la compatibilité avec
I SO 646, d’où la très grande importance de cette norme même si maintenant elle a vieilli !
Ces normes ont les tailles du tableau ci-après.
3. A SCII ou I SO 646
Jusqu’à ce jour le seul codage universellement utilisé est l’A SCII (American Standard
for Information Interchange). Comme son nom l’indique, ce codage a vu le jour en Amé-
rique vers 1967 et a fourni pendant plus de deux décennies le seul codage non-ambigu
à 7-bits.
Remarque : il s’agit donc d’une norme d’échange. Mais, par abus de langage et sans
doute par méconnaissance des principes de codage, certains informaticiens ont tendance
à utiliser ce mot avec le sens de « non formaté » : par exemple, pour eux,
\section{Benoît est-il allé à Canossa ?}
Dans ce chapitre, nous faisons allusion au fait que
5
Respectivement connus sous le nom de IA1 et IA2. Voir [50] à ce sujet et de façon plus générale pour toutes ces
normes.
9
Jacques ANDRÉ et Michel GOOSSENS
octal 0 1 2 3 4 5 6 7
/0 x NUL SOH STX ETX EOT ENQ ACK BEL
/1 x BS HT LF VT FF CR SO SI
/2 x DLE DC1 DC2 DC3 DC4 NAK SYN ETB
/3 x CAN EM SUB ESC GS FS RS US
/4 x ! " # $ % & ’
/5 x ( ) * + , − . /
/6 x 0 1 2 3 4 5 6 7
/7 x 8 9 : ; < = > ?
/10 x @ A B C D E F G
/11 x H I J K L M N O
/12 x P Q R S T U V W
/13 x X Y Z [ \ ] ^ _
/14 x ‘ a b c d e f g
/15 x h i j k l m n o
/16 x p q r s t u v w
/17 x x y z { | } ~ DEL
34 caractères 6 dits (à tort) « de contrôle »(tels que Carriage Return, Line
Feed, Bell, etc. voir table 10) et
94 caractères dits « graphiques » car on peut les afficher sur un écran ou les
imprimer.
— 82 caractères obligatoires :
52 lettres : A–Z et a–z,
10 chiffres : 0–9,
20 signes de ponctuation ou autres : ! " % & ’ ( ) * + , - . / : ; < = > ? _
6
Les 32 premiers, le suivant qui est en fait l’espace et le dernier (de code binaire 1111111) pour DEL.
10
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
Version de référence # ¤ @ [ \ ] ^ ‘ { j } ~
Allemagne (DIN66003) # $ § Ä Ö Ü ^ ‘ ä ö ü ß
Belgique # $ à ˚ ç § ^ ‘ é ij è ~
:
Espagne # $ ¡ Ñ Ç ¿ ‘ ’ ñ ç "
France (NF Z62010/1982) £ $ à ˚ ç § ^ ¼ é ù è "
Grande Bretagne £ $ @ [ \ ] ^ ‘ { j } ~
Suisse romande à ç é ù è ~
USA (norme A SCII) # $ @ [ \ ] ^ ‘ { j } ~
— des variantes nationales (parfois plusieurs pour un même pays – c’est le cas de la
France) ;
— une version internationale de référence, IRV, où les positions optionnelles sont af-
fectées d’un caractère précis.
— Les informaticiens américains se sont mis à utiliser nombre des caractères option-
nels (#, @, les accolades, etc.) dans leurs programmes ce qui a donné un poids
anormalement fort à la version américaine A SCII de la norme 646.
7
Ce « choix » a été demandé par divers états, dont l’URSS et la Grande Bretagne, lors de la Guerre froide afin de contrer
l’hégémonie du dollar ! On verra plus bas, que lors de la Perestroı̈ka, le dollar a repris sa place au dépend du symbole
monétaire international..
8
Le glyphe de ce symbole représente une pièce d’or où brillent quatre rayons de soleil.
9
Faisant partie du codage standard Macintosh, on trouve ce signe dans toutes les polices de caractères commerciales.
Par contre, en ce qui concerne le clavier, on ne rencontre ce symbole que sur certains matériels à vocation internationale,
notamment lorsqu’ils assurent la compatibilité avec ISOL ATIN1. Dans le cas des claviers français des stations SUN, on a
non seulement cette touche currency mais aussi le ¼ de la norme française (voir table 3) qui est resté dans ISOL ATIN-1
(tableau 5).
11
Jacques ANDRÉ et Michel GOOSSENS
— Il y avait une grande incohérence d’un pays francophone à l’autre à tel point
d’ailleurs que la France a abandonné cette norme Z62010 au profit de l’A SCII en
1983.
C’est donc cette compatibilité à l’A SCII (et accessoirement à I SO L ATIN-1) qui fait que
l’on a sur nos claviers ces 94 caractères et tous ces caractères spéciaux « & @ £ $ # ». Or,
bien peu de Français connaissaient ces symboles il y a quelques années à peine ; on ne
savait pas leurs noms, ni à quoi ils servaient ; et on ne sait toujours pas bien les dessiner
du premier coup. Mais à lire les questions de comp.font 13 , on se rend compte que beau-
coup d’Américains ignorent eux aussi ce que sont ces symboles. Voici donc quelques
explications rapides (voir [5]).
Tous ces symboles sont utilisés en comptabilité américaine (il n’est pas inutile de
rappeler que BM dans IBM veut dire Business Machines). Plus exactement, ce sont
des symboles issus du temps où, dans les chancelleries, les scribes écrivaient à la main
et avaient l’habitude de faire des abréviations et des ligatures, lesquelles ont pris des
connotations très officielles au XVIIIe siècle et qui ne sont restées en usage que dans
des mondes éloignés comme « l’Amérique » et fermés comme la comptabilité, conno-
tations qui ont pris un poids très fort lorsque d’une part « l’Amérique » et d’autre part sa
puissance économique ont fait surface. Ce qui était ringard voire complètement oublié
ou périmé chez nous s’est donc trouvé présenté comme une nouveauté moderne qu’il
a bien fallu suivre !
Bref, ces symboles comptables anglo-américains se sont imposés dans les jeux de
caractères des ordinateurs. Mais comme tous les informaticiens, américains ou non, ne
font pas de la gestion et comme ils ont toujours besoin de symboles « spéciaux », ceux
10
Notamment à cause de changements de technologie, comme l’abandon des rubans papier pour lesquels DEL était
prévu pour annuler un caractère erroné en perforant toutes ses positions dans la colonne.
11
Typiquement, ce codage permettait, pour certains écrans, d’afficher un caractère accentué en saisissant successive-
ment le code ESC, le caractère, l’accent et enfin le code BS de retour en arrière. Mais ceci ne permettait pas de faire le
moindre tri.
12
Ainsi, TEX y place beaucoup de caractères comme fi, ffi, etc. comme on le voit dans le standard de Cork, table 9.
13
Il s’agit de l’un du millier (sinon plus) de groupes actifs U SENET, qui est un système de conférence international, auquel
tous les utilisateurs du réseau planétaire Internet ont la possibilité de s’abonner. Voir par exemple [46].
12
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
qui développaient des logiciels se sont appropriés ces symboles. Aussi, même si ces
symboles n’ont vraiment aucune raison d’être sur tous les ordinateurs en tant que sym-
boles comptables, on aurait du mal aujourd’hui à s’en passer pour les langages informa-
tiques.
Dollar $ C’est évidemment le plus connu de ces symboles : c’est le symbole monétaire
des États-Unis d’Amérique.
Le mot dollar vient du nom populaire d’une monnaie mexicaine dolera (dont le vrai
nom était peso, du latin pensum, poids) qui vient de l’allemand Thaler (en bas-
allemand Daler ) du nom d’une monnaie frappée (et rendue plus ou moins euro-
péenne en 1537, déjà !, par Charles Quint) dans la vallée de Joachim (en allemand
Joachimthal ).
L’origine du signe n’est pas connue 14 . Contrairement à ce que disent beaucoup
d’Américains, ce symbole n’est pas dessiné en surimposant le U et le S de US :
cette explication n’est pas possible car le symbole $ est attesté avant la création
des États Unis d’Amérique ! ; plusieurs hypothèses ont été émises. La première
est qu’il s’agit d’un 8 déformé : cette monnaie espagnole dolera s’appelait aussi
« la pièce de 8 » car elle valait 8 réales. La seconde est que cette monnaie d’ori-
gine espagnole portait au revers le symbole de Gibraltar (Jebel Tarek) : deux barres
verticales pour symboliser le détroit (les colonnes d’Hercule), et un drapeau flottant
comme un S. Enfin, ce symbole viendrait du « p » de peso avec une barre en biais,
déformation du « s » pluriel en exposant, comme dans beaucoup de monnaies. En
tout cas son origine espagnole est quasi certaine !
Livre £ C’est le symbole monétaire livre sterling britannique. Son nom vient d’une an-
cienne monnaie d’argent qui valait une livre (poids : pound ) d’argent. On retrouve
donc la dualité poids/valeur-monétaire pour pounds comme pour peso et nos livres
(tournois ou de beurre). Le mot livre vient du latin libra qui a aussi donné l’italien
lira. Le mot sterling, nom adopté par I SO L ATIN-1, est d’origine obscure ! Le des-
L
sin représente un « », abréviation de Libra, et ressemble donc à celui de la lire
italienne.
Esperluette & Il s’agit de la très vieille ligature « et » qui a fait l’objet d’études célèbres
de Ian T SCHICHOLD [60] et de Gérard B LANCHARD [10]. Ce caractère est très utilisé
aux États-Unis (plus qu’en France) dans les noms de sociétés commerciales (par
exemple Bigelow & Holmes et plus généralement sous la forme & Co.).
Son nom français est « esperluette » ; mais il y a beaucoup de variantes :
« perluète » pour I SO L ATIN, « perluette » ou « eperluette » ; il est aussi appelé et
commercial (voir ci-dessous le a commercial ) ce qui confirme son origine comp-
table. L’origine de ce mot esperluette n’est pas non plus bien connue : le Grevisse
dit que ce caractère s’appelait « ète » (c’est-à-dire « et » prononcé à la latine) et qu’il
était placé dans l’alphabet après le z, alphabet que les enfants chantaient « a, b, ...,
14
On trouvera dans [11], citée par Mark Brader dans comp.font le 3 avril 1995, l’étude la plus sérieuse sur le sujet.
13
Jacques ANDRÉ et Michel GOOSSENS
z et puis le ète » ce qui aurait donc donné « éperluette » [23, art. 71]. Son nom an-
glais est ampersand et est en fait un mélange de latin et d’anglais : and per se and
(et à lui tout seul « et »). On raconte aussi la même histoire qu’en français d’alpha-
bet chanté [61].
Numéro # Le symbole # est aussi issu d’une ligature latine : numerus (nombre), un « n »
surmonté d’une barre, c’est-à-dire « n » et dont la barre est descendue peu à peu au
bas des jambes du « n ». En comptabilité américaine, ce signe sert à indiquer des
numéros (de pièce, de série, de compte bancaire, etc.) ; dans un hôtel, on numérote
les chambres « # 101, # 102, etc. » et dans une facture, on écrira par exemple « 4
gonds numéro 78-9253 » sous la forme « 4 hinges # 78-9253 ».
Ce caractère est souvent appelé dièse en français à cause de sa ressemblance
avec le signe musical, mais « # =/ ] ! ». Son nom américain est number (« numéro »,
c’est d’ailleurs la traduction officielle adoptée par l’Afnor pour I SO L ATIN) ; mais dans
le langage Ada il s’appelle aussi sharp (dièse). En Grande-Bretagne, il est parfois
appelé hash (hacher).
L’anglais étant la seule langue utilisable avec l’A SCII, de nombreux organismes ont
bien sûr tenté de définir des normes plus riches. Outre divers « standards de facto »
comme E BCDIC (voir ci-après section 7.2), il convient de citer ici la norme la plus
importante pour les langues européennes, définie par l’I SO et connue sous le nom
d’I SO/I EC8859-n (avec n de 1 à 12), qui est une extension à 8 bits de l’A SCII. Le seul fait
de passer de 7 à 8 bits permettait de doubler le nombre de caractères, donc de passer
à 256 caractères (moins les fameux caractères de contrôle !). Comme en Europe, il y a
plus de 256 caractères différents utilisés, il a été décidé de les regrouper par affinités ...
commerciales. C’est ainsi qu’il y a le premier groupe, I SO L ATIN-1 pour la zone occiden-
tale, L ATIN-2 pour la zone orientale, etc. (voir [36], la figure 4 et la table 4). Pour des raisons
14
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
politico-économiques, un codage spécial (L ATIN-5) a dû être ajouté pour la Turquie et ses
partenaires !
Il faut remarquer néanmoins que ces jeux ne sont pas utilisés universellement et
qu’en plusieurs pays des variantes incompatibles coexistent. De plus, des problèmes
liés à la traduction entre les différents codages subsistent. Seul le codage I SO/I EC8859-1
(« L ATIN-1 ») a été implanté généralement et est devenu un remplacement de facto de la
norme A SCII en Europe ; nous allons donc y revenir un peu.
I SO L ATIN-1
Les caractères du codage L ATIN-1 sont montrés dans les tables 5 et 10 et en figure 4.
On y remarquera plusieurs choses :
1. Les 128 premiers caractères sont ceux de la norme A SCII. C’est vrai aussi pour
I SO8859-n quelque soit n.
15
Jacques ANDRÉ et Michel GOOSSENS
Table 5 – Le codage des caractères d’Europe occidentale : I SO L ATIN 1 (les cases blanches
correspondent aux caractères de contrôle non imprimables).
! " # $ % & ’
( ) * + , − . /
0 1 2 3 4 5 6 7
8 9 : ; < = > ?
@ A B C D E F G
H I J K L M N O
P Q R S T U V W
X Y Z [ \ ] ^ _
‘ a b c d e f g
h i j k l m n o
p q r s t u v w
x y z { | } ~
ı ` ´ ˆ ˜ ¯ ˘ ˙
¨ ˚ ¸ ˝ ˛ ˇ
¡ ¢ £ ¤ ¥ ¦ §
¨ © ª « ¬ - ® ¯
° ± ² ³ ´ µ ¶ ·
¸ ¹ º » ¼ ½ ¾ ¿
À Á Â Ã Ä Å Æ Ç
È É Ê Ë Ì Í Î Ï
Ð Ñ Ò Ó Ô Õ Ö ×
Ø Ù Ú Û Ü Ý Þ ß
à á â ã ä å æ ç
è é ê ë ì í î ï
ð ñ ò ó ô õ ö ÷
ø ù ú û ü ý þ ÿ
16
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
Partie inférieure (positions 33–128) commune à A SCII et toutes les normes I SO /I EC-8859-x
2. On n’y trouve pas les deux caractères œ et Œ. On raconte que lorsque l’I SO a
adopté cette norme, le représentant français était malade et qu’un autre pays en
a profité pour imposer un caractère à lui (thorn?) prétextant que Œ pouvait s’obte-
nir par crénage de O et de E (ce qui est faux : voir [5]). Marti [50] signale qu’il est
probable que ceci vient plutôt d’un certain désintérêt des Français en matière de
normalisation au contraire des Allemands qui eux ont bien tous leurs umlaut et le
ß. Mais œ et Œ figurent bien dans U NICODE (section 5).
3. Les 32 premiers caractères sont, comme pour l’A SCII, des caractères « de
contrôle », en général peu utilisés. D’où la tendance de nombreux organismes à
récupérer ces positions pour y mettre, au moins dans les normes de codage des
fontes, des caractères manquants. C’est ainsi que le codage de TEX dit de Cork y
place les ij hollandais et nos œ français (voir table 9).
Beaucoup de codages, filtres, logiciels, etc. ont été écrits pour échanger des textes
écrits en I SO L ATIN-1 en utilisant des réseaux où seul A SCII est connu ou pour passer d’un
codage à l’autre 15 .
5. U NICODE et I SO-10646
Les pays de l’Asie de l’est ont également fait l’inventaire de tous leurs caractères
respectifs (voir [50]). Ainsi la Chine [40], le Japon [38, 39], la Corée [42, 43] et Taiwan [12]
ont développé des normes multi-octets nationales qui contiennent plusieurs dizaines
de milliers de caractères (en tout plus de cent vingt mille). Comme avec les codages
I SO/I EC 8859 et E BCDIC, il est difficile de transformer des documents codés dans une
norme pour les traiter avec un logiciel qui utilise une autre norme de codage de l’infor-
mation.
I SO [37] et le Consortium U NICODE [62], un groupement de constructeurs d’ordina-
teurs, ont développé conjointement un jeu de caractères multinational regroupant la ma-
jeure partie des caractères utilisés dans le monde [8].
I SO a publié la norme I SO/I EC 10646 (noter les trois derniers chiffres 646, qui ont été
choisis pour correspondre à ceux de l’ancienne norme A SCII). Cette norme propose des
représentations de codages à deux ou quatre octets. Le Consortium U NICODE a nommé
sa norme U NICODE. C’est un sous-ensemble 16-bits (deux-octets) de I SO/I EC 10646 avec
les deux octets les plus significatifs égaux à zéro et correspond au plan multi-lingue de
base (BMP, Basic Multilingual Plane).
15
Voir notamment : ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/FAQ-ISO-8859-1,
les Newsgroups: soc.culture.french, soc.culture.quebec, soc.culture.belgium, can.francais, fr.news.8bits, etc. ; ou les
échanges sur le réseau de l’Association GUTenberg.
18
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
octet – cellule
00 80 FF
zone - A
octet –
ligne
4E
zone - I
FF
E0
A0
zone - O
80
E0
01
zone - R
FF 00 plans d'utilisation
plan multi-lingue de base privée (32)
octet – plan
Figure 5 – Structure d’un groupe I SO/I EC10646 qui consiste en 256 plans.
En fait, la norme I SO/I EC 10646 peut être considérée comme un codage tri-
dimensionnel de caractères, qui consiste en 256 groupes avec chacun 256 plans, le BMP
correspondant au plan 0 du groupe 0 (voir figure 5).
Le codage I SO/I EC 10646 s’effectue sur quatre octets, qui sont appelés en commen-
çant par le moins significatif, la cellule (octet-C), la ligne ou le rang (octet R), le plan (octet-
P) et le groupe (octet-G) ; voir figure 6.
Cette forme canonique utilise donc un codage à quatre dimensions, qui consiste en
256 groupes tri-dimensionnels; chaque groupe consiste en 256 plans bi-dimensionnels
et chaque plan a 256 lignes uni-dimensionnelles, avec chacune 256 cellules. Ces quatre
octets sont nécessaires pour coder le jeu complet de tous les caractères du monde avec
leurs variantes où les 16 bits (deux octets) du BMP (et d’U NICODE) ne suffisent pas.
Après quelques années de travaux préparatoires par Apple et Xerox, qui tous deux
avaient déjà une longue expérience dans le domaine de la gestion de grands jeux de ca-
ractères et de l’internationalisation, le Consortium U NICODE fut créé en 1989. Il comprend
19
Jacques ANDRÉ et Michel GOOSSENS
groupe 7F
groupe 01
plane 00 du groupe 7F
groupe 00
plan 00 du groupe 01
chaque plan a :
256 x 256
positions de
caractères
plan FF du groupe 00
plan 00 du groupe 00
plusieurs des acteurs les plus importants dans le monde de l’informatique et du logiciel,
dont Adobe, Apple, IBM, Microsoft, Sun et Xerox.
Leurs travaux ont montré que la plupart des langues vivantes actuelles et même
quelques-unes des langues anciennes peuvent être codées de façon non-ambiguë en
utilisant seulement deux octets (16 bits). Ainsi, en accord avec I SO, il fut décidé en 1991
d’inclure ce codage U NICODE à 16 bits comme BMP (groupe 0, plan 0) dans l’espace de
codage d’I SO/I EC 10646 (figure 10). On trouvera des informations sur U NICODE et une
description des ressources offertes par le Consortium sur l’Internet sur WWW 16 (voir
les figures 7 et 8).
Le but d’Unicode [62] est de fournir un codage non-ambigu, fixe sur 16 bits (deux
octets), qui n’a besoin ni de séquences de contrôle, ni de méthodes de compactage. Il
doit permettre l’échange, le traitement et la visualisation des caractères du monde entier.
U NICODE est en quelque sorte une généralisation à double largeur d’A SCII.
16
La page d’accueil WWW d’Unicode est à l’URL http://www.stonehand.com/unicode.html.
20
Figure 7 – Page d’accueil WWW de l’organisation U NICODE. Figure 8 – Ressources Internet offertes par U NICODE.
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
21
Jacques ANDRÉ et Michel GOOSSENS
Actuellement U NICODE contient 34168 codes distincts pris dans 24 systèmes d’écri-
tures différents (voir figure 10), qui couvrent les principales langues du monde. Il reste
néanmoins quelques systèmes d’écriture qui ne sont que partiellement ou pas du tout re-
présentés dans la version actuelle d’Unicode (voir table 6). Leur codage nécessite encore
des recherches, mais rien n’empêchera de les inclure à un stade ultérieur.
Le BMP (qui coı̈ncide avec le plan U NICODE) est le seul plan qui soit actuellement
défini pour I SO/I EC 10646. Sa structure est montrée en figure 9.
Suit la zone I avec 20 992 positions, contenant des idéographes d’origine chinoise
pour les langues chinoise, japonaise et coréenne. Pour limiter le nombre de signes et pour
simplifier le traitement des données l’espace de codage pour les idéogrammes a été codé
en utilisant un schéma appelé « unification Han ». Ce travail, une collaboration entre des
groupes d’experts des pays directement impliqués et des États-Unis, était soumis aux
mêmes règles très strictes que celles utilisées pour les normes japonaises [47]. Cette uni-
facation a permis d’éliminer plus de 99 000 signes communs au répertoire des 120 000
signes que compte l’union des jeux de caractères des normes de ces trois langues com-
binées. De la sorte le nombre de caractères Han a pu être ramené au chiffre indiqué.
Ce principe est utilisé avec succès depuis plus de dix ans par le CCITT et le East Asean
Character Code.
22
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
00
alphabets, symboles,
zone - A complémentiaires CJK,
hangul, …
4E
A0
E0
utilisation privée (6K)
zone - R zone de compatibilité,
formes spéciales arabes,…
Finalement on trouve la zone O comptant 16 384 positions, qui est réservée pour des
extensions (normatives) futures, et la zone R avec 8 190 positions. Cette dernière zone,
également appelée zone d’utilisation restreinte, contient des extensions utilisateurs, une
zone de compatibilité et des formes de présentation et d’autres caractères spéciaux.
Le nom de tous les caractères de la partie non-Han est disponible sur l’Internet 17 .
On trouvera les glyphes des 1700 premiers caractères dans une planche de [4] et
dans trois tables de l’article de Bigelow dans ce Cahier GUTenberg [9].
Les octets les plus significatifs sont à gauche (ordre Most Significant Byte ou MSB,
également appelé Big Endian). Plusieurs formats de transformation UCS (des UTF, pour
17
URL ftp://unicode.org/pub/MappingTables/UnicodeData-1.1.3.txt.Z.
23
Jacques ANDRÉ et Michel GOOSSENS
09 Devanagari Bengali
0A Gurmukhi Gujarati
0B Oriya Tamil
0C Telugu Kannada
0D Malayalam
0E Thai Lao
10 Georgian
11 Hangul Jamo
E0
Private Use Area
F7
F9
CJK Compatibility Ideographs
FA
FB Alphabetic Presentation Forms
FC Arabic Presentation Forms-A
FD
FE ➂ ➃ ➄ Arabic Presentation Forms-B
FF Halfwidth, Fullwidth Forms and Specials
➀ Superscripts and Subscripts ➁ Combining Diacritical Marks for Symbols
➂ Combining Half Marks ➃ CJK Compatibility Forms ➄ Small Form Variants
UCS Transformation Format ) ont été définis pour faciliter la transmission de données
UCS.
UTF-1 Une transformation à 8-bits qui dans les octets n’utilise pas les caractères de
contrôle spécifiés dans la norme I SO/I EC2022 [34] (c. à d. les parties C0, C1,
SPACE, DEL, voir aussi la table 10). Ainsi il est possible de transmettre des don-
nées par des canaux sensibles à ces valeurs dans les octets.
UTF-7 Une transformation à 7-bits pour utilisation avec MIME (voir ci-dessous 7.4) et
d’autres supports de transmission à sept bits.
UTF-8 Une version améliorée de UTF-1, qui transforme un flux de données codées en
U NICODE ou I SO/I EC10646 en un flux 8 bits, préservant toute la partie A SCII, et en
explosant les autres caractères en 3 octets (s’ils sont codés en 16 bits) ou en 6
octets (s’ils sont codés en 31 bits).
UTF-16/TF16 Une transformation pour obtenir UCS-4 à l’aide de codes UCS-2. Cette
transformation préserve deux fois 1024 codes UCS-2, qui sont utilisés comme in-
dex pour représenter un million de caractères additionnels, ce qui devrait suffire
pour coder tous les caractères chinois rares, ou les alphabets historiques, comme
les hiéroglyphes égyptiens, pour lesquels il n’y avait plus de place dans le BMP.
1. U NICODE définit des signes flottants explicitement pour le thaı̈, l’hébreu, l’arabe
et les alphabets indiens. Il y a également un ensemble complet de signes diacri-
tiques non-espaçant et des caractères composites pour les alphabets latins, grecs
et cyrilliques, ce qui permet plusieurs représentations pour les lettres composites.
La table 10 montre les symboles et les noms I SO/I EC 10646 pour les caractères de
la norme I SO/I EC8859-1 (Latin-1). On les trouve dans le plan 0 d’U NICODE et du BMP
d’I SO/I EC 10646.
25
Jacques ANDRÉ et Michel GOOSSENS
— Progress First Software vend des polices PostScript Typographic International Se-
ries compatibles avec U NICODE.
— Y & Y Inc. vendent des polices L ATIN-2, Cyrillique et U NICODE (voir leur page d’ac-
cueil WWW à l’URL http://www.yandy.com/).
— W, une extension 16-bit de TEX utilise U NICODE comme codage interne (voir [27]
et l’article de H ARALAMBOUS et P LAICE dans ce Cahier GUTenberg [26]).
— Une prochaine version de Mule, une extension multi-lingue 16-bits de Gnu emacs
développée au Japon, ajoutera U NICODE à sa liste de codages possibles pour éditer
des textes.
— Dans le monde SGML une initiative pour définir une syntaxe concrète de référence
étendue est en cours de préparation. Cette proposition ERCS (Extended Reference
Concrete Syntax) adresse l’inclusion de balises codées non seulement en A SCII,
mais aussi en I SO/I EC10646. Ainsi, par exemple, les utilisateurs des pays de l’Asie
du sud-est devraient être capables de saisir, éditer, baliser, sauvegarder et envoyer
leurs documents SGML dans leur propre langue en utilisant un système de codage
de leur choix 20 .
18
Plus d’information est à l’URL http://www.nada.kth.se/i18n/c3/.
19
Plus d’information est à l’URL http://www.iss.nus.sg/RND/MLP/Projects/MASS/MASS.html.
20
Voir la page d’accueil ERCS à l’URL http://www.sgmlopen.org/sgml/docs/ercs/ercs-home.html.
26
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
— Dans le World Wide Web plusieurs initiatives pour visualiser des textes codés
en différentes normes ont vu le jour, chacune utilisant une solution ad hoc. Ré-
cemment un collaborateur de la Commission des Communautés européennes
à Bruxelles a proposé un certain nombre d’extension multi-lingues aux clients
WWW : U NICODE deviendrait l’alphabet de base du Web et pour « savoir » quelle
est la langue dans laquelle un document donné est rédigé, il introduit la notion d’hy-
pertexte multi-lingue aligné (MAH, Multilingual Aligned Hypertext ) qui permet un
accès transparent à la version (langue) désirée en y associant une « étiquette » co-
dée d’après la norme ISO 639, mentionnée au début de cet article 21 (voir la table 11
dans l’annexe).
21
Pour plus de détails voir l’URL http://www.echo.lu/other/norm.
27
Jacques ANDRÉ et Michel GOOSSENS
Table 7 – Exemple d’accès aux fontes très riches de TEX par le seul code A SCII
Code (en A SCII) glyphe Code (en A SCII) glyphe Code (en A SCII) glyphe
\'e é \'E É \textsc{\'e} É
\oe œ \AA Å \dag y
\alpha Þ -- – --- —
glyphe et ne satisfont donc pas les besoins de la typographie : ni petites capitales, ni li-
gatures, ni les divers espaces ou tirets nécessaires, etc.
Mais il faut distinguer deux choses bien différentes :
Par exemple, les ligatures « fi » et « fl » sont présentes dans 99% des polices de ca-
ractères commerciales, mais peu de formateurs sont capables, contrairement à TEX, de
les imprimer (en fait de les « sélecter ») automatiquement 22 .
Le principe est de coder les caractères d’une fonte en utilisant un ou plusieurs codes
d’une ou plusieurs normes d’échange. TEX, par exemple, utilise des tables de codage
très riches pour ses fontes. Mais on peut y accéder par les seuls 94 caractères du jeu de
l’A SCII, un caractère, \, servant à préfixer les codes des autres (exemple table 7). Bien
sûr, une saisie directe à 8 bits (comme par exemple avec emacs ou avec un système
comme celui montré à la figure 11), est aussi possible tout comme divers systèmes de
saisie directe dans une langue donnée ont été proposés (par exemple pour l’arabe).
TEX a probablement été le premier système à utiliser la notion de fonte telle qu’elle
est répandue aujourd’hui (on verra à ce sujet [29, 41]), c’est-à-dire de base de donnée
informatique avec une description de chaque caractère par ses contours, des possibilités
de hints (adaptation à la grille) et des tables, dites TFM (TEX Font Metric), fournissant les
métriques aux utilisateurs (voir [14]). Mais le système adopté par PostScript étant le plus
répandu, c’est celui que nous décrivons d’abord.
22
Le fait que les ligatures « ff », « ffi », etc. se trouvent — le cas échéant — dans des polices complémentaires (par
exemple, Times-Expert est la police complémentaire de Times-Roman, et ainsi de suite) ne fait qu’aggraver la situation :
ces pauvres formateurs commerciaux n’ayant pas la notion de police virtuelle de TEX, ou la possibilité de travailler en 16
bits, sont incapables de changer automatiquement de police en plein milieu d’un mot, sans intervention manuelle de
l’utilisateur.
28
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
Table 8 – Dans les fontes traitées par PostScript, le choix d’un vecteur de codage permet
d’associer à un code numérique le nom d’une procédure de tracé d’un caractère et par
là d’adapter une fonte à son propre codage.
1. Lors de l’impression, une fonte comprend 256 caractères (et ce dans n’importe
quel corps ou n’importe quelle direction).
3. Ces 256 procédures peuvent être choisies dans un ensemble beaucoup plus
grand : le Times romain d’Adobe, par exemple, offre non seulement toutes les
lettres accentuées du français, mais aussi celles du polonais, le symbole moné-
taire florin ou le « ž » (zcaron). Pour celà PostScript utilise un système de codage
à deux temps 23 : une table de codage intermédiaire (dite Encoding Vector ) com-
prenant 256 entrées permet d’indiquer quel (nom de) caractère correspond à tel
code. Par exemple (table 8), il suffit, pour un formateur, d’utiliser le vecteur de co-
dage correspondant à I SO L ATIN-1 pour associer au code numérique 193 le nom de
la procédure Aacute qui dessinera donc le glyphe « Á ». Certaines
R fontes, comme
Symbol où se trouvent des caractères tels que Þ, ,
ou , ont leur propre jeu de
noms de procédures : au code 67 (table 8) on associera par exemple le nom Gamma
pour dessiner le glyphe .
4. I SO L ATIN-1 occupant les 256 positions d’une table de codage, il est alors im-
possible d’y mettre les autres noms de glyphe (tels que « È » ou « ffi », voire
comme 5= 8). Le principe est alors d’utiliser plusieurs « fontes », c’est-à-dire de
considérer qu’une fonte est formée de plusieurs morceaux, chacun avec son
propre système de codage. Par exemple, le Garamond romain d’Adobe utilise les
« fontes » suivantes :
23
Pour être complet, signalons qu’un opérateur, glyphshow permet d’imprimer un glyphe en ne connaissant que son
nom.
29
Jacques ANDRÉ et Michel GOOSSENS
Et de même pour les italiques, les gras, les capitales de titres, etc. La famille Adobe-
Garamond est donc formée d’une vingtaine de fontes numériques.
Lors de la saisie d’un texte, il faut alors appeler une nouvelle fonte (en Word sur
Macintosh par exemple, ceci revient à cliquer sur le nom de la fonte correspon-
dante) chaque fois qu’une nouvelle table de codage doit être utilisée. C’est fasti-
dieux, mais probablement pas plus que de changer de casse !
On trouvera dans ce Cahier GUTenberg quelques raisons sur le choix d’une fonte
unique ou d’un ensemble de fontes pour offrir un tel jeu de caractères [9].
(LA)TEX utilise, en gros, le même style de fontes que celles de PostScript (et éventuel-
lement celles-là d’ailleurs). Mais, leur emploi est mieux défini et se veut plus général que
dans les autres systèmes surtout depuis deux ou trois ans (notion de fonte virtuelle, New
Font Selection Scheme, etc.). On trouvera dans [14, 21] les principaux textes sur ces mé-
canismes et y renvoyons le lecteur. En résumé, disons ici que LATEX distingue nettement
(même si c’est souvent transparent à l’utilisateur normal) :
2. la façon, pour un utilisateur, d’appeler une fonte ; pour les non-TEXistes, ceci se fait
par l’intermédiaire de « style » ou classe de documents soit de façon automatique
(mais programmable) – soit de façon explicite ;
3. la façon de faire entrer les fontes physiques d’une famille commerciale (par
exemple Adobe-Garamond ) dans ce système ;
4. la façon de coder les caractères en fonction d’une fonte donnée et, par exemple,
de la langue : ce peut être à 7 bits (table 7), à 8 bits (table 9), voire sur 16 ou 32 bits
(voir l’article sur W dans ce Cahier GUTenberg [26]).
24
Ce sont effectivement de vraies petites capitales et non des capitales réduites optiquement à un corps plus petit.
30
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
Le principe a donc été de faire une table de codage de glyphes respectant I SO L ATIN-
1 mais récupérant les places de cette dernière correspondant à des caractères non-
imprimables ou peu utilisés (comme ¼).
La table 9 montre que les positions 32–136, 192–222 et 224–254 sont identiques
à celles de L ATIN-1. Par contre les autres positions sont occupées par des signes dia-
critiques (positions 00–31) ou des caractères pre-composés avec diacritiques (positions
128–191).
Une police codée d’après la norme EC permet de traiter la plupart des langues eu-
ropéennes utilisant l’alphabet latin, à l’opposé des normes I SO/I EC 8859, qui ont besoin
de six codages différents (voir table 4), même si seulement L ATIN-1, L ATIN-2, L ATIN-5 et
L ATIN-6 sont actuellement utilisés activement.
31
Jacques ANDRÉ et Michel GOOSSENS
7. Autres normes
7.1. Claviers
1. La première est une tentative d’harmonisation des claviers existants (basés sur
ceux des premières machines à écrire). Ceci concerne la norme I SO-8884 du 15
septembre 1989 qui permet l’entrée des caractères d’I SO-8859. Une nouvelle
norme, I SO/I EC-9995, est pratiquement adoptée et est en fait composée de huit
parties (I SO-9995-1 à I SO-995-8 ; parmi celles-ci deux sont particulièrement inté-
ressantes, la partie 6 qui offre des fonctions pour « programmer » les claviers et
surtout la partie 7 qui définit les symboles utilisés sur les claviers pour représen-
ter ces fonctions) qui recouvrent les normes existantes précédemment et cherche
à harmoniser les claviers diffusés sur le marché (harmoniser et non à résoudre le
débat mythique du clavier unique !).
2. Les claviers du futur. Un groupe de travail de l’I SO (SWG K) étudie ce que pourrait
être le clavier universel du futur. Au delà des problèmes de forme (clavier linéaire,
en V, syllabique, etc.), les problèmes à résoudre relèvent encore de principes (in-
terchangeabilité, modularité, etc.).
7.2. E BCDIC
E BCDIC, Extended Binary Coded Decimal Interchange Code, est une norme privée
d’IBM des années 1960. Basée au départ sur les codes Hollerith des cartes perforées
(code H), une première norme définie par IBM, BDC, Binary Coded Decimal, permettait
de traiter sur 4 bits les chiffres et les lettres. Selon le poids donné à chaque position
binaire, on avait plusieurs codes BCD, par exemple 8421 (le chiffre 9 s’y écrivant alors
1001), 2421 (9=1111), 4121 (9=1100). Il en a aussi existé une version à 6 bits. Avec l’ap-
parition du 360 et des « octets », IBM a défini, vers 1965, cette extension basée sur le
même principe qu’A SCII : une plage internationale (c’est-à-dire avec les seuls caractères
anglais), et une plage pour des variantes nationales ou ... matérielles. Car c’est là sans
doute la principale différence entre E BCDIC et I SO L ATIN : cette première est à la fois une
norme d’échange et une norme de saisie ou de fontes.
25
URL ftp://ftp.uni.erlangen.de/pub/doc/ISO/charsets/ucs-input-methods
32
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
En effet, ces codages 8-bits E BCDIC, qui étaient adaptés aux besoins des utilisateurs
des gros et moyens systèmes IBM à travers le monde, donnent les correspondances
entre les différents claviers d’ordinateurs nationaux, qui sont exprimées à l’aide de « code
pages ». Ces différents « code pages » sont une source continue de confusion quand on
veut utiliser un texte préparé avec un « code page » donné (par ex. 385 pour le français)
pour le visualiser ou l’imprimer sur une machine qui en utilise un autre (par ex. 382 pour
l’allemand). Actuellement plusieurs dizaines de code pages E BCDIC sont utilisés à travers
le monde 26 .
7.4. À suivre ?
Ainsi que nous le disions dans notre introduction (page 3) nous nous sommes
concentrés ici sur les normes au sens « Institut de normalisation ». Au delà de cet as-
pect normatif, il reste tout un côté « utilisation » que nous n’avons pas abordé : ce sera
l’objet d’un prochain Cahier GUTenberg pour lequel nous faisons dès à présent un appel
à soumission d’articles. En particulier nous recherchons des articles sur :
— Mime 27 .
— la représentation interne (W par exemple utilise U NICODE) et les liens avec les cé-
sures ;
— les moteurs TEX version 3 et leur relation à ces problèmes (ML-TEX, TEX--XET, W) ;
— etc.
Au congrés GUTenberg GUT95, qui s’est tenu les 1 et 2 juin à la Grande Motte il fut
decidé de créer un groupe de reflexion sur les problèmes de codages. Toute personne
interessée aux travaux de ce groupe ou desirant d’y participer est priée de contacter la
redaction ou le bureau de l’Association GUTenberg.
26
Voir par exemple ftp://dkuug.dk/i18n/charmaps,
ftp://unicode.org/pub/MappingTables/WindowsMaps
27
Voir ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/FAQ-ISO-8859-1 ; voir aussi comp.mail.mime :
Multipurpose Internet Mail Extensions
33
Jacques ANDRÉ et Michel GOOSSENS
8. Conclusion
Nous l’avons vu, la plus grande anarchie a longtemps régné dans les codages de ca-
ractères, de glyphes, etc. soit parce que ces normes étaient inadaptées aux diverses
langues, soit que les constructeurs n’en faisaient qu’à leur tête ! U NICODE/I SO-10646
pourrait n’être à son tour qu’une n+1e norme. Nous pensons plutôt que ce sera « la »
norme du futur proche ! En effet, cette norme a pour elle deux atouts majeurs :
1. elle est issue d’un groupe de vendeurs de matériels qui sont les premiers à se
plaindre de la multiplicité des divers codages ;
2. c’est une norme I SO, cet organisme ayant aussi développé en parallèle d’autres
normes qui lui sont liées, comme celles sur les claviers.
Tout est donc fait pour qu’elle s’impose. Les recherches faites actuellement autour
d’elle (inclusion d’U NICODE dans WWW, dessin de fontes aussi grosses, etc.) sont pour
nous la preuve d’un grand engouement pour cette norme et le garant de sa future réus-
site. Rendez-vous au prochain millénaire ?
Bibliographie
[1] Adobe Systems Incorporated, Adobe Type 1 Font Format, version 1.1, Addison-Wesley Publishing
Company, Reading, MA (USA), 1990.
[2] Adobe Systems Incorporated, PostScript Language Reference Manual, Addison-Wesley Publishing
Company, Reading, MA (USA), 2nd edition, 1991.
[3] Jacques A NDRÉ et Justin B UR, « Métrique de fontes PostScript », Cahiers GUTenberg, n˚ 8, mars 1991,
29–50.
[4] Jacques A NDRÉ, « Unicode – une casse de 38 000 signes », Caractères, n˚ 373, 1994, p. 32–36.
[5] J. A NDRÉ et A. W ILD , Ligatures, typographie et informatique, Rapports de recherche, Inria, n˚ 2429,
décembre 1994.
[6] Jacques A NIS (éditeur), « Écritures », Linx, numéro spécial 31, Nanterre, 1994.
[7] Apple Computer Inc., Guide to Macintosh Software Localization, Addison Wesley, 1992.
[8] Jürgen B ETTELS et F. Avery Bishop, Unicode: A Universal Character Code, Digital technical Journal,
5(3):21–31, Summer 1993
(disponible à l’URL http://www.digital.com/info/DTJ/i18n-toc.html).
[9] Chuck B IGELOW and Kris H OLMES, « The design of a U NICODE font », EPODD, Electronic Publishing,
Origination, Dissemination and Design, vol. 6(3), september 1993 (actes de RIDT’94 Raster Imaging
and Digital Typography), 289–305. Traduit en français « Création d’une police U NICODE », Cahiers GU-
Tenberg, n˚ 20 (ce cahier), avril 1995,
34
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
[10] Gérard B LANCHARD, « Nœuds & esperluettes – actualités et pérennité d’un signe », Communication
et langages, n˚ 92, 1992, p. 85–101.
[11] Florian C AJORI , A History of Mathematical Notations, Volume II: Notations Mainly in Higher Mathema-
tics, Open Court Press, 1929 (reprinted in 1952).
[13] Marcel C OHEN , La grande invention de l’écriture et de son évolution, Imprimerie nationale, Paris, 1958.
[14] Alain C OUSQUER et Éric P ICHERAL , « Polices, TEX et Cie. », Cahiers GUTenberg, n˚ 9, juillet 1992, 3–31.
[15] David D IRINGER, The Alphabet. A Key to the History of Mankind (Third Edition), Hutchinson of London,
1968.
[16] John D REYFUS et François R ICHAUDEAU, La chose imprimée, Éditions Retz, Paris, 1977.
[17] Michael J. F ERGUSON , « Fontes latines européennes et TEX 3.0 », Cahiers GUTenberg n˚ 7, novembre
1990, p. 29–31.
[19] R. S. G ILIAREVKI et V. S. G RIVNIN , Determining a language by its alphabet (en russe), Vostotshnaya
literatura, Moskva, 1960.
[20] Michel G OOSSENS et Erik VAN H ERWIJNEN . « Introduction à SGML, DSSSL et SPDL. » Cahiers GUTen-
berg, n˚ 12, décembre 1991, 37–56.
[21] Michel G OOSSENS, Frank M ITTELBACH et Alexander S AMARIN , The LaTeX Companion, Addison-
Wesley, 1994.
[22] Timothy G. G REENWOOD, International Cultural Differences In Software, Digital technical Journal,
5(3):32–43, Summer 1993
(disponible à l’URL http://www.digital.com/info/DTJ/i18n-toc.html).
[24] Barbara F. G RIMES, Languages of the World, 11th edition, Summer Institute of Linguistics, May 1988,
Dallas, Texas.
[25] William S. H ALL , Internationalization in Windows, Part I: Programming with U NICODE, Microsoft Sys-
tems Journal, 58–71, juin 1994.
[26] Yannis H ARALAMBOUS et John P LAICE, « W, une extension de TEX incluant U NICODE et des filtres de
type Lex ». Ce Cahier GUTenberg, n˚ 20, avril 1995, pages 55–79.
[27] Yannis H ARALAMBOUS et John P LAICE, « W + Virtual METAFONT = U NICODE + Typography ». Pré-
senté à la Journée W à Genève le 16 mars 1995. À paraı̂tre dans TUGboat.
[28] F. H AYES, Consortium forms Universal Character Code Standard, UnixWorld, 8:109–110, May 1991.
[29] Roger H ERSCH (ed.), Visual and Technical Aspects of Types, Cambridge University Press, 1993.
[30] Imprimerie nationale, Les caractères de l’Imprimerie nationale, Imprimerie nationale Editions, Paris,
1990.
35
Jacques ANDRÉ et Michel GOOSSENS
[31] International Organization for Standardization, Code pour la représentation des noms de langue, ISO
639:1988 (E/F), ISO Genève, 1988.
[32] International Organization for Standardization, Committee Draft: Terminology–Code for the represen-
tation of names of languages, Part 2: Alpha-3 code, ISO CD 639-2, ISO Geneva, 1993.
[33] International Organization for Standardization, Information technology–ISO 7-bit coded character set
for information interchange, ISO/I EC 646:1991, ISO Geneva, 1991.
[34] International Organization for Standardization, Information technology–Character code structure and
extension techniques, ISO/IEC 2022:1994, ISO Geneva, 1994.
[35] International Organization for Standardization, Information technology–Control functions for coded
character sets, ISO/IEC 6429:1992, ISO Geneva, 1992.
[36] International Organization for Standardization, Information technology–8-bit single-byte coded graphic
character set–Parts 1 to 10, ISO/IEC 8859-1:1987 to ISO/IEC8859-10:1992, Geneva, 1987–92.
[38] Japanese Standards Association, Jouhou koukan you kanji fugoukei (Code of the Japanese Graphic
Character Set for Information Interchange), JIS X 208-1990, Tokyo, 1990.
[39] Japanese Standards Association, Jouhou koukan you kanji fugou-hojo kanji (Code of the supplemen-
tary Japanese Graphic Character Set for Information Interchange), JIS X 212-1990, Tokyo, 1990.
[40] J ISHU Biaozhun Chubanshe (Technical Standards Publishing), Code of Chinese Graphic Character Set
for Information Interchange GB 2312-1980, Beijing, 1980.
[41] Peter K AROW , Schrifttechnologie – Methoden un Werkzeuge, Springer-Verlag, 1993 ; et (en anglais)
Font Technology, URW Verlag, Hambourg, 1994.
[42] Korean Industrial Standards Association, Jeongho gyohwanyong buho (Hangul mit Hanja) (Code for
Information Interchange (Hangul mit Hanja)), KS C 5601-1987, Seoul, 1987.
[43] Korean Industrial Standards Association, Jeongho gyohwanyong buho hwakjang saten (Code of the
supplementary Korean graphic character set for Information Interchange), KS C 5657-1991, Seoul,
1991.
[44] M.Y. K SAR, Untying Tongues, ISO Bulletin, 24(6):2–8, June 1993.
[45] Ahmed L AKHDAR -G HAZAL, Le système Lakhdar-Ghazal de composition arabe standard, Cahier GUTen-
berg « TEX et l’écriture arabe », à paraı̂tre.
[46] Tracy L A Q UEY, Sésame pour l’Internet – Initiation au réseau planétaire, Addison-Wesley France, Paris,
1994.
[47] Ken L UNDE, Understanding Japanese Information Processing, O’Reilly & Associates, Inc. 1993.
36
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
[49] Alan M ARSHALL, Ruptures et continuités dans un changement de système technique – le remplace-
ment du plomb par la lumière dans la composition typographique, thèse, Grenoble, 18 décembre 1991.
Parue comme Publication interne Irisa, n˚ 638, mars 1992.
[50] Bernard M ARTI et co-auteurs, Télématique – techniques, normes, services, Dunod, 1990.
[51] Roland M EYNET , L’écriture arabe en question, Publications du Centre Culturel Universitaire, Dar El-
Machreq Éditeurs, Beyrouth, 1971.
[52] Yves N EUVILLE, « Normalisation prospective des claviers et multi-linguisme », Actes du colloque Lexi-
praxi 90, AILF, Paris, novembre 1990.
[53] Ch. P ETZOLD, Move Over, ASCII! U NICODE Is Here, PC Magazine, 12(18):374–376, October 1993.
[54] Ch. P ETZOLD, Unicode, wide characters, and C, PC Magazine, 12(19):369–376, November 1993.
[55] Ch. P ETZOLD, Viewing a U NICODE TrueType font under Windows NT, PC Magazine, 12(20):379–390,
November 1993.
[56] Ch. P ETZOLD, Typing U NICODE characters from the keyboard, PC Magazine, 12(21):426–444, Decem-
ber 1993.
[57] Wendy R ANNENBERG and Jürgen B ETTELS, The X/Open Internationalization Model, Digital technical
Journal, 5(3):32–43, Summer 1993
(disponible à l’URL http://www.digital.com/info/DTJ/i18n-toc.html).
[58] K.M. S HELDON , ASCII goes global, Byte, 16:108–116, July 1991.
[59] R. S OUTHALL, « Towards the present day font », A. Marshall (ed.) Actes du colloque « La Lumitype-
Photon », Lyon, octobre 1994, à paraı̂tre.
[60] Ian T SCHICHOLD, Formen Wandlungen der &-zeichen, D. Stempel AG, Francfort. Traduction française
de René Grasset à paraı̂tre à l’École Estienne.
[61] B. L. U LLMAN , Ancient writing and its influence, Cooper Square Publishers, Inc., New York, 1963.
[62] The Unicode Consortium, The U NICODE Standard: Worldwide Character Encoding, Version 1.0, Vo-
lumes 1 and 2. Addison Wesley, 1991/92.
37
Jacques ANDRÉ et Michel GOOSSENS
Annexes
Les caractères de contrôle C0– nommés d’après leurs acronymes ISO 646 28
(les noms entre parenthèses sont ceux de la norme POSIX)
<NUL> or <NU> 000 NULL
NUL
<SOH> or <SH> 001 START OF HEADING
DÉBUT D ’ EN - TÊTE
<STX> or <SX> 002 START OF TEXT
DÉBUT DE TEXTE
<ETX> or <EX> 003 END OF TEXT
FIN DE TEXTE
<EOT> or <ET> 004 END OF TRANSMISSION
FIN DE TRANSMISSION
<ENQ> or <EQ> 005 ENQUIRY
DEMANDE
<ACK> or <AK> 006 ACKNOWLEDGE
ACCUSÉ DE RÉCEPTION
<BEL> or <BL> (<alert>) 007 BELL
SONNERIE
<BS> (<backspace>) 008 BACKSPACE
ESPACE ARRI ÈRE
<HT> (<tab>) 009 HORIZONTAL TABULATION
TABULATION HORIZONTALE
<LF> (<newline>) 010 LINE FEED
INTERLIGNE
<VT> (<vertical-tab>) 011 VERTICAL TABULATION
TABULATION VERTICALE
<FF> (<form-feed>) 012 FORM FEED
PRÉSENTATION DE FEUILLE
<CR> (<carriage-return>) 013 CARRIAGE RETURN
RETOUR DE CHARIOT
<SO> 014 SHIFT OUT
HORS - CODE ( CODE SPÉCIAL )
<SI> 015 SHIFT IN
EN - CODE ( CODE NORMAL )
<DLE> or <DL> 016 DATALINK ESCAPE
ÉCHAPPEMENT À LA TRANSMISSION
<DC1> or <D1> 017 DEVICE CONTROL ONE
CONTR ÔLE DE PÉRIPHÉRIQUE UN
<DC2> or <D2> 018 DEVICE CONTROL TWO
CONTR ÔLE DE PÉRIPHÉRIQUE DEUX
<DC3> or <D3> 019 DEVICE CONTROL THREE
CONTR ÔLE DE PÉRIPHÉRIQUE TROIS
<DC4> or <D4> 020 DEVICE CONTROL FOUR
CONTR ÔLE DE PÉRIPHÉRIQUE QUATRE
<NAK> or <NK> 021 NEGATIVE ACKNOWLEDGE
ACCUSÉ DE RÉCEPTION NÉGATIF
<SYN> or <SY> 022 SYNCHRONOUS IDLE
SYNCHRONISATION
28
Les termes français sont ceux donnés dans le Dictionnaire de l’anglais de l’informatique de Jacques H ILDEBERT,
Presses Pocket, 1992, car il n’existe pas de traduction française officielle ni dans ISO646, ni, pour ces caractères dans
ISO8859(F).
38
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
Caractères imprimables 29
<space> 032 SPACE
ESPACE
<exclamation-mark> 033 ! EXCLAMATION MARK
POINT D ’ EXCLAMATION
<quotation-mark> 034 " QUOTATION MARK
GUILLEMET
<number-sign> 035 # NUMBER SIGN
SYMBOLE NUMÉRO
<dollar-sign> 036 $ DOLLAR SIGN
SYMBOLE DOLLAR
<percent> 037 % PERCENT SIGN
SYMBOLE POURCENT
<ampersand> 038 & AMPERSAND
PERLU ÈTE
<apostrophe> 039 ’ APOSTROPHE
APOSTROPHE
<left-parenthesis> 040 ( LEFT PARENTHESIS
PARENTH ÈSE GAUCHE
<right-parenthesis> 041 ) RIGHT PARANTHESIS
PARENTH ÈSE DROITE
<asterisk> 042 * ASTERISK
ASTÉRISQUE
<plus-sign> 043 + PLUS SIGN
SIGNE PLUS
<comma> 044 , COMMA
VIRGULE
<hyphen> 045 − HYPHEN - MINUS
TIRET, SIGNE MOINS
<period> 046 . FULL STOP
POINT
<slash> 047 / SOLIDUS
BARRE OBLIQUE
<zero> 048 0 DIGIT ZERO
CHIFFRE ZÉRO
<one> 049 1 DIGIT ONE
CHIFFRE UN
<two> 050 2 DIGIT TWO
CHIFFRE DEUX
<three> 051 3 DIGIT THREE
CHIFFRE TROIS
29
Traduction française de ISO8859-1(F) du 15 février 1987.
39
Jacques ANDRÉ et Michel GOOSSENS
40
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
41
Jacques ANDRÉ et Michel GOOSSENS
Caractères de contrôle C1
Les codes 128–131 et 152–154 sont d’I SO /I EC10646, les autres d’I SO /I EC6429 30.
<PAD> 128 PADDING CHARACTER
CARACT ÈRE DE GARNISSAGE
<HOP> 129 HIGH OCTET PRESET
OCTET SUPÉRIEUR PRÉDÉFINI
<BHP> 130 BREAK PERMITTED HERE
INTERRUPTION PERMISE ICI
<NBH> 131 NO BREAK HERE
INTERRUPTION INTERDITE ICI
<IND> 132 INDEX
INDEX
<NEL> 133 NEXT LINE
LIGNE SUIVANTE
<SSA> 134 START OF SELECTED AREA
DÉBUT DE ZONE SELECTIONNÉE
<ESA> 135 END OF SELECTED AREA
FIN DE ZONE SELECTIONNÉE
<HTS> 136 HORIZONTAL TABULATION SET
METTRE TABULATION HORIZONTALE
<HTJ> 137 CHARACTER TABULATION WITH JUSTIFICATION
CARACT ÈRE DE TABULATION AVEC JUSTIFICATION
<VTS> 138 VERTICAL TABULATION SET
METTRE TABULATION VERTICALE
<PLD> 139 PARTIAL LINE DOWN
DÉCALAGE VERS LE BAS D ’ UNE FRACTION DE LIGNE
<PLU> 140 PARTIAL LINE UP
DÉCALAGE VERS LE HAUT D ’ UNE FRACTION DE LIGNE
<RI> 141 REVERSE INDEX
INDEX INVERSÉ
<SS2> 142 SINGLE - SHIFT TWO
30
Traduction française par les auteurs basée sur la description dans ISO/IEC6429
42
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
31
Termes français de ISO/IEC8859-1(F) du 15 février 1987.
43
Jacques ANDRÉ et Michel GOOSSENS
44
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
45
Jacques ANDRÉ et Michel GOOSSENS
La norme I SO-639 [31] propose des codes à deux lettres pour représenter les langues
les plus importantes. Il correspond aux premières et quatrièmes colonnes de la table 11.
Récemment une extension à trois lettres du code a été proposée [32]. Il apparaı̂t dans les
colonnes deux et cinq de la même table, où les troisièmes et sixièmes colonnes donnent
le nom normatif français des langues en question.
46
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
Table 11: Les codes pour les langues I SO-639/I SO-CD 639-2
47
Jacques ANDRÉ et Michel GOOSSENS
48
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
49
Jacques ANDRÉ et Michel GOOSSENS
50
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
51
Jacques ANDRÉ et Michel GOOSSENS
C. L’extension inputenc
\usepackage[codage ]{inputenc}
\inputencoding{codage }
En plus il existe des fichiers provenant du monde PC (par exemple pour les com-
patibles PC commercialisés en France où l’on utilise le “pagecode 850” il y a un fichier
pc850) et du monde Macintosh (avec un fichier qui s’appelle stdmac).
À chaque codage correspond un fichier de type .def, par exemple latin1.def.
Dans un tel fichier on associe à chaque caractère à l’entrée une commande LATEX en uti-
lisant la syntaxe :
\DeclareInputText{car }{texte }
\DeclareInputMath{car }{math }
52
Codage des caractères :de l’ A SCII à U NICODE et I SO/ I EC-10646
Le fichier de type .def peut également contenir des déclarations utilisant les com-
mandes \providecommand et \ProvideTextCommandDefault, par exemple,
\ProvideTextCommandDefault{\textonequarter}{$\frac14$}
\DeclareInputText{"BC}{\textonequarter}
Une autre extension pourra donc changer le comportement du caractère "BC en redéfi-
nissant la commande \textonequarter.
Restrictions
— Le fichier avec les définitions de type .def ne doit pas contenir des déclarations
qui dépendent du codage de sortie (et des polices).
— Un fichier .def ne définit que les codes supérieur à 127 (c. à d. le fichier
ascii.def est vide).
— Le fichier .def ne doit pas contenir des définitions de polices ou un nombre trop
important de nouvelles commandes.
— De la même façon on doit faire attention de ne pas (re)définir des noms (com-
mandes) qui existent déjà dans d’autres extensions.
— En « inventant » des noms pour les nouveaux glyphes le développeur aura avan-
tage à étudier le fichier inputenc.dtx qui contient quelques directives.
53