]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/uscript_props.cpp
ICU-66108.tar.gz
[apple/icu.git] / icuSources / common / uscript_props.cpp
index 40b684e8a804dde538655c15558bffb41465715f..25d287b57a3564b43bc1549d1eb40177553bd43d 100644 (file)
@@ -1,10 +1,12 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
-*   Copyright (C) 2013, International Business Machines
+*   Copyright (C) 2013-2016, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *******************************************************************************
 *   file name:  uscript_props.cpp
-*   encoding:   US-ASCII
+*   encoding:   UTF-8
 *   tab size:   8 (not used)
 *   indentation:4
 *
@@ -17,8 +19,7 @@
 #include "unicode/uscript.h"
 #include "unicode/utf16.h"
 #include "ustr_imp.h"
-
-#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0]))
+#include "cmemory.h"
 
 namespace {
 
@@ -32,7 +33,7 @@ namespace {
 const int32_t UNKNOWN = 1 << 21;
 const int32_t EXCLUSION = 2 << 21;
 const int32_t LIMITED_USE = 3 << 21;
-const int32_t ASPIRATIONAL = 4 << 21;
+// st int32_t ASPIRATIONAL = 4 << 21; -- not used any more since Unicode 10
 const int32_t RECOMMENDED = 5 << 21;
 
 // Bits 31..24: Single-bit flags
@@ -43,13 +44,13 @@ const int32_t CASED = 1 << 26;
 const int32_t SCRIPT_PROPS[] = {
     // Begin copy-paste output from
     // tools/trunk/unicode/py/parsescriptmetadata.py
-    0x0040 | UNKNOWN,  // Zyyy
-    0x0308 | UNKNOWN,  // Zinh
+    0x0040 | RECOMMENDED,  // Zyyy
+    0x0308 | RECOMMENDED,  // Zinh
     0x0628 | RECOMMENDED | RTL,  // Arab
     0x0531 | RECOMMENDED | CASED,  // Armn
     0x0995 | RECOMMENDED,  // Beng
     0x3105 | RECOMMENDED | LB_LETTERS,  // Bopo
-    0x13C4 | LIMITED_USE,  // Cher
+    0x13C4 | LIMITED_USE | CASED,  // Cher
     0x03E2 | EXCLUSION | CASED,  // Copt
     0x042F | RECOMMENDED | CASED,  // Cyrl
     0x10414 | EXCLUSION | CASED,  // Dsrt
@@ -70,7 +71,7 @@ const int32_t SCRIPT_PROPS[] = {
     0x0EA5 | RECOMMENDED | LB_LETTERS,  // Laoo
     0x004C | RECOMMENDED | CASED,  // Latn
     0x0D15 | RECOMMENDED,  // Mlym
-    0x1826 | ASPIRATIONAL,  // Mong
+    0x1826 | EXCLUSION,  // Mong
     0x1000 | RECOMMENDED | LB_LETTERS,  // Mymr
     0x168F | EXCLUSION,  // Ogam
     0x10300 | EXCLUSION,  // Ital
@@ -83,13 +84,13 @@ const int32_t SCRIPT_PROPS[] = {
     0x078C | RECOMMENDED | RTL,  // Thaa
     0x0E17 | RECOMMENDED | LB_LETTERS,  // Thai
     0x0F40 | RECOMMENDED,  // Tibt
-    0x14C0 | ASPIRATIONAL,  // Cans
-    0xA288 | ASPIRATIONAL | LB_LETTERS,  // Yiii
+    0x14C0 | LIMITED_USE,  // Cans
+    0xA288 | LIMITED_USE | LB_LETTERS,  // Yiii
     0x1703 | EXCLUSION,  // Tglg
     0x1723 | EXCLUSION,  // Hano
     0x1743 | EXCLUSION,  // Buhd
     0x1763 | EXCLUSION,  // Tagb
-    0x2800 | UNKNOWN,  // Brai
+    0x280E | UNKNOWN,  // Brai
     0x10800 | EXCLUSION | RTL,  // Cprt
     0x1900 | LIMITED_USE,  // Limb
     0x10000 | EXCLUSION,  // Linb
@@ -103,9 +104,9 @@ const int32_t SCRIPT_PROPS[] = {
     0x10A00 | EXCLUSION | RTL,  // Khar
     0xA800 | LIMITED_USE,  // Sylo
     0x1980 | LIMITED_USE | LB_LETTERS,  // Talu
-    0x2D30 | ASPIRATIONAL,  // Tfng
+    0x2D30 | LIMITED_USE,  // Tfng
     0x103A0 | EXCLUSION,  // Xpeo
-    0x1B05 | LIMITED_USE | LB_LETTERS,  // Bali
+    0x1B05 | LIMITED_USE,  // Bali
     0x1BC0 | LIMITED_USE,  // Batk
     0,
     0x11005 | EXCLUSION,  // Brah
@@ -118,24 +119,24 @@ const int32_t SCRIPT_PROPS[] = {
     0,
     0x5B57 | RECOMMENDED | LB_LETTERS,  // Hans
     0x5B57 | RECOMMENDED | LB_LETTERS,  // Hant
+    0x16B1C | EXCLUSION,  // Hmng
+    0x10CA1 | EXCLUSION | RTL | CASED,  // Hung
     0,
-    0,
-    0,
-    0xA984 | LIMITED_USE | LB_LETTERS,  // Java
+    0xA984 | LIMITED_USE,  // Java
     0xA90A | LIMITED_USE,  // Kali
     0,
     0,
     0x1C00 | LIMITED_USE,  // Lepc
-    0,
+    0x10647 | EXCLUSION,  // Lina
     0x0840 | LIMITED_USE | RTL,  // Mand
     0,
     0x10980 | EXCLUSION | RTL,  // Mero
     0x07CA | LIMITED_USE | RTL,  // Nkoo
     0x10C00 | EXCLUSION | RTL,  // Orkh
-    0,
+    0x1036B | EXCLUSION,  // Perm
     0xA840 | EXCLUSION,  // Phag
     0x10900 | EXCLUSION | RTL,  // Phnx
-    0x16F00 | ASPIRATIONAL,  // Plrd
+    0x16F00 | LIMITED_USE,  // Plrd
     0,
     0,
     0,
@@ -155,7 +156,7 @@ const int32_t SCRIPT_PROPS[] = {
     0x1C5A | LIMITED_USE,  // Olck
     0xA930 | EXCLUSION,  // Rjng
     0xA882 | LIMITED_USE,  // Saur
-    0,
+    0x1D850 | EXCLUSION,  // Sgnw
     0x1B83 | LIMITED_USE,  // Sund
     0,
     0xABC0 | LIMITED_USE,  // Mtei
@@ -164,9 +165,9 @@ const int32_t SCRIPT_PROPS[] = {
     0x11103 | LIMITED_USE,  // Cakm
     0xAC00 | RECOMMENDED,  // Kore
     0x11083 | EXCLUSION,  // Kthi
-    0,
+    0x10AD8 | EXCLUSION | RTL,  // Mani
     0x10B60 | EXCLUSION | RTL,  // Phli
-    0,
+    0x10B8F | EXCLUSION | RTL,  // Phlp
     0,
     0x10B40 | EXCLUSION | RTL,  // Prti
     0x0800 | EXCLUSION | RTL,  // Samr
@@ -177,38 +178,70 @@ const int32_t SCRIPT_PROPS[] = {
     0xA4D0 | LIMITED_USE,  // Lisu
     0,
     0x10A60 | EXCLUSION | RTL,  // Sarb
+    0x16AE6 | EXCLUSION,  // Bass
+    0x1BC20 | EXCLUSION,  // Dupl
+    0x10500 | EXCLUSION,  // Elba
+    0x11315 | EXCLUSION,  // Gran
     0,
     0,
-    0,
-    0,
-    0,
-    0,
-    0,
+    0x1E802 | EXCLUSION | RTL,  // Mend
     0x109A0 | EXCLUSION | RTL,  // Merc
+    0x10A95 | EXCLUSION | RTL,  // Narb
+    0x10896 | EXCLUSION | RTL,  // Nbat
+    0x10873 | EXCLUSION | RTL,  // Palm
+    0x112BE | EXCLUSION,  // Sind
+    0x118B4 | EXCLUSION | CASED,  // Wara
     0,
     0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
+    0x16A4F | EXCLUSION,  // Mroo
+    0x1B1C4 | EXCLUSION | LB_LETTERS,  // Nshu
     0x11183 | EXCLUSION,  // Shrd
     0x110D0 | EXCLUSION,  // Sora
     0x11680 | EXCLUSION,  // Takr
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
+    0x18229 | EXCLUSION | LB_LETTERS,  // Tang
+    0,
+    0x14400 | EXCLUSION,  // Hluw
+    0x11208 | EXCLUSION,  // Khoj
+    0x11484 | EXCLUSION,  // Tirh
+    0x10537 | EXCLUSION,  // Aghb
+    0x11152 | EXCLUSION,  // Mahj
+    0x11717 | EXCLUSION | LB_LETTERS,  // Ahom
+    0x108F4 | EXCLUSION | RTL,  // Hatr
+    0x1160E | EXCLUSION,  // Modi
+    0x1128F | EXCLUSION,  // Mult
+    0x11AC0 | EXCLUSION,  // Pauc
+    0x1158E | EXCLUSION,  // Sidd
+    0x1E909 | LIMITED_USE | RTL | CASED,  // Adlm
+    0x11C0E | EXCLUSION,  // Bhks
+    0x11C72 | EXCLUSION,  // Marc
+    0x11412 | LIMITED_USE,  // Newa
+    0x104B5 | LIMITED_USE | CASED,  // Osge
+    0x5B57 | RECOMMENDED | LB_LETTERS,  // Hanb
+    0x1112 | RECOMMENDED,  // Jamo
+    0,
+    0x11D10 | EXCLUSION,  // Gonm
+    0x11A5C | EXCLUSION,  // Soyo
+    0x11A0B | EXCLUSION,  // Zanb
+    0x1180B | EXCLUSION,  // Dogr
+    0x11D71 | LIMITED_USE,  // Gong
+    0x11EE5 | EXCLUSION,  // Maka
+    0x16E40 | EXCLUSION | CASED,  // Medf
+    0x10D12 | LIMITED_USE | RTL,  // Rohg
+    0x10F42 | EXCLUSION | RTL,  // Sogd
+    0x10F19 | EXCLUSION | RTL,  // Sogo
+    0x10FF1 | EXCLUSION | RTL,  // Elym
+    0x1E108 | LIMITED_USE,  // Hmnp
+    0x119CE | EXCLUSION,  // Nand
+    0x1E2E1 | LIMITED_USE,  // Wcho
+    0x10FBF | EXCLUSION | RTL,  // Chrs
+    0x1190C | EXCLUSION,  // Diak
+    0x18C65 | EXCLUSION | LB_LETTERS,  // Kits
+    0x10E88 | EXCLUSION | RTL,  // Yezi
     // End copy-paste from parsescriptmetadata.py
 };
 
 int32_t getScriptProps(UScriptCode script) {
-    if (0 <= script && script < LENGTHOF(SCRIPT_PROPS)) {
+    if (0 <= script && script < UPRV_LENGTHOF(SCRIPT_PROPS)) {
         return SCRIPT_PROPS[script];
     } else {
         return 0;