Script (Unicode)

In Unicode, a script is a collection of letters and other written signs used to represent textual information in one or more writing systems.[1] Some scripts support one and only one writing system and language, for example, Armenian. Other scripts support many different writing systems; for example, the Latin script supports English, French, German, Italian, Vietnamese, Latin itself, and several other languages. Some languages make use of multiple alternate writing systems, thus also use several scripts. In Turkish, the Arabic script was used before the 20th century, but transitioned to Latin in the early part of the 20th century. For a list of languages supported by each script see the list of languages by writing system. More or less complementary to scripts are symbols and Unicode control characters.

The unified diacritical characters and unified punctuation characters frequently have the "common" or "inherited" script property. However, the individual scripts often have their own punctuation and diacritics, so that many scripts include not only letters, but also diacritic and other marks, punctuation, numerals and even their own idiosyncratic symbols and space characters.

Unicode 12.0 defines 150 separate scripts, including 91 modern scripts and 59 ancient or historic scripts.[2][3] More scripts are in the process for encoding or have been tentatively allocated for encoding in roadmaps.[4]

Definition and classification

When multiple languages make use of the same script, there are frequently some differences: particularly in diacritics and other marks. For example, Swedish and English both use the Latin script. However, Swedish includes the character ‘å’ (sometimes called a "Swedish O") while English has no such character. Nor does English make use of the diacritic combining circle above for any character. In general the languages sharing the same scripts share many of the same characters. Despite these peripheral differences in the Swedish and English writing systems they are said to use the same Latin script. So the Unicode abstraction of scripts is a basic organizing technique. The differences between different alphabets or writing systems remain and are supported through Unicode’s flexible scripts, combining marks and collation algorithms.

Script versus writing system

"Writing system" is sometimes treated as a synonym for script. However it also can be used as the specific concrete writing system supported by a script. For example, the Vietnamese writing system is supported by the Latin script. A writing system may also cover more than one script, for example the Japanese writing system makes use of the Han, Hiragana and Katakana scripts.

Most writing systems can be broadly divided into several categories: logographic, syllabic, alphabetic (or segmental), abugida, abjad and featural; however, all features of any of these may be found in any given writing system in varying proportions, often making it difficult to purely categorize a system. The term complex system is sometimes used to describe those where the admixture makes classification problematic.

Unicode supports all of these types of writing systems through its numerous scripts. Unicode also adds further properties to characters to help differentiate the various characters and the ways they behave within Unicode text processing algorithms.

Special script property values

In addition to explicit or specific script properties Unicode uses three special values:[5]

Unicode can assign a character in the UCS to a single script only. However, many characters — those that are not part of a formal natural language writing system or are unified across many writing systems may be used in more than one script. For example, currency signs, symbols, numerals and punctuation marks. In these cases Unicode defines them as belonging to the "common" script (ISO 15924 code "Zyyy").
Many diacritics and non-spacing combining characters may be applied to characters from more than one script. In these cases Unicode assigns them to the "inherited" script (ISO 15924 code Zinh), which means that they have the same script class as the base character with which they combine, and so in different contexts they may be treated as belonging to different scripts. For example, U+0308  ̈  COMBINING DIAERESIS may combine with either U+0065 e LATIN SMALL LETTER E to create a Latin "ë", or with U+0435 е CYRILLIC SMALL LETTER IE for the Cyrillic "ё". In the former case it inherits the Latin script of the base character whereas in the latter case it inherits the Cyrillic script of the base character.
The value of "unknown" script (ISO 15924 code Zzzz) is given to unassigned, private use, noncharacter, and surrogate code points.

Character categories within scripts

Unicode provides a general category property for each character. So in addition to belonging to a script every character also has a general category. Typically scripts include letter characters including: uppercase letters, lowercase letter and modifier letters. Some characters are considered titlecase letters for a few precomposed ligatures such as Dz (U+01F2). Such titlecase ligatures are all in the Latin and Greek scripts and are all compatibility characters, and therefore Unicode discourages their use by authors. It is unlikely that new titlecase letters will be added in the future.

Most writing systems do not differentiate between uppercase and lowercase letters. For those scripts all letters are categorized as "other letter" or "modifier letter". Ideographs such as Unihan ideographs are also categorized as "other letters". A few scripts do differentiate between uppercase and lowercase however: Latin, Cyrillic, Greek, Armenian, Georgian, and Deseret. Even for these scripts there are some letters that are neither uppercase nor lowercase.

Scripts can also contain any other general category character such as marks (diacritic and otherwise), numbers (numerals), punctuation, separators (word separators such as spaces), symbols and non-graphical format characters. These are included in a particular script when they are unique to that script. Other such characters are generally unified and included in the punctuation or diacritic blocks. However, the bulk of characters in any script (other than the common and inherited scripts) are letters.

List of scripts in Unicode

Unicode defines over a hundred script names (called "Alias" or "Property value alias"), based on the ISO 15924 list. Unicode uses the "Common" script name for ISO 15924's Zyyy (code for undetermined script), "Inherited" for ISO 15924's Zinh (code for inherited script), and "Unknown" for ISO 15924's Zzzz (code for uncoded script). Not used are, among others, the ISO 15924 script codes: Zsym (Symbols) and Zmth (Mathematical notation). These are considered not to be scripts in Unicode sense.

ISO 15924 Script in Unicode[e]
Code No. Name Alias[f] Direc­tion Ver­sion Char­acters Remark
Adlm 166 Adlam Adlam R-to-L9.088
Afak 439 Afaka VariesNot in Unicode, proposal under review by the Unicode Technical Committee[6][7]
Aghb 239 Caucasian Albanian Caucasian Albanian L-to-R7.053Ancient/historic
Ahom 338 Ahom, Tai Ahom Ahom L-to-R8.058Ancient/historic
Arab 160 Arabic Arabic R-to-L1.01,281
Aran 161 Arabic (Nastaliq variant) R-to-LTypographic variant of Arabic
Armi 124 Imperial Aramaic Imperial Aramaic R-to-L5.231Ancient/historic
Armn 230 Armenian Armenian L-to-R1.095
Avst 134 Avestan Avestan R-to-L5.261Ancient/historic
Bali 360 Balinese Balinese L-to-R5.0121
Bamu 435 Bamum Bamum L-to-R5.2657
Bass 259 Bassa Vah Bassa Vah L-to-R7.036Ancient/historic
Batk 365 Batak Batak L-to-R6.056
Beng 325 Bengali (Bangla) Bengali L-to-R1.096
Bhks 334 Bhaiksuki Bhaiksuki L-to-R9.097Ancient/historic
Blis 550 Blissymbols VariesNot in Unicode, proposal in initial/exploratory stage[6]
Bopo 285 Bopomofo Bopomofo L-to-R1.072
Brah 300 Brahmi Brahmi L-to-R6.0109Ancient/historic
Brai 570 Braille Braille L-to-R3.0256
Bugi 367 Buginese Buginese L-to-R4.130
Buhd 372 Buhid Buhid L-to-R3.220
Cakm 349 Chakma Chakma L-to-R6.170
Cans 440 Unified Canadian Aboriginal Syllabics Canadian Aboriginal L-to-R3.0710
Cari 201 Carian Carian L-to-R5.149Ancient/historic
Cham 358 Cham Cham L-to-R5.183
Cher 445 Cherokee Cherokee L-to-R3.0172
Chrs 109 Chorasmian R-to-LNot in Unicode
Cirt 291 Cirth VariesNot in Unicode
Copt 204 Coptic Coptic L-to-R1.0137Ancient/historic, Disunified from Greek in 4.1
Cpmn 402 Cypro-Minoan L-to-RNot in Unicode
Cprt 403 Cypriot syllabary Cypriot R-to-L4.055Ancient/historic
Cyrl 220 Cyrillic Cyrillic L-to-R1.0443
Cyrs 221 Cyrillic (Old Church Slavonic variant) VariesAncient/historic, typographic variant of Cyrillic
Deva 315 Devanagari (Nagari) Devanagari L-to-R1.0154
Diak 342 Dives Akuru L-to-RNot in Unicode
Dogr 328 Dogra Dogra L-to-R11.060Ancient/historic
Dsrt 250 Deseret (Mormon) Deseret L-to-R3.180
Dupl 755 Duployan shorthand, Duployan stenography Duployan L-to-R7.0143
Egyd 070 Egyptian demotic R-to-LNot in Unicode
Egyh 060 Egyptian hieratic R-to-LNot in Unicode
Egyp 050 Egyptian hieroglyphs Egyptian Hieroglyphs L-to-R5.21,080Ancient/historic
Elba 226 Elbasan Elbasan L-to-R7.040Ancient/historic
Elym 128 Elymaic Elymaic R-to-L12.023Ancient/historic
Ethi 430 Ethiopic (Geʻez) Ethiopic L-to-R3.0495
Geok 241 Khutsuri (Asomtavruli and Nuskhuri) Georgian VariesUnicode groups Geok and Geor together as "Georgian"
Geor 240 Georgian (Mkhedruli and Mtavruli) Georgian L-to-R1.0173For Unicode, see also Geok
Glag 225 Glagolitic Glagolitic L-to-R4.1132Ancient/historic
Gong 312 Gunjala Gondi Gunjala Gondi L-to-R11.063
Gonm 313 Masaram Gondi Masaram Gondi L-to-R10.075
Goth 206 Gothic Gothic L-to-R3.127Ancient/historic
Gran 343 Grantha Grantha L-to-R7.085Ancient/historic
Grek 200 Greek Greek L-to-R1.0518Sometimes expressed as boustrophedon (mirroring of alternate lines rather than purely left-to-right)
Gujr 320 Gujarati Gujarati L-to-R1.091
Guru 310 Gurmukhi Gurmukhi L-to-R1.080
Hanb 503 Han with Bopomofo (alias for Han + Bopomofo) VariesSee Hani, Bopo
Hang 286 Hangul (Hangŭl, Hangeul) Hangul L-to-R1.011,739Hangul syllables relocated in 2.0
Hani 500 Han (Hanzi, Kanji, Hanja) Han L-to-R1.089,233
Hano 371 Hanunoo (Hanunóo) Hanunoo L-to-R3.221
Hans 501 Han (Simplified variant) VariesSubset Hani
Hant 502 Han (Traditional variant) VariesSubset Hani
Hatr 127 Hatran Hatran R-to-L8.026Ancient/historic
Hebr 125 Hebrew Hebrew R-to-L1.0134
Hira 410 Hiragana Hiragana L-to-R1.0379
Hluw 080 Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs) Anatolian Hieroglyphs L-to-R8.0583Ancient/historic
Hmng 450 Pahawh Hmong Pahawh Hmong L-to-R7.0127
Hmnp 451 Nyiakeng Puachue Hmong Nyiakeng Puachue Hmong L-to-R12.071
Hrkt 412 Japanese syllabaries (alias for Hiragana + Katakana) Katakana or Hiragana VariesSee Hira, Kana
Hung 176 Old Hungarian (Hungarian Runic) Old Hungarian R-to-L8.0108Ancient/historic
Inds 610 Indus (Harappan) R-to-LNot in Unicode, proposal in initial/exploratory stage[6]
Ital 210 Old Italic (Etruscan, Oscan, etc.) Old Italic L-to-R3.139Ancient/historic
Jamo 284 Jamo (alias for Jamo subset of Hangul) VariesSubset Hang
Java 361 Javanese Javanese L-to-R5.290
Jpan 413 Japanese (alias for Han + Hiragana + Katakana) VariesSee Hani, Hira and Kana
Jurc 510 Jurchen L-to-RNot in Unicode
Kali 357 Kayah Li Kayah Li L-to-R5.147
Kana 411 Katakana Katakana L-to-R1.0304
Khar 305 Kharoshthi Kharoshthi R-to-L4.168Ancient/historic
Khmr 355 Khmer Khmer L-to-R3.0146
Khoj 322 Khojki Khojki L-to-R7.062Ancient/historic
Kitl 505 Khitan large script L-to-RNot in Unicode
Kits 288 Khitan small script T-to-BNot in Unicode
Knda 345 Kannada Kannada L-to-R1.089
Kore 287 Korean (alias for Hangul + Han) L-to-RSee Hani and Hang
Kpel 436 Kpelle L-to-RNot in Unicode, proposal in initial/exploratory stage[6]
Kthi 317 Kaithi Kaithi L-to-R5.267Ancient/historic
Lana 351 Tai Tham (Lanna) Tai Tham L-to-R5.2127
Laoo 356 Lao Lao L-to-R1.082
Latf 217 Latin (Fraktur variant) VariesTypographic variant of Latin
Latg 216 Latin (Gaelic variant) L-to-RTypographic variant of Latin
Latn 215 Latin Latin L-to-R1.01,366See Latin script in Unicode
Leke 364 Leke L-to-RNot in Unicode
Lepc 335 Lepcha (Róng) Lepcha L-to-R5.174
Limb 336 Limbu Limbu L-to-R4.068
Lina 400 Linear A Linear A L-to-R7.0341Ancient/historic
Linb 401 Linear B Linear B L-to-R4.0211Ancient/historic
Lisu 399 Lisu (Fraser) Lisu L-to-R5.248
Loma 437 Loma L-to-RNot in Unicode, proposal in initial/exploratory stage[6]
Lyci 202 Lycian Lycian L-to-R5.129Ancient/historic
Lydi 116 Lydian Lydian R-to-L5.127Ancient/historic
Mahj 314 Mahajani Mahajani L-to-R7.039Ancient/historic
Maka 366 Makasar Makasar L-to-R11.025Ancient/historic
Mand 140 Mandaic, Mandaean Mandaic R-to-L6.029
Mani 139 Manichaean Manichaean R-to-L7.051Ancient/historic
Marc 332 Marchen Marchen L-to-R9.068Ancient/historic
Maya 090 Mayan hieroglyphs Not in Unicode
Medf 265 Medefaidrin (Oberi Okaime, Oberi Ɔkaimɛ) Medefaidrin L-to-R11.091
Mend 438 Mende Kikakui Mende Kikakui R-to-L7.0213
Merc 101 Meroitic Cursive Meroitic Cursive R-to-L6.190Ancient/historic
Mero 100 Meroitic Hieroglyphs Meroitic Hieroglyphs R-to-L6.132Ancient/historic
Mlym 347 Malayalam Malayalam L-to-R1.0117
Modi 324 Modi, Moḍī Modi L-to-R7.079Ancient/historic
Mong 145 Mongolian Mongolian T-to-B3.0167Includes Clear, Manchu scripts
Moon 218 Moon (Moon code, Moon script, Moon type) Not in Unicode, proposal in initial/exploratory stage[6]
Mroo 264 Mro, Mru Mro L-to-R7.043
Mtei 337 Meitei Mayek (Meithei, Meetei) Meetei Mayek L-to-R5.279
Mult 323 Multani Multani L-to-R8.038Ancient/historic
Mymr 350 Myanmar (Burmese) Myanmar L-to-R3.0223
Nand 311 Nandinagari Nandinagari L-to-R12.065Ancient/historic
Narb 106 Old North Arabian (Ancient North Arabian) Old North Arabian R-to-L7.032Ancient/historic
Nbat 159 Nabataean Nabataean R-to-L7.040Ancient/historic
Newa 333 Newa, Newar, Newari, Nepāla lipi Newa L-to-R9.094
Nkdb 085 Naxi Dongba (na²¹ɕi³³ to³³ba²¹, Nakhi Tomba) L-to-RNot in Unicode
Nkgb 420 Nakhi Geba (na²¹ɕi³³ gʌ²¹ba²¹, 'Na-'Khi ²Ggŏ-¹baw, Nakhi Geba) L-to-RNot in Unicode, proposal in initial/exploratory stage[6]
Nkoo 165 N’Ko NKo R-to-L5.062
Nshu 499 Nüshu Nushu L-to-R10.0397
Ogam 212 Ogham Ogham 3.029Ancient/historic
Olck 261 Ol Chiki (Ol Cemet’, Ol, Santali) Ol Chiki L-to-R5.148
Orkh 175 Old Turkic, Orkhon Runic Old Turkic R-to-L5.273Ancient/historic
Orya 327 Oriya (Odia) Oriya L-to-R1.090
Osge 219 Osage Osage L-to-R9.072
Osma 260 Osmanya Osmanya L-to-R4.040
Palm 126 Palmyrene Palmyrene R-to-L7.032Ancient/historic
Pauc 263 Pau Cin Hau Pau Cin Hau L-to-R7.057
Perm 227 Old Permic Old Permic L-to-R7.043Ancient/historic
Phag 331 Phags-pa Phags-pa T-to-B5.056Ancient/historic
Phli 131 Inscriptional Pahlavi Inscriptional Pahlavi R-to-L5.227Ancient/historic
Phlp 132 Psalter Pahlavi Psalter Pahlavi R-to-L7.029Ancient/historic
Phlv 133 Book Pahlavi R-to-LNot in Unicode
Phnx 115 Phoenician Phoenician R-to-L5.029Ancient/historic
Piqd 293 Klingon (KLI pIqaD) L-to-RRejected for inclusion in the Unicode Standard[8][9]
Plrd 282 Miao (Pollard) Miao L-to-R6.1149
Prti 130 Inscriptional Parthian Inscriptional Parthian R-to-L5.230Ancient/historic
Qaaa 900 Reserved for private use (start) Not in Unicode
Qaai908(Private use) Not in Unicode (Before version 5.2, this was used instead of Zinh)
Qabx 949 Reserved for private use (end) Not in Unicode
Rjng 363 Rejang (Redjang, Kaganga) Rejang L-to-R5.137
Rohg 167 Hanifi Rohingya Hanifi Rohingya R-to-L11.050
Roro 620 Rongorongo Not in Unicode, proposal in initial/exploratory stage[6]
Runr 211 Runic Runic L-to-R3.086Ancient/historic
Samr 123 Samaritan Samaritan R-to-L5.261
Sara 292 Sarati Not in Unicode
Sarb 105 Old South Arabian Old South Arabian R-to-L5.232Ancient/historic
Saur 344 Saurashtra Saurashtra L-to-R5.182
Sgnw 095 SignWriting SignWriting T-to-B8.0672
Shaw 281 Shavian (Shaw) Shavian L-to-R4.048
Shrd 319 Sharada, Śāradā Sharada L-to-R6.194
Shui 530 Shuishu L-to-RNot in Unicode
Sidd 302 Siddham, Siddhaṃ, Siddhamātṛkā Siddham L-to-R7.092Ancient/historic
Sind 318 Khudawadi, Sindhi Khudawadi L-to-R7.069
Sinh 348 Sinhala Sinhala L-to-R3.0110
Sogd 141 Sogdian Sogdian R-to-L11.042Ancient/historic
Sogo 142 Old Sogdian Old Sogdian R-to-L11.040Ancient/historic
Sora 398 Sora Sompeng Sora Sompeng L-to-R6.135
Soyo 329 Soyombo Soyombo L-to-R10.083Ancient/historic
Sund 362 Sundanese Sundanese L-to-R5.172
Sylo 316 Syloti Nagri Syloti Nagri L-to-R4.144
Syrc 135 Syriac Syriac R-to-L3.088
Syre 138 Syriac (Estrangelo variant) R-to-LTypographic variant of Syriac
Syrj 137 Syriac (Western variant) R-to-LTypographic variant of Syriac
Syrn 136 Syriac (Eastern variant) R-to-LTypographic variant of Syriac
Tagb 373 Tagbanwa Tagbanwa L-to-R3.218
Takr 321 Takri, Ṭākrī, Ṭāṅkrī Takri L-to-R6.167
Tale 353 Tai Le Tai Le L-to-R4.035
Talu 354 New Tai Lue New Tai Lue L-to-R4.183
Taml 346 Tamil Tamil L-to-R1.0123
Tang 520 Tangut Tangut L-to-R9.06,892Ancient/historic
Tavt 359 Tai Viet Tai Viet L-to-R5.272
Telu 340 Telugu Telugu L-to-R1.098
Teng 290 Tengwar L-to-RNot in Unicode
Tfng 120 Tifinagh (Berber) Tifinagh L-to-R4.159
Tglg 370 Tagalog (Baybayin, Alibata) Tagalog L-to-R3.220
Thaa 170 Thaana Thaana R-to-L3.050
Thai 352 Thai Thai L-to-R1.086
Tibt 330 Tibetan Tibetan L-to-R2.0207Added in 1.0, removed in 1.1 and reintroduced in 2.0
Tirh 326 Tirhuta Tirhuta L-to-R7.082
Ugar 040 Ugaritic Ugaritic L-to-R4.031Ancient/historic
Vaii 470 Vai Vai L-to-R5.1300
Visp 280 Visible Speech L-to-RNot in Unicode
Wara 262 Warang Citi (Varang Kshiti) Warang Citi L-to-R7.084
Wcho 283 Wancho Wancho L-to-R12.059
Wole 480 Woleai R-to-LNot in Unicode, proposal in initial/exploratory stage[6]
Xpeo 030 Old Persian Old Persian L-to-R4.150Ancient/historic
Xsux 020 Cuneiform, Sumero-Akkadian Cuneiform L-to-R5.01,234Ancient/historic
Yezi 192 Yezidi R-to-LNot in Unicode
Yiii 460 Yi Yi L-to-R3.01,220
Zanb 339 Zanabazar Square (Zanabazarin Dörböljin Useg, Xewtee Dörböljin Bicig, Horizontal Square Script) Zanabazar Square L-to-R10.072Ancient/historic
Zinh 994 Code for inherited script Inherited Inherited571
Zmth 995 Mathematical notation L-to-RNot a 'script' in Unicode
Zsym 996 Symbols Not a 'script' in Unicode
Zsye 993 Symbols (emoji variant) Not a 'script' in Unicode
Zxxx 997 Code for unwritten documents Not a 'script' in Unicode
Zyyy 998 Code for undetermined script Common 7,805
Zzzz 999 Code for uncoded script Unknown 976,118All other code points
  1. ^ ISO 15924 publications As of 19 August 2019
  2. ^ ISO 15924 Normative text file As of 19 August 2019
  3. ^ ISO 15924 Changes (including Aliases for Unicode; as of 19 August 2019)
  4. ^ Unicode version 12.1
  5. ^ Unicode charts
  6. ^ Unicode uses the "Property Value Alias" (Alias) as the script-name. These Alias names are part of Unicode and are published informatively next to ISO 15924

See also


  1. "Glossary".
  2. "Unicode Character Database: Scripts".
  3. "Chapter 14: Additional Ancient and Historic Scripts". The Unicode Standard, Version 6.2 (PDF). Mountain View, CA: Unicode, Inc. September 2012. p. 473. ISBN 978-1-936213-07-8.
  4. Roadmaps to Unicode
  5. "UAX #24: Unicode Script Property".
  6. "Proposed New Scripts". Unicode Consortium. 2018-05-25. Retrieved 2018-09-12.
  7. "Roadmap to the SMP". Unicode Consortium. 2018-08-08. Retrieved 2018-09-12.
  8. Michael Everson (1997-09-18). "Proposal to encode Klingon in Plane 1 of ISO/IEC 10646-2".
  9. The Unicode Consortium (2001-08-14). "Approved Minutes of the UTC 87 / L2 184 Joint Meeting".
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.