# ISO 15924

La norme ISO 15924 liste des « Codes pour la représentation des noms d’écritures ». Le Consortium Unicode gère le bureau de l’autorité d’enregistrement et de maintenance de la norme pour le compte de l’ISO qui définit et approuve la norme. Toutefois, la norme ISO 15924 ne fait pas partie de la norme Unicode (qui utilise des écritures unifiées portant uniquement sur les distinctions de caractères abstraits).

## Désignation et organisation des systèmes d’écritures selon ISO 15924

La norme définit pour chaque système d’écriture :
* un nom descriptif en anglais ;
* un nom descriptif en français ;
* un codet alphabétique (normatif) à quatre lettres, par exemple :
    Arab : arabe ;
    Cyrl : cyrillique ;
    Egyp : hiéroglyphes égyptiens ;
    Latn : latin ;
    Laoo : laotien ;
    Yiii : yi ;
* un codet numérique (normatif) entre 000 et 999 ; et enfin
* une date de référence permettant de suivre les évolutions (et corrections éventuelles) de chaque système d’écriture dans la norme elle-même.
Pour une liste complète (et à jour) des codes et noms définis, on se reportera simplement au site Internet indiqué en fin d’article.

### Nomenclature et classification numérique

Les codets numériques sont groupés en séries d’une centaine en fonction de la typologie et la proximité relative des systèmes d’écritures (voir des exemples ci-dessous).
Les codets et noms sont définis pour prendre également en compte les besoins bibliographiques concernant des textes et documents entiers, et ne sont pas réservés aux seuls caractères isolés. Aussi, des styles différents d’écritures utilisant le même alphabet abstrait disposent de codets spécifiques, classés avec des codets proches de la même série, si possible consécutifs. Pour cela, les codets numériques ne sont pas alloués simplement par incrément de 1 (il y a des « trous » dans la numérotation).
Les séries suivantes sont utilisées actuellement :
* 000 à 099 : écritures hiéroglyphiques (égyptiens ou maya) et cunéiformes (dont l’ougaritique) ;
* 100 à 199 : écritures alphabétiques de droite à gauche (dont les alphabets phénicien, tifinaghs, abjads sémitiques, n’ko et vieux hongrois), ainsi qu'écritures verticales de haut en bas (puis gauche à droite), dérivées de l'alphabet ouïghour (mongol bitchig, todo bitchig, alphabet mandchou) ;
* 200 à 299 : écritures alphabétiques de gauche à droite (dont les alphabets européens dérivés du grec ancien, le bopomofo et l’alphabet hangûl, ou les alphabets littéraires inventés) ;
* 300 à 399 : écritures alphasyllabiques (dont les nombreux abugidas brahmiques du sud et du sud-est de l’Asie) ;
* 400 à 499 : écritures syllabiques (dont les syllabaires linéaire A ou B, chypriote, hiragana ou katakana, éthiopien, autochtones canadiens, cherokee, etc.) ;
* 500 à 599 : écritures idéographiques ou symboliques (dont l’écriture Braille) ;
* 600 à 699 : écritures non déchiffrées (de classification encore inconnue, telles l’indus et le rongorongo) ;
* 700 à 799 ou 800 à 899 : séries pas encore utilisées ;
* 900 à 999 : codets à usage privé, alias (aucun actuellement), codets spéciaux.

### Composition et attribution des codets alphabétiques

Les codets alphabétiques à quatre lettres utilisent l’alphabet latin basique à 26 lettres. La casse de ces codets n’est pas significative, mais la casse recommandée utilise une lettre majuscule suivie de trois lettres minuscules. Ces codets alphabétiques sont inspirés des noms des écritures pour des raisons mnémoniques. Toutefois, les variantes de styles d’une même écriture ne diffèrent, autant que possible, que par leur quatrième lettre. Ces variantes sont reconnaissables aussi par leurs codets numériques proches dans la même série. Par exemple :
* Arab = 160 = (fr) « arabe » = (en) “Arabic” ;
* Aran = 161 = (fr) « arabe (variante nastalique) » = (en) “Arabic (Nastaliq variant)”.
Ou encore :
* Latn = 215 = (fr) « latin » = (en) “Latin” ;
* Latf = 216 = (fr) « latin (variante brisée) » = (en) “Latin (Fraktur variant)” ;
* Latg = 217 = (fr) « latin (variante gaélique) » = (en) “Latin (Gaelic variant)”.
Ou encore :
* Cyrl = 220 = (fr) « cyrillique » = (en) “Cyrillic” ;
* Cyrs = 221 = (fr) « cyrillique (variante slavonne) » = (en) “Cyrillic (Old Church Slavonic variant)”.
Ou encore :
* Geor = 240 = (fr) « géorgien (mkhédrouli et mtavrouli) » = (en) “Georgian (Mkhedruli and Mtavruli)” ;
* Geok = 241 = (fr) « khoutsouri (assomtavrouli et nouskhouri) » = (en) “Khutsuri (Asomtavruli and Nuskhuri)”.
Et aussi :
* Hani = 500 = (fr) « idéogrammes han (sinogrammes) » = (en) “Han (Hanzi, Kanji, Hanja)”, également utilisés pour l'ancienne écriture hán tự (ou chữ nho) du vietnamien ;
* Hans = 501 = (fr) « idéogrammes han (variante simplifiée) » = (en) “Han (Simplified variant)” ;
* Hant = 502 = (fr) « idéogrammes han (variante traditionnelle) » = (en) “Han (Traditional variant)”.
Cependant, un sous-ensemble d’une écriture plus complète peut avoir un codet très différent (ceci est justifié par le fait que le sous-ensemble alphabétique est utilisé dans une composition de mise en page en ligne simplifiée, très différente de la composition en carrés syllabiques de l'écriture normale plus complète et plus distinctive) :
* Hang = 286 = (fr) « hangûl (hangŭl, hangeul) » = (en) “Hangul (Hangŭl, Hangeul)” ;
* Jamo = 284 = (fr) « jamo (alias pour le sous-ensemble jamo du hangûl) » = (en) “Jamo (alias for Jamo subset of Hangul)”.
Également, deux codets alphabétiques commençant par les mêmes trois premières lettres ne désignent pas forcément deux variantes d’un même système d’écriture (ce qui peut se voir éventuellement grâce à la classification numérique dans des séries distinctes) :
* Hani = 500 = (fr) « idéogrammes han (sinogrammes) » = (en) “Han (Hanzi, Kanji, Hanja)” ;
* Hano = 371 = (fr) « hanounóo » = (en) “Hanunoo (Hanunóo)”.

### Écritures multiples et codets spéciaux

Certains systèmes d'écriture utilisent fréquemment plusieurs écritures conjointement dans un même texte et ont des codets normalisés pour de telles compositions:
* Hanb = 503 = (fr) « han avec bopomofo (alias pour han + bopomofo) » = (en) “Han with Bopomofo (alias for Han + Bopomofo)” ;
* Hrkt = 412 = (fr) « syllabaires japonais (alias pour hiragana + katakana) » = (en) “Japanese syllabaries (alias for Hiragana + Katakana)” ;
* Jpan = 413 = (fr) « japonais (alias pour han + hiragana + katakana) » = (en) “Japanese (alias for Han + Hiragana + Katakana)” ;
* Kore = 287 = (fr) « coréen (alias pour hangûl + han) » = (en) “Korean (alias for Hangul + Han)”.
C'est également le cas pour les systèmes d’écritures géorgiens (voir la section précédente), où l’ISO 15924 ne distingue pas chacun de ses quatre alphabets mais les codifie en les regroupant deux par deux, bien qu’ils soient le plus souvent utilisés chacun séparément (de façon unicamérale, et non pas bicamérale avec distinction sémantique de la casse comme dans les écritures latine, grecque ou cyrillique modernes).
Si les écritures normalisées ne suffisent pas, il existe 50 codets utilisables au gré des utilisateurs (les noms utilisés ne sont pas normatifs et sont modifiables) :
* Qaaa = 900 = (fr) « réservé à l’usage privé (début) » = (en) “Reserved for private use (start)” ;
* Qaab = 901 = (fr) « réservé à l’usage privé (2e) » = (en) “Reserved for private use (2nd)” ;
* Qaaz = 925 = (fr) « réservé à l’usage privé (26e) » = (en) “Reserved for private use (26$^{th}$)”.
* Qaba = 926 = (fr) « réservé à l’usage privé (27e) » = (en) “Reserved for private use (27$^{th}$)” ;
* Qabw = 948 = (fr) « réservé à l’usage privé (49e) » = (en) “Reserved for private use (49$^{th}$)”.
* Qabx = 949 = (fr) « réservé à l’usage privé (fin) » = (en) “Reserved for private use (end)”.
Il existe des codets spéciaux destinés aux cas des langues non écrites (par exemple à l’usage de classification de photographies et d’enregistrements vidéo ou audiophoniques dans les collections des médiathèques et musées), ou bien quand une écriture ne peut pas être déterminée de façon fiable car multiple (dans des familles distinctes et pour lequel l’ensemble n’a pas de code prédéfini plus précis), ou bien encore quand l’écriture n’a pas été spécifiée mais pourrait éventuellement être indiquée de façon plus précise avec un autre code :
* Zxxx = 997 = (fr) « codet pour les langues non écrites » = (en) “Code for unwritten languages” ;
* Zyyy = 998 = (fr) « codet pour écriture indéterminée » = (en) “Code for undetermined script” ;
* Zzzz = 999 = (fr) « codet pour écriture non codée » = (en) “Code for uncoded script”.

## Historique

Cette liste de codets et de noms d’écritures a été créée et initialement maintenue par Michael Everson, également membre du Comité technique d’Unicode (UTC). Le texte de la norme ISO 15924 a été approuvée pour la première fois le 9 janvier 2004, qui a fixé les principes généraux pour la définition des codets.
La première liste de codets, très complète alors, a été publiée le 1er mai 2004 en ligne sur le site Internet du Consortium Unicode. Elle comprenait, entre autres, toutes les écritures utilisées ou définies alors dans la norme Unicode 4.0 et la norme ISO/CEI 10646. Un nombre important de corrections ont suivi dans les semaines suivantes, et la liste a été finalisée le 29 mai 2004.
Depuis lors, quelques nouvelles écritures ont été régulièrement ajoutées pour les besoins d’écritures en cours de normalisation dans ISO/CEI 10646 et Unicode, ou pour des usages bibliographiques, ainsi que pour des écritures non encore normalisées qui doivent encore faire l’objet d’études. Le Consortium Unicode est le bureau d’enregistrement et de contact désigné par l’ISO pour la publication en ligne de cette norme, mais sa maintenance reste gérée et décidée par un groupe de normalisateurs internationaux au sein d’un comité technique de l’ISO.

## Relations avec d’autres normes et recommandations
### Relation avec les codets de langues de la norme ISO 639

De plus les codets alphabétiques ISO 15924 d’écritures commencent, autant que possible, par les mêmes lettres que les codets à trois lettres de langues selon ISO 639-2 ou son extension ISO 639-3 (qui couvre une liste étendue de langues), quand les noms de l’écriture et de la langue sont homonymes. Par exemple :
* nom de langue = (en) « Latin » = (fr) « latin » ; codet alphabétique de langue ISO 639-2 = lat ;
* nom d’écriture = (en) « Latin » = (fr) « latin » ; homonymes, donc : codet alphabétique d’écriture ISO 15924 = Latn.
Le projet de norme ISO 639-6 qui était en préparation en 2009 et qui devait étendre à quatre lettres les codets de langues (afin de recenser un plus grand nombre de variantes dialectales des langues codifiées) a voulu reprendre ce principe et utiliser si possible les mêmes codets déjà retenus dans ISO 15924 pour les écritures homonymes de langues, afin de préserver la compatibilité avec l'actuel standard BCP 47 de l’IETF (fourni dans la RFC 5646 et les documents liés ou ultérieurs) :
* nom d’écriture = (en) « Latin » = (fr) « latin ». : codet alphabétique d’écriture ISO 15924 = Latn.
* nom de langue = (en) « Latin » = (fr) « latin » ; homonymes, donc : codet alphabétique de langue ISO/CD 639-6 = latn.
Cependant ce projet de sixième volet de la norme ISO 639 a été abandonné et donc pas repris dans le standard BCP 47 (lequel n'utilise comme sous-étiquette de langue qu'une partie des codets présents dans les 3 premiers volets de l’ISO 639, complétés avec les codes issus de ISO 15924 pour l'écriture, et sinon utilise des sous-étiquettes de variantes enregistrés pour des langues spécifiques dans le registre IANA des étiquettes de langues pour BCP 47).

### Code de langue IETF

ISO 15924 est utilisée en tant que sous-étiquette par le standard BCP 47 de l’IETF pour l'identification des langues. Ce standard est utilisé dans la plupart des logiciels et protocoles, dont tous ceux des protocoles Internet et ceux des standards de représentation des données ou documents du Consortium W3 (dont HTML, XML, CSS et SVG), ainsi que la majorité des bibliothèques modernes et données standards pour l’adaptation linguistique et régionale des logiciels (dont ICU et CLDR, maintenus par le Consortium Unicode, ainsi que les versions actuelles des bibliothèques standards des langages C, C++ et de nombreux autres), souvent en lieu et place des codes de langue ISO 639 qui sont trop incomplets, parfois ambigus, et pas assez stables pour offrir une compatibilité ascendante (suffisante à assurer à long terme la stabilité et l’utilisabilité des logiciels).

### Paramètres régionaux

ISO 15924 est parfois utililisée pour les paramètres régionaux.

### Différences des noms avec ceux de la norme ISO/CEI 10646

Il n’y a pas de bijection exacte entre les noms anglais et français d’écritures définis dans ISO 15924 et les désignations en anglais et français utilisées dans les noms normatifs de caractères et de blocs de caractères alloués dans les normes ISO/CEI 10646 (et donc aussi Unicode).
Toutefois, les futurs blocs de caractères et caractères normalisés dans ISO/CEI 10646 (et donc aussi Unicode) seront nommés, si possible, conformément à ISO 15924.

### Différences des codets alphabétiques avec ceux de la norme Unicode

De même, il n’y a pas de bijection exacte entre les codets alphabétiques d’écritures normalisés dans ISO 15924 et les codes d’écritures utilisés dans les tables de propriétés des caractères Unicode. En effet, la norme ISO 15924 contient des éléments supplémentaires apportant des distinctions à usage bibliographique, entre des écritures qui ont été unifiées dans les normes ISO et Unicode de codage de caractères. La norme ISO 15924 contient des codets et noms distinctifs pour les écritures qui ont été ainsi unifiées en une seule dans Unicode (qui les traite comme des variantes typographiques sans différence de codage au niveau des caractères et de leurs propriétés normatives ou informatives).
D’autre part, la norme ISO 15924 ayant été créée après la norme Unicode, le format des codets alphabétiques ISO 15924 peut différer des codes normatifs utilisés dans les tables de propriétés Unicode (qui peuvent être plus longs et contenir des tirets bas).
À titre informatif uniquement, la norme ISO 15924 définit un alias (ou « synonyme de valeur de propriété ») pour les écritures normalisées, afin de connaître la correspondance avec les propriétés de caractères définies dans la norme Unicode, quand une telle différence existe. Depuis que la norme ISO 15924 a été publiée, le Consortium Unicode s’est engagé à ne plus définir de nouveaux codes différents de ceux définis dans ISO 15924, et utilise donc, chaque fois que possible, les codets alphabétiques de la norme ISO 15924. C'est pourquoi tous les synonymes de propriétés Unicode ne sont pas mentionnés dans les tables ISO 15924 (on trouvera les codes utilisés dans les fichiers de propriétés de la norme Unicode elle-même, et Unicode a ajouté des synonymes de valeurs de propriétés de caractères, ce qui permet désormais d’utiliser uniquement les codets ISO 15924 dans les applications conformes à Unicode).