[Git][java-team/jcodings][master] 13 commits: ignore cseu for now

Hideki Yamane gitlab at salsa.debian.org
Sun Apr 19 10:07:02 BST 2020



Hideki Yamane pushed to branch master at Debian Java Maintainers / jcodings


Commits:
ad3bdf0d by Marcin Mielzynski at 2020-04-03T22:24:29+02:00
ignore cseu for now

- - - - -
09a2adff by kiichi at 2020-04-04T14:08:14+09:00
fix caseMap for Georgian

- - - - -
2738d26e by Marcin Mielżyński at 2020-04-04T18:02:46+02:00
Merge pull request #31 from k77ch7/fix-georgian-casemap

fix caseMap for Georgian
- - - - -
a6caf813 by Marcin Mielzynski at 2020-04-04T18:10:31+02:00
sync code for #31

- - - - -
3fe911a2 by Marcin Mielzynski at 2020-04-04T18:15:26+02:00
sync encoding list

- - - - -
d730127d by Marcin Mielzynski at 2020-04-04T20:15:57+02:00
move unicode code ranges to enum

- - - - -
c9b6947d by Marcin Mielzynski at 2020-04-04T21:55:28+02:00
add getCType to code range

- - - - -
aeb17fea by Marcin Mielzynski at 2020-04-04T22:00:45+02:00
[maven-release-plugin] prepare release jcodings-1.0.47

- - - - -
6297ad32 by Marcin Mielzynski at 2020-04-04T22:00:53+02:00
[maven-release-plugin] prepare for next development iteration

- - - - -
90a2d0c3 by Marcin Mielzynski at 2020-04-06T22:59:01+02:00
case fold for sjis

- - - - -
3502e9d6 by Marcin Mielzynski at 2020-04-07T22:33:54+02:00
euc-jp case fold

- - - - -
06d519ea by Charles Oliver Nutter at 2020-04-07T15:44:53-05:00
[maven-release-plugin] prepare release jcodings-1.0.48

- - - - -
b95214c8 by Charles Oliver Nutter at 2020-04-07T15:45:03-05:00
[maven-release-plugin] prepare for next development iteration

- - - - -


11 changed files:

- pom.xml
- scripts/UnicodePropertiesTemplate.java → scripts/UnicodeCodeRangeTemplate.java
- scripts/generate.rb
- src/org/jcodings/EncodingList.java
- src/org/jcodings/MultiByteEncoding.java
- src/org/jcodings/specific/BaseEUCJPEncoding.java
- src/org/jcodings/specific/BaseSJISEncoding.java
- + src/org/jcodings/unicode/UnicodeCodeRange.java
- src/org/jcodings/unicode/UnicodeEncoding.java
- − src/org/jcodings/unicode/UnicodeProperties.java
- test/org/jcodings/specific/TestCaseMap.java


Changes:

=====================================
pom.xml
=====================================
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.jruby.jcodings</groupId>
   <artifactId>jcodings</artifactId>
-  <version>1.0.47-SNAPSHOT</version>
+  <version>1.0.49-SNAPSHOT</version>
   <name>JCodings</name>
   <description>Byte based encoding support library for java</description>
   <parent>


=====================================
scripts/UnicodePropertiesTemplate.java → scripts/UnicodeCodeRangeTemplate.java
=====================================
@@ -19,12 +19,34 @@
  */
 package org.jcodings.unicode;
 
-import org.jcodings.unicode.UnicodeEncoding.CodeRangeEntry;
+import org.jcodings.util.ArrayReader;
+import org.jcodings.CodeRange;
 
-public class UnicodeProperties {
-    static final CodeRangeEntry[]CodeRangeTable = new CodeRangeEntry[] {
-%{extcrs}
-    };
+public enum UnicodeCodeRange {
+%{extcrs};
 
+    private final String table;
+    final byte[]name;
+    private int[]range;
+
+    private UnicodeCodeRange(String name, String table) {
+        this.table = table;
+        this.name = name.getBytes();
+    }
+
+    int[]getRange() {
+        if (range == null) range = ArrayReader.readIntArray(table);
+        return range;
+    }
+
+    public boolean contains(int code) {
+        return CodeRange.isInCodeRange(range, code);
+    }
+
+    public int getCType() {
+        return ordinal();
+    }
+
+    static final UnicodeCodeRange[]CodeRangeTable = UnicodeCodeRange.values();
     static final int MAX_WORD_LENGTH = %{max_length};
 }


=====================================
scripts/generate.rb
=====================================
@@ -78,7 +78,7 @@ def generate_encoding_list
       "Windows-1257" => "Windows_1257"
     }
 
-    defines, other = open("#{REPO_PATH}/encdb.h").read.tr('()', '').scan(/ENC_([A-Z_]+)(.*?);/m).partition { |a, b| a =~ /DEFINE/ }
+    defines, other = open("#{REPO_PATH}/encdb.h").read.tr('()', '').scan(/ENC_([A-Z_]+)(.*?);/m).reject{|a, b| b =~ /CESU/}.partition { |a, b| a =~ /DEFINE/ }
     other << ["ALIAS", "\"MS932\", \"Windows-31J\""]
     other << ["ALIAS", "\"UTF8\", \"UTF-8\""]
 
@@ -93,7 +93,7 @@ def generate_transcoder_list
     generic_list = []
     transcoder_list = []
 
-    Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/}.sort.each do |trans_file|
+    Dir["#{REPO_PATH}/enc/trans/*.c"].reject{|f| f =~ /transdb/ || f =~ /cesu/}.sort.each do |trans_file|
         name = trans_file[/(\w+)\.c/, 1].split('_').map{|e| e.capitalize}.join("")
         trans_src = open(trans_file){|f|f.read}
 
@@ -190,8 +190,8 @@ def generate_coderange_list
     end.flatten(1)
     max_length = out.max_by{|name, table|name.length}.first.length.to_s
 
-    open("#{SRC_DIR}/unicode/UnicodeProperties.java", "wb") do |f| f <<
-        open("UnicodePropertiesTemplate.java", "rb").read.sub(/%\{max_length\}/, max_length).sub(/%\{extcrs\}/, out.map{|name, table| "#{INDENT * 2}" + "new CodeRangeEntry(\"#{name}\", \"CR_#{table}\")"}.join(",\n"))
+    open("#{SRC_DIR}/unicode/UnicodeCodeRange.java", "wb") do |f| f <<
+        open("UnicodeCodeRangeTemplate.java", "rb").read.sub(/%\{max_length\}/, max_length).sub(/%\{extcrs\}/, out.map{|name, table| "#{INDENT}" + "#{name.upcase.tr('=.', '_')}(\"#{name}\", \"CR_#{table}\")"}.join(",\n"))
     end
 end
 


=====================================
src/org/jcodings/EncodingList.java
=====================================
@@ -33,7 +33,6 @@ final class EncodingList {
         EncodingDB.declare("EUC-JP", "EUCJP");
         EncodingDB.declare("EUC-KR", "EUCKR");
         EncodingDB.declare("EUC-TW", "EUCTW");
-        EncodingDB.declare("GB2312", "GB2312");
         EncodingDB.declare("GB18030", "GB18030");
         EncodingDB.declare("GBK", "GBK");
         EncodingDB.declare("ISO-8859-1", "ISO8859_1");
@@ -126,6 +125,7 @@ final class EncodingList {
         EncodingDB.alias("EUC-JISX0213", "EUC-JIS-2004" /* defined at JIS X 0213:2000, and obsolete at JIS X 0213:2004 */);
         EncodingDB.alias("eucKR", "EUC-KR");
         EncodingDB.alias("eucTW", "EUC-TW");
+        EncodingDB.replicate("GB2312", "EUC-KR");
         EncodingDB.alias("EUC-CN", "GB2312");
         EncodingDB.alias("eucCN", "GB2312");
         EncodingDB.replicate("GB12345", "GB2312");
@@ -210,7 +210,6 @@ final class EncodingList {
             case "EUCJP": return EUCJPEncoding.INSTANCE;
             case "EUCKR": return EUCKREncoding.INSTANCE;
             case "EUCTW": return EUCTWEncoding.INSTANCE;
-            case "GB2312": return GB2312Encoding.INSTANCE;
             case "GB18030": return GB18030Encoding.INSTANCE;
             case "GBK": return GBKEncoding.INSTANCE;
             case "ISO8859_1": return ISO8859_1Encoding.INSTANCE;


=====================================
src/org/jcodings/MultiByteEncoding.java
=====================================
@@ -219,4 +219,8 @@ public abstract class MultiByteEncoding extends AbstractEncoding {
         }
         return -1;
     }
+
+    public static boolean isInRange(int code, int from, int to) {
+        return code - from <= to - from;
+    }
 }


=====================================
src/org/jcodings/specific/BaseEUCJPEncoding.java
=====================================
@@ -62,6 +62,17 @@ abstract class BaseEUCJPEncoding extends EucEncoding {
         return p_ - p;
     }
 
+    private static int getLowerCase(int code) {
+        if (isInRange(code, 0xa3c1, 0xa3da)) {
+            return code + 0x0020;
+        } else if (isInRange(code, 0xa6a1, 0xa6b8)) {
+            return code + 0x0020;
+        } else if (isInRange(code, 0xa7a1, 0xa7c1)) {
+            return code + 0x0030;
+        }
+        return code;
+    }
+
     @Override
     public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
         int p = pp.value;
@@ -72,10 +83,10 @@ abstract class BaseEUCJPEncoding extends EucEncoding {
             pp.value++;
             return 1;
         } else {
-            int len = length(bytes, p, end);
-            for (int i=0; i<len; i++) {
-                lower[lowerP++] = bytes[p++];
-            }
+            //int len = length(bytes, p, end);
+            int code = getLowerCase(mbcToCode(bytes, pp.value, end));
+            int len = codeToMbc(code, lower, lowerP);
+            if (len == ErrorCodes.ERR_INVALID_CODE_POINT_VALUE) len = 1;
             pp.value += len;
             return len; /* return byte length of converted char to lower */
         }


=====================================
src/org/jcodings/specific/BaseSJISEncoding.java
=====================================
@@ -72,9 +72,29 @@ abstract class BaseSJISEncoding extends CanBeTrailTableEncoding {
         return p_ - p;
     }
 
+    private static int getLowerCase(int code) {
+        if (isInRange(code, 0x8260, 0x8279)) {
+            return code + 0x0021;
+        } else if (isInRange(code, 0x839f, 0x83b6)) {
+            return code + 0x0020;
+        } else if (isInRange(code, 0x8440, 0x8460)) {
+            int d = code >= 0x844f ? 1 : 0;
+            return code + (0x0030 + d);
+        }
+        return code;
+    }
+
     @Override
     public int mbcCaseFold(int flag, byte[]bytes, IntHolder pp, int end, byte[]lower) {
-        return mbnMbcCaseFold(flag, bytes, pp, end, lower);
+        if (isAscii(bytes[pp.value])) {
+            return asciiMbcCaseFold(flag, bytes, pp, end, lower);
+        } else {
+            int lowerP = 0;
+            int code = getLowerCase(mbcToCode(bytes, pp.value, end));
+            int len = codeToMbc(code, lower, lowerP);
+            pp.value += len;
+            return len;
+        }
     }
 
     private static final int CR_Hiragana[] = {


=====================================
src/org/jcodings/unicode/UnicodeCodeRange.java
=====================================
@@ -0,0 +1,888 @@
+/*
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package org.jcodings.unicode;
+
+import org.jcodings.util.ArrayReader;
+import org.jcodings.CodeRange;
+
+public enum UnicodeCodeRange {
+    NEWLINE("newline", "CR_NEWLINE"),
+    ALPHA("alpha", "CR_Alpha"),
+    BLANK("blank", "CR_Blank"),
+    CNTRL("cntrl", "CR_Cntrl"),
+    DIGIT("digit", "CR_Digit"),
+    GRAPH("graph", "CR_Graph"),
+    LOWER("lower", "CR_Lower"),
+    PRINT("print", "CR_Print"),
+    XPOSIXPUNCT("xposixpunct", "CR_XPosixPunct"),
+    SPACE("space", "CR_Space"),
+    UPPER("upper", "CR_Upper"),
+    XDIGIT("xdigit", "CR_XDigit"),
+    WORD("word", "CR_Word"),
+    ALNUM("alnum", "CR_Alnum"),
+    ASCII("ascii", "CR_ASCII"),
+    PUNCT("punct", "CR_Punct"),
+    ANY("any", "CR_Any"),
+    ASSIGNED("assigned", "CR_Assigned"),
+    C("c", "CR_C"),
+    OTHER("other", "CR_C"),
+    CC("cc", "CR_Cntrl"),
+    CONTROL("control", "CR_Cntrl"),
+    CF("cf", "CR_Cf"),
+    FORMAT("format", "CR_Cf"),
+    CN("cn", "CR_Cn"),
+    UNASSIGNED("unassigned", "CR_Cn"),
+    CO("co", "CR_Co"),
+    PRIVATEUSE("privateuse", "CR_Co"),
+    CS("cs", "CR_Cs"),
+    SURROGATE("surrogate", "CR_Cs"),
+    L("l", "CR_L"),
+    LETTER("letter", "CR_L"),
+    LC("lc", "CR_LC"),
+    CASEDLETTER("casedletter", "CR_LC"),
+    LL("ll", "CR_Ll"),
+    LOWERCASELETTER("lowercaseletter", "CR_Ll"),
+    LM("lm", "CR_Lm"),
+    MODIFIERLETTER("modifierletter", "CR_Lm"),
+    LO("lo", "CR_Lo"),
+    OTHERLETTER("otherletter", "CR_Lo"),
+    LT("lt", "CR_Lt"),
+    TITLECASELETTER("titlecaseletter", "CR_Lt"),
+    LU("lu", "CR_Lu"),
+    UPPERCASELETTER("uppercaseletter", "CR_Lu"),
+    M("m", "CR_M"),
+    MARK("mark", "CR_M"),
+    COMBININGMARK("combiningmark", "CR_M"),
+    MC("mc", "CR_Mc"),
+    SPACINGMARK("spacingmark", "CR_Mc"),
+    ME("me", "CR_Me"),
+    ENCLOSINGMARK("enclosingmark", "CR_Me"),
+    MN("mn", "CR_Mn"),
+    NONSPACINGMARK("nonspacingmark", "CR_Mn"),
+    N("n", "CR_N"),
+    NUMBER("number", "CR_N"),
+    ND("nd", "CR_Digit"),
+    DECIMALNUMBER("decimalnumber", "CR_Digit"),
+    NL("nl", "CR_Nl"),
+    LETTERNUMBER("letternumber", "CR_Nl"),
+    NO("no", "CR_No"),
+    OTHERNUMBER("othernumber", "CR_No"),
+    P("p", "CR_Punct"),
+    PUNCTUATION("punctuation", "CR_Punct"),
+    PC("pc", "CR_Pc"),
+    CONNECTORPUNCTUATION("connectorpunctuation", "CR_Pc"),
+    PD("pd", "CR_Pd"),
+    DASHPUNCTUATION("dashpunctuation", "CR_Pd"),
+    PE("pe", "CR_Pe"),
+    CLOSEPUNCTUATION("closepunctuation", "CR_Pe"),
+    PF("pf", "CR_Pf"),
+    FINALPUNCTUATION("finalpunctuation", "CR_Pf"),
+    PI("pi", "CR_Pi"),
+    INITIALPUNCTUATION("initialpunctuation", "CR_Pi"),
+    PO("po", "CR_Po"),
+    OTHERPUNCTUATION("otherpunctuation", "CR_Po"),
+    PS("ps", "CR_Ps"),
+    OPENPUNCTUATION("openpunctuation", "CR_Ps"),
+    S("s", "CR_S"),
+    SYMBOL("symbol", "CR_S"),
+    SC("sc", "CR_Sc"),
+    CURRENCYSYMBOL("currencysymbol", "CR_Sc"),
+    SK("sk", "CR_Sk"),
+    MODIFIERSYMBOL("modifiersymbol", "CR_Sk"),
+    SM("sm", "CR_Sm"),
+    MATHSYMBOL("mathsymbol", "CR_Sm"),
+    SO("so", "CR_So"),
+    OTHERSYMBOL("othersymbol", "CR_So"),
+    Z("z", "CR_Z"),
+    SEPARATOR("separator", "CR_Z"),
+    ZL("zl", "CR_Zl"),
+    LINESEPARATOR("lineseparator", "CR_Zl"),
+    ZP("zp", "CR_Zp"),
+    PARAGRAPHSEPARATOR("paragraphseparator", "CR_Zp"),
+    ZS("zs", "CR_Zs"),
+    SPACESEPARATOR("spaceseparator", "CR_Zs"),
+    MATH("math", "CR_Math"),
+    ALPHABETIC("alphabetic", "CR_Alpha"),
+    LOWERCASE("lowercase", "CR_Lower"),
+    UPPERCASE("uppercase", "CR_Upper"),
+    CASED("cased", "CR_Cased"),
+    CASEIGNORABLE("caseignorable", "CR_Case_Ignorable"),
+    CI("ci", "CR_Case_Ignorable"),
+    CHANGESWHENLOWERCASED("changeswhenlowercased", "CR_Changes_When_Lowercased"),
+    CWL("cwl", "CR_Changes_When_Lowercased"),
+    CHANGESWHENUPPERCASED("changeswhenuppercased", "CR_Changes_When_Uppercased"),
+    CWU("cwu", "CR_Changes_When_Uppercased"),
+    CHANGESWHENTITLECASED("changeswhentitlecased", "CR_Changes_When_Titlecased"),
+    CWT("cwt", "CR_Changes_When_Titlecased"),
+    CHANGESWHENCASEFOLDED("changeswhencasefolded", "CR_Changes_When_Casefolded"),
+    CWCF("cwcf", "CR_Changes_When_Casefolded"),
+    CHANGESWHENCASEMAPPED("changeswhencasemapped", "CR_Changes_When_Casemapped"),
+    CWCM("cwcm", "CR_Changes_When_Casemapped"),
+    IDSTART("idstart", "CR_ID_Start"),
+    IDS("ids", "CR_ID_Start"),
+    IDCONTINUE("idcontinue", "CR_ID_Continue"),
+    IDC("idc", "CR_ID_Continue"),
+    XIDSTART("xidstart", "CR_XID_Start"),
+    XIDS("xids", "CR_XID_Start"),
+    XIDCONTINUE("xidcontinue", "CR_XID_Continue"),
+    XIDC("xidc", "CR_XID_Continue"),
+    DEFAULTIGNORABLECODEPOINT("defaultignorablecodepoint", "CR_Default_Ignorable_Code_Point"),
+    DI("di", "CR_Default_Ignorable_Code_Point"),
+    GRAPHEMEEXTEND("graphemeextend", "CR_Grapheme_Extend"),
+    GREXT("grext", "CR_Grapheme_Extend"),
+    GRAPHEMEBASE("graphemebase", "CR_Grapheme_Base"),
+    GRBASE("grbase", "CR_Grapheme_Base"),
+    GRAPHEMELINK("graphemelink", "CR_Grapheme_Link"),
+    GRLINK("grlink", "CR_Grapheme_Link"),
+    COMMON("common", "CR_Common"),
+    ZYYY("zyyy", "CR_Common"),
+    LATIN("latin", "CR_Latin"),
+    LATN("latn", "CR_Latin"),
+    GREEK("greek", "CR_Greek"),
+    GREK("grek", "CR_Greek"),
+    CYRILLIC("cyrillic", "CR_Cyrillic"),
+    CYRL("cyrl", "CR_Cyrillic"),
+    ARMENIAN("armenian", "CR_Armenian"),
+    ARMN("armn", "CR_Armenian"),
+    HEBREW("hebrew", "CR_Hebrew"),
+    HEBR("hebr", "CR_Hebrew"),
+    ARABIC("arabic", "CR_Arabic"),
+    ARAB("arab", "CR_Arabic"),
+    SYRIAC("syriac", "CR_Syriac"),
+    SYRC("syrc", "CR_Syriac"),
+    THAANA("thaana", "CR_Thaana"),
+    THAA("thaa", "CR_Thaana"),
+    DEVANAGARI("devanagari", "CR_Devanagari"),
+    DEVA("deva", "CR_Devanagari"),
+    BENGALI("bengali", "CR_Bengali"),
+    BENG("beng", "CR_Bengali"),
+    GURMUKHI("gurmukhi", "CR_Gurmukhi"),
+    GURU("guru", "CR_Gurmukhi"),
+    GUJARATI("gujarati", "CR_Gujarati"),
+    GUJR("gujr", "CR_Gujarati"),
+    ORIYA("oriya", "CR_Oriya"),
+    ORYA("orya", "CR_Oriya"),
+    TAMIL("tamil", "CR_Tamil"),
+    TAML("taml", "CR_Tamil"),
+    TELUGU("telugu", "CR_Telugu"),
+    TELU("telu", "CR_Telugu"),
+    KANNADA("kannada", "CR_Kannada"),
+    KNDA("knda", "CR_Kannada"),
+    MALAYALAM("malayalam", "CR_Malayalam"),
+    MLYM("mlym", "CR_Malayalam"),
+    SINHALA("sinhala", "CR_Sinhala"),
+    SINH("sinh", "CR_Sinhala"),
+    THAI("thai", "CR_Thai"),
+    LAO("lao", "CR_Lao"),
+    LAOO("laoo", "CR_Lao"),
+    TIBETAN("tibetan", "CR_Tibetan"),
+    TIBT("tibt", "CR_Tibetan"),
+    MYANMAR("myanmar", "CR_Myanmar"),
+    MYMR("mymr", "CR_Myanmar"),
+    GEORGIAN("georgian", "CR_Georgian"),
+    GEOR("geor", "CR_Georgian"),
+    HANGUL("hangul", "CR_Hangul"),
+    HANG("hang", "CR_Hangul"),
+    ETHIOPIC("ethiopic", "CR_Ethiopic"),
+    ETHI("ethi", "CR_Ethiopic"),
+    CHEROKEE("cherokee", "CR_Cherokee"),
+    CHER("cher", "CR_Cherokee"),
+    CANADIANABORIGINAL("canadianaboriginal", "CR_Canadian_Aboriginal"),
+    CANS("cans", "CR_Canadian_Aboriginal"),
+    OGHAM("ogham", "CR_Ogham"),
+    OGAM("ogam", "CR_Ogham"),
+    RUNIC("runic", "CR_Runic"),
+    RUNR("runr", "CR_Runic"),
+    KHMER("khmer", "CR_Khmer"),
+    KHMR("khmr", "CR_Khmer"),
+    MONGOLIAN("mongolian", "CR_Mongolian"),
+    MONG("mong", "CR_Mongolian"),
+    HIRAGANA("hiragana", "CR_Hiragana"),
+    HIRA("hira", "CR_Hiragana"),
+    KATAKANA("katakana", "CR_Katakana"),
+    KANA("kana", "CR_Katakana"),
+    BOPOMOFO("bopomofo", "CR_Bopomofo"),
+    BOPO("bopo", "CR_Bopomofo"),
+    HAN("han", "CR_Han"),
+    HANI("hani", "CR_Han"),
+    YI("yi", "CR_Yi"),
+    YIII("yiii", "CR_Yi"),
+    OLDITALIC("olditalic", "CR_Old_Italic"),
+    ITAL("ital", "CR_Old_Italic"),
+    GOTHIC("gothic", "CR_Gothic"),
+    GOTH("goth", "CR_Gothic"),
+    INDESERET("indeseret", "CR_Deseret"),
+    INHERITED("inherited", "CR_Inherited"),
+    QAAI("qaai", "CR_Inherited"),
+    ZINH("zinh", "CR_Inherited"),
+    TAGALOG("tagalog", "CR_Tagalog"),
+    TGLG("tglg", "CR_Tagalog"),
+    HANUNOO("hanunoo", "CR_Hanunoo"),
+    HANO("hano", "CR_Hanunoo"),
+    BUHID("buhid", "CR_Buhid"),
+    BUHD("buhd", "CR_Buhid"),
+    TAGBANWA("tagbanwa", "CR_Tagbanwa"),
+    TAGB("tagb", "CR_Tagbanwa"),
+    LIMBU("limbu", "CR_Limbu"),
+    LIMB("limb", "CR_Limbu"),
+    TAILE("taile", "CR_Tai_Le"),
+    TALE("tale", "CR_Tai_Le"),
+    LINEARB("linearb", "CR_Linear_B"),
+    LINB("linb", "CR_Linear_B"),
+    UGARITIC("ugaritic", "CR_Ugaritic"),
+    UGAR("ugar", "CR_Ugaritic"),
+    INSHAVIAN("inshavian", "CR_Shavian"),
+    OSMANYA("osmanya", "CR_Osmanya"),
+    OSMA("osma", "CR_Osmanya"),
+    CYPRIOT("cypriot", "CR_Cypriot"),
+    CPRT("cprt", "CR_Cypriot"),
+    INBRAILLEPATTERNS("inbraillepatterns", "CR_Braille"),
+    BUGINESE("buginese", "CR_Buginese"),
+    BUGI("bugi", "CR_Buginese"),
+    COPTIC("coptic", "CR_Coptic"),
+    QAAC("qaac", "CR_Coptic"),
+    COPT("copt", "CR_Coptic"),
+    NEWTAILUE("newtailue", "CR_New_Tai_Lue"),
+    TALU("talu", "CR_New_Tai_Lue"),
+    GLAGOLITIC("glagolitic", "CR_Glagolitic"),
+    GLAG("glag", "CR_Glagolitic"),
+    TIFINAGH("tifinagh", "CR_Tifinagh"),
+    TFNG("tfng", "CR_Tifinagh"),
+    SYLOTINAGRI("sylotinagri", "CR_Syloti_Nagri"),
+    SYLO("sylo", "CR_Syloti_Nagri"),
+    OLDPERSIAN("oldpersian", "CR_Old_Persian"),
+    XPEO("xpeo", "CR_Old_Persian"),
+    KHAROSHTHI("kharoshthi", "CR_Kharoshthi"),
+    KHAR("khar", "CR_Kharoshthi"),
+    BALINESE("balinese", "CR_Balinese"),
+    BALI("bali", "CR_Balinese"),
+    CUNEIFORM("cuneiform", "CR_Cuneiform"),
+    XSUX("xsux", "CR_Cuneiform"),
+    PHOENICIAN("phoenician", "CR_Phoenician"),
+    PHNX("phnx", "CR_Phoenician"),
+    PHAGSPA("phagspa", "CR_Phags_Pa"),
+    PHAG("phag", "CR_Phags_Pa"),
+    NKO("nko", "CR_Nko"),
+    NKOO("nkoo", "CR_Nko"),
+    SUNDANESE("sundanese", "CR_Sundanese"),
+    SUND("sund", "CR_Sundanese"),
+    LEPCHA("lepcha", "CR_Lepcha"),
+    LEPC("lepc", "CR_Lepcha"),
+    INOLCHIKI("inolchiki", "CR_Ol_Chiki"),
+    VAI("vai", "CR_Vai"),
+    VAII("vaii", "CR_Vai"),
+    SAURASHTRA("saurashtra", "CR_Saurashtra"),
+    SAUR("saur", "CR_Saurashtra"),
+    KAYAHLI("kayahli", "CR_Kayah_Li"),
+    KALI("kali", "CR_Kayah_Li"),
+    REJANG("rejang", "CR_Rejang"),
+    RJNG("rjng", "CR_Rejang"),
+    LYCIAN("lycian", "CR_Lycian"),
+    LYCI("lyci", "CR_Lycian"),
+    CARIAN("carian", "CR_Carian"),
+    CARI("cari", "CR_Carian"),
+    LYDIAN("lydian", "CR_Lydian"),
+    LYDI("lydi", "CR_Lydian"),
+    CHAM("cham", "CR_Cham"),
+    TAITHAM("taitham", "CR_Tai_Tham"),
+    LANA("lana", "CR_Tai_Tham"),
+    TAIVIET("taiviet", "CR_Tai_Viet"),
+    TAVT("tavt", "CR_Tai_Viet"),
+    AVESTAN("avestan", "CR_Avestan"),
+    AVST("avst", "CR_Avestan"),
+    EGYPTIANHIEROGLYPHS("egyptianhieroglyphs", "CR_Egyptian_Hieroglyphs"),
+    EGYP("egyp", "CR_Egyptian_Hieroglyphs"),
+    SAMARITAN("samaritan", "CR_Samaritan"),
+    SAMR("samr", "CR_Samaritan"),
+    INLISU("inlisu", "CR_Lisu"),
+    BAMUM("bamum", "CR_Bamum"),
+    BAMU("bamu", "CR_Bamum"),
+    JAVANESE("javanese", "CR_Javanese"),
+    JAVA("java", "CR_Javanese"),
+    MEETEIMAYEK("meeteimayek", "CR_Meetei_Mayek"),
+    MTEI("mtei", "CR_Meetei_Mayek"),
+    IMPERIALARAMAIC("imperialaramaic", "CR_Imperial_Aramaic"),
+    ARMI("armi", "CR_Imperial_Aramaic"),
+    INOLDSOUTHARABIAN("inoldsoutharabian", "CR_Old_South_Arabian"),
+    INSCRIPTIONALPARTHIAN("inscriptionalparthian", "CR_Inscriptional_Parthian"),
+    PRTI("prti", "CR_Inscriptional_Parthian"),
+    INSCRIPTIONALPAHLAVI("inscriptionalpahlavi", "CR_Inscriptional_Pahlavi"),
+    PHLI("phli", "CR_Inscriptional_Pahlavi"),
+    OLDTURKIC("oldturkic", "CR_Old_Turkic"),
+    ORKH("orkh", "CR_Old_Turkic"),
+    KAITHI("kaithi", "CR_Kaithi"),
+    KTHI("kthi", "CR_Kaithi"),
+    BATAK("batak", "CR_Batak"),
+    BATK("batk", "CR_Batak"),
+    BRAHMI("brahmi", "CR_Brahmi"),
+    BRAH("brah", "CR_Brahmi"),
+    MANDAIC("mandaic", "CR_Mandaic"),
+    MAND("mand", "CR_Mandaic"),
+    CHAKMA("chakma", "CR_Chakma"),
+    CAKM("cakm", "CR_Chakma"),
+    MEROITICCURSIVE("meroiticcursive", "CR_Meroitic_Cursive"),
+    MERC("merc", "CR_Meroitic_Cursive"),
+    INMEROITICHIEROGLYPHS("inmeroitichieroglyphs", "CR_Meroitic_Hieroglyphs"),
+    MIAO("miao", "CR_Miao"),
+    PLRD("plrd", "CR_Miao"),
+    SHARADA("sharada", "CR_Sharada"),
+    SHRD("shrd", "CR_Sharada"),
+    SORASOMPENG("sorasompeng", "CR_Sora_Sompeng"),
+    SORA("sora", "CR_Sora_Sompeng"),
+    TAKRI("takri", "CR_Takri"),
+    TAKR("takr", "CR_Takri"),
+    CAUCASIANALBANIAN("caucasianalbanian", "CR_Caucasian_Albanian"),
+    AGHB("aghb", "CR_Caucasian_Albanian"),
+    BASSAVAH("bassavah", "CR_Bassa_Vah"),
+    BASS("bass", "CR_Bassa_Vah"),
+    DUPLOYAN("duployan", "CR_Duployan"),
+    DUPL("dupl", "CR_Duployan"),
+    ELBASAN("elbasan", "CR_Elbasan"),
+    ELBA("elba", "CR_Elbasan"),
+    GRANTHA("grantha", "CR_Grantha"),
+    GRAN("gran", "CR_Grantha"),
+    PAHAWHHMONG("pahawhhmong", "CR_Pahawh_Hmong"),
+    HMNG("hmng", "CR_Pahawh_Hmong"),
+    KHOJKI("khojki", "CR_Khojki"),
+    KHOJ("khoj", "CR_Khojki"),
+    LINEARA("lineara", "CR_Linear_A"),
+    LINA("lina", "CR_Linear_A"),
+    MAHAJANI("mahajani", "CR_Mahajani"),
+    MAHJ("mahj", "CR_Mahajani"),
+    MANICHAEAN("manichaean", "CR_Manichaean"),
+    MANI("mani", "CR_Manichaean"),
+    MENDEKIKAKUI("mendekikakui", "CR_Mende_Kikakui"),
+    MEND("mend", "CR_Mende_Kikakui"),
+    MODI("modi", "CR_Modi"),
+    MRO("mro", "CR_Mro"),
+    MROO("mroo", "CR_Mro"),
+    INOLDNORTHARABIAN("inoldnortharabian", "CR_Old_North_Arabian"),
+    NABATAEAN("nabataean", "CR_Nabataean"),
+    NBAT("nbat", "CR_Nabataean"),
+    INPALMYRENE("inpalmyrene", "CR_Palmyrene"),
+    PAUCINHAU("paucinhau", "CR_Pau_Cin_Hau"),
+    PAUC("pauc", "CR_Pau_Cin_Hau"),
+    OLDPERMIC("oldpermic", "CR_Old_Permic"),
+    PERM("perm", "CR_Old_Permic"),
+    PSALTERPAHLAVI("psalterpahlavi", "CR_Psalter_Pahlavi"),
+    PHLP("phlp", "CR_Psalter_Pahlavi"),
+    SIDDHAM("siddham", "CR_Siddham"),
+    SIDD("sidd", "CR_Siddham"),
+    KHUDAWADI("khudawadi", "CR_Khudawadi"),
+    SIND("sind", "CR_Khudawadi"),
+    TIRHUTA("tirhuta", "CR_Tirhuta"),
+    TIRH("tirh", "CR_Tirhuta"),
+    WARANGCITI("warangciti", "CR_Warang_Citi"),
+    WARA("wara", "CR_Warang_Citi"),
+    AHOM("ahom", "CR_Ahom"),
+    ANATOLIANHIEROGLYPHS("anatolianhieroglyphs", "CR_Anatolian_Hieroglyphs"),
+    HLUW("hluw", "CR_Anatolian_Hieroglyphs"),
+    HATRAN("hatran", "CR_Hatran"),
+    HATR("hatr", "CR_Hatran"),
+    MULTANI("multani", "CR_Multani"),
+    MULT("mult", "CR_Multani"),
+    OLDHUNGARIAN("oldhungarian", "CR_Old_Hungarian"),
+    HUNG("hung", "CR_Old_Hungarian"),
+    SIGNWRITING("signwriting", "CR_SignWriting"),
+    SGNW("sgnw", "CR_SignWriting"),
+    ADLAM("adlam", "CR_Adlam"),
+    ADLM("adlm", "CR_Adlam"),
+    BHAIKSUKI("bhaiksuki", "CR_Bhaiksuki"),
+    BHKS("bhks", "CR_Bhaiksuki"),
+    MARCHEN("marchen", "CR_Marchen"),
+    MARC("marc", "CR_Marchen"),
+    NEWA("newa", "CR_Newa"),
+    OSAGE("osage", "CR_Osage"),
+    OSGE("osge", "CR_Osage"),
+    TANGUT("tangut", "CR_Tangut"),
+    TANG("tang", "CR_Tangut"),
+    MASARAMGONDI("masaramgondi", "CR_Masaram_Gondi"),
+    GONM("gonm", "CR_Masaram_Gondi"),
+    NUSHU("nushu", "CR_Nushu"),
+    NSHU("nshu", "CR_Nushu"),
+    SOYOMBO("soyombo", "CR_Soyombo"),
+    SOYO("soyo", "CR_Soyombo"),
+    ZANABAZARSQUARE("zanabazarsquare", "CR_Zanabazar_Square"),
+    ZANB("zanb", "CR_Zanabazar_Square"),
+    DOGRA("dogra", "CR_Dogra"),
+    DOGR("dogr", "CR_Dogra"),
+    GUNJALAGONDI("gunjalagondi", "CR_Gunjala_Gondi"),
+    GONG("gong", "CR_Gunjala_Gondi"),
+    MAKASAR("makasar", "CR_Makasar"),
+    MAKA("maka", "CR_Makasar"),
+    MEDEFAIDRIN("medefaidrin", "CR_Medefaidrin"),
+    MEDF("medf", "CR_Medefaidrin"),
+    HANIFIROHINGYA("hanifirohingya", "CR_Hanifi_Rohingya"),
+    ROHG("rohg", "CR_Hanifi_Rohingya"),
+    SOGDIAN("sogdian", "CR_Sogdian"),
+    SOGD("sogd", "CR_Sogdian"),
+    OLDSOGDIAN("oldsogdian", "CR_Old_Sogdian"),
+    SOGO("sogo", "CR_Old_Sogdian"),
+    ELYMAIC("elymaic", "CR_Elymaic"),
+    ELYM("elym", "CR_Elymaic"),
+    NANDINAGARI("nandinagari", "CR_Nandinagari"),
+    NAND("nand", "CR_Nandinagari"),
+    NYIAKENGPUACHUEHMONG("nyiakengpuachuehmong", "CR_Nyiakeng_Puachue_Hmong"),
+    HMNP("hmnp", "CR_Nyiakeng_Puachue_Hmong"),
+    WANCHO("wancho", "CR_Wancho"),
+    WCHO("wcho", "CR_Wancho"),
+    WHITESPACE("whitespace", "CR_Space"),
+    WSPACE("wspace", "CR_Space"),
+    BIDICONTROL("bidicontrol", "CR_Bidi_Control"),
+    BIDIC("bidic", "CR_Bidi_Control"),
+    JOINCONTROL("joincontrol", "CR_Join_Control"),
+    JOINC("joinc", "CR_Join_Control"),
+    DASH("dash", "CR_Dash"),
+    HYPHEN("hyphen", "CR_Hyphen"),
+    QUOTATIONMARK("quotationmark", "CR_Quotation_Mark"),
+    QMARK("qmark", "CR_Quotation_Mark"),
+    TERMINALPUNCTUATION("terminalpunctuation", "CR_Terminal_Punctuation"),
+    TERM("term", "CR_Terminal_Punctuation"),
+    OTHERMATH("othermath", "CR_Other_Math"),
+    OMATH("omath", "CR_Other_Math"),
+    HEXDIGIT("hexdigit", "CR_Hex_Digit"),
+    HEX("hex", "CR_Hex_Digit"),
+    ASCIIHEXDIGIT("asciihexdigit", "CR_XDigit"),
+    AHEX("ahex", "CR_XDigit"),
+    OTHERALPHABETIC("otheralphabetic", "CR_Other_Alphabetic"),
+    OALPHA("oalpha", "CR_Other_Alphabetic"),
+    IDEOGRAPHIC("ideographic", "CR_Ideographic"),
+    IDEO("ideo", "CR_Ideographic"),
+    DIACRITIC("diacritic", "CR_Diacritic"),
+    DIA("dia", "CR_Diacritic"),
+    EXTENDER("extender", "CR_Extender"),
+    EXT("ext", "CR_Extender"),
+    OTHERLOWERCASE("otherlowercase", "CR_Other_Lowercase"),
+    OLOWER("olower", "CR_Other_Lowercase"),
+    OTHERUPPERCASE("otheruppercase", "CR_Other_Uppercase"),
+    OUPPER("oupper", "CR_Other_Uppercase"),
+    NONCHARACTERCODEPOINT("noncharactercodepoint", "CR_Noncharacter_Code_Point"),
+    NCHAR("nchar", "CR_Noncharacter_Code_Point"),
+    OTHERGRAPHEMEEXTEND("othergraphemeextend", "CR_Other_Grapheme_Extend"),
+    OGREXT("ogrext", "CR_Other_Grapheme_Extend"),
+    IDSBINARYOPERATOR("idsbinaryoperator", "CR_IDS_Binary_Operator"),
+    IDSB("idsb", "CR_IDS_Binary_Operator"),
+    IDSTRINARYOPERATOR("idstrinaryoperator", "CR_IDS_Trinary_Operator"),
+    IDST("idst", "CR_IDS_Trinary_Operator"),
+    RADICAL("radical", "CR_Radical"),
+    UNIFIEDIDEOGRAPH("unifiedideograph", "CR_Unified_Ideograph"),
+    UIDEO("uideo", "CR_Unified_Ideograph"),
+    OTHERDEFAULTIGNORABLECODEPOINT("otherdefaultignorablecodepoint", "CR_Other_Default_Ignorable_Code_Point"),
+    ODI("odi", "CR_Other_Default_Ignorable_Code_Point"),
+    DEPRECATED("deprecated", "CR_Deprecated"),
+    DEP("dep", "CR_Deprecated"),
+    SOFTDOTTED("softdotted", "CR_Soft_Dotted"),
+    SD("sd", "CR_Soft_Dotted"),
+    LOGICALORDEREXCEPTION("logicalorderexception", "CR_Logical_Order_Exception"),
+    LOE("loe", "CR_Logical_Order_Exception"),
+    OTHERIDSTART("otheridstart", "CR_Other_ID_Start"),
+    OIDS("oids", "CR_Other_ID_Start"),
+    OTHERIDCONTINUE("otheridcontinue", "CR_Other_ID_Continue"),
+    OIDC("oidc", "CR_Other_ID_Continue"),
+    SENTENCETERMINAL("sentenceterminal", "CR_Sentence_Terminal"),
+    STERM("sterm", "CR_Sentence_Terminal"),
+    VARIATIONSELECTOR("variationselector", "CR_Variation_Selector"),
+    VS("vs", "CR_Variation_Selector"),
+    PATTERNWHITESPACE("patternwhitespace", "CR_Pattern_White_Space"),
+    PATWS("patws", "CR_Pattern_White_Space"),
+    PATTERNSYNTAX("patternsyntax", "CR_Pattern_Syntax"),
+    PATSYN("patsyn", "CR_Pattern_Syntax"),
+    PREPENDEDCONCATENATIONMARK("prependedconcatenationmark", "CR_Prepended_Concatenation_Mark"),
+    PCM("pcm", "CR_Prepended_Concatenation_Mark"),
+    GRAPHEMECLUSTERBREAK_REGIONALINDICATOR("graphemeclusterbreak=regionalindicator", "CR_Regional_Indicator"),
+    EMOJI("emoji", "CR_Emoji"),
+    EMOJIPRESENTATION("emojipresentation", "CR_Emoji_Presentation"),
+    EMOJIMODIFIER("emojimodifier", "CR_Emoji_Modifier"),
+    EMOJIMODIFIERBASE("emojimodifierbase", "CR_Emoji_Modifier_Base"),
+    EMOJICOMPONENT("emojicomponent", "CR_Emoji_Component"),
+    EXTENDEDPICTOGRAPHIC("extendedpictographic", "CR_Extended_Pictographic"),
+    UNKNOWN("unknown", "CR_Unknown"),
+    ZZZZ("zzzz", "CR_Unknown"),
+    AGE_1_1("age=1.1", "CR_Age_1_1"),
+    AGE_2_0("age=2.0", "CR_Age_2_0"),
+    AGE_2_1("age=2.1", "CR_Age_2_1"),
+    AGE_3_0("age=3.0", "CR_Age_3_0"),
+    AGE_3_1("age=3.1", "CR_Age_3_1"),
+    AGE_3_2("age=3.2", "CR_Age_3_2"),
+    AGE_4_0("age=4.0", "CR_Age_4_0"),
+    AGE_4_1("age=4.1", "CR_Age_4_1"),
+    AGE_5_0("age=5.0", "CR_Age_5_0"),
+    AGE_5_1("age=5.1", "CR_Age_5_1"),
+    AGE_5_2("age=5.2", "CR_Age_5_2"),
+    AGE_6_0("age=6.0", "CR_Age_6_0"),
+    AGE_6_1("age=6.1", "CR_Age_6_1"),
+    AGE_6_2("age=6.2", "CR_Age_6_2"),
+    AGE_6_3("age=6.3", "CR_Age_6_3"),
+    AGE_7_0("age=7.0", "CR_Age_7_0"),
+    AGE_8_0("age=8.0", "CR_Age_8_0"),
+    AGE_9_0("age=9.0", "CR_Age_9_0"),
+    AGE_10_0("age=10.0", "CR_Age_10_0"),
+    AGE_11_0("age=11.0", "CR_Age_11_0"),
+    AGE_12_0("age=12.0", "CR_Age_12_0"),
+    AGE_12_1("age=12.1", "CR_Age_12_1"),
+    GRAPHEMECLUSTERBREAK_PREPEND("graphemeclusterbreak=prepend", "CR_Grapheme_Cluster_Break_Prepend"),
+    GRAPHEMECLUSTERBREAK_CR("graphemeclusterbreak=cr", "CR_Grapheme_Cluster_Break_CR"),
+    GRAPHEMECLUSTERBREAK_LF("graphemeclusterbreak=lf", "CR_NEWLINE"),
+    GRAPHEMECLUSTERBREAK_CONTROL("graphemeclusterbreak=control", "CR_Grapheme_Cluster_Break_Control"),
+    GRAPHEMECLUSTERBREAK_EXTEND("graphemeclusterbreak=extend", "CR_Grapheme_Cluster_Break_Extend"),
+    REGIONALINDICATOR("regionalindicator", "CR_Regional_Indicator"),
+    RI("ri", "CR_Regional_Indicator"),
+    GRAPHEMECLUSTERBREAK_SPACINGMARK("graphemeclusterbreak=spacingmark", "CR_Grapheme_Cluster_Break_SpacingMark"),
+    GRAPHEMECLUSTERBREAK_L("graphemeclusterbreak=l", "CR_Grapheme_Cluster_Break_L"),
+    GRAPHEMECLUSTERBREAK_V("graphemeclusterbreak=v", "CR_Grapheme_Cluster_Break_V"),
+    GRAPHEMECLUSTERBREAK_T("graphemeclusterbreak=t", "CR_Grapheme_Cluster_Break_T"),
+    GRAPHEMECLUSTERBREAK_LV("graphemeclusterbreak=lv", "CR_Grapheme_Cluster_Break_LV"),
+    GRAPHEMECLUSTERBREAK_LVT("graphemeclusterbreak=lvt", "CR_Grapheme_Cluster_Break_LVT"),
+    GRAPHEMECLUSTERBREAK_ZWJ("graphemeclusterbreak=zwj", "CR_Grapheme_Cluster_Break_ZWJ"),
+    INBASICLATIN("inbasiclatin", "CR_ASCII"),
+    INLATIN1SUPPLEMENT("inlatin1supplement", "CR_In_Latin_1_Supplement"),
+    INLATINEXTENDEDA("inlatinextendeda", "CR_In_Latin_Extended_A"),
+    INLATINEXTENDEDB("inlatinextendedb", "CR_In_Latin_Extended_B"),
+    INIPAEXTENSIONS("inipaextensions", "CR_In_IPA_Extensions"),
+    INSPACINGMODIFIERLETTERS("inspacingmodifierletters", "CR_In_Spacing_Modifier_Letters"),
+    INCOMBININGDIACRITICALMARKS("incombiningdiacriticalmarks", "CR_In_Combining_Diacritical_Marks"),
+    INGREEKANDCOPTIC("ingreekandcoptic", "CR_In_Greek_and_Coptic"),
+    INCYRILLIC("incyrillic", "CR_In_Cyrillic"),
+    INCYRILLICSUPPLEMENT("incyrillicsupplement", "CR_In_Cyrillic_Supplement"),
+    INARMENIAN("inarmenian", "CR_In_Armenian"),
+    INHEBREW("inhebrew", "CR_In_Hebrew"),
+    INARABIC("inarabic", "CR_In_Arabic"),
+    INSYRIAC("insyriac", "CR_In_Syriac"),
+    INARABICSUPPLEMENT("inarabicsupplement", "CR_In_Arabic_Supplement"),
+    INTHAANA("inthaana", "CR_In_Thaana"),
+    INNKO("innko", "CR_In_NKo"),
+    INSAMARITAN("insamaritan", "CR_In_Samaritan"),
+    INMANDAIC("inmandaic", "CR_In_Mandaic"),
+    INSYRIACSUPPLEMENT("insyriacsupplement", "CR_In_Syriac_Supplement"),
+    INARABICEXTENDEDA("inarabicextendeda", "CR_In_Arabic_Extended_A"),
+    INDEVANAGARI("indevanagari", "CR_In_Devanagari"),
+    INBENGALI("inbengali", "CR_In_Bengali"),
+    INGURMUKHI("ingurmukhi", "CR_In_Gurmukhi"),
+    INGUJARATI("ingujarati", "CR_In_Gujarati"),
+    INORIYA("inoriya", "CR_In_Oriya"),
+    INTAMIL("intamil", "CR_In_Tamil"),
+    INTELUGU("intelugu", "CR_In_Telugu"),
+    INKANNADA("inkannada", "CR_In_Kannada"),
+    INMALAYALAM("inmalayalam", "CR_In_Malayalam"),
+    INSINHALA("insinhala", "CR_In_Sinhala"),
+    INTHAI("inthai", "CR_In_Thai"),
+    INLAO("inlao", "CR_In_Lao"),
+    INTIBETAN("intibetan", "CR_In_Tibetan"),
+    INMYANMAR("inmyanmar", "CR_In_Myanmar"),
+    INGEORGIAN("ingeorgian", "CR_In_Georgian"),
+    INHANGULJAMO("inhanguljamo", "CR_In_Hangul_Jamo"),
+    INETHIOPIC("inethiopic", "CR_In_Ethiopic"),
+    INETHIOPICSUPPLEMENT("inethiopicsupplement", "CR_In_Ethiopic_Supplement"),
+    INCHEROKEE("incherokee", "CR_In_Cherokee"),
+    INUNIFIEDCANADIANABORIGINALSYLLABICS("inunifiedcanadianaboriginalsyllabics", "CR_In_Unified_Canadian_Aboriginal_Syllabics"),
+    INOGHAM("inogham", "CR_In_Ogham"),
+    INRUNIC("inrunic", "CR_In_Runic"),
+    INTAGALOG("intagalog", "CR_In_Tagalog"),
+    INHANUNOO("inhanunoo", "CR_In_Hanunoo"),
+    INBUHID("inbuhid", "CR_In_Buhid"),
+    INTAGBANWA("intagbanwa", "CR_In_Tagbanwa"),
+    INKHMER("inkhmer", "CR_In_Khmer"),
+    INMONGOLIAN("inmongolian", "CR_In_Mongolian"),
+    INUNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED("inunifiedcanadianaboriginalsyllabicsextended", "CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended"),
+    INLIMBU("inlimbu", "CR_In_Limbu"),
+    INTAILE("intaile", "CR_In_Tai_Le"),
+    INNEWTAILUE("innewtailue", "CR_In_New_Tai_Lue"),
+    INKHMERSYMBOLS("inkhmersymbols", "CR_In_Khmer_Symbols"),
+    INBUGINESE("inbuginese", "CR_In_Buginese"),
+    INTAITHAM("intaitham", "CR_In_Tai_Tham"),
+    INCOMBININGDIACRITICALMARKSEXTENDED("incombiningdiacriticalmarksextended", "CR_In_Combining_Diacritical_Marks_Extended"),
+    INBALINESE("inbalinese", "CR_In_Balinese"),
+    INSUNDANESE("insundanese", "CR_In_Sundanese"),
+    INBATAK("inbatak", "CR_In_Batak"),
+    INLEPCHA("inlepcha", "CR_In_Lepcha"),
+    OLCHIKI("olchiki", "CR_Ol_Chiki"),
+    OLCK("olck", "CR_Ol_Chiki"),
+    INCYRILLICEXTENDEDC("incyrillicextendedc", "CR_In_Cyrillic_Extended_C"),
+    INGEORGIANEXTENDED("ingeorgianextended", "CR_In_Georgian_Extended"),
+    INSUNDANESESUPPLEMENT("insundanesesupplement", "CR_In_Sundanese_Supplement"),
+    INVEDICEXTENSIONS("invedicextensions", "CR_In_Vedic_Extensions"),
+    INPHONETICEXTENSIONS("inphoneticextensions", "CR_In_Phonetic_Extensions"),
+    INPHONETICEXTENSIONSSUPPLEMENT("inphoneticextensionssupplement", "CR_In_Phonetic_Extensions_Supplement"),
+    INCOMBININGDIACRITICALMARKSSUPPLEMENT("incombiningdiacriticalmarkssupplement", "CR_In_Combining_Diacritical_Marks_Supplement"),
+    INLATINEXTENDEDADDITIONAL("inlatinextendedadditional", "CR_In_Latin_Extended_Additional"),
+    INGREEKEXTENDED("ingreekextended", "CR_In_Greek_Extended"),
+    INGENERALPUNCTUATION("ingeneralpunctuation", "CR_In_General_Punctuation"),
+    INSUPERSCRIPTSANDSUBSCRIPTS("insuperscriptsandsubscripts", "CR_In_Superscripts_and_Subscripts"),
+    INCURRENCYSYMBOLS("incurrencysymbols", "CR_In_Currency_Symbols"),
+    INCOMBININGDIACRITICALMARKSFORSYMBOLS("incombiningdiacriticalmarksforsymbols", "CR_In_Combining_Diacritical_Marks_for_Symbols"),
+    INLETTERLIKESYMBOLS("inletterlikesymbols", "CR_In_Letterlike_Symbols"),
+    INNUMBERFORMS("innumberforms", "CR_In_Number_Forms"),
+    INARROWS("inarrows", "CR_In_Arrows"),
+    INMATHEMATICALOPERATORS("inmathematicaloperators", "CR_In_Mathematical_Operators"),
+    INMISCELLANEOUSTECHNICAL("inmiscellaneoustechnical", "CR_In_Miscellaneous_Technical"),
+    INCONTROLPICTURES("incontrolpictures", "CR_In_Control_Pictures"),
+    INOPTICALCHARACTERRECOGNITION("inopticalcharacterrecognition", "CR_In_Optical_Character_Recognition"),
+    INENCLOSEDALPHANUMERICS("inenclosedalphanumerics", "CR_In_Enclosed_Alphanumerics"),
+    INBOXDRAWING("inboxdrawing", "CR_In_Box_Drawing"),
+    INBLOCKELEMENTS("inblockelements", "CR_In_Block_Elements"),
+    INGEOMETRICSHAPES("ingeometricshapes", "CR_In_Geometric_Shapes"),
+    INMISCELLANEOUSSYMBOLS("inmiscellaneoussymbols", "CR_In_Miscellaneous_Symbols"),
+    INDINGBATS("indingbats", "CR_In_Dingbats"),
+    INMISCELLANEOUSMATHEMATICALSYMBOLSA("inmiscellaneousmathematicalsymbolsa", "CR_In_Miscellaneous_Mathematical_Symbols_A"),
+    INSUPPLEMENTALARROWSA("insupplementalarrowsa", "CR_In_Supplemental_Arrows_A"),
+    BRAILLE("braille", "CR_Braille"),
+    BRAI("brai", "CR_Braille"),
+    INSUPPLEMENTALARROWSB("insupplementalarrowsb", "CR_In_Supplemental_Arrows_B"),
+    INMISCELLANEOUSMATHEMATICALSYMBOLSB("inmiscellaneousmathematicalsymbolsb", "CR_In_Miscellaneous_Mathematical_Symbols_B"),
+    INSUPPLEMENTALMATHEMATICALOPERATORS("insupplementalmathematicaloperators", "CR_In_Supplemental_Mathematical_Operators"),
+    INMISCELLANEOUSSYMBOLSANDARROWS("inmiscellaneoussymbolsandarrows", "CR_In_Miscellaneous_Symbols_and_Arrows"),
+    INGLAGOLITIC("inglagolitic", "CR_In_Glagolitic"),
+    INLATINEXTENDEDC("inlatinextendedc", "CR_In_Latin_Extended_C"),
+    INCOPTIC("incoptic", "CR_In_Coptic"),
+    INGEORGIANSUPPLEMENT("ingeorgiansupplement", "CR_In_Georgian_Supplement"),
+    INTIFINAGH("intifinagh", "CR_In_Tifinagh"),
+    INETHIOPICEXTENDED("inethiopicextended", "CR_In_Ethiopic_Extended"),
+    INCYRILLICEXTENDEDA("incyrillicextendeda", "CR_In_Cyrillic_Extended_A"),
+    INSUPPLEMENTALPUNCTUATION("insupplementalpunctuation", "CR_In_Supplemental_Punctuation"),
+    INCJKRADICALSSUPPLEMENT("incjkradicalssupplement", "CR_In_CJK_Radicals_Supplement"),
+    INKANGXIRADICALS("inkangxiradicals", "CR_In_Kangxi_Radicals"),
+    INIDEOGRAPHICDESCRIPTIONCHARACTERS("inideographicdescriptioncharacters", "CR_In_Ideographic_Description_Characters"),
+    INCJKSYMBOLSANDPUNCTUATION("incjksymbolsandpunctuation", "CR_In_CJK_Symbols_and_Punctuation"),
+    INHIRAGANA("inhiragana", "CR_In_Hiragana"),
+    INKATAKANA("inkatakana", "CR_In_Katakana"),
+    INBOPOMOFO("inbopomofo", "CR_In_Bopomofo"),
+    INHANGULCOMPATIBILITYJAMO("inhangulcompatibilityjamo", "CR_In_Hangul_Compatibility_Jamo"),
+    INKANBUN("inkanbun", "CR_In_Kanbun"),
+    INBOPOMOFOEXTENDED("inbopomofoextended", "CR_In_Bopomofo_Extended"),
+    INCJKSTROKES("incjkstrokes", "CR_In_CJK_Strokes"),
+    INKATAKANAPHONETICEXTENSIONS("inkatakanaphoneticextensions", "CR_In_Katakana_Phonetic_Extensions"),
+    INENCLOSEDCJKLETTERSANDMONTHS("inenclosedcjklettersandmonths", "CR_In_Enclosed_CJK_Letters_and_Months"),
+    INCJKCOMPATIBILITY("incjkcompatibility", "CR_In_CJK_Compatibility"),
+    INCJKUNIFIEDIDEOGRAPHSEXTENSIONA("incjkunifiedideographsextensiona", "CR_In_CJK_Unified_Ideographs_Extension_A"),
+    INYIJINGHEXAGRAMSYMBOLS("inyijinghexagramsymbols", "CR_In_Yijing_Hexagram_Symbols"),
+    INCJKUNIFIEDIDEOGRAPHS("incjkunifiedideographs", "CR_In_CJK_Unified_Ideographs"),
+    INYISYLLABLES("inyisyllables", "CR_In_Yi_Syllables"),
+    INYIRADICALS("inyiradicals", "CR_In_Yi_Radicals"),
+    LISU("lisu", "CR_Lisu"),
+    INVAI("invai", "CR_In_Vai"),
+    INCYRILLICEXTENDEDB("incyrillicextendedb", "CR_In_Cyrillic_Extended_B"),
+    INBAMUM("inbamum", "CR_In_Bamum"),
+    INMODIFIERTONELETTERS("inmodifiertoneletters", "CR_In_Modifier_Tone_Letters"),
+    INLATINEXTENDEDD("inlatinextendedd", "CR_In_Latin_Extended_D"),
+    INSYLOTINAGRI("insylotinagri", "CR_In_Syloti_Nagri"),
+    INCOMMONINDICNUMBERFORMS("incommonindicnumberforms", "CR_In_Common_Indic_Number_Forms"),
+    INPHAGSPA("inphagspa", "CR_In_Phags_pa"),
+    INSAURASHTRA("insaurashtra", "CR_In_Saurashtra"),
+    INDEVANAGARIEXTENDED("indevanagariextended", "CR_In_Devanagari_Extended"),
+    INKAYAHLI("inkayahli", "CR_In_Kayah_Li"),
+    INREJANG("inrejang", "CR_In_Rejang"),
+    INHANGULJAMOEXTENDEDA("inhanguljamoextendeda", "CR_In_Hangul_Jamo_Extended_A"),
+    INJAVANESE("injavanese", "CR_In_Javanese"),
+    INMYANMAREXTENDEDB("inmyanmarextendedb", "CR_In_Myanmar_Extended_B"),
+    INCHAM("incham", "CR_In_Cham"),
+    INMYANMAREXTENDEDA("inmyanmarextendeda", "CR_In_Myanmar_Extended_A"),
+    INTAIVIET("intaiviet", "CR_In_Tai_Viet"),
+    INMEETEIMAYEKEXTENSIONS("inmeeteimayekextensions", "CR_In_Meetei_Mayek_Extensions"),
+    INETHIOPICEXTENDEDA("inethiopicextendeda", "CR_In_Ethiopic_Extended_A"),
+    INLATINEXTENDEDE("inlatinextendede", "CR_In_Latin_Extended_E"),
+    INCHEROKEESUPPLEMENT("incherokeesupplement", "CR_In_Cherokee_Supplement"),
+    INMEETEIMAYEK("inmeeteimayek", "CR_In_Meetei_Mayek"),
+    INHANGULSYLLABLES("inhangulsyllables", "CR_In_Hangul_Syllables"),
+    INHANGULJAMOEXTENDEDB("inhanguljamoextendedb", "CR_In_Hangul_Jamo_Extended_B"),
+    INHIGHSURROGATES("inhighsurrogates", "CR_In_High_Surrogates"),
+    INHIGHPRIVATEUSESURROGATES("inhighprivateusesurrogates", "CR_In_High_Private_Use_Surrogates"),
+    INLOWSURROGATES("inlowsurrogates", "CR_In_Low_Surrogates"),
+    INPRIVATEUSEAREA("inprivateusearea", "CR_In_Private_Use_Area"),
+    INCJKCOMPATIBILITYIDEOGRAPHS("incjkcompatibilityideographs", "CR_In_CJK_Compatibility_Ideographs"),
+    INALPHABETICPRESENTATIONFORMS("inalphabeticpresentationforms", "CR_In_Alphabetic_Presentation_Forms"),
+    INARABICPRESENTATIONFORMSA("inarabicpresentationformsa", "CR_In_Arabic_Presentation_Forms_A"),
+    INVARIATIONSELECTORS("invariationselectors", "CR_In_Variation_Selectors"),
+    INVERTICALFORMS("inverticalforms", "CR_In_Vertical_Forms"),
+    INCOMBININGHALFMARKS("incombininghalfmarks", "CR_In_Combining_Half_Marks"),
+    INCJKCOMPATIBILITYFORMS("incjkcompatibilityforms", "CR_In_CJK_Compatibility_Forms"),
+    INSMALLFORMVARIANTS("insmallformvariants", "CR_In_Small_Form_Variants"),
+    INARABICPRESENTATIONFORMSB("inarabicpresentationformsb", "CR_In_Arabic_Presentation_Forms_B"),
+    INHALFWIDTHANDFULLWIDTHFORMS("inhalfwidthandfullwidthforms", "CR_In_Halfwidth_and_Fullwidth_Forms"),
+    INSPECIALS("inspecials", "CR_In_Specials"),
+    INLINEARBSYLLABARY("inlinearbsyllabary", "CR_In_Linear_B_Syllabary"),
+    INLINEARBIDEOGRAMS("inlinearbideograms", "CR_In_Linear_B_Ideograms"),
+    INAEGEANNUMBERS("inaegeannumbers", "CR_In_Aegean_Numbers"),
+    INANCIENTGREEKNUMBERS("inancientgreeknumbers", "CR_In_Ancient_Greek_Numbers"),
+    INANCIENTSYMBOLS("inancientsymbols", "CR_In_Ancient_Symbols"),
+    INPHAISTOSDISC("inphaistosdisc", "CR_In_Phaistos_Disc"),
+    INLYCIAN("inlycian", "CR_In_Lycian"),
+    INCARIAN("incarian", "CR_In_Carian"),
+    INCOPTICEPACTNUMBERS("incopticepactnumbers", "CR_In_Coptic_Epact_Numbers"),
+    INOLDITALIC("inolditalic", "CR_In_Old_Italic"),
+    INGOTHIC("ingothic", "CR_In_Gothic"),
+    INOLDPERMIC("inoldpermic", "CR_In_Old_Permic"),
+    INUGARITIC("inugaritic", "CR_In_Ugaritic"),
+    INOLDPERSIAN("inoldpersian", "CR_In_Old_Persian"),
+    DESERET("deseret", "CR_Deseret"),
+    DSRT("dsrt", "CR_Deseret"),
+    SHAVIAN("shavian", "CR_Shavian"),
+    SHAW("shaw", "CR_Shavian"),
+    INOSMANYA("inosmanya", "CR_In_Osmanya"),
+    INOSAGE("inosage", "CR_In_Osage"),
+    INELBASAN("inelbasan", "CR_In_Elbasan"),
+    INCAUCASIANALBANIAN("incaucasianalbanian", "CR_In_Caucasian_Albanian"),
+    INLINEARA("inlineara", "CR_In_Linear_A"),
+    INCYPRIOTSYLLABARY("incypriotsyllabary", "CR_In_Cypriot_Syllabary"),
+    INIMPERIALARAMAIC("inimperialaramaic", "CR_In_Imperial_Aramaic"),
+    PALMYRENE("palmyrene", "CR_Palmyrene"),
+    PALM("palm", "CR_Palmyrene"),
+    INNABATAEAN("innabataean", "CR_In_Nabataean"),
+    INHATRAN("inhatran", "CR_In_Hatran"),
+    INPHOENICIAN("inphoenician", "CR_In_Phoenician"),
+    INLYDIAN("inlydian", "CR_In_Lydian"),
+    MEROITICHIEROGLYPHS("meroitichieroglyphs", "CR_Meroitic_Hieroglyphs"),
+    MERO("mero", "CR_Meroitic_Hieroglyphs"),
+    INMEROITICCURSIVE("inmeroiticcursive", "CR_In_Meroitic_Cursive"),
+    INKHAROSHTHI("inkharoshthi", "CR_In_Kharoshthi"),
+    OLDSOUTHARABIAN("oldsoutharabian", "CR_Old_South_Arabian"),
+    SARB("sarb", "CR_Old_South_Arabian"),
+    OLDNORTHARABIAN("oldnortharabian", "CR_Old_North_Arabian"),
+    NARB("narb", "CR_Old_North_Arabian"),
+    INMANICHAEAN("inmanichaean", "CR_In_Manichaean"),
+    INAVESTAN("inavestan", "CR_In_Avestan"),
+    ININSCRIPTIONALPARTHIAN("ininscriptionalparthian", "CR_In_Inscriptional_Parthian"),
+    ININSCRIPTIONALPAHLAVI("ininscriptionalpahlavi", "CR_In_Inscriptional_Pahlavi"),
+    INPSALTERPAHLAVI("inpsalterpahlavi", "CR_In_Psalter_Pahlavi"),
+    INOLDTURKIC("inoldturkic", "CR_In_Old_Turkic"),
+    INOLDHUNGARIAN("inoldhungarian", "CR_In_Old_Hungarian"),
+    INHANIFIROHINGYA("inhanifirohingya", "CR_In_Hanifi_Rohingya"),
+    INRUMINUMERALSYMBOLS("inruminumeralsymbols", "CR_In_Rumi_Numeral_Symbols"),
+    INOLDSOGDIAN("inoldsogdian", "CR_In_Old_Sogdian"),
+    INSOGDIAN("insogdian", "CR_In_Sogdian"),
+    INELYMAIC("inelymaic", "CR_In_Elymaic"),
+    INBRAHMI("inbrahmi", "CR_In_Brahmi"),
+    INKAITHI("inkaithi", "CR_In_Kaithi"),
+    INSORASOMPENG("insorasompeng", "CR_In_Sora_Sompeng"),
+    INCHAKMA("inchakma", "CR_In_Chakma"),
+    INMAHAJANI("inmahajani", "CR_In_Mahajani"),
+    INSHARADA("insharada", "CR_In_Sharada"),
+    INSINHALAARCHAICNUMBERS("insinhalaarchaicnumbers", "CR_In_Sinhala_Archaic_Numbers"),
+    INKHOJKI("inkhojki", "CR_In_Khojki"),
+    INMULTANI("inmultani", "CR_In_Multani"),
+    INKHUDAWADI("inkhudawadi", "CR_In_Khudawadi"),
+    INGRANTHA("ingrantha", "CR_In_Grantha"),
+    INNEWA("innewa", "CR_In_Newa"),
+    INTIRHUTA("intirhuta", "CR_In_Tirhuta"),
+    INSIDDHAM("insiddham", "CR_In_Siddham"),
+    INMODI("inmodi", "CR_In_Modi"),
+    INMONGOLIANSUPPLEMENT("inmongoliansupplement", "CR_In_Mongolian_Supplement"),
+    INTAKRI("intakri", "CR_In_Takri"),
+    INAHOM("inahom", "CR_In_Ahom"),
+    INDOGRA("indogra", "CR_In_Dogra"),
+    INWARANGCITI("inwarangciti", "CR_In_Warang_Citi"),
+    INNANDINAGARI("innandinagari", "CR_In_Nandinagari"),
+    INZANABAZARSQUARE("inzanabazarsquare", "CR_In_Zanabazar_Square"),
+    INSOYOMBO("insoyombo", "CR_In_Soyombo"),
+    INPAUCINHAU("inpaucinhau", "CR_In_Pau_Cin_Hau"),
+    INBHAIKSUKI("inbhaiksuki", "CR_In_Bhaiksuki"),
+    INMARCHEN("inmarchen", "CR_In_Marchen"),
+    INMASARAMGONDI("inmasaramgondi", "CR_In_Masaram_Gondi"),
+    INGUNJALAGONDI("ingunjalagondi", "CR_In_Gunjala_Gondi"),
+    INMAKASAR("inmakasar", "CR_In_Makasar"),
+    INTAMILSUPPLEMENT("intamilsupplement", "CR_In_Tamil_Supplement"),
+    INCUNEIFORM("incuneiform", "CR_In_Cuneiform"),
+    INCUNEIFORMNUMBERSANDPUNCTUATION("incuneiformnumbersandpunctuation", "CR_In_Cuneiform_Numbers_and_Punctuation"),
+    INEARLYDYNASTICCUNEIFORM("inearlydynasticcuneiform", "CR_In_Early_Dynastic_Cuneiform"),
+    INEGYPTIANHIEROGLYPHS("inegyptianhieroglyphs", "CR_In_Egyptian_Hieroglyphs"),
+    INEGYPTIANHIEROGLYPHFORMATCONTROLS("inegyptianhieroglyphformatcontrols", "CR_In_Egyptian_Hieroglyph_Format_Controls"),
+    INANATOLIANHIEROGLYPHS("inanatolianhieroglyphs", "CR_In_Anatolian_Hieroglyphs"),
+    INBAMUMSUPPLEMENT("inbamumsupplement", "CR_In_Bamum_Supplement"),
+    INMRO("inmro", "CR_In_Mro"),
+    INBASSAVAH("inbassavah", "CR_In_Bassa_Vah"),
+    INPAHAWHHMONG("inpahawhhmong", "CR_In_Pahawh_Hmong"),
+    INMEDEFAIDRIN("inmedefaidrin", "CR_In_Medefaidrin"),
+    INMIAO("inmiao", "CR_In_Miao"),
+    INIDEOGRAPHICSYMBOLSANDPUNCTUATION("inideographicsymbolsandpunctuation", "CR_In_Ideographic_Symbols_and_Punctuation"),
+    INTANGUT("intangut", "CR_In_Tangut"),
+    INTANGUTCOMPONENTS("intangutcomponents", "CR_In_Tangut_Components"),
+    INKANASUPPLEMENT("inkanasupplement", "CR_In_Kana_Supplement"),
+    INKANAEXTENDEDA("inkanaextendeda", "CR_In_Kana_Extended_A"),
+    INSMALLKANAEXTENSION("insmallkanaextension", "CR_In_Small_Kana_Extension"),
+    INNUSHU("innushu", "CR_In_Nushu"),
+    INDUPLOYAN("induployan", "CR_In_Duployan"),
+    INSHORTHANDFORMATCONTROLS("inshorthandformatcontrols", "CR_In_Shorthand_Format_Controls"),
+    INBYZANTINEMUSICALSYMBOLS("inbyzantinemusicalsymbols", "CR_In_Byzantine_Musical_Symbols"),
+    INMUSICALSYMBOLS("inmusicalsymbols", "CR_In_Musical_Symbols"),
+    INANCIENTGREEKMUSICALNOTATION("inancientgreekmusicalnotation", "CR_In_Ancient_Greek_Musical_Notation"),
+    INMAYANNUMERALS("inmayannumerals", "CR_In_Mayan_Numerals"),
+    INTAIXUANJINGSYMBOLS("intaixuanjingsymbols", "CR_In_Tai_Xuan_Jing_Symbols"),
+    INCOUNTINGRODNUMERALS("incountingrodnumerals", "CR_In_Counting_Rod_Numerals"),
+    INMATHEMATICALALPHANUMERICSYMBOLS("inmathematicalalphanumericsymbols", "CR_In_Mathematical_Alphanumeric_Symbols"),
+    INSUTTONSIGNWRITING("insuttonsignwriting", "CR_In_Sutton_SignWriting"),
+    INGLAGOLITICSUPPLEMENT("inglagoliticsupplement", "CR_In_Glagolitic_Supplement"),
+    INNYIAKENGPUACHUEHMONG("innyiakengpuachuehmong", "CR_In_Nyiakeng_Puachue_Hmong"),
+    INWANCHO("inwancho", "CR_In_Wancho"),
+    INMENDEKIKAKUI("inmendekikakui", "CR_In_Mende_Kikakui"),
+    INADLAM("inadlam", "CR_In_Adlam"),
+    ININDICSIYAQNUMBERS("inindicsiyaqnumbers", "CR_In_Indic_Siyaq_Numbers"),
+    INOTTOMANSIYAQNUMBERS("inottomansiyaqnumbers", "CR_In_Ottoman_Siyaq_Numbers"),
+    INARABICMATHEMATICALALPHABETICSYMBOLS("inarabicmathematicalalphabeticsymbols", "CR_In_Arabic_Mathematical_Alphabetic_Symbols"),
+    INMAHJONGTILES("inmahjongtiles", "CR_In_Mahjong_Tiles"),
+    INDOMINOTILES("indominotiles", "CR_In_Domino_Tiles"),
+    INPLAYINGCARDS("inplayingcards", "CR_In_Playing_Cards"),
+    INENCLOSEDALPHANUMERICSUPPLEMENT("inenclosedalphanumericsupplement", "CR_In_Enclosed_Alphanumeric_Supplement"),
+    INENCLOSEDIDEOGRAPHICSUPPLEMENT("inenclosedideographicsupplement", "CR_In_Enclosed_Ideographic_Supplement"),
+    INMISCELLANEOUSSYMBOLSANDPICTOGRAPHS("inmiscellaneoussymbolsandpictographs", "CR_In_Miscellaneous_Symbols_and_Pictographs"),
+    INEMOTICONS("inemoticons", "CR_In_Emoticons"),
+    INORNAMENTALDINGBATS("inornamentaldingbats", "CR_In_Ornamental_Dingbats"),
+    INTRANSPORTANDMAPSYMBOLS("intransportandmapsymbols", "CR_In_Transport_and_Map_Symbols"),
+    INALCHEMICALSYMBOLS("inalchemicalsymbols", "CR_In_Alchemical_Symbols"),
+    INGEOMETRICSHAPESEXTENDED("ingeometricshapesextended", "CR_In_Geometric_Shapes_Extended"),
+    INSUPPLEMENTALARROWSC("insupplementalarrowsc", "CR_In_Supplemental_Arrows_C"),
+    INSUPPLEMENTALSYMBOLSANDPICTOGRAPHS("insupplementalsymbolsandpictographs", "CR_In_Supplemental_Symbols_and_Pictographs"),
+    INCHESSSYMBOLS("inchesssymbols", "CR_In_Chess_Symbols"),
+    INSYMBOLSANDPICTOGRAPHSEXTENDEDA("insymbolsandpictographsextendeda", "CR_In_Symbols_and_Pictographs_Extended_A"),
+    INCJKUNIFIEDIDEOGRAPHSEXTENSIONB("incjkunifiedideographsextensionb", "CR_In_CJK_Unified_Ideographs_Extension_B"),
+    INCJKUNIFIEDIDEOGRAPHSEXTENSIONC("incjkunifiedideographsextensionc", "CR_In_CJK_Unified_Ideographs_Extension_C"),
+    INCJKUNIFIEDIDEOGRAPHSEXTENSIOND("incjkunifiedideographsextensiond", "CR_In_CJK_Unified_Ideographs_Extension_D"),
+    INCJKUNIFIEDIDEOGRAPHSEXTENSIONE("incjkunifiedideographsextensione", "CR_In_CJK_Unified_Ideographs_Extension_E"),
+    INCJKUNIFIEDIDEOGRAPHSEXTENSIONF("incjkunifiedideographsextensionf", "CR_In_CJK_Unified_Ideographs_Extension_F"),
+    INCJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT("incjkcompatibilityideographssupplement", "CR_In_CJK_Compatibility_Ideographs_Supplement"),
+    INTAGS("intags", "CR_In_Tags"),
+    INVARIATIONSELECTORSSUPPLEMENT("invariationselectorssupplement", "CR_In_Variation_Selectors_Supplement"),
+    INSUPPLEMENTARYPRIVATEUSEAREAA("insupplementaryprivateuseareaa", "CR_In_Supplementary_Private_Use_Area_A"),
+    INSUPPLEMENTARYPRIVATEUSEAREAB("insupplementaryprivateuseareab", "CR_In_Supplementary_Private_Use_Area_B"),
+    INNOBLOCK("innoblock", "CR_In_No_Block");
+
+    private final String table;
+    final byte[]name;
+    private int[]range;
+
+    private UnicodeCodeRange(String name, String table) {
+        this.table = table;
+        this.name = name.getBytes();
+    }
+
+    int[]getRange() {
+        if (range == null) range = ArrayReader.readIntArray(table);
+        return range;
+    }
+
+    public boolean contains(int code) {
+        return CodeRange.isInCodeRange(range, code);
+    }
+
+    public int getCType() {
+        return ordinal();
+    }
+
+    static final UnicodeCodeRange[]CodeRangeTable = UnicodeCodeRange.values();
+    static final int MAX_WORD_LENGTH = 44;
+}


=====================================
src/org/jcodings/unicode/UnicodeEncoding.java
=====================================
@@ -38,7 +38,7 @@ import org.jcodings.util.IntArrayHash;
 import org.jcodings.util.IntHash;
 
 public abstract class UnicodeEncoding extends MultiByteEncoding {
-    private static final int PROPERTY_NAME_MAX_SIZE = UnicodeProperties.MAX_WORD_LENGTH + 1;
+    private static final int PROPERTY_NAME_MAX_SIZE = UnicodeCodeRange.MAX_WORD_LENGTH + 1;
     static final int I_WITH_DOT_ABOVE = 0x0130;
     static final int DOTLESS_i = 0x0131;
     static final int DOT_ABOVE = 0x0307;
@@ -68,17 +68,21 @@ public abstract class UnicodeEncoding extends MultiByteEncoding {
             if (code < 256) return isCodeCTypeInternal(code, ctype);
         }
 
-        if (ctype > UnicodeProperties.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG);
+        if (ctype > UnicodeCodeRange.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG);
 
-        return CodeRange.isInCodeRange(UnicodeProperties.CodeRangeTable[ctype].getRange(), code);
+        return CodeRange.isInCodeRange(UnicodeCodeRange.CodeRangeTable[ctype].getRange(), code);
 
     }
 
+    public static boolean isInCodeRange(UnicodeCodeRange range, int code) {
+        return CodeRange.isInCodeRange(range.getRange(), code);
+    }
+
     // onigenc_unicode_ctype_code_range
     protected final int[]ctypeCodeRange(int ctype) {
-        if (ctype >= UnicodeProperties.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG);
+        if (ctype >= UnicodeCodeRange.CodeRangeTable.length) throw new InternalError(ErrorMessages.ERR_TYPE_BUG);
 
-        return UnicodeProperties.CodeRangeTable[ctype].getRange();
+        return UnicodeCodeRange.CodeRangeTable[ctype].getRange();
     }
 
     // onigenc_unicode_property_name_to_ctype
@@ -461,9 +465,12 @@ public abstract class UnicodeEncoding extends MultiByteEncoding {
                         flags |= Config.CASE_MODIFIED;
                         code = 'I';
                     }
-                } else if ((folded = CaseFold.Values.get(code)) != null) {
-                    if ((flags & Config.CASE_TITLECASE) != 0 && (folded.flags & Config.CASE_IS_TITLECASE) != 0) {
-
+                } else if ((folded = CaseFold.Values.get(code)) != null) { /* data about character found in CaseFold_Table */
+                    if ((flags & Config.CASE_TITLECASE) != 0 && code >= 0x1C90 && code <= 0x1CBF) { /* Georgian MTAVRULI */
+                        flags |= Config.CASE_MODIFIED;
+                        code += 0x10D0 - 0x1C90;
+                    } else if ((flags & Config.CASE_TITLECASE) != 0 && (folded.flags & Config.CASE_IS_TITLECASE) != 0) { /* Titlecase needed, but already Titlecase */
+                        /* already Titlecase, no changes needed */
                     } else if ((flags & folded.flags) != 0) {
                         final int[]codes;
                         final int start;
@@ -504,9 +511,13 @@ public abstract class UnicodeEncoding extends MultiByteEncoding {
                             code = codes[i];
                         }
                     }
-                } else if ((folded = CaseUnfold11.Values.get(code)) != null && (flags & folded.flags) != 0) {
-                    flags |= Config.CASE_MODIFIED;
-                    code = folded.codes[(flags & folded.flags & Config.CASE_TITLECASE) != 0 ? 1 : 0];
+                } else if ((folded = CaseUnfold11.Values.get(code)) != null) { /* data about character found in CaseUnfold_11_Table */
+                    if ((flags & Config.CASE_TITLECASE) != 0 && (folded.flags & Config.CASE_IS_TITLECASE) != 0) { /* Titlecase needed, but already Titlecase */
+                        /* already Titlecase, no changes needed */
+                    } else if ((flags & folded.flags) != 0) { /* needs and data availability match */
+                        flags |= Config.CASE_MODIFIED;
+                        code = folded.codes[(flags & folded.flags & Config.CASE_TITLECASE) != 0 ? 1 : 0];
+                    }
                 }
             }
             toP += codeToMbc(code, to, toP);
@@ -553,29 +564,13 @@ public abstract class UnicodeEncoding extends MultiByteEncoding {
           0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2
     };
 
-    static final class CodeRangeEntry {
-        final String table;
-        final byte[]name;
-        int[]range;
-
-        CodeRangeEntry(String name, String table) {
-            this.table = table;
-            this.name = name.getBytes();
-        }
-
-        public int[]getRange() {
-            if (range == null) range = ArrayReader.readIntArray(table);
-            return range;
-        }
-    }
-
     static class CTypeName {
         private static final CaseInsensitiveBytesHash<Integer> Values = initializeCTypeNameTable();
 
         private static CaseInsensitiveBytesHash<Integer> initializeCTypeNameTable() {
             CaseInsensitiveBytesHash<Integer> table = new CaseInsensitiveBytesHash<Integer>();
-            for (int i = 0; i < UnicodeProperties.CodeRangeTable.length; i++) {
-                table.putDirect(UnicodeProperties.CodeRangeTable[i].name, i);
+            for (int i = 0; i < UnicodeCodeRange.CodeRangeTable.length; i++) {
+                table.putDirect(UnicodeCodeRange.CodeRangeTable[i].name, i);
             }
             return table;
         }


=====================================
src/org/jcodings/unicode/UnicodeProperties.java deleted
=====================================
@@ -1,866 +0,0 @@
-/*
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is furnished to do
- * so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package org.jcodings.unicode;
-
-import org.jcodings.unicode.UnicodeEncoding.CodeRangeEntry;
-
-public class UnicodeProperties {
-    static final CodeRangeEntry[]CodeRangeTable = new CodeRangeEntry[] {
-        new CodeRangeEntry("newline", "CR_NEWLINE"),
-        new CodeRangeEntry("alpha", "CR_Alpha"),
-        new CodeRangeEntry("blank", "CR_Blank"),
-        new CodeRangeEntry("cntrl", "CR_Cntrl"),
-        new CodeRangeEntry("digit", "CR_Digit"),
-        new CodeRangeEntry("graph", "CR_Graph"),
-        new CodeRangeEntry("lower", "CR_Lower"),
-        new CodeRangeEntry("print", "CR_Print"),
-        new CodeRangeEntry("xposixpunct", "CR_XPosixPunct"),
-        new CodeRangeEntry("space", "CR_Space"),
-        new CodeRangeEntry("upper", "CR_Upper"),
-        new CodeRangeEntry("xdigit", "CR_XDigit"),
-        new CodeRangeEntry("word", "CR_Word"),
-        new CodeRangeEntry("alnum", "CR_Alnum"),
-        new CodeRangeEntry("ascii", "CR_ASCII"),
-        new CodeRangeEntry("punct", "CR_Punct"),
-        new CodeRangeEntry("any", "CR_Any"),
-        new CodeRangeEntry("assigned", "CR_Assigned"),
-        new CodeRangeEntry("c", "CR_C"),
-        new CodeRangeEntry("other", "CR_C"),
-        new CodeRangeEntry("cc", "CR_Cntrl"),
-        new CodeRangeEntry("control", "CR_Cntrl"),
-        new CodeRangeEntry("cf", "CR_Cf"),
-        new CodeRangeEntry("format", "CR_Cf"),
-        new CodeRangeEntry("cn", "CR_Cn"),
-        new CodeRangeEntry("unassigned", "CR_Cn"),
-        new CodeRangeEntry("co", "CR_Co"),
-        new CodeRangeEntry("privateuse", "CR_Co"),
-        new CodeRangeEntry("cs", "CR_Cs"),
-        new CodeRangeEntry("surrogate", "CR_Cs"),
-        new CodeRangeEntry("l", "CR_L"),
-        new CodeRangeEntry("letter", "CR_L"),
-        new CodeRangeEntry("lc", "CR_LC"),
-        new CodeRangeEntry("casedletter", "CR_LC"),
-        new CodeRangeEntry("ll", "CR_Ll"),
-        new CodeRangeEntry("lowercaseletter", "CR_Ll"),
-        new CodeRangeEntry("lm", "CR_Lm"),
-        new CodeRangeEntry("modifierletter", "CR_Lm"),
-        new CodeRangeEntry("lo", "CR_Lo"),
-        new CodeRangeEntry("otherletter", "CR_Lo"),
-        new CodeRangeEntry("lt", "CR_Lt"),
-        new CodeRangeEntry("titlecaseletter", "CR_Lt"),
-        new CodeRangeEntry("lu", "CR_Lu"),
-        new CodeRangeEntry("uppercaseletter", "CR_Lu"),
-        new CodeRangeEntry("m", "CR_M"),
-        new CodeRangeEntry("mark", "CR_M"),
-        new CodeRangeEntry("combiningmark", "CR_M"),
-        new CodeRangeEntry("mc", "CR_Mc"),
-        new CodeRangeEntry("spacingmark", "CR_Mc"),
-        new CodeRangeEntry("me", "CR_Me"),
-        new CodeRangeEntry("enclosingmark", "CR_Me"),
-        new CodeRangeEntry("mn", "CR_Mn"),
-        new CodeRangeEntry("nonspacingmark", "CR_Mn"),
-        new CodeRangeEntry("n", "CR_N"),
-        new CodeRangeEntry("number", "CR_N"),
-        new CodeRangeEntry("nd", "CR_Digit"),
-        new CodeRangeEntry("decimalnumber", "CR_Digit"),
-        new CodeRangeEntry("nl", "CR_Nl"),
-        new CodeRangeEntry("letternumber", "CR_Nl"),
-        new CodeRangeEntry("no", "CR_No"),
-        new CodeRangeEntry("othernumber", "CR_No"),
-        new CodeRangeEntry("p", "CR_Punct"),
-        new CodeRangeEntry("punctuation", "CR_Punct"),
-        new CodeRangeEntry("pc", "CR_Pc"),
-        new CodeRangeEntry("connectorpunctuation", "CR_Pc"),
-        new CodeRangeEntry("pd", "CR_Pd"),
-        new CodeRangeEntry("dashpunctuation", "CR_Pd"),
-        new CodeRangeEntry("pe", "CR_Pe"),
-        new CodeRangeEntry("closepunctuation", "CR_Pe"),
-        new CodeRangeEntry("pf", "CR_Pf"),
-        new CodeRangeEntry("finalpunctuation", "CR_Pf"),
-        new CodeRangeEntry("pi", "CR_Pi"),
-        new CodeRangeEntry("initialpunctuation", "CR_Pi"),
-        new CodeRangeEntry("po", "CR_Po"),
-        new CodeRangeEntry("otherpunctuation", "CR_Po"),
-        new CodeRangeEntry("ps", "CR_Ps"),
-        new CodeRangeEntry("openpunctuation", "CR_Ps"),
-        new CodeRangeEntry("s", "CR_S"),
-        new CodeRangeEntry("symbol", "CR_S"),
-        new CodeRangeEntry("sc", "CR_Sc"),
-        new CodeRangeEntry("currencysymbol", "CR_Sc"),
-        new CodeRangeEntry("sk", "CR_Sk"),
-        new CodeRangeEntry("modifiersymbol", "CR_Sk"),
-        new CodeRangeEntry("sm", "CR_Sm"),
-        new CodeRangeEntry("mathsymbol", "CR_Sm"),
-        new CodeRangeEntry("so", "CR_So"),
-        new CodeRangeEntry("othersymbol", "CR_So"),
-        new CodeRangeEntry("z", "CR_Z"),
-        new CodeRangeEntry("separator", "CR_Z"),
-        new CodeRangeEntry("zl", "CR_Zl"),
-        new CodeRangeEntry("lineseparator", "CR_Zl"),
-        new CodeRangeEntry("zp", "CR_Zp"),
-        new CodeRangeEntry("paragraphseparator", "CR_Zp"),
-        new CodeRangeEntry("zs", "CR_Zs"),
-        new CodeRangeEntry("spaceseparator", "CR_Zs"),
-        new CodeRangeEntry("math", "CR_Math"),
-        new CodeRangeEntry("alphabetic", "CR_Alpha"),
-        new CodeRangeEntry("lowercase", "CR_Lower"),
-        new CodeRangeEntry("uppercase", "CR_Upper"),
-        new CodeRangeEntry("cased", "CR_Cased"),
-        new CodeRangeEntry("caseignorable", "CR_Case_Ignorable"),
-        new CodeRangeEntry("ci", "CR_Case_Ignorable"),
-        new CodeRangeEntry("changeswhenlowercased", "CR_Changes_When_Lowercased"),
-        new CodeRangeEntry("cwl", "CR_Changes_When_Lowercased"),
-        new CodeRangeEntry("changeswhenuppercased", "CR_Changes_When_Uppercased"),
-        new CodeRangeEntry("cwu", "CR_Changes_When_Uppercased"),
-        new CodeRangeEntry("changeswhentitlecased", "CR_Changes_When_Titlecased"),
-        new CodeRangeEntry("cwt", "CR_Changes_When_Titlecased"),
-        new CodeRangeEntry("changeswhencasefolded", "CR_Changes_When_Casefolded"),
-        new CodeRangeEntry("cwcf", "CR_Changes_When_Casefolded"),
-        new CodeRangeEntry("changeswhencasemapped", "CR_Changes_When_Casemapped"),
-        new CodeRangeEntry("cwcm", "CR_Changes_When_Casemapped"),
-        new CodeRangeEntry("idstart", "CR_ID_Start"),
-        new CodeRangeEntry("ids", "CR_ID_Start"),
-        new CodeRangeEntry("idcontinue", "CR_ID_Continue"),
-        new CodeRangeEntry("idc", "CR_ID_Continue"),
-        new CodeRangeEntry("xidstart", "CR_XID_Start"),
-        new CodeRangeEntry("xids", "CR_XID_Start"),
-        new CodeRangeEntry("xidcontinue", "CR_XID_Continue"),
-        new CodeRangeEntry("xidc", "CR_XID_Continue"),
-        new CodeRangeEntry("defaultignorablecodepoint", "CR_Default_Ignorable_Code_Point"),
-        new CodeRangeEntry("di", "CR_Default_Ignorable_Code_Point"),
-        new CodeRangeEntry("graphemeextend", "CR_Grapheme_Extend"),
-        new CodeRangeEntry("grext", "CR_Grapheme_Extend"),
-        new CodeRangeEntry("graphemebase", "CR_Grapheme_Base"),
-        new CodeRangeEntry("grbase", "CR_Grapheme_Base"),
-        new CodeRangeEntry("graphemelink", "CR_Grapheme_Link"),
-        new CodeRangeEntry("grlink", "CR_Grapheme_Link"),
-        new CodeRangeEntry("common", "CR_Common"),
-        new CodeRangeEntry("zyyy", "CR_Common"),
-        new CodeRangeEntry("latin", "CR_Latin"),
-        new CodeRangeEntry("latn", "CR_Latin"),
-        new CodeRangeEntry("greek", "CR_Greek"),
-        new CodeRangeEntry("grek", "CR_Greek"),
-        new CodeRangeEntry("cyrillic", "CR_Cyrillic"),
-        new CodeRangeEntry("cyrl", "CR_Cyrillic"),
-        new CodeRangeEntry("armenian", "CR_Armenian"),
-        new CodeRangeEntry("armn", "CR_Armenian"),
-        new CodeRangeEntry("hebrew", "CR_Hebrew"),
-        new CodeRangeEntry("hebr", "CR_Hebrew"),
-        new CodeRangeEntry("arabic", "CR_Arabic"),
-        new CodeRangeEntry("arab", "CR_Arabic"),
-        new CodeRangeEntry("syriac", "CR_Syriac"),
-        new CodeRangeEntry("syrc", "CR_Syriac"),
-        new CodeRangeEntry("thaana", "CR_Thaana"),
-        new CodeRangeEntry("thaa", "CR_Thaana"),
-        new CodeRangeEntry("devanagari", "CR_Devanagari"),
-        new CodeRangeEntry("deva", "CR_Devanagari"),
-        new CodeRangeEntry("bengali", "CR_Bengali"),
-        new CodeRangeEntry("beng", "CR_Bengali"),
-        new CodeRangeEntry("gurmukhi", "CR_Gurmukhi"),
-        new CodeRangeEntry("guru", "CR_Gurmukhi"),
-        new CodeRangeEntry("gujarati", "CR_Gujarati"),
-        new CodeRangeEntry("gujr", "CR_Gujarati"),
-        new CodeRangeEntry("oriya", "CR_Oriya"),
-        new CodeRangeEntry("orya", "CR_Oriya"),
-        new CodeRangeEntry("tamil", "CR_Tamil"),
-        new CodeRangeEntry("taml", "CR_Tamil"),
-        new CodeRangeEntry("telugu", "CR_Telugu"),
-        new CodeRangeEntry("telu", "CR_Telugu"),
-        new CodeRangeEntry("kannada", "CR_Kannada"),
-        new CodeRangeEntry("knda", "CR_Kannada"),
-        new CodeRangeEntry("malayalam", "CR_Malayalam"),
-        new CodeRangeEntry("mlym", "CR_Malayalam"),
-        new CodeRangeEntry("sinhala", "CR_Sinhala"),
-        new CodeRangeEntry("sinh", "CR_Sinhala"),
-        new CodeRangeEntry("thai", "CR_Thai"),
-        new CodeRangeEntry("lao", "CR_Lao"),
-        new CodeRangeEntry("laoo", "CR_Lao"),
-        new CodeRangeEntry("tibetan", "CR_Tibetan"),
-        new CodeRangeEntry("tibt", "CR_Tibetan"),
-        new CodeRangeEntry("myanmar", "CR_Myanmar"),
-        new CodeRangeEntry("mymr", "CR_Myanmar"),
-        new CodeRangeEntry("georgian", "CR_Georgian"),
-        new CodeRangeEntry("geor", "CR_Georgian"),
-        new CodeRangeEntry("hangul", "CR_Hangul"),
-        new CodeRangeEntry("hang", "CR_Hangul"),
-        new CodeRangeEntry("ethiopic", "CR_Ethiopic"),
-        new CodeRangeEntry("ethi", "CR_Ethiopic"),
-        new CodeRangeEntry("cherokee", "CR_Cherokee"),
-        new CodeRangeEntry("cher", "CR_Cherokee"),
-        new CodeRangeEntry("canadianaboriginal", "CR_Canadian_Aboriginal"),
-        new CodeRangeEntry("cans", "CR_Canadian_Aboriginal"),
-        new CodeRangeEntry("ogham", "CR_Ogham"),
-        new CodeRangeEntry("ogam", "CR_Ogham"),
-        new CodeRangeEntry("runic", "CR_Runic"),
-        new CodeRangeEntry("runr", "CR_Runic"),
-        new CodeRangeEntry("khmer", "CR_Khmer"),
-        new CodeRangeEntry("khmr", "CR_Khmer"),
-        new CodeRangeEntry("mongolian", "CR_Mongolian"),
-        new CodeRangeEntry("mong", "CR_Mongolian"),
-        new CodeRangeEntry("hiragana", "CR_Hiragana"),
-        new CodeRangeEntry("hira", "CR_Hiragana"),
-        new CodeRangeEntry("katakana", "CR_Katakana"),
-        new CodeRangeEntry("kana", "CR_Katakana"),
-        new CodeRangeEntry("bopomofo", "CR_Bopomofo"),
-        new CodeRangeEntry("bopo", "CR_Bopomofo"),
-        new CodeRangeEntry("han", "CR_Han"),
-        new CodeRangeEntry("hani", "CR_Han"),
-        new CodeRangeEntry("yi", "CR_Yi"),
-        new CodeRangeEntry("yiii", "CR_Yi"),
-        new CodeRangeEntry("olditalic", "CR_Old_Italic"),
-        new CodeRangeEntry("ital", "CR_Old_Italic"),
-        new CodeRangeEntry("gothic", "CR_Gothic"),
-        new CodeRangeEntry("goth", "CR_Gothic"),
-        new CodeRangeEntry("indeseret", "CR_Deseret"),
-        new CodeRangeEntry("inherited", "CR_Inherited"),
-        new CodeRangeEntry("qaai", "CR_Inherited"),
-        new CodeRangeEntry("zinh", "CR_Inherited"),
-        new CodeRangeEntry("tagalog", "CR_Tagalog"),
-        new CodeRangeEntry("tglg", "CR_Tagalog"),
-        new CodeRangeEntry("hanunoo", "CR_Hanunoo"),
-        new CodeRangeEntry("hano", "CR_Hanunoo"),
-        new CodeRangeEntry("buhid", "CR_Buhid"),
-        new CodeRangeEntry("buhd", "CR_Buhid"),
-        new CodeRangeEntry("tagbanwa", "CR_Tagbanwa"),
-        new CodeRangeEntry("tagb", "CR_Tagbanwa"),
-        new CodeRangeEntry("limbu", "CR_Limbu"),
-        new CodeRangeEntry("limb", "CR_Limbu"),
-        new CodeRangeEntry("taile", "CR_Tai_Le"),
-        new CodeRangeEntry("tale", "CR_Tai_Le"),
-        new CodeRangeEntry("linearb", "CR_Linear_B"),
-        new CodeRangeEntry("linb", "CR_Linear_B"),
-        new CodeRangeEntry("ugaritic", "CR_Ugaritic"),
-        new CodeRangeEntry("ugar", "CR_Ugaritic"),
-        new CodeRangeEntry("inshavian", "CR_Shavian"),
-        new CodeRangeEntry("osmanya", "CR_Osmanya"),
-        new CodeRangeEntry("osma", "CR_Osmanya"),
-        new CodeRangeEntry("cypriot", "CR_Cypriot"),
-        new CodeRangeEntry("cprt", "CR_Cypriot"),
-        new CodeRangeEntry("inbraillepatterns", "CR_Braille"),
-        new CodeRangeEntry("buginese", "CR_Buginese"),
-        new CodeRangeEntry("bugi", "CR_Buginese"),
-        new CodeRangeEntry("coptic", "CR_Coptic"),
-        new CodeRangeEntry("qaac", "CR_Coptic"),
-        new CodeRangeEntry("copt", "CR_Coptic"),
-        new CodeRangeEntry("newtailue", "CR_New_Tai_Lue"),
-        new CodeRangeEntry("talu", "CR_New_Tai_Lue"),
-        new CodeRangeEntry("glagolitic", "CR_Glagolitic"),
-        new CodeRangeEntry("glag", "CR_Glagolitic"),
-        new CodeRangeEntry("tifinagh", "CR_Tifinagh"),
-        new CodeRangeEntry("tfng", "CR_Tifinagh"),
-        new CodeRangeEntry("sylotinagri", "CR_Syloti_Nagri"),
-        new CodeRangeEntry("sylo", "CR_Syloti_Nagri"),
-        new CodeRangeEntry("oldpersian", "CR_Old_Persian"),
-        new CodeRangeEntry("xpeo", "CR_Old_Persian"),
-        new CodeRangeEntry("kharoshthi", "CR_Kharoshthi"),
-        new CodeRangeEntry("khar", "CR_Kharoshthi"),
-        new CodeRangeEntry("balinese", "CR_Balinese"),
-        new CodeRangeEntry("bali", "CR_Balinese"),
-        new CodeRangeEntry("cuneiform", "CR_Cuneiform"),
-        new CodeRangeEntry("xsux", "CR_Cuneiform"),
-        new CodeRangeEntry("phoenician", "CR_Phoenician"),
-        new CodeRangeEntry("phnx", "CR_Phoenician"),
-        new CodeRangeEntry("phagspa", "CR_Phags_Pa"),
-        new CodeRangeEntry("phag", "CR_Phags_Pa"),
-        new CodeRangeEntry("nko", "CR_Nko"),
-        new CodeRangeEntry("nkoo", "CR_Nko"),
-        new CodeRangeEntry("sundanese", "CR_Sundanese"),
-        new CodeRangeEntry("sund", "CR_Sundanese"),
-        new CodeRangeEntry("lepcha", "CR_Lepcha"),
-        new CodeRangeEntry("lepc", "CR_Lepcha"),
-        new CodeRangeEntry("inolchiki", "CR_Ol_Chiki"),
-        new CodeRangeEntry("vai", "CR_Vai"),
-        new CodeRangeEntry("vaii", "CR_Vai"),
-        new CodeRangeEntry("saurashtra", "CR_Saurashtra"),
-        new CodeRangeEntry("saur", "CR_Saurashtra"),
-        new CodeRangeEntry("kayahli", "CR_Kayah_Li"),
-        new CodeRangeEntry("kali", "CR_Kayah_Li"),
-        new CodeRangeEntry("rejang", "CR_Rejang"),
-        new CodeRangeEntry("rjng", "CR_Rejang"),
-        new CodeRangeEntry("lycian", "CR_Lycian"),
-        new CodeRangeEntry("lyci", "CR_Lycian"),
-        new CodeRangeEntry("carian", "CR_Carian"),
-        new CodeRangeEntry("cari", "CR_Carian"),
-        new CodeRangeEntry("lydian", "CR_Lydian"),
-        new CodeRangeEntry("lydi", "CR_Lydian"),
-        new CodeRangeEntry("cham", "CR_Cham"),
-        new CodeRangeEntry("taitham", "CR_Tai_Tham"),
-        new CodeRangeEntry("lana", "CR_Tai_Tham"),
-        new CodeRangeEntry("taiviet", "CR_Tai_Viet"),
-        new CodeRangeEntry("tavt", "CR_Tai_Viet"),
-        new CodeRangeEntry("avestan", "CR_Avestan"),
-        new CodeRangeEntry("avst", "CR_Avestan"),
-        new CodeRangeEntry("egyptianhieroglyphs", "CR_Egyptian_Hieroglyphs"),
-        new CodeRangeEntry("egyp", "CR_Egyptian_Hieroglyphs"),
-        new CodeRangeEntry("samaritan", "CR_Samaritan"),
-        new CodeRangeEntry("samr", "CR_Samaritan"),
-        new CodeRangeEntry("inlisu", "CR_Lisu"),
-        new CodeRangeEntry("bamum", "CR_Bamum"),
-        new CodeRangeEntry("bamu", "CR_Bamum"),
-        new CodeRangeEntry("javanese", "CR_Javanese"),
-        new CodeRangeEntry("java", "CR_Javanese"),
-        new CodeRangeEntry("meeteimayek", "CR_Meetei_Mayek"),
-        new CodeRangeEntry("mtei", "CR_Meetei_Mayek"),
-        new CodeRangeEntry("imperialaramaic", "CR_Imperial_Aramaic"),
-        new CodeRangeEntry("armi", "CR_Imperial_Aramaic"),
-        new CodeRangeEntry("inoldsoutharabian", "CR_Old_South_Arabian"),
-        new CodeRangeEntry("inscriptionalparthian", "CR_Inscriptional_Parthian"),
-        new CodeRangeEntry("prti", "CR_Inscriptional_Parthian"),
-        new CodeRangeEntry("inscriptionalpahlavi", "CR_Inscriptional_Pahlavi"),
-        new CodeRangeEntry("phli", "CR_Inscriptional_Pahlavi"),
-        new CodeRangeEntry("oldturkic", "CR_Old_Turkic"),
-        new CodeRangeEntry("orkh", "CR_Old_Turkic"),
-        new CodeRangeEntry("kaithi", "CR_Kaithi"),
-        new CodeRangeEntry("kthi", "CR_Kaithi"),
-        new CodeRangeEntry("batak", "CR_Batak"),
-        new CodeRangeEntry("batk", "CR_Batak"),
-        new CodeRangeEntry("brahmi", "CR_Brahmi"),
-        new CodeRangeEntry("brah", "CR_Brahmi"),
-        new CodeRangeEntry("mandaic", "CR_Mandaic"),
-        new CodeRangeEntry("mand", "CR_Mandaic"),
-        new CodeRangeEntry("chakma", "CR_Chakma"),
-        new CodeRangeEntry("cakm", "CR_Chakma"),
-        new CodeRangeEntry("meroiticcursive", "CR_Meroitic_Cursive"),
-        new CodeRangeEntry("merc", "CR_Meroitic_Cursive"),
-        new CodeRangeEntry("inmeroitichieroglyphs", "CR_Meroitic_Hieroglyphs"),
-        new CodeRangeEntry("miao", "CR_Miao"),
-        new CodeRangeEntry("plrd", "CR_Miao"),
-        new CodeRangeEntry("sharada", "CR_Sharada"),
-        new CodeRangeEntry("shrd", "CR_Sharada"),
-        new CodeRangeEntry("sorasompeng", "CR_Sora_Sompeng"),
-        new CodeRangeEntry("sora", "CR_Sora_Sompeng"),
-        new CodeRangeEntry("takri", "CR_Takri"),
-        new CodeRangeEntry("takr", "CR_Takri"),
-        new CodeRangeEntry("caucasianalbanian", "CR_Caucasian_Albanian"),
-        new CodeRangeEntry("aghb", "CR_Caucasian_Albanian"),
-        new CodeRangeEntry("bassavah", "CR_Bassa_Vah"),
-        new CodeRangeEntry("bass", "CR_Bassa_Vah"),
-        new CodeRangeEntry("duployan", "CR_Duployan"),
-        new CodeRangeEntry("dupl", "CR_Duployan"),
-        new CodeRangeEntry("elbasan", "CR_Elbasan"),
-        new CodeRangeEntry("elba", "CR_Elbasan"),
-        new CodeRangeEntry("grantha", "CR_Grantha"),
-        new CodeRangeEntry("gran", "CR_Grantha"),
-        new CodeRangeEntry("pahawhhmong", "CR_Pahawh_Hmong"),
-        new CodeRangeEntry("hmng", "CR_Pahawh_Hmong"),
-        new CodeRangeEntry("khojki", "CR_Khojki"),
-        new CodeRangeEntry("khoj", "CR_Khojki"),
-        new CodeRangeEntry("lineara", "CR_Linear_A"),
-        new CodeRangeEntry("lina", "CR_Linear_A"),
-        new CodeRangeEntry("mahajani", "CR_Mahajani"),
-        new CodeRangeEntry("mahj", "CR_Mahajani"),
-        new CodeRangeEntry("manichaean", "CR_Manichaean"),
-        new CodeRangeEntry("mani", "CR_Manichaean"),
-        new CodeRangeEntry("mendekikakui", "CR_Mende_Kikakui"),
-        new CodeRangeEntry("mend", "CR_Mende_Kikakui"),
-        new CodeRangeEntry("modi", "CR_Modi"),
-        new CodeRangeEntry("mro", "CR_Mro"),
-        new CodeRangeEntry("mroo", "CR_Mro"),
-        new CodeRangeEntry("inoldnortharabian", "CR_Old_North_Arabian"),
-        new CodeRangeEntry("nabataean", "CR_Nabataean"),
-        new CodeRangeEntry("nbat", "CR_Nabataean"),
-        new CodeRangeEntry("inpalmyrene", "CR_Palmyrene"),
-        new CodeRangeEntry("paucinhau", "CR_Pau_Cin_Hau"),
-        new CodeRangeEntry("pauc", "CR_Pau_Cin_Hau"),
-        new CodeRangeEntry("oldpermic", "CR_Old_Permic"),
-        new CodeRangeEntry("perm", "CR_Old_Permic"),
-        new CodeRangeEntry("psalterpahlavi", "CR_Psalter_Pahlavi"),
-        new CodeRangeEntry("phlp", "CR_Psalter_Pahlavi"),
-        new CodeRangeEntry("siddham", "CR_Siddham"),
-        new CodeRangeEntry("sidd", "CR_Siddham"),
-        new CodeRangeEntry("khudawadi", "CR_Khudawadi"),
-        new CodeRangeEntry("sind", "CR_Khudawadi"),
-        new CodeRangeEntry("tirhuta", "CR_Tirhuta"),
-        new CodeRangeEntry("tirh", "CR_Tirhuta"),
-        new CodeRangeEntry("warangciti", "CR_Warang_Citi"),
-        new CodeRangeEntry("wara", "CR_Warang_Citi"),
-        new CodeRangeEntry("ahom", "CR_Ahom"),
-        new CodeRangeEntry("anatolianhieroglyphs", "CR_Anatolian_Hieroglyphs"),
-        new CodeRangeEntry("hluw", "CR_Anatolian_Hieroglyphs"),
-        new CodeRangeEntry("hatran", "CR_Hatran"),
-        new CodeRangeEntry("hatr", "CR_Hatran"),
-        new CodeRangeEntry("multani", "CR_Multani"),
-        new CodeRangeEntry("mult", "CR_Multani"),
-        new CodeRangeEntry("oldhungarian", "CR_Old_Hungarian"),
-        new CodeRangeEntry("hung", "CR_Old_Hungarian"),
-        new CodeRangeEntry("signwriting", "CR_SignWriting"),
-        new CodeRangeEntry("sgnw", "CR_SignWriting"),
-        new CodeRangeEntry("adlam", "CR_Adlam"),
-        new CodeRangeEntry("adlm", "CR_Adlam"),
-        new CodeRangeEntry("bhaiksuki", "CR_Bhaiksuki"),
-        new CodeRangeEntry("bhks", "CR_Bhaiksuki"),
-        new CodeRangeEntry("marchen", "CR_Marchen"),
-        new CodeRangeEntry("marc", "CR_Marchen"),
-        new CodeRangeEntry("newa", "CR_Newa"),
-        new CodeRangeEntry("osage", "CR_Osage"),
-        new CodeRangeEntry("osge", "CR_Osage"),
-        new CodeRangeEntry("tangut", "CR_Tangut"),
-        new CodeRangeEntry("tang", "CR_Tangut"),
-        new CodeRangeEntry("masaramgondi", "CR_Masaram_Gondi"),
-        new CodeRangeEntry("gonm", "CR_Masaram_Gondi"),
-        new CodeRangeEntry("nushu", "CR_Nushu"),
-        new CodeRangeEntry("nshu", "CR_Nushu"),
-        new CodeRangeEntry("soyombo", "CR_Soyombo"),
-        new CodeRangeEntry("soyo", "CR_Soyombo"),
-        new CodeRangeEntry("zanabazarsquare", "CR_Zanabazar_Square"),
-        new CodeRangeEntry("zanb", "CR_Zanabazar_Square"),
-        new CodeRangeEntry("dogra", "CR_Dogra"),
-        new CodeRangeEntry("dogr", "CR_Dogra"),
-        new CodeRangeEntry("gunjalagondi", "CR_Gunjala_Gondi"),
-        new CodeRangeEntry("gong", "CR_Gunjala_Gondi"),
-        new CodeRangeEntry("makasar", "CR_Makasar"),
-        new CodeRangeEntry("maka", "CR_Makasar"),
-        new CodeRangeEntry("medefaidrin", "CR_Medefaidrin"),
-        new CodeRangeEntry("medf", "CR_Medefaidrin"),
-        new CodeRangeEntry("hanifirohingya", "CR_Hanifi_Rohingya"),
-        new CodeRangeEntry("rohg", "CR_Hanifi_Rohingya"),
-        new CodeRangeEntry("sogdian", "CR_Sogdian"),
-        new CodeRangeEntry("sogd", "CR_Sogdian"),
-        new CodeRangeEntry("oldsogdian", "CR_Old_Sogdian"),
-        new CodeRangeEntry("sogo", "CR_Old_Sogdian"),
-        new CodeRangeEntry("elymaic", "CR_Elymaic"),
-        new CodeRangeEntry("elym", "CR_Elymaic"),
-        new CodeRangeEntry("nandinagari", "CR_Nandinagari"),
-        new CodeRangeEntry("nand", "CR_Nandinagari"),
-        new CodeRangeEntry("nyiakengpuachuehmong", "CR_Nyiakeng_Puachue_Hmong"),
-        new CodeRangeEntry("hmnp", "CR_Nyiakeng_Puachue_Hmong"),
-        new CodeRangeEntry("wancho", "CR_Wancho"),
-        new CodeRangeEntry("wcho", "CR_Wancho"),
-        new CodeRangeEntry("whitespace", "CR_Space"),
-        new CodeRangeEntry("wspace", "CR_Space"),
-        new CodeRangeEntry("bidicontrol", "CR_Bidi_Control"),
-        new CodeRangeEntry("bidic", "CR_Bidi_Control"),
-        new CodeRangeEntry("joincontrol", "CR_Join_Control"),
-        new CodeRangeEntry("joinc", "CR_Join_Control"),
-        new CodeRangeEntry("dash", "CR_Dash"),
-        new CodeRangeEntry("hyphen", "CR_Hyphen"),
-        new CodeRangeEntry("quotationmark", "CR_Quotation_Mark"),
-        new CodeRangeEntry("qmark", "CR_Quotation_Mark"),
-        new CodeRangeEntry("terminalpunctuation", "CR_Terminal_Punctuation"),
-        new CodeRangeEntry("term", "CR_Terminal_Punctuation"),
-        new CodeRangeEntry("othermath", "CR_Other_Math"),
-        new CodeRangeEntry("omath", "CR_Other_Math"),
-        new CodeRangeEntry("hexdigit", "CR_Hex_Digit"),
-        new CodeRangeEntry("hex", "CR_Hex_Digit"),
-        new CodeRangeEntry("asciihexdigit", "CR_XDigit"),
-        new CodeRangeEntry("ahex", "CR_XDigit"),
-        new CodeRangeEntry("otheralphabetic", "CR_Other_Alphabetic"),
-        new CodeRangeEntry("oalpha", "CR_Other_Alphabetic"),
-        new CodeRangeEntry("ideographic", "CR_Ideographic"),
-        new CodeRangeEntry("ideo", "CR_Ideographic"),
-        new CodeRangeEntry("diacritic", "CR_Diacritic"),
-        new CodeRangeEntry("dia", "CR_Diacritic"),
-        new CodeRangeEntry("extender", "CR_Extender"),
-        new CodeRangeEntry("ext", "CR_Extender"),
-        new CodeRangeEntry("otherlowercase", "CR_Other_Lowercase"),
-        new CodeRangeEntry("olower", "CR_Other_Lowercase"),
-        new CodeRangeEntry("otheruppercase", "CR_Other_Uppercase"),
-        new CodeRangeEntry("oupper", "CR_Other_Uppercase"),
-        new CodeRangeEntry("noncharactercodepoint", "CR_Noncharacter_Code_Point"),
-        new CodeRangeEntry("nchar", "CR_Noncharacter_Code_Point"),
-        new CodeRangeEntry("othergraphemeextend", "CR_Other_Grapheme_Extend"),
-        new CodeRangeEntry("ogrext", "CR_Other_Grapheme_Extend"),
-        new CodeRangeEntry("idsbinaryoperator", "CR_IDS_Binary_Operator"),
-        new CodeRangeEntry("idsb", "CR_IDS_Binary_Operator"),
-        new CodeRangeEntry("idstrinaryoperator", "CR_IDS_Trinary_Operator"),
-        new CodeRangeEntry("idst", "CR_IDS_Trinary_Operator"),
-        new CodeRangeEntry("radical", "CR_Radical"),
-        new CodeRangeEntry("unifiedideograph", "CR_Unified_Ideograph"),
-        new CodeRangeEntry("uideo", "CR_Unified_Ideograph"),
-        new CodeRangeEntry("otherdefaultignorablecodepoint", "CR_Other_Default_Ignorable_Code_Point"),
-        new CodeRangeEntry("odi", "CR_Other_Default_Ignorable_Code_Point"),
-        new CodeRangeEntry("deprecated", "CR_Deprecated"),
-        new CodeRangeEntry("dep", "CR_Deprecated"),
-        new CodeRangeEntry("softdotted", "CR_Soft_Dotted"),
-        new CodeRangeEntry("sd", "CR_Soft_Dotted"),
-        new CodeRangeEntry("logicalorderexception", "CR_Logical_Order_Exception"),
-        new CodeRangeEntry("loe", "CR_Logical_Order_Exception"),
-        new CodeRangeEntry("otheridstart", "CR_Other_ID_Start"),
-        new CodeRangeEntry("oids", "CR_Other_ID_Start"),
-        new CodeRangeEntry("otheridcontinue", "CR_Other_ID_Continue"),
-        new CodeRangeEntry("oidc", "CR_Other_ID_Continue"),
-        new CodeRangeEntry("sentenceterminal", "CR_Sentence_Terminal"),
-        new CodeRangeEntry("sterm", "CR_Sentence_Terminal"),
-        new CodeRangeEntry("variationselector", "CR_Variation_Selector"),
-        new CodeRangeEntry("vs", "CR_Variation_Selector"),
-        new CodeRangeEntry("patternwhitespace", "CR_Pattern_White_Space"),
-        new CodeRangeEntry("patws", "CR_Pattern_White_Space"),
-        new CodeRangeEntry("patternsyntax", "CR_Pattern_Syntax"),
-        new CodeRangeEntry("patsyn", "CR_Pattern_Syntax"),
-        new CodeRangeEntry("prependedconcatenationmark", "CR_Prepended_Concatenation_Mark"),
-        new CodeRangeEntry("pcm", "CR_Prepended_Concatenation_Mark"),
-        new CodeRangeEntry("graphemeclusterbreak=regionalindicator", "CR_Regional_Indicator"),
-        new CodeRangeEntry("emoji", "CR_Emoji"),
-        new CodeRangeEntry("emojipresentation", "CR_Emoji_Presentation"),
-        new CodeRangeEntry("emojimodifier", "CR_Emoji_Modifier"),
-        new CodeRangeEntry("emojimodifierbase", "CR_Emoji_Modifier_Base"),
-        new CodeRangeEntry("emojicomponent", "CR_Emoji_Component"),
-        new CodeRangeEntry("extendedpictographic", "CR_Extended_Pictographic"),
-        new CodeRangeEntry("unknown", "CR_Unknown"),
-        new CodeRangeEntry("zzzz", "CR_Unknown"),
-        new CodeRangeEntry("age=1.1", "CR_Age_1_1"),
-        new CodeRangeEntry("age=2.0", "CR_Age_2_0"),
-        new CodeRangeEntry("age=2.1", "CR_Age_2_1"),
-        new CodeRangeEntry("age=3.0", "CR_Age_3_0"),
-        new CodeRangeEntry("age=3.1", "CR_Age_3_1"),
-        new CodeRangeEntry("age=3.2", "CR_Age_3_2"),
-        new CodeRangeEntry("age=4.0", "CR_Age_4_0"),
-        new CodeRangeEntry("age=4.1", "CR_Age_4_1"),
-        new CodeRangeEntry("age=5.0", "CR_Age_5_0"),
-        new CodeRangeEntry("age=5.1", "CR_Age_5_1"),
-        new CodeRangeEntry("age=5.2", "CR_Age_5_2"),
-        new CodeRangeEntry("age=6.0", "CR_Age_6_0"),
-        new CodeRangeEntry("age=6.1", "CR_Age_6_1"),
-        new CodeRangeEntry("age=6.2", "CR_Age_6_2"),
-        new CodeRangeEntry("age=6.3", "CR_Age_6_3"),
-        new CodeRangeEntry("age=7.0", "CR_Age_7_0"),
-        new CodeRangeEntry("age=8.0", "CR_Age_8_0"),
-        new CodeRangeEntry("age=9.0", "CR_Age_9_0"),
-        new CodeRangeEntry("age=10.0", "CR_Age_10_0"),
-        new CodeRangeEntry("age=11.0", "CR_Age_11_0"),
-        new CodeRangeEntry("age=12.0", "CR_Age_12_0"),
-        new CodeRangeEntry("age=12.1", "CR_Age_12_1"),
-        new CodeRangeEntry("graphemeclusterbreak=prepend", "CR_Grapheme_Cluster_Break_Prepend"),
-        new CodeRangeEntry("graphemeclusterbreak=cr", "CR_Grapheme_Cluster_Break_CR"),
-        new CodeRangeEntry("graphemeclusterbreak=lf", "CR_NEWLINE"),
-        new CodeRangeEntry("graphemeclusterbreak=control", "CR_Grapheme_Cluster_Break_Control"),
-        new CodeRangeEntry("graphemeclusterbreak=extend", "CR_Grapheme_Cluster_Break_Extend"),
-        new CodeRangeEntry("regionalindicator", "CR_Regional_Indicator"),
-        new CodeRangeEntry("ri", "CR_Regional_Indicator"),
-        new CodeRangeEntry("graphemeclusterbreak=spacingmark", "CR_Grapheme_Cluster_Break_SpacingMark"),
-        new CodeRangeEntry("graphemeclusterbreak=l", "CR_Grapheme_Cluster_Break_L"),
-        new CodeRangeEntry("graphemeclusterbreak=v", "CR_Grapheme_Cluster_Break_V"),
-        new CodeRangeEntry("graphemeclusterbreak=t", "CR_Grapheme_Cluster_Break_T"),
-        new CodeRangeEntry("graphemeclusterbreak=lv", "CR_Grapheme_Cluster_Break_LV"),
-        new CodeRangeEntry("graphemeclusterbreak=lvt", "CR_Grapheme_Cluster_Break_LVT"),
-        new CodeRangeEntry("graphemeclusterbreak=zwj", "CR_Grapheme_Cluster_Break_ZWJ"),
-        new CodeRangeEntry("inbasiclatin", "CR_ASCII"),
-        new CodeRangeEntry("inlatin1supplement", "CR_In_Latin_1_Supplement"),
-        new CodeRangeEntry("inlatinextendeda", "CR_In_Latin_Extended_A"),
-        new CodeRangeEntry("inlatinextendedb", "CR_In_Latin_Extended_B"),
-        new CodeRangeEntry("inipaextensions", "CR_In_IPA_Extensions"),
-        new CodeRangeEntry("inspacingmodifierletters", "CR_In_Spacing_Modifier_Letters"),
-        new CodeRangeEntry("incombiningdiacriticalmarks", "CR_In_Combining_Diacritical_Marks"),
-        new CodeRangeEntry("ingreekandcoptic", "CR_In_Greek_and_Coptic"),
-        new CodeRangeEntry("incyrillic", "CR_In_Cyrillic"),
-        new CodeRangeEntry("incyrillicsupplement", "CR_In_Cyrillic_Supplement"),
-        new CodeRangeEntry("inarmenian", "CR_In_Armenian"),
-        new CodeRangeEntry("inhebrew", "CR_In_Hebrew"),
-        new CodeRangeEntry("inarabic", "CR_In_Arabic"),
-        new CodeRangeEntry("insyriac", "CR_In_Syriac"),
-        new CodeRangeEntry("inarabicsupplement", "CR_In_Arabic_Supplement"),
-        new CodeRangeEntry("inthaana", "CR_In_Thaana"),
-        new CodeRangeEntry("innko", "CR_In_NKo"),
-        new CodeRangeEntry("insamaritan", "CR_In_Samaritan"),
-        new CodeRangeEntry("inmandaic", "CR_In_Mandaic"),
-        new CodeRangeEntry("insyriacsupplement", "CR_In_Syriac_Supplement"),
-        new CodeRangeEntry("inarabicextendeda", "CR_In_Arabic_Extended_A"),
-        new CodeRangeEntry("indevanagari", "CR_In_Devanagari"),
-        new CodeRangeEntry("inbengali", "CR_In_Bengali"),
-        new CodeRangeEntry("ingurmukhi", "CR_In_Gurmukhi"),
-        new CodeRangeEntry("ingujarati", "CR_In_Gujarati"),
-        new CodeRangeEntry("inoriya", "CR_In_Oriya"),
-        new CodeRangeEntry("intamil", "CR_In_Tamil"),
-        new CodeRangeEntry("intelugu", "CR_In_Telugu"),
-        new CodeRangeEntry("inkannada", "CR_In_Kannada"),
-        new CodeRangeEntry("inmalayalam", "CR_In_Malayalam"),
-        new CodeRangeEntry("insinhala", "CR_In_Sinhala"),
-        new CodeRangeEntry("inthai", "CR_In_Thai"),
-        new CodeRangeEntry("inlao", "CR_In_Lao"),
-        new CodeRangeEntry("intibetan", "CR_In_Tibetan"),
-        new CodeRangeEntry("inmyanmar", "CR_In_Myanmar"),
-        new CodeRangeEntry("ingeorgian", "CR_In_Georgian"),
-        new CodeRangeEntry("inhanguljamo", "CR_In_Hangul_Jamo"),
-        new CodeRangeEntry("inethiopic", "CR_In_Ethiopic"),
-        new CodeRangeEntry("inethiopicsupplement", "CR_In_Ethiopic_Supplement"),
-        new CodeRangeEntry("incherokee", "CR_In_Cherokee"),
-        new CodeRangeEntry("inunifiedcanadianaboriginalsyllabics", "CR_In_Unified_Canadian_Aboriginal_Syllabics"),
-        new CodeRangeEntry("inogham", "CR_In_Ogham"),
-        new CodeRangeEntry("inrunic", "CR_In_Runic"),
-        new CodeRangeEntry("intagalog", "CR_In_Tagalog"),
-        new CodeRangeEntry("inhanunoo", "CR_In_Hanunoo"),
-        new CodeRangeEntry("inbuhid", "CR_In_Buhid"),
-        new CodeRangeEntry("intagbanwa", "CR_In_Tagbanwa"),
-        new CodeRangeEntry("inkhmer", "CR_In_Khmer"),
-        new CodeRangeEntry("inmongolian", "CR_In_Mongolian"),
-        new CodeRangeEntry("inunifiedcanadianaboriginalsyllabicsextended", "CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended"),
-        new CodeRangeEntry("inlimbu", "CR_In_Limbu"),
-        new CodeRangeEntry("intaile", "CR_In_Tai_Le"),
-        new CodeRangeEntry("innewtailue", "CR_In_New_Tai_Lue"),
-        new CodeRangeEntry("inkhmersymbols", "CR_In_Khmer_Symbols"),
-        new CodeRangeEntry("inbuginese", "CR_In_Buginese"),
-        new CodeRangeEntry("intaitham", "CR_In_Tai_Tham"),
-        new CodeRangeEntry("incombiningdiacriticalmarksextended", "CR_In_Combining_Diacritical_Marks_Extended"),
-        new CodeRangeEntry("inbalinese", "CR_In_Balinese"),
-        new CodeRangeEntry("insundanese", "CR_In_Sundanese"),
-        new CodeRangeEntry("inbatak", "CR_In_Batak"),
-        new CodeRangeEntry("inlepcha", "CR_In_Lepcha"),
-        new CodeRangeEntry("olchiki", "CR_Ol_Chiki"),
-        new CodeRangeEntry("olck", "CR_Ol_Chiki"),
-        new CodeRangeEntry("incyrillicextendedc", "CR_In_Cyrillic_Extended_C"),
-        new CodeRangeEntry("ingeorgianextended", "CR_In_Georgian_Extended"),
-        new CodeRangeEntry("insundanesesupplement", "CR_In_Sundanese_Supplement"),
-        new CodeRangeEntry("invedicextensions", "CR_In_Vedic_Extensions"),
-        new CodeRangeEntry("inphoneticextensions", "CR_In_Phonetic_Extensions"),
-        new CodeRangeEntry("inphoneticextensionssupplement", "CR_In_Phonetic_Extensions_Supplement"),
-        new CodeRangeEntry("incombiningdiacriticalmarkssupplement", "CR_In_Combining_Diacritical_Marks_Supplement"),
-        new CodeRangeEntry("inlatinextendedadditional", "CR_In_Latin_Extended_Additional"),
-        new CodeRangeEntry("ingreekextended", "CR_In_Greek_Extended"),
-        new CodeRangeEntry("ingeneralpunctuation", "CR_In_General_Punctuation"),
-        new CodeRangeEntry("insuperscriptsandsubscripts", "CR_In_Superscripts_and_Subscripts"),
-        new CodeRangeEntry("incurrencysymbols", "CR_In_Currency_Symbols"),
-        new CodeRangeEntry("incombiningdiacriticalmarksforsymbols", "CR_In_Combining_Diacritical_Marks_for_Symbols"),
-        new CodeRangeEntry("inletterlikesymbols", "CR_In_Letterlike_Symbols"),
-        new CodeRangeEntry("innumberforms", "CR_In_Number_Forms"),
-        new CodeRangeEntry("inarrows", "CR_In_Arrows"),
-        new CodeRangeEntry("inmathematicaloperators", "CR_In_Mathematical_Operators"),
-        new CodeRangeEntry("inmiscellaneoustechnical", "CR_In_Miscellaneous_Technical"),
-        new CodeRangeEntry("incontrolpictures", "CR_In_Control_Pictures"),
-        new CodeRangeEntry("inopticalcharacterrecognition", "CR_In_Optical_Character_Recognition"),
-        new CodeRangeEntry("inenclosedalphanumerics", "CR_In_Enclosed_Alphanumerics"),
-        new CodeRangeEntry("inboxdrawing", "CR_In_Box_Drawing"),
-        new CodeRangeEntry("inblockelements", "CR_In_Block_Elements"),
-        new CodeRangeEntry("ingeometricshapes", "CR_In_Geometric_Shapes"),
-        new CodeRangeEntry("inmiscellaneoussymbols", "CR_In_Miscellaneous_Symbols"),
-        new CodeRangeEntry("indingbats", "CR_In_Dingbats"),
-        new CodeRangeEntry("inmiscellaneousmathematicalsymbolsa", "CR_In_Miscellaneous_Mathematical_Symbols_A"),
-        new CodeRangeEntry("insupplementalarrowsa", "CR_In_Supplemental_Arrows_A"),
-        new CodeRangeEntry("braille", "CR_Braille"),
-        new CodeRangeEntry("brai", "CR_Braille"),
-        new CodeRangeEntry("insupplementalarrowsb", "CR_In_Supplemental_Arrows_B"),
-        new CodeRangeEntry("inmiscellaneousmathematicalsymbolsb", "CR_In_Miscellaneous_Mathematical_Symbols_B"),
-        new CodeRangeEntry("insupplementalmathematicaloperators", "CR_In_Supplemental_Mathematical_Operators"),
-        new CodeRangeEntry("inmiscellaneoussymbolsandarrows", "CR_In_Miscellaneous_Symbols_and_Arrows"),
-        new CodeRangeEntry("inglagolitic", "CR_In_Glagolitic"),
-        new CodeRangeEntry("inlatinextendedc", "CR_In_Latin_Extended_C"),
-        new CodeRangeEntry("incoptic", "CR_In_Coptic"),
-        new CodeRangeEntry("ingeorgiansupplement", "CR_In_Georgian_Supplement"),
-        new CodeRangeEntry("intifinagh", "CR_In_Tifinagh"),
-        new CodeRangeEntry("inethiopicextended", "CR_In_Ethiopic_Extended"),
-        new CodeRangeEntry("incyrillicextendeda", "CR_In_Cyrillic_Extended_A"),
-        new CodeRangeEntry("insupplementalpunctuation", "CR_In_Supplemental_Punctuation"),
-        new CodeRangeEntry("incjkradicalssupplement", "CR_In_CJK_Radicals_Supplement"),
-        new CodeRangeEntry("inkangxiradicals", "CR_In_Kangxi_Radicals"),
-        new CodeRangeEntry("inideographicdescriptioncharacters", "CR_In_Ideographic_Description_Characters"),
-        new CodeRangeEntry("incjksymbolsandpunctuation", "CR_In_CJK_Symbols_and_Punctuation"),
-        new CodeRangeEntry("inhiragana", "CR_In_Hiragana"),
-        new CodeRangeEntry("inkatakana", "CR_In_Katakana"),
-        new CodeRangeEntry("inbopomofo", "CR_In_Bopomofo"),
-        new CodeRangeEntry("inhangulcompatibilityjamo", "CR_In_Hangul_Compatibility_Jamo"),
-        new CodeRangeEntry("inkanbun", "CR_In_Kanbun"),
-        new CodeRangeEntry("inbopomofoextended", "CR_In_Bopomofo_Extended"),
-        new CodeRangeEntry("incjkstrokes", "CR_In_CJK_Strokes"),
-        new CodeRangeEntry("inkatakanaphoneticextensions", "CR_In_Katakana_Phonetic_Extensions"),
-        new CodeRangeEntry("inenclosedcjklettersandmonths", "CR_In_Enclosed_CJK_Letters_and_Months"),
-        new CodeRangeEntry("incjkcompatibility", "CR_In_CJK_Compatibility"),
-        new CodeRangeEntry("incjkunifiedideographsextensiona", "CR_In_CJK_Unified_Ideographs_Extension_A"),
-        new CodeRangeEntry("inyijinghexagramsymbols", "CR_In_Yijing_Hexagram_Symbols"),
-        new CodeRangeEntry("incjkunifiedideographs", "CR_In_CJK_Unified_Ideographs"),
-        new CodeRangeEntry("inyisyllables", "CR_In_Yi_Syllables"),
-        new CodeRangeEntry("inyiradicals", "CR_In_Yi_Radicals"),
-        new CodeRangeEntry("lisu", "CR_Lisu"),
-        new CodeRangeEntry("invai", "CR_In_Vai"),
-        new CodeRangeEntry("incyrillicextendedb", "CR_In_Cyrillic_Extended_B"),
-        new CodeRangeEntry("inbamum", "CR_In_Bamum"),
-        new CodeRangeEntry("inmodifiertoneletters", "CR_In_Modifier_Tone_Letters"),
-        new CodeRangeEntry("inlatinextendedd", "CR_In_Latin_Extended_D"),
-        new CodeRangeEntry("insylotinagri", "CR_In_Syloti_Nagri"),
-        new CodeRangeEntry("incommonindicnumberforms", "CR_In_Common_Indic_Number_Forms"),
-        new CodeRangeEntry("inphagspa", "CR_In_Phags_pa"),
-        new CodeRangeEntry("insaurashtra", "CR_In_Saurashtra"),
-        new CodeRangeEntry("indevanagariextended", "CR_In_Devanagari_Extended"),
-        new CodeRangeEntry("inkayahli", "CR_In_Kayah_Li"),
-        new CodeRangeEntry("inrejang", "CR_In_Rejang"),
-        new CodeRangeEntry("inhanguljamoextendeda", "CR_In_Hangul_Jamo_Extended_A"),
-        new CodeRangeEntry("injavanese", "CR_In_Javanese"),
-        new CodeRangeEntry("inmyanmarextendedb", "CR_In_Myanmar_Extended_B"),
-        new CodeRangeEntry("incham", "CR_In_Cham"),
-        new CodeRangeEntry("inmyanmarextendeda", "CR_In_Myanmar_Extended_A"),
-        new CodeRangeEntry("intaiviet", "CR_In_Tai_Viet"),
-        new CodeRangeEntry("inmeeteimayekextensions", "CR_In_Meetei_Mayek_Extensions"),
-        new CodeRangeEntry("inethiopicextendeda", "CR_In_Ethiopic_Extended_A"),
-        new CodeRangeEntry("inlatinextendede", "CR_In_Latin_Extended_E"),
-        new CodeRangeEntry("incherokeesupplement", "CR_In_Cherokee_Supplement"),
-        new CodeRangeEntry("inmeeteimayek", "CR_In_Meetei_Mayek"),
-        new CodeRangeEntry("inhangulsyllables", "CR_In_Hangul_Syllables"),
-        new CodeRangeEntry("inhanguljamoextendedb", "CR_In_Hangul_Jamo_Extended_B"),
-        new CodeRangeEntry("inhighsurrogates", "CR_In_High_Surrogates"),
-        new CodeRangeEntry("inhighprivateusesurrogates", "CR_In_High_Private_Use_Surrogates"),
-        new CodeRangeEntry("inlowsurrogates", "CR_In_Low_Surrogates"),
-        new CodeRangeEntry("inprivateusearea", "CR_In_Private_Use_Area"),
-        new CodeRangeEntry("incjkcompatibilityideographs", "CR_In_CJK_Compatibility_Ideographs"),
-        new CodeRangeEntry("inalphabeticpresentationforms", "CR_In_Alphabetic_Presentation_Forms"),
-        new CodeRangeEntry("inarabicpresentationformsa", "CR_In_Arabic_Presentation_Forms_A"),
-        new CodeRangeEntry("invariationselectors", "CR_In_Variation_Selectors"),
-        new CodeRangeEntry("inverticalforms", "CR_In_Vertical_Forms"),
-        new CodeRangeEntry("incombininghalfmarks", "CR_In_Combining_Half_Marks"),
-        new CodeRangeEntry("incjkcompatibilityforms", "CR_In_CJK_Compatibility_Forms"),
-        new CodeRangeEntry("insmallformvariants", "CR_In_Small_Form_Variants"),
-        new CodeRangeEntry("inarabicpresentationformsb", "CR_In_Arabic_Presentation_Forms_B"),
-        new CodeRangeEntry("inhalfwidthandfullwidthforms", "CR_In_Halfwidth_and_Fullwidth_Forms"),
-        new CodeRangeEntry("inspecials", "CR_In_Specials"),
-        new CodeRangeEntry("inlinearbsyllabary", "CR_In_Linear_B_Syllabary"),
-        new CodeRangeEntry("inlinearbideograms", "CR_In_Linear_B_Ideograms"),
-        new CodeRangeEntry("inaegeannumbers", "CR_In_Aegean_Numbers"),
-        new CodeRangeEntry("inancientgreeknumbers", "CR_In_Ancient_Greek_Numbers"),
-        new CodeRangeEntry("inancientsymbols", "CR_In_Ancient_Symbols"),
-        new CodeRangeEntry("inphaistosdisc", "CR_In_Phaistos_Disc"),
-        new CodeRangeEntry("inlycian", "CR_In_Lycian"),
-        new CodeRangeEntry("incarian", "CR_In_Carian"),
-        new CodeRangeEntry("incopticepactnumbers", "CR_In_Coptic_Epact_Numbers"),
-        new CodeRangeEntry("inolditalic", "CR_In_Old_Italic"),
-        new CodeRangeEntry("ingothic", "CR_In_Gothic"),
-        new CodeRangeEntry("inoldpermic", "CR_In_Old_Permic"),
-        new CodeRangeEntry("inugaritic", "CR_In_Ugaritic"),
-        new CodeRangeEntry("inoldpersian", "CR_In_Old_Persian"),
-        new CodeRangeEntry("deseret", "CR_Deseret"),
-        new CodeRangeEntry("dsrt", "CR_Deseret"),
-        new CodeRangeEntry("shavian", "CR_Shavian"),
-        new CodeRangeEntry("shaw", "CR_Shavian"),
-        new CodeRangeEntry("inosmanya", "CR_In_Osmanya"),
-        new CodeRangeEntry("inosage", "CR_In_Osage"),
-        new CodeRangeEntry("inelbasan", "CR_In_Elbasan"),
-        new CodeRangeEntry("incaucasianalbanian", "CR_In_Caucasian_Albanian"),
-        new CodeRangeEntry("inlineara", "CR_In_Linear_A"),
-        new CodeRangeEntry("incypriotsyllabary", "CR_In_Cypriot_Syllabary"),
-        new CodeRangeEntry("inimperialaramaic", "CR_In_Imperial_Aramaic"),
-        new CodeRangeEntry("palmyrene", "CR_Palmyrene"),
-        new CodeRangeEntry("palm", "CR_Palmyrene"),
-        new CodeRangeEntry("innabataean", "CR_In_Nabataean"),
-        new CodeRangeEntry("inhatran", "CR_In_Hatran"),
-        new CodeRangeEntry("inphoenician", "CR_In_Phoenician"),
-        new CodeRangeEntry("inlydian", "CR_In_Lydian"),
-        new CodeRangeEntry("meroitichieroglyphs", "CR_Meroitic_Hieroglyphs"),
-        new CodeRangeEntry("mero", "CR_Meroitic_Hieroglyphs"),
-        new CodeRangeEntry("inmeroiticcursive", "CR_In_Meroitic_Cursive"),
-        new CodeRangeEntry("inkharoshthi", "CR_In_Kharoshthi"),
-        new CodeRangeEntry("oldsoutharabian", "CR_Old_South_Arabian"),
-        new CodeRangeEntry("sarb", "CR_Old_South_Arabian"),
-        new CodeRangeEntry("oldnortharabian", "CR_Old_North_Arabian"),
-        new CodeRangeEntry("narb", "CR_Old_North_Arabian"),
-        new CodeRangeEntry("inmanichaean", "CR_In_Manichaean"),
-        new CodeRangeEntry("inavestan", "CR_In_Avestan"),
-        new CodeRangeEntry("ininscriptionalparthian", "CR_In_Inscriptional_Parthian"),
-        new CodeRangeEntry("ininscriptionalpahlavi", "CR_In_Inscriptional_Pahlavi"),
-        new CodeRangeEntry("inpsalterpahlavi", "CR_In_Psalter_Pahlavi"),
-        new CodeRangeEntry("inoldturkic", "CR_In_Old_Turkic"),
-        new CodeRangeEntry("inoldhungarian", "CR_In_Old_Hungarian"),
-        new CodeRangeEntry("inhanifirohingya", "CR_In_Hanifi_Rohingya"),
-        new CodeRangeEntry("inruminumeralsymbols", "CR_In_Rumi_Numeral_Symbols"),
-        new CodeRangeEntry("inoldsogdian", "CR_In_Old_Sogdian"),
-        new CodeRangeEntry("insogdian", "CR_In_Sogdian"),
-        new CodeRangeEntry("inelymaic", "CR_In_Elymaic"),
-        new CodeRangeEntry("inbrahmi", "CR_In_Brahmi"),
-        new CodeRangeEntry("inkaithi", "CR_In_Kaithi"),
-        new CodeRangeEntry("insorasompeng", "CR_In_Sora_Sompeng"),
-        new CodeRangeEntry("inchakma", "CR_In_Chakma"),
-        new CodeRangeEntry("inmahajani", "CR_In_Mahajani"),
-        new CodeRangeEntry("insharada", "CR_In_Sharada"),
-        new CodeRangeEntry("insinhalaarchaicnumbers", "CR_In_Sinhala_Archaic_Numbers"),
-        new CodeRangeEntry("inkhojki", "CR_In_Khojki"),
-        new CodeRangeEntry("inmultani", "CR_In_Multani"),
-        new CodeRangeEntry("inkhudawadi", "CR_In_Khudawadi"),
-        new CodeRangeEntry("ingrantha", "CR_In_Grantha"),
-        new CodeRangeEntry("innewa", "CR_In_Newa"),
-        new CodeRangeEntry("intirhuta", "CR_In_Tirhuta"),
-        new CodeRangeEntry("insiddham", "CR_In_Siddham"),
-        new CodeRangeEntry("inmodi", "CR_In_Modi"),
-        new CodeRangeEntry("inmongoliansupplement", "CR_In_Mongolian_Supplement"),
-        new CodeRangeEntry("intakri", "CR_In_Takri"),
-        new CodeRangeEntry("inahom", "CR_In_Ahom"),
-        new CodeRangeEntry("indogra", "CR_In_Dogra"),
-        new CodeRangeEntry("inwarangciti", "CR_In_Warang_Citi"),
-        new CodeRangeEntry("innandinagari", "CR_In_Nandinagari"),
-        new CodeRangeEntry("inzanabazarsquare", "CR_In_Zanabazar_Square"),
-        new CodeRangeEntry("insoyombo", "CR_In_Soyombo"),
-        new CodeRangeEntry("inpaucinhau", "CR_In_Pau_Cin_Hau"),
-        new CodeRangeEntry("inbhaiksuki", "CR_In_Bhaiksuki"),
-        new CodeRangeEntry("inmarchen", "CR_In_Marchen"),
-        new CodeRangeEntry("inmasaramgondi", "CR_In_Masaram_Gondi"),
-        new CodeRangeEntry("ingunjalagondi", "CR_In_Gunjala_Gondi"),
-        new CodeRangeEntry("inmakasar", "CR_In_Makasar"),
-        new CodeRangeEntry("intamilsupplement", "CR_In_Tamil_Supplement"),
-        new CodeRangeEntry("incuneiform", "CR_In_Cuneiform"),
-        new CodeRangeEntry("incuneiformnumbersandpunctuation", "CR_In_Cuneiform_Numbers_and_Punctuation"),
-        new CodeRangeEntry("inearlydynasticcuneiform", "CR_In_Early_Dynastic_Cuneiform"),
-        new CodeRangeEntry("inegyptianhieroglyphs", "CR_In_Egyptian_Hieroglyphs"),
-        new CodeRangeEntry("inegyptianhieroglyphformatcontrols", "CR_In_Egyptian_Hieroglyph_Format_Controls"),
-        new CodeRangeEntry("inanatolianhieroglyphs", "CR_In_Anatolian_Hieroglyphs"),
-        new CodeRangeEntry("inbamumsupplement", "CR_In_Bamum_Supplement"),
-        new CodeRangeEntry("inmro", "CR_In_Mro"),
-        new CodeRangeEntry("inbassavah", "CR_In_Bassa_Vah"),
-        new CodeRangeEntry("inpahawhhmong", "CR_In_Pahawh_Hmong"),
-        new CodeRangeEntry("inmedefaidrin", "CR_In_Medefaidrin"),
-        new CodeRangeEntry("inmiao", "CR_In_Miao"),
-        new CodeRangeEntry("inideographicsymbolsandpunctuation", "CR_In_Ideographic_Symbols_and_Punctuation"),
-        new CodeRangeEntry("intangut", "CR_In_Tangut"),
-        new CodeRangeEntry("intangutcomponents", "CR_In_Tangut_Components"),
-        new CodeRangeEntry("inkanasupplement", "CR_In_Kana_Supplement"),
-        new CodeRangeEntry("inkanaextendeda", "CR_In_Kana_Extended_A"),
-        new CodeRangeEntry("insmallkanaextension", "CR_In_Small_Kana_Extension"),
-        new CodeRangeEntry("innushu", "CR_In_Nushu"),
-        new CodeRangeEntry("induployan", "CR_In_Duployan"),
-        new CodeRangeEntry("inshorthandformatcontrols", "CR_In_Shorthand_Format_Controls"),
-        new CodeRangeEntry("inbyzantinemusicalsymbols", "CR_In_Byzantine_Musical_Symbols"),
-        new CodeRangeEntry("inmusicalsymbols", "CR_In_Musical_Symbols"),
-        new CodeRangeEntry("inancientgreekmusicalnotation", "CR_In_Ancient_Greek_Musical_Notation"),
-        new CodeRangeEntry("inmayannumerals", "CR_In_Mayan_Numerals"),
-        new CodeRangeEntry("intaixuanjingsymbols", "CR_In_Tai_Xuan_Jing_Symbols"),
-        new CodeRangeEntry("incountingrodnumerals", "CR_In_Counting_Rod_Numerals"),
-        new CodeRangeEntry("inmathematicalalphanumericsymbols", "CR_In_Mathematical_Alphanumeric_Symbols"),
-        new CodeRangeEntry("insuttonsignwriting", "CR_In_Sutton_SignWriting"),
-        new CodeRangeEntry("inglagoliticsupplement", "CR_In_Glagolitic_Supplement"),
-        new CodeRangeEntry("innyiakengpuachuehmong", "CR_In_Nyiakeng_Puachue_Hmong"),
-        new CodeRangeEntry("inwancho", "CR_In_Wancho"),
-        new CodeRangeEntry("inmendekikakui", "CR_In_Mende_Kikakui"),
-        new CodeRangeEntry("inadlam", "CR_In_Adlam"),
-        new CodeRangeEntry("inindicsiyaqnumbers", "CR_In_Indic_Siyaq_Numbers"),
-        new CodeRangeEntry("inottomansiyaqnumbers", "CR_In_Ottoman_Siyaq_Numbers"),
-        new CodeRangeEntry("inarabicmathematicalalphabeticsymbols", "CR_In_Arabic_Mathematical_Alphabetic_Symbols"),
-        new CodeRangeEntry("inmahjongtiles", "CR_In_Mahjong_Tiles"),
-        new CodeRangeEntry("indominotiles", "CR_In_Domino_Tiles"),
-        new CodeRangeEntry("inplayingcards", "CR_In_Playing_Cards"),
-        new CodeRangeEntry("inenclosedalphanumericsupplement", "CR_In_Enclosed_Alphanumeric_Supplement"),
-        new CodeRangeEntry("inenclosedideographicsupplement", "CR_In_Enclosed_Ideographic_Supplement"),
-        new CodeRangeEntry("inmiscellaneoussymbolsandpictographs", "CR_In_Miscellaneous_Symbols_and_Pictographs"),
-        new CodeRangeEntry("inemoticons", "CR_In_Emoticons"),
-        new CodeRangeEntry("inornamentaldingbats", "CR_In_Ornamental_Dingbats"),
-        new CodeRangeEntry("intransportandmapsymbols", "CR_In_Transport_and_Map_Symbols"),
-        new CodeRangeEntry("inalchemicalsymbols", "CR_In_Alchemical_Symbols"),
-        new CodeRangeEntry("ingeometricshapesextended", "CR_In_Geometric_Shapes_Extended"),
-        new CodeRangeEntry("insupplementalarrowsc", "CR_In_Supplemental_Arrows_C"),
-        new CodeRangeEntry("insupplementalsymbolsandpictographs", "CR_In_Supplemental_Symbols_and_Pictographs"),
-        new CodeRangeEntry("inchesssymbols", "CR_In_Chess_Symbols"),
-        new CodeRangeEntry("insymbolsandpictographsextendeda", "CR_In_Symbols_and_Pictographs_Extended_A"),
-        new CodeRangeEntry("incjkunifiedideographsextensionb", "CR_In_CJK_Unified_Ideographs_Extension_B"),
-        new CodeRangeEntry("incjkunifiedideographsextensionc", "CR_In_CJK_Unified_Ideographs_Extension_C"),
-        new CodeRangeEntry("incjkunifiedideographsextensiond", "CR_In_CJK_Unified_Ideographs_Extension_D"),
-        new CodeRangeEntry("incjkunifiedideographsextensione", "CR_In_CJK_Unified_Ideographs_Extension_E"),
-        new CodeRangeEntry("incjkunifiedideographsextensionf", "CR_In_CJK_Unified_Ideographs_Extension_F"),
-        new CodeRangeEntry("incjkcompatibilityideographssupplement", "CR_In_CJK_Compatibility_Ideographs_Supplement"),
-        new CodeRangeEntry("intags", "CR_In_Tags"),
-        new CodeRangeEntry("invariationselectorssupplement", "CR_In_Variation_Selectors_Supplement"),
-        new CodeRangeEntry("insupplementaryprivateuseareaa", "CR_In_Supplementary_Private_Use_Area_A"),
-        new CodeRangeEntry("insupplementaryprivateuseareab", "CR_In_Supplementary_Private_Use_Area_B"),
-        new CodeRangeEntry("innoblock", "CR_In_No_Block")
-    };
-
-    static final int MAX_WORD_LENGTH = 44;
-}


=====================================
test/org/jcodings/specific/TestCaseMap.java
=====================================
@@ -81,4 +81,17 @@ public class TestCaseMap {
             assertTrue(caseMap(enc, "ß", Config.CASE_DOWNCASE).equals("ß"));
         }
     }
+
+    @Test
+    public void testGeorgian() throws Exception {
+        Encoding enc = UTF8Encoding.INSTANCE;
+        assertTrue(caseMap(enc, "\u1C90\u1C91\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2"));
+        assertTrue(caseMap(enc, "\u1C90\u1C91\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2"));
+        assertTrue(caseMap(enc, "\u1C90\u10D1\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2"));
+        assertTrue(caseMap(enc, "\u1C90\u10D1\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2"));
+        assertTrue(caseMap(enc, "\u10D0\u1C91\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2"));
+        assertTrue(caseMap(enc, "\u10D0\u1C91\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2"));
+        assertTrue(caseMap(enc, "\u10D0\u10D1\u1C92", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2"));
+        assertTrue(caseMap(enc, "\u10D0\u10D1\u10D2", Config.CASE_UPCASE | Config.CASE_TITLECASE).equals("\u10D0\u10D1\u10D2"));
+    }
 }



View it on GitLab: https://salsa.debian.org/java-team/jcodings/-/compare/1ef9a07cd6dccc187c8facf5c09a7e3f12c075d7...b95214c8df01577d335dc39f58cfb3f5dd1112ad

-- 
View it on GitLab: https://salsa.debian.org/java-team/jcodings/-/compare/1ef9a07cd6dccc187c8facf5c09a7e3f12c075d7...b95214c8df01577d335dc39f58cfb3f5dd1112ad
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20200419/5d574ba6/attachment.html>


More information about the pkg-java-commits mailing list