Jacques Poitou
Accueil
Plan du site
Langages | Ecritures | Ecritures latines | Ecriture chinoise | Numérique | Cryptographie | Typographie | Reproduction et transmission | Censure | Lexique | Jeux
Numérique, multimédia, hypertexte | Réseau | Partage et diffusion | Plagiat | Traitement de texte | Traitement de la voix | Types de textes numériques

Traitement numérique des écritures : ASCII, Unicode, etc.


L'ordinateur face à la diversité des langues

La saisie de textes dans des écritures différentes avec un ordinateur pose deux problèmes.

Le premier problème est lié à la spécificité des caractères.

Si la saisie de texte en anglo-américain ne nécessite que les 26 lettres de l'alphabet en minuscules et en majuscules ainsi que des signes de ponctuation, d'autres langues à alphabet latin requièrent d'autres caractères : pour le français : à, À, â, Â, é, É, è, È, ê, Ê, ë, Ë, î, Î, ï, Ï, ù, Ù, û, Û, ü, Ü, ÿ, Ÿ, œ, Œ, æ, Æ, ç, Ç ; pour l'allemand : ä, Ä, ü, Ü, ö, Ö, ß. Et si l'on veut aussi saisir du texte en islandais, en espagnol ou en tchèque, il faut encore d'autres caractères. A ce problème s'ajoute celui de la configuration des claviers : si j'écris surtout en français, il est utile que les lettres accentuées soient faciles d'accès, si j'écris surtout en allemand, j'ai besoin d'accéder directement aux lettres minuscules et majuscules avec Umlaut et au ß, etc.

Le problème s'aggrave avec les langues qui utilisent d'autres alphabets (alphabets cyrillique, grec, arabe, runique pour des inscriptions anciennes en langues germaniques). Et quid du chinois, du japonais et du coréen (CJK en abréviation anglaise), dont l'écriture est basée sur des milliers de caractères ?

voirEcriture chinoise
voirEcritures du japonais
voirEcriture du coréen

Le deuxième problème est lié à la spécificité de l'agencement des caractères.

Si de nombreuses langues s'écrivent comme l'anglo-américain, de gauche à droite et de haut en bas, cette disposition n'est pas universelle : l'arabe s'écrit de droite à gauche, et le chinois traditionnel de haut en bas et de droite à gauche, sans parler du grec ancien qui s'est écrit parfois en boustrophédon (une ligne de gauche à droite et la suivante de droite à gauche).

Même pour des langues à écriture alphabétique, les règles d'agencement des caractères ne sont pas les mêmes : cela concerne notamment la coupure en fin de ligne, la gestion des espaces et d'autres conventions (p. ex., la virgule en liaison avec les chiffres n'est pas universelle).

voirAlphabet grec
voirEcritures alphabétiques
voirChiffres

Tant que l'on utilise son ordinateur de façon isolée, avec une seule langue, en vue de la seule impression de documents, sans communiquer avec quiconque par voie électronique (p. ex. par mail ou par Internet), le problème peut être résolu par la configuration de l'ordinateur et des logiciels en fonction de la langue utilisée et par l'utilisation des polices appropriées.

Mais les difficultés commencent à surgir quand on veut saisir du texte en plusieurs langues (p.ex., en français et en chinois traditionnel ou en vietnamien). On peut certes encore changer la configuration de son ordinateur et utiliser des polices spécifiques et les programmes particuliers pour les langues à écriture non alphabétique (chinois, japonais, coréen). Mais dès que l'on communique par voie électronique avec des correspondants qui utilisent des ordinateurs configurés pour d'autres langues (et tournant avec des systèmes d'exploitation différents), les problèmes s'aggravent. Tout utilisateur du courrier électronique a déjà été confronté à des messages dans lesquels figurent des signes bizarres ou aberrants, voire totalement illisibles.

voirTranscription et translittération des écritures
voirCodes des pays, des langues et des écritures.


De l'ASCII à l'ISO 8859

A l'origine du système actuel de codage des ordinateurs se trouve le standard ASCII (American Standard Code for Information Interchange), créé dans les années soixante du siècle dernier et fixé en 1983. Il représente le codage numérique (et donc l'utilisation) de 128 signes (= 2 puissance 7), soient 33 signes pour les commandes (utiles essentiellement, à l'origine, pour les communications par télex), 52 signes pour les 26 lettres minuscules et majuscules, 10 pour les chiffres, 21 pour les signes de ponctuation et 12 autres qui pouvaient initialement être utilisés diversement selon les langues, mais l'usage américain dominant s'est imposé. Voici la liste des signes graphiques de l'ASCII :

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
0 1 2 3 4 5 6 7 8 9
# $ % & @ ! " ' ( ) * + , - . / [ \ ] ^ _ ` { | } ~

Il est assez évident que ce nombre réduit de signes, s'il suffit pour le codage des caractères usuels de l'anglo-américain, ne permet pas le codage des graphèmes spécifiques d'autres langues européennes, ni même d'une seule (rien que pour le français, il faut 92 signes rien que pour les lettres et les chiffres).

A partir du moment où les logiciels de traitement de texte se sont développés et diffusés dans le monde, il a fallu l'étendre à 256 signes (= 2 puissance 8). Mais les numéros de code de 128 à 257 n'ont pas été attribués de la même façon sur les différentes plateformes (Windows, Unix ou Mac p. ex.), d'où l'existence de plusieurs standards (avec des règles de conversion d'un standard à l'autre et éventuellement quelques petits problèmes). Et de toute façon, 256 signes ne suffisent pas non plus à coder les seules langues à alphabet latin (de l'anglais au vietnamien).

La solution adoptée a consisté à définir des jeux de caractères (en anglais character set, en abrégé charset) correspondant aux besoins spécifiques de groupes de langues : c'est le standard connu sous le nom de ISO 8859). Ainsi, le premier de ces jeux, "Latin-1" (8859-1), contient les caractères nécessaires pour l'écriture des langues à écriture latine d'Europe occidentale (langues germaniques, romanes – à l'exception du roumain pour lequel manquent quelques signes –, celtiques, basque, albanais). D'autres jeux ont été définis ensuite pour les autres langues à écriture latine (notamment pour les langues slaves – "Latin-2" = 8859-2 –, les langues baltes, le turc), et également pour corriger quelques défauts du jeu "Latin-1" (dans lequel, p. ex. manquaient les signes œ et Œ nécessaires pour le français) et pour regrouper différemment les langues en fonction de préoccupations économiques, politiques ou culturelles (exemple : vaut-il mieux avoir un jeu permettant à la fois l'écriture des langues occidentales et du turc ou des langues occidentales et de l'islandais ?).

Etaient également définis des standards pour les langues à écriture alphabétique non latine : cyrillique (8859-5), arabe (8859-6), grec (8859-7), hébreu (8859-8).

Mais cette norme ne règle que partiellement le problème :

– les regroupements de langues correspondant aux différents jeux de caractères latins sont plus ou moins pertinents... et plus ou moins arbitraires ;
– on ne peut utiliser qu'un seul jeu de caractères à la fois dans un même texte (par exemple une page web) : comment faire si je veux avoir un texte bilingue vietnamien et russe ?

Et quid des milliers de caractères du chinois, le japonais et le coréen ? Ils peuvent être codés sur deux octets (soient 2 fois 8 bits), mais là aussi se pose la question d'une standardisation : certains caractères sont spécifiques au japonais, au coréen et au chinois, d'autres communs, etc.


Unicode

La réponse à ces problèmes est l'attribution d'un code unique à tous les caractères utilisés dans les différentes langues du monde et donc la définition d'un jeu unique, universel, de caractères : c'est le standard Unicode (Universal Character Set, UCS). Après des initiatives séparées menées notamment par Xerox et Apple, le consortium Unicode a été créé en 1991, il regroupe de nombreux (et les plus gros) partenaires privés et publics du monde de l'informatique. La dernière version du standard Unicode, 9.0 est disponible depuis 2016. Elle dépasse les 100 000 caractères, et des projets nombreux existent d'ores et déjà pour le codage d'autres écritures.

Le standard Unicode est identique à la norme internationale ISO 10646.

Principes

Les deux principes essentiels sur lesquels repose la définition d'Unicode sont les suivants :

1. Distinction entre écriture et langue.

Unicode définit les caractères indépendamment de leur utilisation spécifique dans les langues. C'est, en quelque sorte, le même principe que celui régissant l'alphabet, qui sert pour l'écriture de multiples langues. Les signes Unicode ne correspondent donc pas aux graphèmes d'une langue donnée, ce sont les signes avec lesquels on peut saisir ces graphèmes. Le standard contient un certain nombre de redondances : ainsi, pour le hangul (coréen), Unicode contient les signes des sons individuels (jamos) et les signes (plus de 10 000) correspondant aux syllabes formées à partir de ces sons. De même, les signes diacritiques sont répertoriés pour eux-mêmes, ainsi que les combinaisons entre lettres de l'alphabet et ces mêmes signes diacritiques (voir ci-dessous  l'exemple de a).

2. Distinction entre caractère ("abstrait") et glyphes (formes géométriques d'un caractère).

Unicode attribue un code à chaque caractère, les caractères étant conçus comme des entités abstraites : "les plus petites composantes de la langue écrite qui ont une valeur sémantique" (cité d'après Haralambous 2002 : 111), [c'est-à-dire auxquelles on peut faire correspondre une valeur linguistique – le terme "sémantique" est utilisé ici dans le sens où il est utilisé en logique]. Chaque caractère représente une classe de glyphes, c'est-à-dire de représentations possibles selon la police, le corps, le style, la graisse, etc., sans oublier les réalisations manuscrites.

Abstrait par rapport aux graphèmes qu'il peut représenter, le caractère Unicode l'est aussi par rapport aux glyphes auxquels il peut correspondre. Et cette double distinction est évidemment problématique (voir Haralambous 2002 et Randier 2002 pour une critique d'Unicode surtout sur la question des liens avec la typographie). Trois exemples :

– l'écriture gothique, dans la mesure où elle contient les mêmes caractères que l'écriture romaine, n'a pas de codes spécifiques (sauf pour quelques signes utilisés en mathématiques), mais dans certains cas, la distinction gothique/romain peut avoir une pertinence linguistique – de la même façon que d'autres distinctions typographiques (italiques, gras, etc.) ;
– l'écriture gothique, à la différence de l'écriture en romains, contient deux "s" différents selon qu'il est à l'intérieur d'un mot ou non : comment assurer cette distinction si le standard Unicode ne contenait qu'un seul caractère "s" minuscule ?

voirEcriture gothique

– les guillemets ouvrant et fermant ont – globalement – la même fonction en français, en anglais ou en allemand, il serait donc cohérent qu'ils soient représentés par deux caractères seulement (guillemet ouvrant et guillemet fermant), mais leur forme usuelle est différente – d'où plusieurs caractères différents spécifiés partiellement par rapport à la langue.

voirGuillemets

Dimension

Le standard Unicode comprend actuellement plus d'une centaine de milliers de caractères et il est extensible à plusieurs millions.

Parmi les signes définis, citons (au hasard) :

– les signes des écritures alphabétiques (écritures latines, cyrillique, arabe, hébreu, arménien, etc.), y compris les signes diacritiques utilisés par telle ou telle langue,
– les signes d'écritures disparues, comme le runique, le gotique, le linéaire B ou les anciennes écritures italiques ;
– les signes spécifiques de l'alphabet phonétique international (API = IPA) ;
– les caractères utilisés en chinois, japonais et coréen ;
– des signes divers des écritures mathématiques chiffres, symboles mathématiques), etc. ;
– les signes de l'écriture Braille ;
– des ensembles de signes qui constituent – vus globalement – un inventaire à la Prévert : les symboles du zodiaque, des filets, flèches et traits divers, des étoiles en tous genres, un parapluie, la croix de Lorraine, des carrés noirs de différentes tailles, des "guillemets de fantaisie en forme de grosse virgule double", la faucille et le marteau et... un bonhomme de neige.

Les signes sont groupés en blocs – voir ci-dessous les quatre blocs dans lesquels apparaît "a" dans telle ou telle variante. La définition des blocs est conditionnée à la fois par la volonté de rendre Unicode compatible avec les standards plus anciens et aussi par les étapes de l'extension progressive de ce standard. Ainsi, le bloc "Latin de base" (0000 à 007F) correspond au standard ASCII, le bloc "Latin-1" correspond, avec le bloc "Latin de base", au jeu de caractères 8859-1.

Les numéros des caractères sont donnés en nombres hexadécimaux.

Voici, à titre d'exemple, les caractères définis sur la base de la combinaison de la lettre A (majuscule et minuscule) et de signes diacritiques.

Latin base

0041 LETTRE MAJUSCULE LATINE A
0061 LETTRE MINUSCULE LATINE A

Latin étendu A

0100 LETTRE MAJUSCULE LATINE A MACRON
0101 LETTRE MINUSCULE LATINE A MACRON
0102 LETTRE MAJUSCULE LATINE A BRÈVE
0103 LETTRE MINUSCULE LATINE A BRÈVE
0104 LETTRE MAJUSCULE LATINE A OGONEK
0105 LETTRE MINUSCULE LATINE A OGONEK

Latin étendu B

01CD LETTRE MAJUSCULE LATINE A CARON
01CE LETTRE MINUSCULE LATINE A CARON
01DE LETTRE MAJUSCULE LATINE A TRÉMA ET MACRON
01DF LETTRE MINUSCULE LATINE A TRÉMA ET MACRON
01E0 LETTRE MAJUSCULE LATINE A POINT EN CHEF ET MACRON
01E1 LETTRE MINUSCULE LATINE A POINT EN CHEF ET MACRON
01FA LETTRE MAJUSCULE LATINE A ROND EN CHEF ET ACCENT AIGU
01FB LETTRE MINUSCULE LATINE A ROND EN CHEF ET ACCENT AIGU
0200 LETTRE MAJUSCULE LATINE A DOUBLE ACCENT GRAVE
0201 LETTRE MINUSCULE LATINE A DOUBLE ACCENT GRAVE
0202 LETTRE MAJUSCULE LATINE A BRÈVE RENVERSÉE
0203 LETTRE MINUSCULE LATINE A BRÈVE RENVERSÉE
0226 LETTRE MAJUSCULE LATINE A POINT EN CHEF
0227 LETTRE MINUSCULE LATINE A POINT EN CHEF

Latin étendu additionnel

1E00 LETTRE MAJUSCULE LATINE A ROND SOUSCRIT
1E01 LETTRE MINUSCULE LATINE A ROND SOUSCRIT
1E9A LETTRE MINUSCULE LATINE A DEMIROND À DROITE
1EA0 LETTRE MAJUSCULE LATINE A POINT SOUSCRIT
1EA1 LETTRE MINUSCULE LATINE A POINT SOUSCRIT
1EA2 LETTRE MAJUSCULE LATINE A CROCHET EN CHEF
1EA3 LETTRE MINUSCULE LATINE A CROCHET EN CHEF
1EA4 LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET ACCENT AIGU
1EA5 LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET ACCENT AIGU
1EA6 LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET ACCENT GRAVE
1EA7 LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET ACCENT GRAVE
1EA8 LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET CROCHET EN CHEF
1EA9 LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET CROCHET EN CHEF
1EAA LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET TILDE
1EAB LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET TILDE
1EAC LETTRE MAJUSCULE LATINE A ACCENT CIRCONFLEXE ET POINT SOUSCRIT
1EAD LETTRE MINUSCULE LATINE A ACCENT CIRCONFLEXE ET POINT SOUSCRIT
1EAE LETTRE MAJUSCULE LATINE A BRÈVE ET ACCENT AIGU
1EAF LETTRE MINUSCULE LATINE A BRÈVE ET ACCENT AIGU
1EB0 LETTRE MAJUSCULE LATINE A BRÈVE ET ACCENT GRAVE
1EB1 LETTRE MINUSCULE LATINE A BRÈVE ET ACCENT GRAVE
1EB2 LETTRE MAJUSCULE LATINE A BRÈVE ET CROCHET EN CHEF
1EB3 LETTRE MINUSCULE LATINE A BRÈVE ET CROCHET EN CHEF
1EB4 LETTRE MAJUSCULE LATINE A BRÈVE ET TILDE
1EB5 LETTRE MINUSCULE LATINE A BRÈVE ET TILDE
1EB6 LETTRE MAJUSCULE LATINE A BRÈVE ET POINT SOUSCRIT
1EB7 LETTRE MINUSCULE LATINE A BRÈVE ET POINT SOUSCRIT

Ressources

1. Nombreux documents (en anglais) sur le site du consortium Unicode, notamment :

– les différents blocs de caractères définis dans le standard Unicode, disponibles en téléchargement comme fichiers PDF sur
http://www.unicode.org/charts/ ;
– l'ensemble de la version 6.1.0 d'Unicode peut être téléchargée en un gros fichier (89 Mo)
http://www.unicode.org/Public/6.1.0/charts/CodeCharts.pdf
– la présentation des différents plans et projets d'Unicode, à partir de la page
http://www.unicode.org/roadmaps/.

2. Le site estonien http://www.eki.ee/letter/ fournit aussi d'utiles ressources (en anglais) sur les jeux de caractères et sur Unicode.

3. Nombreux documents (également en anglais), et notamment une liste de polices Unicode pour les langues référencées, la plupart en téléchargement libre et gratuit, sur le site de Alan Wood ; les polices "True Type" (.ttf) indiquées pour Windows fonctionnent sans problème sur Mac :
http://www.alanwood.net/unicode/.

Considérations pratiques

Les caractères Unicode peuvent être saisis soit directement à l'aide du clavier (mais le nombre de signes accessibles ainsi est relativement limité), soit à partir de leur code numérique, soit avec des utilitaires spécifiques de saisie pour le chinois, le japonais et le coréen. Mais pour que les signes apparaissent sur l'écran (et a fortiori pour qu'ils puissent être transmis électroniquement ou simplement imprimés), il faut que le système d'exploitation et les applications utilisées soient capables de gérer Unicode et que les polices appropriées soient disponibles.

En ce qui concerne les polices, une même police ne permet pas l'obtention de tous les signes Unicode. Ce ne serait d'ailleurs pas très utile. Quand j'écris en français, je n'ai pas vraiment besoin d'une police qui permette aussi d'obtenir les caractères arabes, laotiens ou runiques. Et si je veux écrire un texte en deux langues – disons en chinois et en russe –, il me suffit d'avoir une police permettant la production de ces deux types d'écritures.

Il existe des polices très larges (avec les signes de nombreux blocs unicode) et des polices plus spécialisées (p. ex. pour l'écriture phonétique ou pour l'écriture du birman...). Pour pratiquement tous les blocs Unicode, c'est-à-dire tous les types d'écriture présents dans Unicode), on peut trouver sur Internet des polices en téléchargement libre et gratuit – polices qui peuvent être ajoutées à celles fournies avec les systèmes d'exploitation ou les logiciels.

Dans les faits, un utilisateur donné n'a pas – sauf cas exceptionnel – à utiliser toutes les possibilités multilingues que permettent les ordinateurs récents. Il écrit principalement dans une langue, éventuellement dans deux ou trois, avec donc un nombre limité de types de caractères et de règles d'écriture. Les ressources nécessaires pour une bonne partie des langues lui sont donc la plupart du temps inutiles et l'encombreraient même s'elles étaient aussi directement accessibles que celles dont il a besoin quotidiennement. D'où l'utilité d'établir à la fois des préférences linguistiques... et la possibilité d'en changer.

Les solutions concrètes mises en œuvre pour résoudre ces problèmes diffèrent selon les systèmes d'exploitation et selon leurs versions. à titre d'exemple, Voici, à titre d'exemple, les principales qui apparaissent sur Mac (avec OS X El Capitan) :

– la possibilité d'activer les claviers et utilitaires de saisie présents dans le système, avec, selon le cas, différents autres utilitaires (p.ex. pour la conversion entre les caractères chinois traditionnels et les caractères simplifiés) ;
– la possibilité de choisir des configurations de clavier correspondant aux langues que l'on veut utiliser ;
– la possibilité de configurer certaines applications pour qu'elles prennent en compte les règles spécifiques à une langue – polices, disposition, dictionnaires, orthographe, etc. ;
– la possibilité, pour certaines applications, de choisir la langue dans laquelle sont présentés les menus, les commandes et les boîtes de dialogue, etc.
– la possibilité, pour certaines applications (notamment les logiciels de création web, les navigateurs et les logiciels de messagerie), de choisir le type d'encodage du texte (Unicode [UTF-8], occidental, cyrillique, Unicode, chinois simplifié, etc.), aussi bien pour la saisie du texte que pour sa lecture ; de même la possibilité de choisir la langue préférentielle pour les sites internet multilingues.


Références bibliographiques

André, Jacques, 1997. Caractères numériques : introduction. Cahiers GUTenberg 1997, 26 : 5-44. Document en ligne, consulté le 2007-07-24.
http://www.cairn.info/revue-document-numerique-2002-3-page-13.htm.

André, Jacques, 2002. Caractères, codage et normalisation – de Chappe à Unicode. Document numérique, 6, 3/4 : 13-49. Document en ligne, consulté le 2007-07-24.
http://jacques-andre.fr/faqtypo/chappe_a_unicode.pdf.

Andries, Patrick, 2002. Introduction à Unicode et à l'ISO 10646. Document numérique, 6, 3-4 : 51-88. Document en ligne, consulté le 2006-01-24.
http://hapax.qc.ca/pdf/intro-Unicode.pdf.

Andries, Patrick, 2002. Entretien avec Ken Whistler, directeur technique du consortium Unicode. Document numérique, 6 : 3/4 : 329-351. Document en ligne, consulté le 2008-12-20.
http://www.cairn.info/revue-document-numerique-2002-3-page-329.htm.

Haralambous, Yannis, 2002. Unicode et typographie : un amour impossible. Document numérique, 6, 3-4 : 105-137. Document en ligne, consulté le 2008-12-20.
http://www.cairn.info/revue-document-numerique-2002-3-p-105.htm.

Randier, Olivier, 2002. Unicode : tentations et limites. L'avis d'un typographe. Document numérique, 6, 3-4 : 89-103. Document en ligne, consulté le 2008-12-20.
http://www.cairn.info/revue-document-numerique-2002-3-page-89.htm.


© Jacques Poitou 2017.