]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 26 Sep 2000 00:05:52 +0000 (00:05 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 26 Sep 2000 00:05:52 +0000 (00:05 +0000)
2000-09-23  Bruno Haible  <haible@clisp.cons.org>

* iconvdata/gbk.c (USE_PRIVATE_AREA): Define to 0.
(__gbk_to_ucs): Conditionalize private area mappings.
(__gbk_from_ucs4_tab9): Likewise.
(BODY for TO_LOOP): Likewise.
* iconvdata/testdata/GBK: Don't use characters not yet in Unicode.
* iconvdata/testdata/GBK..UTF-8: Likewise.
* iconvdata/tst-tables.sh: Enable GBK test.

2000-09-23  Bruno Haible  <haible@clisp.cons.org>

* iconvdata/gbk.c (__gbk_to_ucs): Swap U+2014 and U+2015.
(__gbk_from_ucs4_tab4): Swap entries for U+2014 and U+2015.
(BODY for FROM_LOOP): Reject input > 0xFEA0, avoids out-of-bounds
array access.
* iconvdata/gbgbk.c (BODY for FROM_LOOP): Map 0xA844 to 0xA1AA.
* iconvdata/testdata/GBK..UTF8: Swap U+2014 and U+2015.

2000-09-23  Bruno Haible  <haible@clisp.cons.org>

* iconvdata/johab.c (final_to_ucs): Fix typos.
(jamo_from_ucs_table): Likewise.
(BODY for FROM_LOOP): Map 0x5c to U+20A9. Reject ranges
0xD9E6..0xD9FE and 0xDEF2..0xDEFE.
(BODY for TO_LOOP): Map U+20A9 to 0x5c. Don't produce values in
the range 0xD9E6..0xD9FE.
* iconvdata/tst-tables.sh: Enable JOHAB testing.

16 files changed:
ChangeLog
iconvdata/gbk.c
iconvdata/testdata/GBK
iconvdata/testdata/GBK..UTF8
iconvdata/tst-tables.sh
localedata/ChangeLog
localedata/Makefile
localedata/dump-ctype.c [new file with mode: 0644]
localedata/gen-unicode-ctype.c [new file with mode: 0644]
localedata/locales/i18n
localedata/tests-mbwc/dat_iswctype.c
localedata/tests-mbwc/dat_iswgraph.c
localedata/tests-mbwc/dat_iswprint.c
localedata/tests-mbwc/dat_iswpunct.c
localedata/tests-mbwc/dat_wcswidth.c
localedata/tst-ctype-de_DE.ISO-8859-1.in

index 9c0a579a4a37871fb181d80a99682dacf2831751..d67f0778747c834feb33c7ceb7483f7b37c0d856 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+2000-09-23  Bruno Haible  <haible@clisp.cons.org>
+
+       * iconvdata/gbk.c (USE_PRIVATE_AREA): Define to 0.
+       (__gbk_to_ucs): Conditionalize private area mappings.
+       (__gbk_from_ucs4_tab9): Likewise.
+       (BODY for TO_LOOP): Likewise.
+       * iconvdata/testdata/GBK: Don't use characters not yet in Unicode.
+       * iconvdata/testdata/GBK..UTF-8: Likewise.
+       * iconvdata/tst-tables.sh: Enable GBK test.
+
+2000-09-23  Bruno Haible  <haible@clisp.cons.org>
+
+       * iconvdata/gbk.c (__gbk_to_ucs): Swap U+2014 and U+2015.
+       (__gbk_from_ucs4_tab4): Swap entries for U+2014 and U+2015.
+       (BODY for FROM_LOOP): Reject input > 0xFEA0, avoids out-of-bounds
+       array access.
+       * iconvdata/gbgbk.c (BODY for FROM_LOOP): Map 0xA844 to 0xA1AA.
+       * iconvdata/testdata/GBK..UTF8: Swap U+2014 and U+2015.
+
+2000-09-23  Bruno Haible  <haible@clisp.cons.org>
+
+       * iconvdata/johab.c (final_to_ucs): Fix typos.
+       (jamo_from_ucs_table): Likewise.
+       (BODY for FROM_LOOP): Map 0x5c to U+20A9. Reject ranges
+       0xD9E6..0xD9FE and 0xDEF2..0xDEFE.
+       (BODY for TO_LOOP): Map U+20A9 to 0x5c. Don't produce values in
+       the range 0xD9E6..0xD9FE.
+       * iconvdata/tst-tables.sh: Enable JOHAB testing.
+
 2000-09-25  Ulrich Drepper  <drepper@redhat.com>
 
        * iconv/gconv_conf.c (__gconv_get_path): Fix problem with relative
index f9a53ff2df6bb9f524711786e384dc1bc81a9143..b07f39294a775e9782b8a185ad7baa4f77108a0d 100644 (file)
 #include <wchar.h>
 #include <assert.h>
 
+/* Unicode 3.0.1 does not contain all the characters in GBK.  Define
+   USE_PRIVATE_AREA to 1 in order to use mappings from/to the Unicode
+   Private Use area.  Until we see other systems using the same mappings,
+   it is disabled.  */
+#define USE_PRIVATE_AREA 0
+
 /* The conversion table to UCS4 has almost no holes.  It can be generated with:
 
    perl tab.pl < gbk.txt
@@ -1739,7 +1745,13 @@ static const uint16_t __gbk_to_ucs[] =
   [0x1db0] = 0x00f2, [0x1db1] = 0x016b, [0x1db2] = 0x00fa, [0x1db3] = 0x01d4,
   [0x1db4] = 0x00f9, [0x1db5] = 0x01d6, [0x1db6] = 0x01d8, [0x1db7] = 0x01da,
   [0x1db8] = 0x01dc, [0x1db9] = 0x00fc, [0x1dba] = 0x00ea, [0x1dbb] = 0x0251,
-  [0x1dbc] = 0xe7c7, [0x1dbd] = 0x0144, [0x1dbe] = 0x0148, [0x1dbf] = 0xe7c8,
+#if USE_PRIVATE_AREA
+  [0x1dbc] = 0xe7c7,
+#endif
+                     [0x1dbd] = 0x0144, [0x1dbe] = 0x0148,
+#if USE_PRIVATE_AREA
+                                                           [0x1dbf] = 0xe7c8,
+#endif
   [0x1dc0] = 0x0261, [0x1dc5] = 0x3105, [0x1dc6] = 0x3106, [0x1dc7] = 0x3107,
   [0x1dc8] = 0x3108, [0x1dc9] = 0x3109, [0x1dca] = 0x310a, [0x1dcb] = 0x310b,
   [0x1dcc] = 0x310c, [0x1dcd] = 0x310d, [0x1dce] = 0x310e, [0x1dcf] = 0x310f,
@@ -1766,10 +1778,14 @@ static const uint16_t __gbk_to_ucs[] =
   [0x1e3b] = 0xfe5e, [0x1e3c] = 0xfe5f, [0x1e3d] = 0xfe60, [0x1e3e] = 0xfe61,
   [0x1e40] = 0xfe62, [0x1e41] = 0xfe63, [0x1e42] = 0xfe64, [0x1e43] = 0xfe65,
   [0x1e44] = 0xfe66, [0x1e45] = 0xfe68, [0x1e46] = 0xfe69, [0x1e47] = 0xfe6a,
-  [0x1e48] = 0xfe6b, [0x1e49] = 0xe7e7, [0x1e4a] = 0xe7e8, [0x1e4b] = 0xe7e9,
+  [0x1e48] = 0xfe6b,
+#if USE_PRIVATE_AREA
+                     [0x1e49] = 0xe7e7, [0x1e4a] = 0xe7e8, [0x1e4b] = 0xe7e9,
   [0x1e4c] = 0xe7ea, [0x1e4d] = 0xe7eb, [0x1e4e] = 0xe7ec, [0x1e4f] = 0xe7ed,
   [0x1e50] = 0xe7ee, [0x1e51] = 0xe7ef, [0x1e52] = 0xe7f0, [0x1e53] = 0xe7f1,
-  [0x1e54] = 0xe7f2, [0x1e55] = 0xe7f3, [0x1e56] = 0x3007, [0x1e64] = 0x2500,
+  [0x1e54] = 0xe7f2, [0x1e55] = 0xe7f3,
+#endif
+                                        [0x1e56] = 0x3007, [0x1e64] = 0x2500,
   [0x1e65] = 0x2501, [0x1e66] = 0x2502, [0x1e67] = 0x2503, [0x1e68] = 0x2504,
   [0x1e69] = 0x2505, [0x1e6a] = 0x2506, [0x1e6b] = 0x2507, [0x1e6c] = 0x2508,
   [0x1e6d] = 0x2509, [0x1e6e] = 0x250a, [0x1e6f] = 0x250b, [0x1e70] = 0x250c,
@@ -5499,7 +5515,9 @@ static const uint16_t __gbk_to_ucs[] =
   [0x5dc2] = 0xfa0e, [0x5dc3] = 0xfa0f, [0x5dc4] = 0xfa11, [0x5dc5] = 0xfa13,
   [0x5dc6] = 0xfa14, [0x5dc7] = 0xfa18, [0x5dc8] = 0xfa1f, [0x5dc9] = 0xfa20,
   [0x5dca] = 0xfa21, [0x5dcb] = 0xfa23, [0x5dcc] = 0xfa24, [0x5dcd] = 0xfa27,
-  [0x5dce] = 0xfa28, [0x5dcf] = 0xfa29, [0x5dd0] = 0xe815, [0x5dd1] = 0xe816,
+  [0x5dce] = 0xfa28, [0x5dcf] = 0xfa29,
+#if USE_PRIVATE_AREA
+                                        [0x5dd0] = 0xe815, [0x5dd1] = 0xe816,
   [0x5dd2] = 0xe817, [0x5dd3] = 0xe818, [0x5dd4] = 0xe819, [0x5dd5] = 0xe81a,
   [0x5dd6] = 0xe81b, [0x5dd7] = 0xe81c, [0x5dd8] = 0xe81d, [0x5dd9] = 0xe81e,
   [0x5dda] = 0xe81f, [0x5ddb] = 0xe820, [0x5ddc] = 0xe821, [0x5ddd] = 0xe822,
@@ -5520,6 +5538,9 @@ static const uint16_t __gbk_to_ucs[] =
   [0x5e17] = 0xe85b, [0x5e18] = 0xe85c, [0x5e19] = 0xe85d, [0x5e1a] = 0xe85e,
   [0x5e1b] = 0xe85f, [0x5e1c] = 0xe860, [0x5e1d] = 0xe861, [0x5e1e] = 0xe862,
   [0x5e1f] = 0xe863, [0x5e20] = 0xe864,
+#else
+  [0x5e20] = 0x0000,
+#endif
 };
 
 /* The table can be created using
@@ -12936,6 +12957,7 @@ static const char __gbk_from_ucs4_tab8[][2] =
 */
 static const char __gbk_from_ucs4_tab9[][2] =
 {
+#if USE_PRIVATE_AREA
   [0x0000] = "\xa8\xbc", [0x0001] = "\xa8\xbf", [0x0020] = "\xa9\x89",
   [0x0021] = "\xa9\x8a", [0x0022] = "\xa9\x8b", [0x0023] = "\xa9\x8c",
   [0x0024] = "\xa9\x8d", [0x0025] = "\xa9\x8e", [0x0026] = "\xa9\x8f",
@@ -12968,6 +12990,7 @@ static const char __gbk_from_ucs4_tab9[][2] =
   [0x0096] = "\xfe\x99", [0x0097] = "\xfe\x9a", [0x0098] = "\xfe\x9b",
   [0x0099] = "\xfe\x9c", [0x009a] = "\xfe\x9d", [0x009b] = "\xfe\x9e",
   [0x009c] = "\xfe\x9f", [0x009d] = "\xfe\xa0",
+#endif
 };
 
 /* The table can be created using
@@ -13418,7 +13441,7 @@ static const char __gbk_from_ucs4_tab12[][2] =
          cp = __gbk_from_ucs4_tab8[ch - 0x4e00];                             \
          break;                                                              \
        case 0xe7c7 ... 0xe864:                                               \
-         cp = __gbk_from_ucs4_tab9[ch - 0xe7c7];                             \
+         cp = USE_PRIVATE_AREA ? __gbk_from_ucs4_tab9[ch - 0xe7c7] : "\0\0"; \
          break;                                                              \
        case 0xf92c:                                                          \
          cp = "\xfd\x9c";                                                    \
index 31f35414c8d3ccba9d134720330c8136791d2952..615c47c376cfb8bb2e4f4b0d06d5b62d6e852e9b 100644 (file)
  ¨\80 ¨\81 ¨\82 ¨\83 ¨\84 ¨\85 ¨\86 ¨\87 ¨\88 ¨\89 ¨\8a ¨\8b ¨\8c ¨\8d ¨\8e ¨\8f
  ¨\90 ¨\91 ¨\92 ¨\93 ¨\94 ¨\95
     ¨¡ ¨¢ ¨£ ¨¤ ¨¥ ¨¦ ¨§ ¨¨ ¨© ¨ª ¨« ¨¬ ¨­ ¨® ¨¯
- ¨° ¨± ¨² ¨³ ¨´ ¨µ ¨¶ ¨· ¨¸ ¨¹ ¨º ¨» ¨¼ ¨½ ¨¾ ¨¿
+ ¨° ¨± ¨² ¨³ ¨´ ¨µ ¨¶ ¨· ¨¸ ¨¹ ¨º ¨» A8BC ¨½ ¨¾ A8BF
  ¨À             ¨Å ¨Æ ¨Ç ¨È ¨É ¨Ê ¨Ë ¨Ì ¨Í ¨Î ¨Ï
  ¨Ð ¨Ñ ¨Ò ¨Ó ¨Ô ¨Õ ¨Ö ¨× ¨Ø ¨Ù ¨Ú ¨Û ¨Ü ¨Ý ¨Þ ¨ß
  ¨à ¨á ¨â ¨ã ¨ä ¨å ¨æ ¨ç ¨è ¨é
  ©P ©Q ©R ©S ©T ©U ©V ©W    ©Y ©Z    ©\
  ©` ©a ©b ©c ©d ©e ©f ©g ©h ©i ©j ©k ©l ©m ©n ©o
  ©p ©q ©r ©s ©t ©u ©v ©w ©x ©y ©z ©{ ©| ©} ©~
- ©\80 ©\81 ©\82 ©\83 ©\84 ©\85 ©\86 ©\87 ©\88 ©\89 ©\8a ©\8b ©\8c ©\8d ©\8e ©\8f
©\90 ©\91 ©\92 ©\93 ©\94 ©\95 ©\96
+ ©\80 ©\81 ©\82 ©\83 ©\84 ©\85 ©\86 ©\87 ©\88 A989 A98A A98B A98C A98D A98E A98F
A990 A991 A992 A993 A994 A995 ©\96
              ©¤ ©¥ ©¦ ©§ ©¨ ©© ©ª ©« ©¬ ©­ ©® ©¯
  ©° ©± ©² ©³ ©´ ©µ ©¶ ©· ©¸ ©¹ ©º ©» ©¼ ©½ ©¾ ©¿
  ©À ©Á ©Â ©Ã ©Ä ©Å ©Æ ©Ç ©È ©É ©Ê ©Ë ©Ì ©Í ©Î ©Ï
  ý\90 ý\91 ý\92 ý\93 ý\94 ý\95 ý\96 ý\97 ý\98 ý\99 ý\9a ý\9b ý\9c ý\9d ý\9e ý\9f
  ý 
  þ@ þA þB þC þD þE þF þG þH þI þJ þK þL þM þN þO
- þP þQ þR þS þT þU þV þW þX þY þZ þ[ þ\ þ] þ^ þ_
- þ` þa þb þc þd þe þf þg þh þi þj þk þl þm þn þo
- þp þq þr þs þt þu þv þw þx þy þz þ{ þ| þ} þ~
- þ\80 þ\81 þ\82 þ\83 þ\84 þ\85 þ\86 þ\87 þ\88 þ\89 þ\8a þ\8b þ\8c þ\8d þ\8e þ\8f
- þ\90 þ\91 þ\92 þ\93 þ\94 þ\95 þ\96 þ\97 þ\98 þ\99 þ\9a þ\9b þ\9c þ\9d þ\9e þ\9f
- þ 
+ FE50 FE51 FE52 FE53 FE54 FE55 FE56 FE57 FE58 FE59 FE5A FE5B FE5C FE5D FE5E FE5F
+ FE60 FE61 FE62 FE63 FE64 FE65 FE66 FE67 FE68 FE69 FE6A FE6B FE6C FE6D FE6E FE6F
+ FE70 FE71 FE72 FE73 FE74 FE75 FE76 FE77 FE78 FE79 FE7A FE7B FE7C FE7D FE7E
+ FE80 FE81 FE82 FE83 FE84 FE85 FE86 FE87 FE88 FE89 FE8A FE8B FE8C FE8D FE8E FE8F
+ FE90 FE91 FE92 FE93 FE94 FE95 FE96 FE97 FE98 FE99 FE9A FE9B FE9C FE9D FE9E FE9F
+ FEA0
index cadf7239a62e88f4075d8f8420a0bf69ada93650..6d8ce8c9a667c60143948813cb70eeee98cbcb81 100644 (file)
  █ ▉ ▊ ▋ ▌ ▍ ▎ ▏ ▓ ▔ ▕ ▼ ▽ ◢ ◣ ◤
  ◥ ☉ ⊕ 〒 〝 〞
     ā á ǎ à ē é ě è ī í ǐ ì ō ó ǒ
- ò ū ú ǔ ù ǖ ǘ ǚ ǜ ü ê ɑ  ń ň 
+ ò ū ú ǔ ù ǖ ǘ ǚ ǜ ü ê ɑ A8BC ń ň A8BF
  ɡ             ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ
  ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ ㄗ ㄘ ㄙ ㄚ ㄛ ㄜ ㄝ ㄞ ㄟ
  ㄠ ㄡ ㄢ ㄣ ㄤ ㄥ ㄦ ㄧ ㄨ ㄩ
  ㏄ ㏎ ㏑ ㏒ ㏕ ︰ ¬ ¦    ℡ ㈱    ‐
  ー ゛ ゜ ヽ ヾ 〆 ゝ ゞ ﹉ ﹊ ﹋ ﹌ ﹍ ﹎ ﹏ ﹐
  ﹑ ﹒ ﹔ ﹕ ﹖ ﹗ ﹙ ﹚ ﹛ ﹜ ﹝ ﹞ ﹟ ﹠ ﹡
- ﹢ ﹣ ﹤ ﹥ ﹦ ﹨ ﹩ ﹪ ﹫       
      〇
+ ﹢ ﹣ ﹤ ﹥ ﹦ ﹨ ﹩ ﹪ ﹫ A989 A98A A98B A98C A98D A98E A98F
A990 A991 A992 A993 A994 A995 〇
              ─ ━ │ ┃ ┄ ┅ ┆ ┇ ┈ ┉ ┊ ┋
  ┌ ┍ ┎ ┏ ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙ ┚ ┛
  ├ ┝ ┞ ┟ ┠ ┡ ┢ ┣ ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫
  龕 龖 龗 龘 龜 龝 龞 龡 龢 龣 龤 龥 郎 凉 秊 裏
  隣
  兀 嗀 﨎 﨏 﨑 﨓 﨔 礼 﨟 蘒 﨡 﨣 﨤 﨧 﨨 﨩
-                
-                
-               
-                
-                
- 
+ FE50 FE51 FE52 FE53 FE54 FE55 FE56 FE57 FE58 FE59 FE5A FE5B FE5C FE5D FE5E FE5F
+ FE60 FE61 FE62 FE63 FE64 FE65 FE66 FE67 FE68 FE69 FE6A FE6B FE6C FE6D FE6E FE6F
+ FE70 FE71 FE72 FE73 FE74 FE75 FE76 FE77 FE78 FE79 FE7A FE7B FE7C FE7D FE7E
+ FE80 FE81 FE82 FE83 FE84 FE85 FE86 FE87 FE88 FE89 FE8A FE8B FE8C FE8D FE8E FE8F
+ FE90 FE91 FE92 FE93 FE94 FE95 FE96 FE97 FE98 FE99 FE9A FE9B FE9C FE9D FE9E FE9F
+ FEA0
index e743239a764209ffcd83ee878fdeac10682241a5..bc57e1b83bfa00bb1b37b929c4bdf97a0b66606e 100755 (executable)
@@ -191,7 +191,7 @@ cat <<EOF |
   BIG5HKSCS
   EUC-JP
   EUC-CN            GB2312
-  #GBK                                  Converter uses private area characters
+  GBK
   EUC-TW
   GB18030
   #
index 7e95c5001faee8952e3ec444a77ff0af5cac2d3b..1ba7cc09262a4519e3a7933f43ea33a5538f8c8e 100644 (file)
@@ -1,3 +1,25 @@
+2000-09-24  Bruno Haible  <haible@clisp.cons.org>
+
+       * gen-unicode-ctype.c: New file.
+       * dump-ctype.c: New file.
+       * Makefile (distribute): Add them.
+       * locales/i18n: Update LC_CTYPE part to Unicode 3.0, using
+       gen-unicode-ctype.c.
+       (blank): Add U+1680.
+       (cntrl): Add U+2028, U+2029.
+       (space): Add U+1680, U+2028, U+2029.
+       (digit): Add Myanmar, Ethiopic, Khmer, Mongolian, fullwidth digits.
+       (alnum, alpha, print, graph, punct): Lots of additions.
+       (lower, upper, tolower, toupper, combining, combining_level3): Update.
+       (totitle): New map.
+       * tst-ctype-de_DE.ISO-8859-1.in: Mark U00B5 as lower; the Unicode 3.0
+       towupper functions maps it to U039C. Mark U00A0 as graph, print, punct.
+       * tests-mbwc/dat_iswctype.c: Mark U00A0 as graph, print, punct.
+       * tests-mbwc/dat_iswgraph.c: Mark U00A0 as graph.
+       * tests-mbwc/dat_iswprint.c: Mark U00A0 as print.
+       * tests-mbwc/dat_iswpunct.c: Mark U00A0 as punct.
+       * tests-mbwc/dat_wcswidth.c: U00A0 is now print.
+
 2000-09-23  Bruno Haible  <haible@clisp.cons.org>
 
        * charmaps/GBK: Add commented mappings for GBK characters not yet in
index f86584ab26d724c251c1812b134206d3786c2923..25ee02d828fb9da8611bc08bbe2ad94ae2628f4f 100644 (file)
@@ -72,7 +72,8 @@ distribute := CHECKSUMS README SUPPORTED ChangeLog                    \
              $(wildcard tests-mbwc/*.[ch])                             \
              $(addprefix tst-fmon-locales/tstfmon_,$(fmon-tests))      \
              gen-locale.sh show-ucs-data.c tst-langinfo.sh             \
-             tst-wctype.sh tst-wctype.input
+             tst-wctype.sh tst-wctype.input gen-unicode-ctype.c        \
+             dump-ctype.c
 
 # Get $(inst_i18ndir) defined.
 include ../Makeconfig
diff --git a/localedata/dump-ctype.c b/localedata/dump-ctype.c
new file mode 100644 (file)
index 0000000..9514ca7
--- /dev/null
@@ -0,0 +1,163 @@
+/* Dump the character classes and character maps of a locale to a bunch
+   of individual files which can be processed with diff, sed etc.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU UTF-8 Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* Usage example:
+     $ dump-ctype de_DE.UTF-8
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <wctype.h>
+#include <locale.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+
+static const char *program_name = "dump-ctype";
+static const char *locale;
+
+static const char *class_names[] =
+  {
+    "alnum", "alpha", "blank", "cntrl", "digit", "graph", "lower",
+    "print", "punct", "space", "upper", "xdigit"
+  };
+
+static const char *map_names[] =
+  {
+    "tolower", "toupper", "totitle"
+  };
+
+static void dump_class (const char *class_name)
+{
+  wctype_t class;
+  FILE *f;
+  unsigned int ch;
+
+  class = wctype (class_name);
+  if (class == (wctype_t) 0)
+    {
+      fprintf (stderr, "%s %s: noexistent class %s\n", program_name,
+              locale, class_name);
+      return;
+    }
+
+  f = fopen (class_name, "w");
+  if (f == NULL)
+    {
+      fprintf (stderr, "%s %s: cannot open file %s/%s\n", program_name,
+              locale, locale, class_name);
+      exit (1);
+    }
+
+  for (ch = 0; ch < 0x10000; ch++)
+    if (iswctype (ch, class))
+      fprintf (f, "0x%04X\n", ch);
+
+  if (ferror (f) || fclose (f))
+    {
+      fprintf (stderr, "%s %s: I/O error on file %s/%s\n", program_name,
+              locale, locale, class_name);
+      exit (1);
+    }
+}
+
+static void dump_map (const char *map_name)
+{
+  wctrans_t map;
+  FILE *f;
+  unsigned int ch;
+
+  map = wctrans (map_name);
+  if (map == (wctrans_t) 0)
+    {
+      fprintf (stderr, "%s %s: noexistent map %s\n", program_name,
+              locale, map_name);
+      return;
+    }
+
+  f = fopen (map_name, "w");
+  if (f == NULL)
+    {
+      fprintf (stderr, "%s %s: cannot open file %s/%s\n", program_name,
+              locale, locale, map_name);
+      exit (1);
+    }
+
+  for (ch = 0; ch < 0x10000; ch++)
+    if (towctrans (ch, map) != ch)
+      fprintf (f, "0x%04X\t0x%04X\n", ch, towctrans (ch, map));
+
+  if (ferror (f) || fclose (f))
+    {
+      fprintf (stderr, "%s %s: I/O error on file %s/%s\n", program_name,
+              locale, locale, map_name);
+      exit (1);
+    }
+}
+
+int main (int argc, char *argv[])
+{
+  size_t i;
+
+  if (argc != 2)
+    {
+      fprintf (stderr, "Usage: dump-ctype locale\n");
+      exit (1);
+    }
+  locale = argv[1];
+
+  if (setlocale (LC_ALL, locale) == NULL)
+    {
+      fprintf (stderr, "%s: setlocale cannot switch to locale %s\n",
+              program_name, locale);
+      exit (1);
+    }
+
+  if (mkdir (locale, 0777) < 0)
+    {
+      char buf[100];
+      int save_errno = errno;
+
+      sprintf (buf, "%s: cannot create directory %s", program_name, locale);
+      errno = save_errno;
+      perror (buf);
+      exit (1);
+    }
+
+  if (chdir (locale) < 0)
+    {
+      char buf[100];
+      int save_errno = errno;
+
+      sprintf (buf, "%s: cannot chdir to %s", program_name, locale);
+      errno = save_errno;
+      perror (buf);
+      exit (1);
+    }
+
+  for (i = 0; i < sizeof (class_names) / sizeof (class_names[0]); i++)
+    dump_class (class_names[i]);
+
+  for (i = 0; i < sizeof (map_names) / sizeof (map_names[0]); i++)
+    dump_map (map_names[i]);
+
+  return 0;
+}
diff --git a/localedata/gen-unicode-ctype.c b/localedata/gen-unicode-ctype.c
new file mode 100644 (file)
index 0000000..b45e703
--- /dev/null
@@ -0,0 +1,792 @@
+/* Generate a Unicode conforming LC_CTYPE category from a UnicodeData file.
+   Copyright (C) 2000 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Bruno Haible <haible@clisp.cons.org>, 2000.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU UTF-8 Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* Usage example:
+     $ gen-unicode /usr/local/share/Unidata/UnicodeData.txt \
+                  /usr/local/share/Unidata/PropList.txt \
+                  3.0
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+#include <time.h>
+
+/* This structure represents one line in the UnicodeData.txt file.  */
+struct unicode_attribute
+{
+  const char *name;           /* Character name */
+  const char *category;       /* General category */
+  const char *combining;      /* Canonical combining classes */
+  const char *bidi;           /* Bidirectional category */
+  const char *decomposition;  /* Character decomposition mapping */
+  const char *decdigit;       /* Decimal digit value */
+  const char *digit;          /* Digit value */
+  const char *numeric;        /* Numeric value */
+  int mirrored;               /* mirrored */
+  const char *oldname;        /* Old Unicode 1.0 name */
+  const char *comment;        /* Comment */
+  unsigned int upper;         /* Uppercase mapping */
+  unsigned int lower;         /* Lowercase mapping */
+  unsigned int title;         /* Titlecase mapping */
+};
+
+/* Missing fields are represented with "" for strings, and NONE for
+   characters.  */
+#define NONE (~(unsigned int)0)
+
+/* The entire contents of the UnicodeData.txt file.  */
+struct unicode_attribute unicode_attributes [0x10000];
+
+/* Stores in unicode_attributes[i] the values from the given fields.  */
+static void
+fill_attribute (unsigned int i,
+               const char *field1, const char *field2,
+               const char *field3, const char *field4,
+               const char *field5, const char *field6,
+               const char *field7, const char *field8,
+               const char *field9, const char *field10,
+               const char *field11, const char *field12,
+               const char *field13, const char *field14)
+{
+  struct unicode_attribute * uni;
+
+  if (i >= 0x10000)
+    {
+      fprintf (stderr, "index too large\n");
+      exit (1);
+    }
+  uni = &unicode_attributes[i];
+  /* Copy the strings.  */
+  uni->name          = strdup (field1);
+  uni->category      = (field2[0] == '\0' ? "" : strdup (field2));
+  uni->combining     = (field3[0] == '\0' ? "" : strdup (field3));
+  uni->bidi          = (field4[0] == '\0' ? "" : strdup (field4));
+  uni->decomposition = (field5[0] == '\0' ? "" : strdup (field5));
+  uni->decdigit      = (field6[0] == '\0' ? "" : strdup (field6));
+  uni->digit         = (field7[0] == '\0' ? "" : strdup (field7));
+  uni->numeric       = (field8[0] == '\0' ? "" : strdup (field8));
+  uni->mirrored      = (field9[0] == 'Y');
+  uni->oldname       = (field10[0] == '\0' ? "" : strdup (field10));
+  uni->comment       = (field11[0] == '\0' ? "" : strdup (field11));
+  uni->upper = (field12[0] =='\0' ? NONE : strtoul (field12, NULL, 16));
+  uni->lower = (field13[0] =='\0' ? NONE : strtoul (field13, NULL, 16));
+  uni->title = (field14[0] =='\0' ? NONE : strtoul (field14, NULL, 16));
+}
+
+/* Maximum length of a field in the UnicodeData.txt file.  */
+#define FIELDLEN 120
+
+/* Reads the next field from STREAM.  The buffer BUFFER has size FIELDLEN.
+   Reads up to (but excluding) DELIM.
+   Returns 1 when a field was successfully read, otherwise 0.  */
+static int
+getfield (FILE *stream, char *buffer, int delim)
+{
+  int count = 0;
+  int c;
+
+  for (; (c = getc (stream)), (c != EOF && c != delim); )
+    {
+      /* The original unicode.org UnicodeData.txt file happens to have
+        CR/LF line terminators.  Silently convert to LF.  */
+      if (c == '\r')
+       continue;
+
+      /* Put c into the buffer.  */
+      if (++count >= FIELDLEN - 1)
+       {
+         fprintf (stderr, "field too long\n");
+         exit (1);
+       }
+      *buffer++ = c;
+    }
+
+  if (c == EOF)
+    return 0;
+
+  *buffer = '\0';
+  return 1;
+}
+
+/* Stores in unicode_attributes[] the entire contents of the UnicodeData.txt
+   file.  */
+static void
+fill_attributes (const char *unicodedata_filename)
+{
+  unsigned int i, j;
+  FILE *stream;
+  char field0[FIELDLEN];
+  char field1[FIELDLEN];
+  char field2[FIELDLEN];
+  char field3[FIELDLEN];
+  char field4[FIELDLEN];
+  char field5[FIELDLEN];
+  char field6[FIELDLEN];
+  char field7[FIELDLEN];
+  char field8[FIELDLEN];
+  char field9[FIELDLEN];
+  char field10[FIELDLEN];
+  char field11[FIELDLEN];
+  char field12[FIELDLEN];
+  char field13[FIELDLEN];
+  char field14[FIELDLEN];
+  int lineno = 0;
+
+  for (i = 0; i < 0x10000; i++)
+    unicode_attributes[i].name = NULL;
+
+  stream = fopen (unicodedata_filename, "r");
+  if (stream == NULL)
+    {
+      fprintf (stderr, "error during fopen of '%s'\n", unicodedata_filename);
+      exit (1);
+    }
+
+  for (;;)
+    {
+      int n;
+
+      lineno++;
+      n = getfield(stream, field0, ';');
+      n += getfield(stream, field1, ';');
+      n += getfield(stream, field2, ';');
+      n += getfield(stream, field3, ';');
+      n += getfield(stream, field4, ';');
+      n += getfield(stream, field5, ';');
+      n += getfield(stream, field6, ';');
+      n += getfield(stream, field7, ';');
+      n += getfield(stream, field8, ';');
+      n += getfield(stream, field9, ';');
+      n += getfield(stream, field10, ';');
+      n += getfield(stream, field11, ';');
+      n += getfield(stream, field12, ';');
+      n += getfield(stream, field13, ';');
+      n += getfield(stream, field14, '\n');
+      if (n == 0)
+       break;
+      if (n != 15)
+       {
+         fprintf (stderr, "short line in'%s':%d\n",
+                  unicodedata_filename, lineno);
+         exit (1);
+       }
+      i = strtoul (field0, NULL, 16);
+      if (field1[0] == '<'
+         && strlen (field1) >= 9
+         && !strcmp (field1 + strlen(field1) - 8, ", First>"))
+       {
+         /* Deal with a range. */
+         lineno++;
+         n = getfield(stream, field0, ';');
+         n += getfield(stream, field1, ';');
+         n += getfield(stream, field2, ';');
+         n += getfield(stream, field3, ';');
+         n += getfield(stream, field4, ';');
+         n += getfield(stream, field5, ';');
+         n += getfield(stream, field6, ';');
+         n += getfield(stream, field7, ';');
+         n += getfield(stream, field8, ';');
+         n += getfield(stream, field9, ';');
+         n += getfield(stream, field10, ';');
+         n += getfield(stream, field11, ';');
+         n += getfield(stream, field12, ';');
+         n += getfield(stream, field13, ';');
+         n += getfield(stream, field14, '\n');
+         if (n != 15)
+           {
+             fprintf (stderr, "missing end range in '%s':%d\n",
+                      unicodedata_filename, lineno);
+             exit (1);
+           }
+         if (!(field1[0] == '<'
+               && strlen (field1) >= 8
+               && !strcmp (field1 + strlen (field1) - 7, ", Last>")))
+           {
+             fprintf (stderr, "missing end range in '%s':%d\n",
+                      unicodedata_filename, lineno);
+             exit (1);
+           }
+         field1[strlen (field1) - 7] = '\0';
+         j = strtoul (field0, NULL, 16);
+         for (; i <= j; i++)
+           fill_attribute (i, field1+1, field2, field3, field4, field5,
+                              field6, field7, field8, field9, field10,
+                              field11, field12, field13, field14);
+       }
+      else
+       {
+         /* Single character line */
+         fill_attribute (i, field1, field2, field3, field4, field5,
+                            field6, field7, field8, field9, field10,
+                            field11, field12, field13, field14);
+       }
+    }
+  if (ferror (stream) || fclose (stream))
+    {
+      fprintf (stderr, "error reading from '%s'\n", unicodedata_filename);
+      exit (1);
+    }
+}
+
+/* The combining property from the PropList.txt file.  */
+char unicode_combining[0x10000];
+
+/* Stores in unicode_combining[] the Combining property from the
+   PropList.txt file.  */
+static void
+fill_combining (const char *proplist_filename)
+{
+  unsigned int i;
+  FILE *stream;
+  char buf[100+1];
+
+  for (i = 0; i < 0x10000; i++)
+    unicode_combining[i] = 0;
+
+  stream = fopen (proplist_filename, "r");
+  if (stream == NULL)
+    {
+      fprintf (stderr, "error during fopen of '%s'\n", proplist_filename);
+      exit (1);
+    }
+
+  /* Search for the "Property dump for: 0x20000004 (Combining)" line.  */
+  do
+    {
+      if (fscanf (stream, "%100[^\n]\n", buf) < 1)
+       {
+         fprintf (stderr, "no combining property found in '%s'\n",
+                  proplist_filename);
+         exit (1);
+       }
+    }
+  while (strstr (buf, "(Combining)") == NULL);
+
+  for (;;)
+    {
+      unsigned int i1, i2;
+
+      if (fscanf (stream, "%100[^\n]\n", buf) < 1)
+       {
+         fprintf (stderr, "premature end of combining property in '%s'\n",
+                  proplist_filename);
+         exit (1);
+       }
+      if (buf[0] == '*')
+       break;
+      if (strlen (buf) >= 10 && buf[4] == '.' && buf[5] == '.')
+       {
+         if (sscanf (buf, "%4X..%4X", &i1, &i2) < 2)
+           {
+             fprintf (stderr, "parse error in combining property in '%s'\n",
+                      proplist_filename);
+             exit (1);
+           }
+       }
+      else if (strlen (buf) >= 4)
+       {
+         if (sscanf (buf, "%4X", &i1) < 1)
+           {
+             fprintf (stderr, "parse error in combining property in '%s'\n",
+                      proplist_filename);
+             exit (1);
+           }
+         i2 = i1;
+       }
+      else
+       {
+         fprintf (stderr, "parse error in combining property in '%s'\n",
+                  proplist_filename);
+         exit (1);
+       }
+      for (i = i1; i <= i2; i++)
+       unicode_combining[i] = 1;
+    }
+  if (ferror (stream) || fclose (stream))
+    {
+      fprintf (stderr, "error reading from '%s'\n", proplist_filename);
+      exit (1);
+    }
+}
+
+/* Character mappings.  */
+
+static unsigned int
+to_upper (unsigned int ch)
+{
+  if (unicode_attributes[ch].name != NULL
+      && unicode_attributes[ch].upper != NONE)
+    return unicode_attributes[ch].upper;
+  else
+    return ch;
+}
+
+static unsigned int
+to_lower (unsigned int ch)
+{
+  if (unicode_attributes[ch].name != NULL
+      && unicode_attributes[ch].lower != NONE)
+    return unicode_attributes[ch].lower;
+  else
+    return ch;
+}
+
+static unsigned int
+to_title (unsigned int ch)
+{
+  if (unicode_attributes[ch].name != NULL
+      && unicode_attributes[ch].title != NONE)
+    return unicode_attributes[ch].title;
+  else
+    return ch;
+}
+
+/* Character class properties.  */
+
+static bool
+is_upper (unsigned int ch)
+{
+  return (to_lower (ch) != ch);
+}
+
+static bool
+is_lower (unsigned int ch)
+{
+  return (to_upper (ch) != ch)
+        /* <U00DF> is lowercase, but without simple to_upper mapping.  */
+        || (ch == 0x00DF);
+}
+
+static bool
+is_alpha (unsigned int ch)
+{
+  return (unicode_attributes[ch].name != NULL
+         && (unicode_attributes[ch].category[0] == 'L'
+             /* Avoid warning for <U0345>.  */
+             || (ch == 0x0345)
+             /* Avoid warnings for <U2160>..<U217F>.  */
+             || (unicode_attributes[ch].category[0] == 'N'
+                 && unicode_attributes[ch].category[1] == 'l')
+             /* Avoid warnings for <U24B6>..<U24E9>.  */
+             || (unicode_attributes[ch].category[0] == 'S'
+                 && unicode_attributes[ch].category[1] == 'o'
+                 && strstr (unicode_attributes[ch].name, " LETTER ")
+                    != NULL)));
+}
+
+static bool
+is_digit (unsigned int ch)
+{
+  return (unicode_attributes[ch].name != NULL
+         && unicode_attributes[ch].category[0] == 'N'
+         && unicode_attributes[ch].category[1] == 'd');
+  /* Note: U+0BE7..U+0BEF and U+1369..U+1371 are digit systems without
+     a zero.  Must add <0> in front of them by hand.  */
+}
+
+static bool
+is_outdigit (unsigned int ch)
+{
+  return (ch >= 0x0030 && ch <= 0x0039);
+}
+
+static bool
+is_blank (unsigned int ch)
+{
+  return (ch == 0x0009 /* '\t' */
+         /* Category Zs without mention of "<noBreak>" */
+         || (unicode_attributes[ch].name != NULL
+             && unicode_attributes[ch].category[0] == 'Z'
+             && unicode_attributes[ch].category[1] == 's'
+             && !strstr (unicode_attributes[ch].decomposition, "<noBreak>")));
+}
+
+static bool
+is_space (unsigned int ch)
+{
+  /* Don't make U+00A0 a space. Non-breaking space means that all programs
+     should treat it like a punctuation character, not like a space. */
+  return (ch == 0x0020 /* ' ' */
+         || ch == 0x000C /* '\f' */
+         || ch == 0x000A /* '\n' */
+         || ch == 0x000D /* '\r' */
+         || ch == 0x0009 /* '\t' */
+         || ch == 0x000B /* '\v' */
+         /* Categories Zl, Zp, and Zs without mention of "<noBreak>" */
+         || (unicode_attributes[ch].name != NULL
+             && unicode_attributes[ch].category[0] == 'Z'
+             && (unicode_attributes[ch].category[1] == 'l'
+                 || unicode_attributes[ch].category[1] == 'p'
+                 || (unicode_attributes[ch].category[1] == 's'
+                     && !strstr (unicode_attributes[ch].decomposition,
+                                 "<noBreak>")))));
+}
+
+static bool
+is_cntrl (unsigned int ch)
+{
+  return (unicode_attributes[ch].name != NULL
+         && (!strcmp (unicode_attributes[ch].name, "<control>")
+             /* Categories Zl and Zp */
+             || (unicode_attributes[ch].category[0] == 'Z'
+                 && (unicode_attributes[ch].category[1] == 'l'
+                     || unicode_attributes[ch].category[1] == 'p'))));
+}
+
+static bool
+is_xdigit (unsigned int ch)
+{
+  return is_digit (ch)
+        || (ch >= 0x0041 && ch <= 0x0046)
+        || (ch >= 0x0061 && ch <= 0x0066);
+}
+
+static bool
+is_graph (unsigned int ch)
+{
+  return (unicode_attributes[ch].name != NULL
+         && strcmp (unicode_attributes[ch].name, "<control>")
+         && !is_space (ch));
+}
+
+static bool
+is_print (unsigned int ch)
+{
+  return (unicode_attributes[ch].name != NULL
+         && strcmp (unicode_attributes[ch].name, "<control>")
+         /* Categories Zl and Zp */
+         && !(unicode_attributes[ch].name != NULL
+              && unicode_attributes[ch].category[0] == 'Z'
+              && (unicode_attributes[ch].category[1] == 'l'
+                  || unicode_attributes[ch].category[1] == 'p')));
+}
+
+static bool
+is_punct (unsigned int ch)
+{
+#if 0
+  return (unicode_attributes[ch].name != NULL
+         && unicode_attributes[ch].category[0] == 'P');
+#else
+  /* The traditional POSIX definition of punctuation is every graphic,
+     non-alphanumeric character.  */
+  return (is_graph (ch) && !is_alpha (ch) && !is_digit (ch));
+#endif
+}
+
+static bool
+is_combining (unsigned int ch)
+{
+  return (unicode_attributes[ch].name != NULL
+         && unicode_combining[ch] != 0);
+}
+
+static bool
+is_combining_level3 (unsigned int ch)
+{
+  return is_combining (ch)
+        && !(unicode_attributes[ch].combining[0] != '\0'
+             && unicode_attributes[ch].combining[0] != '0'
+             && strtoul (unicode_attributes[ch].combining, NULL, 10) >= 200);
+}
+
+/* Output a character class (= property) table.  */
+
+static void
+output_charclass (FILE *stream, const char *classname,
+                 bool (*func) (unsigned int))
+{
+  char table[0x10000];
+  unsigned int i;
+  bool need_semicolon;
+  const int max_column = 75;
+  int column;
+
+  for (i = 0; i < 0x10000; i++)
+    table[i] = (int) func (i);
+
+  fprintf (stream, "%s ", classname);
+  need_semicolon = false;
+  column = 1000;
+  for (i = 0; i < 0x10000; )
+    {
+      if (!table[i])
+       i++;
+      else
+       {
+         unsigned int low, high;
+         char buf[17];
+
+         low = i;
+         do
+           i++;
+         while (i < 0x10000 && table[i]);
+         high = i - 1;
+
+         if (low == high)
+           sprintf (buf, "<U%04X>", low);
+         else
+           sprintf (buf, "<U%04X>..<U%04X>", low, high);
+
+         if (need_semicolon)
+           {
+             fprintf (stream, ";");
+             column++;
+           }
+
+         if (column + strlen (buf) > max_column)
+           {
+             fprintf (stream, "/\n   ");
+             column = 3;
+           }
+
+         fprintf (stream, "%s", buf);
+         column += strlen (buf);
+         need_semicolon = true;
+       }
+    }
+  fprintf (stream, "\n");
+}
+
+/* Output a character mapping table.  */
+
+static void
+output_charmap (FILE *stream, const char *mapname,
+               unsigned int (*func) (unsigned int))
+{
+  char table[0x10000];
+  unsigned int i;
+  bool need_semicolon;
+  const int max_column = 75;
+  int column;
+
+  for (i = 0; i < 0x10000; i++)
+    table[i] = (func (i) != i);
+
+  fprintf (stream, "%s ", mapname);
+  need_semicolon = false;
+  column = 1000;
+  for (i = 0; i < 0x10000; i++)
+    if (table[i])
+      {
+       char buf[18];
+
+       sprintf (buf, "(<U%04X>,<U%04X>)", i, func (i));
+
+       if (need_semicolon)
+         {
+           fprintf (stream, ";");
+           column++;
+         }
+
+       if (column + strlen (buf) > max_column)
+         {
+           fprintf (stream, "/\n   ");
+           column = 3;
+         }
+
+       fprintf (stream, "%s", buf);
+       column += strlen (buf);
+       need_semicolon = true;
+      }
+  fprintf (stream, "\n");
+}
+
+/* Output the width table.  */
+
+static void
+output_widthmap (FILE *stream)
+{
+}
+
+/* Output the tables to the given file.  */
+
+static void
+output_tables (const char *filename, const char *version)
+{
+  FILE *stream;
+  unsigned int ch;
+
+  stream = fopen (filename, "w");
+  if (stream == NULL)
+    {
+      fprintf (stderr, "cannot open '%s' for writing\n", filename);
+      exit (1);
+    }
+
+  fprintf (stream, "escape_char /\n");
+  fprintf (stream, "comment_char %%\n");
+  fprintf (stream, "\n");
+  fprintf (stream, "%% Generated automatically by gen-unicode for Unicode %s.\n",
+          version);
+  fprintf (stream, "\n");
+
+  fprintf (stream, "LC_IDENTIFICATION\n");
+  fprintf (stream, "title     \"Unicode %s FDCC-set\"\n", version);
+  fprintf (stream, "source    \"UnicodeData.txt, PropList.txt\"\n");
+  fprintf (stream, "address   \"\"\n");
+  fprintf (stream, "contact   \"\"\n");
+  fprintf (stream, "email     \"bug-glibc@gnu.org\"\n");
+  fprintf (stream, "tel       \"\"\n");
+  fprintf (stream, "fax       \"\"\n");
+  fprintf (stream, "language  \"\"\n");
+  fprintf (stream, "territory \"Earth\"\n");
+  fprintf (stream, "revision  \"%s\"\n", version);
+  {
+    time_t now;
+    char date[11];
+    now = time (NULL);
+    strftime (date, sizeof (date), "%Y-%m-%d", gmtime (&now));
+    fprintf (stream, "date      \"%s\"\n", date);
+  }
+  fprintf (stream, "category  \"unicode:2000\";LC_CTYPE\n");
+  fprintf (stream, "END LC_IDENTIFICATION\n");
+  fprintf (stream, "\n");
+
+  /* Verifications. */
+  for (ch = 0; ch < 0x10000; ch++)
+    {
+      /* toupper restriction: "Only characters specified for the keywords
+        lower and upper shall be specified.  */
+      if (to_upper (ch) != ch && !(is_lower (ch) || is_upper (ch)))
+       fprintf (stderr,
+                "<U%04X> is not upper|lower but toupper(0x%04X) = 0x%04X\n",
+                ch, ch, to_upper (ch));
+
+      /* tolower restriction: "Only characters specified for the keywords
+        lower and upper shall be specified.  */
+      if (to_lower (ch) != ch && !(is_lower (ch) || is_upper (ch)))
+       fprintf (stderr,
+                "<U%04X> is not upper|lower but tolower(0x%04X) = 0x%04X\n",
+                ch, ch, to_lower (ch));
+
+      /* alpha restriction: "Characters classified as either upper or lower
+        shall automatically belong to this class.  */
+      if ((is_lower (ch) || is_upper (ch)) && !is_alpha (ch))
+       fprintf (stderr, "<U%04X> is upper|lower but not alpha\n", ch);
+
+      /* alpha restriction: "No character specified for the keywords cntrl,
+        digit, punct or space shall be specified."  */
+      if (is_alpha (ch) && is_cntrl (ch))
+       fprintf (stderr, "<U%04X> is alpha and cntrl\n", ch);
+      if (is_alpha (ch) && is_digit (ch))
+       fprintf (stderr, "<U%04X> is alpha and digit\n", ch);
+      if (is_alpha (ch) && is_punct (ch))
+       fprintf (stderr, "<U%04X> is alpha and punct\n", ch);
+      if (is_alpha (ch) && is_space (ch))
+       fprintf (stderr, "<U%04X> is alpha and space\n", ch);
+
+      /* space restriction: "No character specified for the keywords upper,
+        lower, alpha, digit, graph or xdigit shall be specified."
+        upper, lower, alpha already checked above.  */
+      if (is_space (ch) && is_digit (ch))
+       fprintf (stderr, "<U%04X> is space and digit\n", ch);
+      if (is_space (ch) && is_graph (ch))
+       fprintf (stderr, "<U%04X> is space and graph\n", ch);
+      if (is_space (ch) && is_xdigit (ch))
+       fprintf (stderr, "<U%04X> is space and xdigit\n", ch);
+
+      /* cntrl restriction: "No character specified for the keywords upper,
+        lower, alpha, digit, punct, graph, print or xdigit shall be
+        specified."  upper, lower, alpha already checked above.  */
+      if (is_cntrl (ch) && is_digit (ch))
+       fprintf (stderr, "<U%04X> is cntrl and digit\n", ch);
+      if (is_cntrl (ch) && is_punct (ch))
+       fprintf (stderr, "<U%04X> is cntrl and punct\n", ch);
+      if (is_cntrl (ch) && is_graph (ch))
+       fprintf (stderr, "<U%04X> is cntrl and graph\n", ch);
+      if (is_cntrl (ch) && is_print (ch))
+       fprintf (stderr, "<U%04X> is cntrl and print\n", ch);
+      if (is_cntrl (ch) && is_xdigit (ch))
+       fprintf (stderr, "<U%04X> is cntrl and xdigit\n", ch);
+
+      /* punct restriction: "No character specified for the keywords upper,
+        lower, alpha, digit, cntrl, xdigit or as the <space> character shall
+        be specified."  upper, lower, alpha, cntrl already checked above.  */
+      if (is_punct (ch) && is_digit (ch))
+       fprintf (stderr, "<U%04X> is punct and digit\n", ch);
+      if (is_punct (ch) && is_xdigit (ch))
+       fprintf (stderr, "<U%04X> is punct and xdigit\n", ch);
+      if (is_punct (ch) && (ch == 0x0020))
+       fprintf (stderr, "<U%04X> is punct\n", ch);
+
+      /* graph restriction: "No character specified for the keyword cntrl
+        shall be specified."  Already checked above.  */
+
+      /* print restriction: "No character specified for the keyword cntrl
+        shall be specified."  Already checked above.  */
+
+      /* graph - print relation: differ only in the <space> character.
+        How is this possible if there are more than one space character?!
+        I think susv2/xbd/locale.html should speak of "space characters",
+        not "space character".  */
+      if (is_print (ch) && !(is_graph (ch) || /* ch == 0x0020 */ is_space (ch)))
+       fprintf (stderr, "<U%04X> is print but not graph|<space>\n", ch);
+      if (!is_print (ch) && (is_graph (ch) || ch == 0x0020))
+       fprintf (stderr, "<U%04X> is graph|<space> but not print\n", ch);
+    }
+
+  fprintf (stream, "LC_CTYPE\n");
+  output_charclass (stream, "upper", is_upper);
+  output_charclass (stream, "lower", is_lower);
+  output_charclass (stream, "alpha", is_alpha);
+  output_charclass (stream, "digit", is_digit);
+  output_charclass (stream, "outdigit", is_outdigit);
+  output_charclass (stream, "blank", is_blank);
+  output_charclass (stream, "space", is_space);
+  output_charclass (stream, "cntrl", is_cntrl);
+  output_charclass (stream, "punct", is_punct);
+  output_charclass (stream, "xdigit", is_xdigit);
+  output_charclass (stream, "graph", is_graph);
+  output_charclass (stream, "print", is_print);
+  output_charclass (stream, "class \"combining\";", is_combining);
+  output_charclass (stream, "class \"combining_level3\";", is_combining_level3);
+  output_charmap (stream, "toupper", to_upper);
+  output_charmap (stream, "tolower", to_lower);
+  output_charmap (stream, "map \"totitle\";", to_title);
+  output_widthmap (stream);
+  fprintf (stream, "END LC_CTYPE\n");
+
+  if (ferror (stream) || fclose (stream))
+    {
+      fprintf (stderr, "error writing to '%s'\n", filename);
+      exit (1);
+    }
+}
+
+int
+main (int argc, char * argv[])
+{
+  if (argc != 4)
+    {
+      fprintf (stderr, "Usage: %s UnicodeData.txt PropList.txt version\n",
+              argv[0]);
+      exit (1);
+    }
+
+  fill_attributes (argv[1]);
+  fill_combining (argv[2]);
+
+  output_tables ("unicode", argv[3]);
+
+  return 0;
+}
index 965eb6b9127f50a3708e1f3701bd3fa021ff57be..b284ded6c078c3a68302c095d40c625e61b57de1 100644 (file)
@@ -33,7 +33,10 @@ END LC_IDENTIFICATION
 
 LC_CTYPE
 % The following is the 14652 i18n fdcc-set LC_CTYPE category.
-% It covers ISO/IEC 10646-1 including Cor.1 and AMD 1 thru 9
+% It covers Unicode version 3.0.
+% The character classes and mapping tables were automatically generated
+% using the gen-unicode-ctype.c program.
+
 % The "upper" class reflects the uppercase characters of class "alpha"
 upper /
 % TABLE 1 BASIC LATIN/
@@ -50,31 +53,29 @@ upper /
    <U0189>..<U018B>;<U018E>..<U0191>;<U0193>;<U0194>;/
    <U0196>..<U0198>;<U019C>;<U019D>;<U019F>;/
    <U01A0>..(2)..<U01A4>;/
-   <U01A7>;<U01A9>;<U01AC>;<U01AE>;<U01AF>;<U01B1>..<U01B3>;/
+   <U01A6>;<U01A7>;<U01A9>;<U01AC>;<U01AE>;<U01AF>;<U01B1>..<U01B3>;/
    <U01B5>;<U01B7>;<U01B8>;<U01BC>;<U01C4>;<U01C5>;<U01C7>;<U01C8>;/
    <U01CA>;<U01CB>;/
    <U01CD>..(2)..<U01DB>;/
    <U01DE>..(2)..<U01EE>;/
-   <U01F1>;<U01F2>;<U01F4>;<U01F6>;<U01F7>;<U01F8>;<U01FA>..(2)..<U01FE>;/
+   <U01F1>;<U01F2>;<U01F4>;<U01F6>..<U01F8>;<U01FA>..(2)..<U01FE>;/
 % TABLE 5 LATIN EXTENDED-B/
    <U0200>..(2)..<U021E>;<U0222>..(2)..<U0232>;/
 % TABLE 6 IPA EXTENSIONS/
-   <U0262>;<U026A>;<U0274>;<U0276>;/
-   <U0280>;<U0281>;<U028F>;<U0299>;<U029B>;<U029C>;<U029F>;/
 % TABLE 9 BASIC GREEK/
    <U0386>;<U0388>..<U038A>;<U038C>;<U038E>;<U038F>;<U0391>..<U03A1>;/
-   <U03A3>..<U03AB>;/
+   <U03A3>..<U03AB>;<U03DA>;<U03DC>;<U03DE>;/
 % TABLE 10 GREEK SYMBOLS AND COPTIC/
-   <U03E3>..(2)..<U03EF>;/
+   <U03E0>..(2)..<U03EE>;/
 % TABLE 11 CYRILLIC/
-   <U0401>..<U040C>;<U040E>..<U042F>;<U0460>..(2)..<U047E>;/
+   <U0400>..<U042F>;<U0460>..(2)..<U047E>;/
 % TABLE 12 CYRILLIC/
-   <U0480>;<U0490>..(2)..<U04BE>;<U04C1>;<U04C3>;<U04C7>;<U04CB>;/
-   <U04D0>..(2)..<U04EA>;<U04EE>..(2)..<U04F4>;<U04F8>;/
+   <U0480>;<U048C>..(2)..<U04BE>;<U04C1>;<U04C3>;<U04C7>;<U04CB>;/
+   <U04D0>..(2)..<U04F4>;<U04F8>;/
 % TABLE 13 ARMENIAN/
    <U0531>..<U0556>;/
 % TABLE 28 GEORGIAN/
-   <U10A0>..<U10C5>;/
+% is not addressed as the letters does not have a uppercase/lowercase relation/
 % TABLE 31 LATIN EXTENDED ADDITIONAL/
    <U1E00>..(2)..<U1E7E>;/
 % TABLE 32 LATIN EXTENDED ADDITIONAL/
@@ -85,167 +86,227 @@ upper /
    <U1F48>..<U1F4D>;<U1F59>..(2)..<U1F5F>;<U1F68>..<U1F6F>;/
 % TABLE 34 GREEK EXTENDED/
    <U1F88>..<U1F8F>;<U1F98>..<U1F9F>;<U1FA8>..<U1FAF>;<U1FB8>..<U1FBC>;/
-   <U1FC8>..<U1FCC>;<U1FD8>..<U1FDB>;<U1FE8>..<U1FEC>;<U1FF8>..<U1FFC>
-% TABLE 28 GEORGIAN is not addressed as the letters does not have
-%          a uppercase/lowercase relation
-%
+   <U1FC8>..<U1FCC>;<U1FD8>..<U1FDB>;<U1FE8>..<U1FEC>;<U1FF8>..<U1FFC>;/
+% LETTERLIKE SYMBOLS/
+   <U2126>;<U212A>..<U212B>;/
+% NUMBER FORMS/
+   <U2160>..<U216F>;/
+% ENCLOSED ALPHANUMERICS/
+   <U24B6>..<U24CF>;/
+% HALFWIDTH AND FULLWIDTH FORMS/
+   <UFF21>..<UFF3A>
+
 % The "lower" class reflects the lowercase characters of class "alpha"
 lower /
 % TABLE 1 BASIC LATIN/
    <U0061>..<U007A>;/
 % TABLE 2 LATIN-1 SUPPLEMENT/
-   <U00DF>..<U00F6>;<U00F8>..<U00FF>;/
+   <U00B5>;<U00DF>..<U00F6>;<U00F8>..<U00FF>;/
 % TABLE 3 LATIN EXTENDED-A/
-   <U0101>..(2)..<U0137>;<U0138>..(2)..<U0148>;/
-    <U0149>..(2)..<U0177>;<U017A>..(2)..<U017E>;<U017F>;/
+   <U0101>..(2)..<U0137>;<U013A>..(2)..<U0148>;/
+   <U014B>..(2)..<U0177>;<U017A>..(2)..<U017E>;<U017F>;/
 % TABLE 4 LATIN EXTENDED-B/
-   <U0180>;<U0183>;<U0185>;<U0188>;<U018C>;<U018D>;<U0192>;<U0195>;/
-   <U0199>..<U019B>;<U019E>;<U01A1>;<U01A3>;<U01A5>;<U01A8>;<U01AB>;<U01AD>;/
-   <U01B0>;<U01B4>;<U01B6>;<U01B9>;<U01BA>;<U01BD>;<U01C5>;<U01C6>;/
+   <U0183>;<U0185>;<U0188>;<U018C>;<U0192>;<U0195>;/
+   <U0199>;<U01A1>;<U01A3>;<U01A5>;<U01A8>;<U01AD>;/
+   <U01B0>;<U01B4>;<U01B6>;<U01B9>;<U01BD>;<U01BF>;<U01C5>;<U01C6>;/
    <U01C8>;<U01C9>;<U01CB>;<U01CC>..(2)..<U01DC>;/
-   <U01DD>..(2)..<U01F1>;<U01F3>;<U01F5>;<U01F9>;<U01FB>;<U01FD>;<U01FF>;/
+   <U01DD>..(2)..<U01EF>;<U01F2>;<U01F3>;<U01F5>;<U01F9>..(2)..<U01FF>;/
 % TABLE 5 LATIN EXTENDED-B/
    <U0201>..(2)..<U021F>;<U0223>..(2)..<U0233>;/
 % TABLE 6 IPA EXTENSIONS/
-   <U0250>..<U0293>;<U0299>..<U02A0>;<U02A3>..<U02A8>;/
+   <U0253>;<U0254>;<U0256>;<U0257>;<U0259>;<U025B>;<U0260>;<U0263>;<U0268>;/
+   <U0269>;<U026F>;<U0272>;<U0275>;<U0280>;<U0283>;<U0288>;<U028A>;<U028B>;/
+   <U0292>;/
+% COMBINING DIACRITICAL MARKS/
+   <U0345>;/
 % TABLE 9 BASIC GREEK/
-   <U0390>;<U03AC>..<U03CE>;/
+   <U03AC>..<U03AF>;<U03B1>..<U03CE>;/
 % TABLE 10 GREEK SYMBOLS AND COPTIC/
-   <U03E2>..(2)..<U03EE>;/
+   <U03D0>;<U03D1>;<U03D5>;<U03D6>;<U03DB>..(2)..<U03EF>;<U03F0>..<U03F2>;/
 % TABLE 11 CYRILLIC/
-   <U0430>..<U044F>;<U0451>..<U045C>;<U045E>;<U045F>;<U0460>..(2)..<U047F>;/
+   <U0430>..<U045F>;<U0461>..(2)..<U047F>;/
 % TABLE 12 CYRILLIC/
-   <U04801>;<U0490>..(2)..<U04BF>;<U04C2>;<U04C4>;<U04C8>;<U04CC>;/
-   <U04D1>..(2)..<U04EB>;<U04EF>..(2)..<U04F5>;<U04F9>;/
+   <U0481>;<U048D>..(2)..<U04BF>;<U04C2>;<U04C4>;<U04C8>;<U04CC>;/
+   <U04D1>..(2)..<U04F5>;<U04F9>;/
 % TABLE 13 ARMENIAN/
-   <U0561>..<U0587>;/
+   <U0561>..<U0586>;/
 % TABLE 28 GEORGIAN/
-   <U10D0>..<U10F6>;/
+% is not addressed as the letters does not have a uppercase/lowercase relation/
 % TABLE 31 and 32 LATIN EXTENDED ADDITIONAL/
-   <U1E01>..(2)..<U1E95>;<U1EA1>..(2)..<U1EF9>;/
-% TABLE 33 and 34 GREEK EXTENDED/
-   <U1F08>..<U1F0F>;<U1F18>..<U1F1D>;<U1F28>..<U1F2F>;<U1F38>..<U1F3F>;/
-   <U1F48>..<U1F4D>;<U1F59>..(2)..<U1F5F>;<U1F68>..<U1F6F>;/
-% TABLE 34 GREEK EXTENDED/
+   <U1E01>..(2)..<U1E95>;<U1E9B>;<U1EA1>..(2)..<U1EF9>;/
+% TABLE 33 GREEK EXTENDED/
    <U1F00>..<U1F07>;<U1F10>..<U1F15>;<U1F20>..<U1F27>;<U1F30>..<U1F37>;/
-   <U1F40>..<U1F45>;<U1F50>..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;/
-   <U1F80>..<U1F87>;<U1F90>..<U1F97>;<U1FA0>..<U1FA7>;<U1FB0>..<U1FB4>;/
-   <U1FB6>;<U1FB7>;<U1FC2>..<U1FC4>;<U1FC6>;<U1FC7>;<U1FD0>..<U1FD3>;/
-   <U1FD6>;<U1FD7>;<U1FE0>..<U1FE7>;<U1FF2>..<U1FF4>;<U1FF6>;<U1FF7>;/
+   <U1F40>..<U1F45>;<U1F51>..(2)..<U1F57>;<U1F60>..<U1F67>;<U1F70>..<U1F7D>;/
+% TABLE 34 GREEK EXTENDED/
+   <U1F80>..<U1F87>;<U1F90>..<U1F97>;<U1FA0>..<U1FA7>;<U1FB0>;<U1FB1>;/
+   <U1FB3>;<U1FBE>;<U1FC3>;<U1FD0>;<U1FD1>;<U1FE0>;<U1FE1>;<U1FE5>;/
+   <U1FF3>;/
 % TABLE 35 SUPERSCRIPTS AND SUBSCRIPTS, CURRENCY SYMBOLS/
-   <U207F>
-%
+% NUMBER FORMS/
+   <U2170>..<U217F>;/
+% ENCLOSED ALPHANUMERICS/
+   <U24D0>..<U24E9>;/
+% HALFWIDTH AND FULLWIDTH FORMS/
+   <UFF41>..<UFF5A>
+
 % The "alpha" class of the "i18n" FDCC-set is reflecting
 % the recommendations in TR 10176 annex A
 alpha /
 % TABLE 1 BASIC LATIN/
    <U0041>..<U005A>;<U0061>..<U007A>;/
 % TABLE 2 LATIN-1 SUPPLEMENT/
-   <U00AA>;<U00BA>;<U00C0>..<U00D6>;<U00D8>..<U00F6>;<U00F8>..<U00FF>;/
+   <U00AA>;<U00B5>;<U00BA>;<U00C0>..<U00D6>;<U00D8>..<U00F6>;/
+   <U00F8>..<U00FF>;/
 % TABLE 3 LATIN EXTENDED-A/
    <U0100>..<U017F>;/
 % TABLE 4 and 5 LATIN EXTENDED-B/
    <U0180>..<U021F>;<U0222>..<U0233>;/
 % TABLE 6 IPA EXTENSIONS/
-   <U0250>..<U02A8>;/
-% TABLE 31 and 32 LATIN EXTENDED ADDITIONAL/
-   <U1E00>..<U1E9B>;<U1EA0>..<U1EF9>;/
-% TABLE 35 SUPERSCRIPTS AND SUBSCRIPTS, CURRENCY SYMBOLS/
-   <U207F>;/
+   <U0250>..<U02AD>;/
+% SPACING MODIFIER LETTERS/
+   <U02B0>..<U02B8>;<U02BB>..<U02C1>;<U02D0>;<U02D1>;<U02E0>..<U02E4>;/
+   <U02EE>;/
+% COMBINING DIACRITICAL MARKS/
+   <U0345>;/
 % TABLE 9 BASIC GREEK/
-   <U0386>;<U0388>..<U038A>;<U038C>;<U038E>..<U03A1>;<U03A3>..<U03CE>;/
+   <U037A>;<U0386>;<U0388>..<U038A>;<U038C>;<U038E>..<U03A1>;/
+   <U03A3>..<U03CE>;/
 % TABLE 10 GREEK SYMBOLS AND COPTIC/
-   <U03D0>..<U03D6>;<U03DA>;<U03DC>;<U03DE>;<U03E0>;<U03E2>..<U03F3>;/
-% TABLE 33 and 34 GREEK EXTENDED/
-   <U1F00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/
-   <U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;/
-   <U1F80>..<U1FB4>;<U1FB6>..<U1FBC>;<U1FC2>..<U1FC4>;<U1FC6>..<U1FCC>;/
-   <U1FD0>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FE0>..<U1FEC>;<U1FF2>..<U1FF4>;/
-   <U1FF6>..<U1FFC>;/
+   <U03D0>..<U03D7>;<U03DA>..<U03F3>;/
 % TABLE 11 and 12 CYRILLIC/
-   <U0401>..<U040C>;<U040E>..<U044F>;<U0451>..<U045C>;<U045E>..<U0481>;/
-   <U0490>..<U04C4>;<U04C7>..<U04C8>;<U04CB>..<U04CC>;<U04D0>..<U04EB>;/
-   <U04EE>..<U04F5>;<U04F8>..<U04F9>;/
+   <U0400>..<U0481>;<U048C>..<U04C4>;<U04C7>..<U04C8>;<U04CB>..<U04CC>;/
+   <U04D0>..<U04F5>;<U04F8>..<U04F9>;/
 % TABLE 13 ARMENIAN/
-   <U0531>..<U0556>;<U0561>..<U0587>;/
+   <U0531>..<U0556>;<U0559>;<U0561>..<U0587>;/
 % TABLE 14 HEBREW/
-   <U05B0>..<U05B9>;<U05BB>..<U05BD>;<U05BF>;<U05C1>..<U05C2>;/
    <U05D0>..<U05EA>;<U05F0>..<U05F2>;/
 % TABLE 15 and 16 ARABIC/
-   <U0621>..<U063A>;<U0641>..<U064A>;<U0670>..<U06B7>;<U06BA>..<U06BE>;/
-   <U06C0>..<U06CE>;<U06D0>..<U06D3>;<U06D5>..<U06DC>;<U06E5>..<U06E8>;/
+   <U0621>..<U063A>;<U0640>..<U064A>;<U0671>..<U06D3>;<U06D5>;/
+   <U06E5>..<U06E6>;<U06FA>..<U06FC>;/
+% SYRIAC/
+   <U0710>;<U0712>..<U072C>;/
+% THAANA/
+   <U0780>..<U07A5>;/
 % TABLE 17 DEVANAGARI/
-   <U0901>..<U0903>;<U0905>..<U0939>;<U093E>..<U094D>;<U0950>..<U0952>;/
-   <U0958>..<U0963>;/
+   <U0905>..<U0939>;<U093D>;<U0950>;<U0958>..<U0961>;/
 % TABLE 18 BENGALI/
-   <U0981>..<U0983>;<U0985>..<U098C>;<U098F>..<U0990>;/
-   <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;/
-   <U09BE>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09DC>..<U09DD>;/
-   <U09DF>..<U09E3>;<U09F0>..<U09F1>;/
+   <U0985>..<U098C>;<U098F>;<U0990>;<U0993>..<U09A8>;<U09AA>..<U09B0>;/
+   <U09B2>;<U09B6>..<U09B9>;<U09DC>;<U09DD>;<U09DF>..<U09E1>;/
+   <U09F0>..<U09F1>;/
 % TABLE 19 GURMUKHI/
-   <U0A02>;<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;<U0A13>..<U0A28>;/
-   <U0A2A>..<U0A30>;<U0A32>..<U0A33>;<U0A35>..<U0A36>;<U0A38>..<U0A39>;/
-   <U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;/
-   <U0A5E>;<U0A74>;/
+   <U0A05>..<U0A0A>;<U0A0F>;<U0A10>;<U0A13>..<U0A28>;<U0A2A>..<U0A30>;/
+   <U0A32>;<U0A33>;<U0A35>;<U0A36>;<U0A38>;<U0A39>;<U0A59>..<U0A5C>;/
+   <U0A5E>;<U0A72>..<U0A74>;/
 % TABLE 20 GUJARATI/
-   <U0A81>..<U0A83>;<U0A85>..<U0A8B>;<U0A8D>;<U0A8F>..<U0A91>;/
-   <U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;<U0AB5>..<U0AB9>;/
-   <U0ABD>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;<U0AD0>;<U0AE0>;/
+   <U0A85>..<U0A8B>;<U0A8D>;<U0A8F>..<U0A91>;<U0A93>..<U0AA8>;/
+   <U0AAA>..<U0AB0>;<U0AB2>;<U0AB3>;<U0AB5>..<U0AB9>;<U0ABD>;<U0AD0>;/
+   <U0AE0>;/
 % TABLE 21 ORIYA/
-   <U0B01>..<U0B03>;<U0B05>..<U0B0C>;<U0B0F>..<U0B10>;<U0B13>..<U0B28>;/
-   <U0B2A>..<U0B30>;<U0B32>..<U0B33>;<U0B36>..<U0B39>;<U0B3E>..<U0B43>;/
-   <U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;/
+   <U0B05>..<U0B0C>;<U0B0F>;<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
+   <U0B32>;<U0B33>;<U0B36>..<U0B39>;<U0B3D>;<U0B5C>;<U0B5D>;/
+   <U0B5F>..<U0B61>;/
 % TABLE 22 TAMIL/
-   <U0B82>..<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;/
-   <U0B99>..<U0B9A>;<U0B9C>;<U0B9E>..<U0B9F>;<U0BA3>..<U0BA4>;/
-   <U0BA8>..<U0BAA>;<U0BAE>..<U0BB5>;<U0BB7>..<U0BB9>;<U0BBE>..<U0BC2>;/
-   <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;/
+   <U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>;<U0B9A>;/
+   <U0B9C>;<U0B9E>;<U0B9F>;<U0BA3>;<U0BA4>;<U0BA8>..<U0BAA>;/
+   <U0BAE>..<U0BB5>;<U0BB7>..<U0BB9>;/
 % TABLE 23 TELUGU/
-   <U0C01>..<U0C03>;<U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;/
-   <U0C2A>..<U0C33>;<U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
-   <U0C4A>..<U0C4D>;<U0C60>..<U0C61>;/
+   <U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;<U0C2A>..<U0C33>;/
+   <U0C35>..<U0C39>;<U0C60>..<U0C61>;/
 % TABLE 24 KANNADA/
-   <U0C82>..<U0C83>;<U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;/
-   <U0CAA>..<U0CB3>;<U0CB5>..<U0CB9>;<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;/
-   <U0CCA>..<U0CCD>;<U0CDE>;<U0CE0>..<U0CE1>;/
+   <U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;<U0CAA>..<U0CB3>;/
+   <U0CB5>..<U0CB9>;<U0CDE>;<U0CE0>..<U0CE1>;/
 % TABLE 25 MALAYALAM/
-   <U0D02>..<U0D03>;<U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;/
-   <U0D2A>..<U0D39>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/
+   <U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;/
    <U0D60>..<U0D61>;/
+% SINHALA/
+   <U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/
+   <U0DC0>..<U0DC6>;/
 % TABLE 26 THAI/
-   <U0E01>..<U0E3A>;<U0E40>..<U0E4E>;/
+   <U0E01>..<U0E30>;<U0E32>;<U0E33>;<U0E40>..<U0E46>;/
 % TABLE 27 LAO/
    <U0E81>..<U0E82>;<U0E84>;<U0E87>..<U0E88>;<U0E8A>;<U0E8D>;/
    <U0E94>..<U0E97>;<U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;<U0EA7>;/
-   <U0EAA>..<U0EAB>;<U0EAD>..<U0EAE>;<U0EB0>..<U0EB9>;<U0EBB>..<U0EBD>;/
-   <U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0EDC>..<U0EDD>;/
-% TIBETAN Amendment 6/
-   <U0F00>;<U0F18>..<U0F19>;<U0F35>;<U0F37>;<U0F39>;<U0F40>..<U0F47>;/
-   <U0F49>..<U0F69>;/
-   <U0F71>..<U0F84>;<U0F86>..<U0F8B>;<U0F90>..<U0F95>;<U0F97>;/
-   <U0F99>..<U0FAD>;<U0FB1>..<U0FB7>;<U0FB9>;/
+   <U0EAA>..<U0EAB>;<U0EAD>..<U0EB0>;<U0EB2>..<U0EB3>;<U0EBD>;/
+   <U0EC0>..<U0EC4>;<U0EC6>;<U0EDC>..<U0EDD>;/
+% TIBETAN/
+   <U0F00>;<U0F40>..<U0F47>;<U0F49>..<U0F6A>;<U0F88>..<U0F8B>;/
+% MYANMAR/
+   <U1000>..<U1021>;<U1023>..<U1027>;<U1029>;<U102A>;<U1050>..<U1055>;/
 % TABLE 28 GEORGIAN/
    <U10A0>..<U10C5>;<U10D0>..<U10F6>;/
+% HANGUL JAMO/
+   <U1100>..<U1159>;<U115F>..<U11A2>;<U11A8>..<U11F9>;/
+% ETHIOPIC/
+   <U1200>..<U1206>;<U1208>..<U1246>;<U1248>;<U124A>..<U124D>;/
+   <U1250>..<U1256>;<U1258>;<U125A>..<U125D>;<U1260>..<U1286>;<U1288>;/
+   <U128A>..<U128D>;<U1290>..<U12AE>;<U12B0>;<U12B2>..<U12B5>;/
+   <U12B8>..<U12BE>;<U12C0>;<U12C2>..<U12C5>;<U12C8>..<U12CE>;/
+   <U12D0>..<U12D6>;<U12D8>..<U12EE>;<U12F0>..<U130E>;<U1310>;/
+   <U1312>..<U1315>;<U1318>..<U131E>;<U1320>..<U1346>;<U1348>..<U135A>;/
+% CHEROKEE/
+   <U13A0>..<U13F4>;/
+% UNIFIED CANADIAN ABORIGINAL SYLLABICS/
+   <U1401>..<U166C>;<U166F>..<U1676>;/
+% OGHAM/
+   <U1681>..<U169A>;/
+% RUNIC/
+   <U16A0>..<U16EA>;/
+% KHMER/
+   <U1780>..<U17B3>;/
+% MONGOLIAN/
+   <U1820>..<U1877>;<U1880>..<U18A8>;/
+% TABLE 31 and 32 LATIN EXTENDED ADDITIONAL/
+   <U1E00>..<U1E9B>;<U1EA0>..<U1EF9>;/
+% TABLE 33 and 34 GREEK EXTENDED/
+   <U1F00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/
+   <U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;/
+   <U1F80>..<U1FB4>;<U1FB6>..<U1FBC>;<U1FBE>;<U1FC2>..<U1FC4>;/
+   <U1FC6>..<U1FCC>;<U1FD0>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FE0>..<U1FEC>;/
+   <U1FF2>..<U1FF4>;<U1FF6>..<U1FFC>;/
+% TABLE 35 SUPERSCRIPTS AND SUBSCRIPTS, CURRENCY SYMBOLS/
+   <U207F>;/
+% LETTERLIKE SYMBOLS/
+   <U2102>;<U2107>;<U210A>..<U2113>;<U2115>;<U2119>..<U211D>;<U2124>;/
+   <U2126>;<U2128>..<U212D>;<U212F>..<U2131>;<U2133>..<U2139>;/
+% NUMBER FORMS/
+   <U2160>..<U2183>;/
+% ENCLOSED ALPHANUMERICS/
+   <U249C>..<U24E9>;/
+% CJK SYMBOLS AND PUNCTUATION/
+   <U3005>..<U3007>;<U3021>..<U3029>;<U3031>..<U3035>;<U3038>..<U303A>;/
 % TABLE 50 HIRAGANA/
-   <U3041>..<U3093>;<U309B>..<U309C>;/
+   <U3041>..<U3094>;<U309D>..<U309E>;/
 % TABLE 51 KATAKANA/
-   <U30A1>..<U30F6>;<U30FB>..<U30FC>;/
+   <U30A1>..<U30FA>;<U30FC>..<U30FE>;/
 % TABLE 52 BOPOMOFO/
    <U3105>..<U312C>;/
-% Miscellaneous/
-   <U00B5>;<U02B0>..<U02B8>;<U02BB>;<U02BD>..<U02C1>;/
-   <U02D0>..<U02D1>;<U02E0>..<U02E4>;<U037A>;<U0559>;<U093D>;<U0B3D>;/
-   <U1FBE>;<U2160>..<U2182>;<U3021>..<U3029>
-
-% XXX The original version of this also contained the CJK and Hangul
-% XXX ideographs here.  This seems not to be useful since nobody
-% XXX expects them to be here and it bloats the tables.
-% CJK unified ideographs/
-%   <U4E01>..<U9FA5>;/
-% HANGUL amendment 5/
-%   <UAC00>..<UD7A3>;/
+% HANGUL COMPATIBILITY JAMO/
+   <U3131>..<U318E>;/
+% BOPOMOFO EXTENDED/
+   <U31A0>..<U31B7>;/
+% CJK UNIFIED IDEOGRAPHS EXTENSION/
+   <U3400>..<U4DB5>;/
+% CJK UNIFIED IDEOGRAPHS/
+   <U4E00>..<U9FA5>;/
+% YI SYLLABLES/
+   <UA000>..<UA48C>;/
+% HANGUL SYLLABLES/
+   <UAC00>..<UD7A3>;/
+% CJK COMPATIBILITY IDEOGRAPHS/
+   <UF900>..<UFA2D>;/
+% ALPHABETIC PRESENTATION FORMS/
+   <UFB00>..<UFB06>;<UFB13>..<UFB17>;<UFB1D>;<UFB1F>..<UFB28>;/
+   <UFB2A>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;<UFB40>;<UFB41>;<UFB43>;/
+   <UFB44>;<UFB46>..<UFB4F>;/
+% ARABIC PRESENTATION FORMS/
+   <UFB50>..<UFBB1>;<UFBD3>..<UFD3D>;<UFD50>..<UFD8F>;<UFD92>..<UFDC7>;/
+   <UFDF0>..<UFDFB>;/
+% ARABIC PRESENTATION FORMS/
+   <UFE70>..<UFE72>;<UFE74>;<UFE76>..<UFEFC>;/
+% HALFWIDTH AND FULLWIDTH FORMS/
+   <UFF21>..<UFF3A>;<UFF41>..<UFF5A>;<UFF66>..<UFFBE>;<UFFC2>..<UFFC7>;/
+   <UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>
 
-%
 % The "digit" class of the "i18n" FDCC-set is reflecting
 % the recommendations in TR 10176 annex A
 digit /
@@ -275,120 +336,277 @@ digit /
    <U0E50>..<U0E59>;/
 % TABLE 27 LAO/
    <U0ED0>..<U0ED9>;/
-% TIBETAN Amendment 6/
-   <U0F20>..<U0F29>
-%
+% TIBETAN/
+   <U0F20>..<U0F29>;/
+% MYANMAR/
+   <U1040>..<U1049>;/
+% ETHIOPIC/
+   <0>;<U1369>..<U1371>;/
+% KHMER/
+   <U17E0>..<U17E9>;/
+% MONGOLIAN/
+   <U1810>..<U1819>;/
+% HALFWIDTH AND FULLWIDTH FORMS/
+   <UFF10>..<UFF19>
+
 outdigit <U0030>..<U0039>
-%
+
 space /
 % ISO/IEC 6429/
-  <U0009>..<U000D>;/
+   <U0009>..<U000D>;/
 % TABLE 1 BASIC LATIN/
-  <U0020>;/
+   <U0020>;/
+% OGHAM/
+   <U1680>;/
 % TABLE 35 GENERAL PUNCTUATION/
-  <U2000>..<U2006>;<U2008>..<U200B>;/
+   <U2000>..<U2006>;<U2008>..<U200B>;<U2028>;<U2029>;/
 % TABLE 50 CJK SYMBOLS AND PUNCTUATION, HIRAGANA/
-  <U3000>
-%
-cntrl   <U0000>..<U001F>;<U007F>..<U009F>
-%
+   <U3000>
+
+cntrl /
+   <U0000>..<U001F>;<U007F>..<U009F>;/
+% Treat the Line/Paragraph Separators as control characters, like Line Feed./
+   <U2028>;<U2029>
+
 punct /
    <U0021>..<U002F>;<U003A>..<U0040>;<U005B>..<U0060>;<U007B>..<U007E>;/
-   <U00A1>..<U00A9>;<U00AB>..<U00B4>;<U00B6>..<U00B9>;<U00BB>..<U00BF>;/
-   <U00D7>;<U00F7>;/
-   <U037E>;<U0482>;<U055A>..<U055F>;<U0589>;<U05BE>;<U05C0>;<U05C3>;/
-   <U05F3>;<U05F4>;<U060C>;<U061B>;<U061F>;<U0640>;<U064B>..<U0652>;/
-   <U066A>..<U066D>;<U06D4>;<U06DD>..<U06E1>;<U06E9>..<U06EC>;<U10FB>;/
-   <U2010>..<U2029>;<U2030>..<U2046>;<U20A0>..<U20AA>;<U2100>..<U210B>;/
-   <U210D>..<U2110>;<U2112>..<U211B>;<U211D>..<U2127>;<U212A>..<U212C>;/
-   <U212E>..<U2138>;<U2200>..<U22F1>;<U2300>;<U2302>..<U237A>;<U2400>..<U2424>;/
-   <U2440>..<U244A>;<U2580>..<U2595>;<U25A0>..<U25EF>;<U2600>..<U2613>;/
-   <U261A>..<U266F>;<U2701>..<U2704>;<U2706>..<U2709>;<U270C>..<U2727>;/
-   <U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;<U2758>..<U275E>;/
-   <U2761>..<U2767>;<U3000>..<U3020>;<U3030>;<U3036>;<U3037>;<U303F>;<U3164>;/
-   <U3190>..<U319F>;<U3200>..<U321C>;<U3220>..<U3243>;<U3260>..<U327B>;/
-   <U327F>..<U32B0>;<U32C0>..<U32CB>;<U32D0>..<U32FE>;<U3300>..<U3376>;/
-   <U337B>..<U33DD>;<U33E0>..<U33FE>;<UFD3E>;<UFD3F>;<UFE49>..<UFE52>;/
-   <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFEFF>;<UFF01>..<UFF0F>;<UFF1A>..<UFF20>;/
-   <UFF3B>..<UFF40>;<UFF5B>..<UFF5E>;<UFF61>..<UFF65>;<UFF70>;<UFF9E>..<UFFA0>;/
-   <UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFFD>
-%
+   <U00A0>..<U00A9>;<U00AB>..<U00B4>;<U00B6>..<U00B9>;<U00BB>..<U00BF>;/
+   <U00D7>;<U00F7>;<U02B9>..<U02BA>;<U02C2>..<U02CF>;<U02D2>..<U02DF>;/
+   <U02E5>..<U02ED>;<U0300>..<U0344>;<U0346>..<U034E>;<U0360>..<U0362>;/
+   <U0374>..<U0375>;<U037E>;<U0384>..<U0385>;<U0387>;<U0482>..<U0486>;/
+   <U0488>..<U0489>;<U055A>..<U055F>;<U0589>..<U058A>;<U0591>..<U05A1>;/
+   <U05A3>..<U05B9>;<U05BB>..<U05C4>;<U05F3>..<U05F4>;<U060C>;<U061B>;/
+   <U061F>;<U064B>..<U0655>;<U066A>..<U066D>;<U0670>;<U06D4>;/
+   <U06D6>..<U06E4>;<U06E7>..<U06ED>;<U06FD>..<U06FE>;<U0700>..<U070D>;/
+   <U070F>;<U0711>;<U0730>..<U074A>;<U07A6>..<U07B0>;<U0901>..<U0903>;/
+   <U093C>;<U093E>..<U094D>;<U0951>..<U0954>;<U0962>..<U0965>;<U0970>;/
+   <U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;/
+   <U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;<U09F2>..<U09FA>;<U0A02>;/
+   <U0A3C>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;/
+   <U0A70>..<U0A71>;<U0A81>..<U0A83>;<U0ABC>;<U0ABE>..<U0AC5>;/
+   <U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;<U0B01>..<U0B03>;<U0B3C>;/
+   <U0B3E>..<U0B43>;<U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;/
+   <U0B70>;<U0B82>..<U0B83>;<U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;/
+   <U0BCA>..<U0BCD>;<U0BD7>;<U0BF0>..<U0BF2>;<U0C01>..<U0C03>;/
+   <U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;/
+   <U0C82>..<U0C83>;<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;/
+   <U0CD5>..<U0CD6>;<U0D02>..<U0D03>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;/
+   <U0D4A>..<U0D4D>;<U0D57>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;/
+   <U0DD6>;<U0DD8>..<U0DDF>;<U0DF2>..<U0DF4>;<U0E31>;<U0E34>..<U0E3A>;/
+   <U0E3F>;<U0E47>..<U0E4F>;<U0E5A>..<U0E5B>;<U0EB1>;<U0EB4>..<U0EB9>;/
+   <U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F01>..<U0F1F>;<U0F2A>..<U0F3F>;/
+   <U0F71>..<U0F87>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;<U0FBE>..<U0FCC>;/
+   <U0FCF>;<U102C>..<U1032>;<U1036>..<U1039>;<U104A>..<U104F>;/
+   <U1056>..<U1059>;<U10FB>;<U1361>..<U1368>;<U1372>..<U137C>;/
+   <U166D>..<U166E>;<U169B>..<U169C>;<U16EB>..<U16F0>;<U17B4>..<U17DC>;/
+   <U1800>..<U180E>;<U18A9>;<U1FBD>;<U1FBF>..<U1FC1>;<U1FCD>..<U1FCF>;/
+   <U1FDD>..<U1FDF>;<U1FED>..<U1FEF>;<U1FFD>..<U1FFE>;<U2007>;/
+   <U200C>..<U2027>;<U202A>..<U2046>;<U2048>..<U204D>;<U206A>..<U2070>;/
+   <U2074>..<U207E>;<U2080>..<U208E>;<U20A0>..<U20AF>;<U20D0>..<U20E3>;/
+   <U2100>..<U2101>;<U2103>..<U2106>;<U2108>..<U2109>;<U2114>;/
+   <U2116>..<U2118>;<U211E>..<U2123>;<U2125>;<U2127>;<U212E>;<U2132>;/
+   <U213A>;<U2153>..<U215F>;<U2190>..<U21F3>;<U2200>..<U22F1>;/
+   <U2300>..<U237B>;<U237D>..<U239A>;<U2400>..<U2426>;<U2440>..<U244A>;/
+   <U2460>..<U249B>;<U24EA>;<U2500>..<U2595>;<U25A0>..<U25F7>;/
+   <U2600>..<U2613>;<U2619>..<U2671>;<U2701>..<U2704>;<U2706>..<U2709>;/
+   <U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/
+   <U2758>..<U275E>;<U2761>..<U2767>;<U2776>..<U2794>;<U2798>..<U27AF>;/
+   <U27B1>..<U27BE>;<U2800>..<U28FF>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;/
+   <U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;<U3001>..<U3004>;<U3008>..<U3020>;/
+   <U302A>..<U3030>;<U3036>..<U3037>;<U303E>..<U303F>;<U3099>..<U309C>;/
+   <U30FB>;<U3190>..<U319F>;<U3200>..<U321C>;<U3220>..<U3243>;/
+   <U3260>..<U327B>;<U327F>..<U32B0>;<U32C0>..<U32CB>;<U32D0>..<U32FE>;/
+   <U3300>..<U3376>;<U337B>..<U33DD>;<U33E0>..<U33FE>;<UA490>..<UA4A1>;/
+   <UA4A4>..<UA4B3>;<UA4B5>..<UA4C0>;<UA4C2>..<UA4C4>;<UA4C6>;/
+   <UD800>..<UF8FF>;<UFB1E>;<UFB29>;<UFD3E>..<UFD3F>;<UFE20>..<UFE23>;/
+   <UFE30>..<UFE44>;<UFE49>..<UFE52>;<UFE54>..<UFE66>;<UFE68>..<UFE6B>;/
+   <UFEFF>;<UFF01>..<UFF0F>;<UFF1A>..<UFF20>;<UFF3B>..<UFF40>;/
+   <UFF5B>..<UFF5E>;<UFF61>..<UFF65>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/
+   <UFFF9>..<UFFFD>
+
 graph /
-   <U0021>..<U007E>;<U00A1>..<U021F>;<U0222>..<U0233>;/
-   <U0250>..<U02A8>;<U02B0>..<U02DE>;<U02E0>..<U02E9>;<U0300>..<U0345>;/
-   <U0360>;<U0361>;<U0374>;<U0375>;<U037A>;<U037E>;<U0384>..<U038A>;<U038C>;/
-   <U038E>..<U03A1>;<U03A3>..<U03CE>;<U03D0>..<U03D6>;<U03DA>;<U03DC>;<U03DE>;/
-   <U03E0>;<U03E2>..<U03F3>;<U0401>..<U040C>;<U040E>..<U044F>;/
-   <U0451>..<U045C>;<U045E>..<U0486>;<U0490>..<U04C4>;<U04C7>;<U04C8>;/
-   <U04CB>;<U04CC>;<U04D0>..<U04EB>;<U04EE>..<U04F5>;<U04F8>;<U04F9>;/
-   <U0531>..<U0556>;<U0559>..<U055F>;<U0561>..<U0587>;<U0589>;/
-   <U0591>..<U05A1>;<U05A3>..<U05AF>;<U05B0>..<U05B9>;/
-   <U05BB>..<U05C4>;<U05D0>..<U05EA>;<U05F0>..<U05F4>;<U060C>;<U061B>;<U061F>;/
-   <U0621>..<U063A>;<U0640>..<U0652>;<U0660>..<U066D>;<U0670>..<U06B7>;/
-   <U06BA>..<U06BE>;<U06C0>..<U06CE>;<U06D0>..<U06ED>;<U06F0>..<U06F9>;/
-   <U0901>..<U0903>;<U0905>..<U0939>;<U093C>..<U094D>;<U0950>..<U0954>;/
-   <U0958>..<U0970>;<U0981>..<U0983>;<U0985>..<U098C>;<U098F>;<U0990>;/
-   <U0993>..<U09A8>;<U09AA>..<U09B0>;<U09B2>;<U09B6>..<U09B9>;<U09BC>;/
-   <U09BE>..<U09C4>;<U09C7>;<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09DC>;<U09DD>;/
-   <U09DF>..<U09E3>;<U09E6>..<U09FA>;<U0A02>;<U0A05>..<U0A0A>;<U0A0F>;<U0A10>;/
-   <U0A13>..<U0A28>;<U0A2A>..<U0A30>;<U0A32>;<U0A33>;<U0A35>;<U0A36>;/
-   <U0A38>;<U0A39>;<U0A3C>;<U0A3E>..<U0A42>;<U0A47>;<U0A48>;<U0A4B>..<U0A4D>;/
-   <U0A59>..<U0A5C>;<U0A5E>;<U0A66>..<U0A74>;<U0A81>..<U0A83>;<U0A85>..<U0A8B>;/
-   <U0A8D>;<U0A8F>..<U0A91>;<U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;/
-   <U0AB2>;<U0AB3>;<U0AB5>..<U0AB9>;<U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;/
-   <U0ACB>..<U0ACD>;<U0AD0>;<U0AE0>;<U0AE6>..<U0AEF>;<U0B01>..<U0B03>;/
-   <U0B05>..<U0B0C>;<U0B0F>;<U0B10>;<U0B13>..<U0B28>;<U0B2A>..<U0B30>;/
-   <U0B32>;<U0B33>;<U0B36>..<U0B39>;<U0B3C>..<U0B43>;<U0B47>;<U0B48>;/
-   <U0B4B>..<U0B4D>;<U0B56>;<U0B57>;<U0B5C>;<U0B5D>;<U0B5F>..<U0B61>;/
-   <U0B66>..<U0B70>;<U0B82>;<U0B83>;<U0B85>..<U0B8A>;<U0B8E>..<U0B90>;/
-   <U0B92>..<U0B95>;<U0B99>;<U0B9A>;<U0B9C>;<U0B9E>;<U0B9F>;<U0BA3>;<U0BA4>;/
-   <U0BA8>..<U0BAA>;<U0BAE>..<U0BB5>;<U0BB7>..<U0BB9>;<U0BBE>..<U0BC2>;/
-   <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0BE7>..<U0BF2>;<U0C01>..<U0C03>;/
+   <U0021>..<U007E>;<U00A0>..<U021F>;<U0222>..<U0233>;<U0250>..<U02AD>;/
+   <U02B0>..<U02EE>;<U0300>..<U034E>;<U0360>..<U0362>;<U0374>..<U0375>;/
+   <U037A>;<U037E>;<U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;/
+   <U03A3>..<U03CE>;<U03D0>..<U03D7>;<U03DA>..<U03F3>;<U0400>..<U0486>;/
+   <U0488>..<U0489>;<U048C>..<U04C4>;<U04C7>..<U04C8>;<U04CB>..<U04CC>;/
+   <U04D0>..<U04F5>;<U04F8>..<U04F9>;<U0531>..<U0556>;<U0559>..<U055F>;/
+   <U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05A1>;<U05A3>..<U05B9>;/
+   <U05BB>..<U05C4>;<U05D0>..<U05EA>;<U05F0>..<U05F4>;<U060C>;<U061B>;/
+   <U061F>;<U0621>..<U063A>;<U0640>..<U0655>;<U0660>..<U066D>;/
+   <U0670>..<U06ED>;<U06F0>..<U06FE>;<U0700>..<U070D>;<U070F>..<U072C>;/
+   <U0730>..<U074A>;<U0780>..<U07B0>;<U0901>..<U0903>;<U0905>..<U0939>;/
+   <U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;<U0981>..<U0983>;/
+   <U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;<U09AA>..<U09B0>;/
+   <U09B2>;<U09B6>..<U09B9>;<U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;/
+   <U09CB>..<U09CD>;<U09D7>;<U09DC>..<U09DD>;<U09DF>..<U09E3>;/
+   <U09E6>..<U09FA>;<U0A02>;<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;/
+   <U0A13>..<U0A28>;<U0A2A>..<U0A30>;<U0A32>..<U0A33>;<U0A35>..<U0A36>;/
+   <U0A38>..<U0A39>;<U0A3C>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;/
+   <U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;<U0A5E>;<U0A66>..<U0A74>;/
+   <U0A81>..<U0A83>;<U0A85>..<U0A8B>;<U0A8D>;<U0A8F>..<U0A91>;/
+   <U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;<U0AB5>..<U0AB9>;/
+   <U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;<U0AD0>;<U0AE0>;/
+   <U0AE6>..<U0AEF>;<U0B01>..<U0B03>;<U0B05>..<U0B0C>;<U0B0F>..<U0B10>;/
+   <U0B13>..<U0B28>;<U0B2A>..<U0B30>;<U0B32>..<U0B33>;<U0B36>..<U0B39>;/
+   <U0B3C>..<U0B43>;<U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;/
+   <U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;<U0B66>..<U0B70>;<U0B82>..<U0B83>;/
+   <U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>..<U0B9A>;/
+   <U0B9C>;<U0B9E>..<U0B9F>;<U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;/
+   <U0BAE>..<U0BB5>;<U0BB7>..<U0BB9>;<U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;/
+   <U0BCA>..<U0BCD>;<U0BD7>;<U0BE7>..<U0BF2>;<U0C01>..<U0C03>;/
    <U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;<U0C2A>..<U0C33>;/
    <U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;/
-   <U0C55>;<U0C56>;<U0C60>;<U0C61>;<U0C66>..<U0C6F>;<U0C82>;<U0C83>;/
+   <U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;<U0C82>..<U0C83>;/
    <U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;<U0CAA>..<U0CB3>;/
    <U0CB5>..<U0CB9>;<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;/
-   <U0CD5>;<U0CD6>;<U0CDE>;<U0CE0>;<U0CE1>;<U0CE6>..<U0CEF>;<U0D02>;<U0D03>;/
-   <U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;<U0D2A>..<U0D39>;/
-   <U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;<U0D60>;<U0D61>;/
-   <U0D66>..<U0D6F>;<U0E01>..<U0E3A>;<U0E3F>..<U0E5B>;<U0E81>;<U0E82>;<U0E84>;/
-   <U0E87>;<U0E88>;<U0E8A>;<U0E8D>;<U0E94>..<U0E97>;<U0E99>..<U0E9F>;/
-   <U0EA1>..<U0EA3>;<U0EA5>;<U0EA7>;<U0EAA>;<U0EAB>;<U0EAD>..<U0EB9>;/
-   <U0EBB>..<U0EBD>;<U0EC0>..<U0EC4>;<U0EC6>;<U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;/
-   <U0EDC>;<U0EDD>;/
-   <U0F00>..<U0F47>;<U0F49>..<U0F69>;<U0F71>..<U0F7F>;/
+   <U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE1>;<U0CE6>..<U0CEF>;/
+   <U0D02>..<U0D03>;<U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;/
+   <U0D2A>..<U0D39>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/
+   <U0D57>;<U0D60>..<U0D61>;<U0D66>..<U0D6F>;<U0D82>..<U0D83>;/
+   <U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/
+   <U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;/
+   <U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;<U0E3F>..<U0E5B>;<U0E81>..<U0E82>;/
+   <U0E84>;<U0E87>..<U0E88>;<U0E8A>;<U0E8D>;<U0E94>..<U0E97>;/
+   <U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;<U0EA7>;<U0EAA>..<U0EAB>;/
+   <U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;<U0EC0>..<U0EC4>;<U0EC6>;/
+   <U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;<U0EDC>..<U0EDD>;<U0F00>..<U0F47>;/
+   <U0F49>..<U0F6A>;<U0F71>..<U0F8B>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;/
+   <U0FBE>..<U0FCC>;<U0FCF>;<U1000>..<U1021>;<U1023>..<U1027>;/
+   <U1029>..<U102A>;<U102C>..<U1032>;<U1036>..<U1039>;<U1040>..<U1059>;/
    <U10A0>..<U10C5>;<U10D0>..<U10F6>;<U10FB>;<U1100>..<U1159>;/
-   <U115F>..<U11A2>;<U11A8>..<U11F9>;<U1E00>..<U1E9B>;<U1EA0>..<U1EF9>;/
-   <U1F00>..<U1F15>;<U1F18>..<U1F1D>;<U1F20>..<U1F45>;<U1F48>..<U1F4D>;/
-   <U1F50>..<U1F57>;<U1F59>;<U1F5B>;<U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;/
-   <U1FB6>..<U1FC4>;<U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;/
-   <U1FF2>..<U1FF4>;<U1FF6>..<U1FFE>;<U2000>..<U202E>;<U2030>..<U2046>;/
-   <U206A>..<U2070>;<U2074>..<U208E>;<U20A0>..<U20AB>;<U20D0>..<U20E1>;/
-   <U2100>..<U2138>;<U2153>..<U2182>;<U2190>..<U21EA>;<U2200>..<U22F1>;<U2300>;/
-   <U2302>..<U237A>;<U2400>..<U2424>;<U2440>..<U244A>;<U2460>..<U24EA>;/
-   <U2500>..<U2595>;<U25A0>..<U25EF>;<U2600>..<U2613>;<U261A>..<U266F>;/
-   <U2701>..<U2704>;<U2706>..<U2709>;<U270C>..<U2727>;<U2729>..<U274B>;<U274D>;/
-   <U274F>..<U2752>;<U2756>;<U2758>..<U275E>;<U2761>..<U2767>;<U2776>..<U2794>;/
-   <U2798>..<U27AF>;<U27B1>..<U27BE>;<U3000>..<U3037>;<U303F>;<U3041>..<U3094>;/
-   <U3099>..<U309E>;<U30A1>..<U30FE>;<U3105>..<U312C>;<U3131>..<U318E>;/
-   <U3190>..<U319F>;<U3200>..<U321C>;<U3220>..<U3243>;<U3260>..<U327B>;/
-   <U327F>..<U32B0>;<U32C0>..<U32CB>;<U32D0>..<U32FE>;<U3300>..<U3376>;/
-   <U337B>..<U33DD>;<U33E0>..<U33FE>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;/
-   <UFB1E>..<UFB36>;<UFB38>..<UFB3C>;<UFB3E>;<UFB40>;<UFB41>;<UFB43>;<UFB44>;/
+   <U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1206>;<U1208>..<U1246>;/
+   <U1248>;<U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/
+   <U1260>..<U1286>;<U1288>;<U128A>..<U128D>;<U1290>..<U12AE>;<U12B0>;/
+   <U12B2>..<U12B5>;<U12B8>..<U12BE>;<U12C0>;<U12C2>..<U12C5>;/
+   <U12C8>..<U12CE>;<U12D0>..<U12D6>;<U12D8>..<U12EE>;<U12F0>..<U130E>;/
+   <U1310>;<U1312>..<U1315>;<U1318>..<U131E>;<U1320>..<U1346>;/
+   <U1348>..<U135A>;<U1361>..<U137C>;<U13A0>..<U13F4>;<U1401>..<U1676>;/
+   <U1681>..<U169C>;<U16A0>..<U16F0>;<U1780>..<U17DC>;<U17E0>..<U17E9>;/
+   <U1800>..<U180E>;<U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18A9>;/
+   <U1E00>..<U1E9B>;<U1EA0>..<U1EF9>;<U1F00>..<U1F15>;<U1F18>..<U1F1D>;/
+   <U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;<U1F59>;<U1F5B>;/
+   <U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;<U1FB6>..<U1FC4>;/
+   <U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;<U1FF2>..<U1FF4>;/
+   <U1FF6>..<U1FFE>;<U2007>;<U200C>..<U2027>;<U202A>..<U2046>;/
+   <U2048>..<U204D>;<U206A>..<U2070>;<U2074>..<U208E>;<U20A0>..<U20AF>;/
+   <U20D0>..<U20E3>;<U2100>..<U213A>;<U2153>..<U2183>;<U2190>..<U21F3>;/
+   <U2200>..<U22F1>;<U2300>..<U237B>;<U237D>..<U239A>;<U2400>..<U2426>;/
+   <U2440>..<U244A>;<U2460>..<U24EA>;<U2500>..<U2595>;<U25A0>..<U25F7>;/
+   <U2600>..<U2613>;<U2619>..<U2671>;<U2701>..<U2704>;<U2706>..<U2709>;/
+   <U270C>..<U2727>;<U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;/
+   <U2758>..<U275E>;<U2761>..<U2767>;<U2776>..<U2794>;<U2798>..<U27AF>;/
+   <U27B1>..<U27BE>;<U2800>..<U28FF>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;/
+   <U2F00>..<U2FD5>;<U2FF0>..<U2FFB>;<U3001>..<U303A>;<U303E>..<U303F>;/
+   <U3041>..<U3094>;<U3099>..<U309E>;<U30A1>..<U30FE>;<U3105>..<U312C>;/
+   <U3131>..<U318E>;<U3190>..<U31B7>;<U3200>..<U321C>;<U3220>..<U3243>;/
+   <U3260>..<U327B>;<U327F>..<U32B0>;<U32C0>..<U32CB>;<U32D0>..<U32FE>;/
+   <U3300>..<U3376>;<U337B>..<U33DD>;<U33E0>..<U33FE>;<U3400>..<U4DB5>;/
+   <U4E00>..<U9FA5>;<UA000>..<UA48C>;<UA490>..<UA4A1>;<UA4A4>..<UA4B3>;/
+   <UA4B5>..<UA4C0>;<UA4C2>..<UA4C4>;<UA4C6>;<UAC00>..<UD7A3>;/
+   <UD800>..<UFA2D>;<UFB00>..<UFB06>;<UFB13>..<UFB17>;<UFB1D>..<UFB36>;/
+   <UFB38>..<UFB3C>;<UFB3E>;<UFB40>..<UFB41>;<UFB43>..<UFB44>;/
    <UFB46>..<UFBB1>;<UFBD3>..<UFD3F>;<UFD50>..<UFD8F>;<UFD92>..<UFDC7>;/
    <UFDF0>..<UFDFB>;<UFE20>..<UFE23>;<UFE30>..<UFE44>;<UFE49>..<UFE52>;/
-   <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE72>;<UFE74>;<UFE76>..<UFEFC>;/
-   <UFEFF>;<UFF01>..<UFF5E>;<UFF61>..<UFFBE>;<UFFC2>..<UFFC7>;/
-   <UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;/
-   <UFFE8>..<UFFEE>;<UFFFD>
-%
-% "print" is by default "graph", and the <space> character
-%
-xdigit  <U0030>..<U0039>;<U0041>..<U0046>;<U0061>..<U0066>
-%
-blank   <U0009>;<U0020>;<U2000>..<U2006>;<U2008>..<U200B>;<U3000>
-%
+   <UFE54>..<UFE66>;<UFE68>..<UFE6B>;<UFE70>..<UFE72>;<UFE74>;/
+   <UFE76>..<UFEFC>;<UFEFF>;<UFF01>..<UFF5E>;<UFF61>..<UFFBE>;/
+   <UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;<UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;/
+   <UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;<UFFF9>..<UFFFD>
+
+print /
+   <U0020>..<U007E>;<U00A0>..<U021F>;<U0222>..<U0233>;<U0250>..<U02AD>;/
+   <U02B0>..<U02EE>;<U0300>..<U034E>;<U0360>..<U0362>;<U0374>..<U0375>;/
+   <U037A>;<U037E>;<U0384>..<U038A>;<U038C>;<U038E>..<U03A1>;/
+   <U03A3>..<U03CE>;<U03D0>..<U03D7>;<U03DA>..<U03F3>;<U0400>..<U0486>;/
+   <U0488>..<U0489>;<U048C>..<U04C4>;<U04C7>..<U04C8>;<U04CB>..<U04CC>;/
+   <U04D0>..<U04F5>;<U04F8>..<U04F9>;<U0531>..<U0556>;<U0559>..<U055F>;/
+   <U0561>..<U0587>;<U0589>..<U058A>;<U0591>..<U05A1>;<U05A3>..<U05B9>;/
+   <U05BB>..<U05C4>;<U05D0>..<U05EA>;<U05F0>..<U05F4>;<U060C>;<U061B>;/
+   <U061F>;<U0621>..<U063A>;<U0640>..<U0655>;<U0660>..<U066D>;/
+   <U0670>..<U06ED>;<U06F0>..<U06FE>;<U0700>..<U070D>;<U070F>..<U072C>;/
+   <U0730>..<U074A>;<U0780>..<U07B0>;<U0901>..<U0903>;<U0905>..<U0939>;/
+   <U093C>..<U094D>;<U0950>..<U0954>;<U0958>..<U0970>;<U0981>..<U0983>;/
+   <U0985>..<U098C>;<U098F>..<U0990>;<U0993>..<U09A8>;<U09AA>..<U09B0>;/
+   <U09B2>;<U09B6>..<U09B9>;<U09BC>;<U09BE>..<U09C4>;<U09C7>..<U09C8>;/
+   <U09CB>..<U09CD>;<U09D7>;<U09DC>..<U09DD>;<U09DF>..<U09E3>;/
+   <U09E6>..<U09FA>;<U0A02>;<U0A05>..<U0A0A>;<U0A0F>..<U0A10>;/
+   <U0A13>..<U0A28>;<U0A2A>..<U0A30>;<U0A32>..<U0A33>;<U0A35>..<U0A36>;/
+   <U0A38>..<U0A39>;<U0A3C>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;/
+   <U0A4B>..<U0A4D>;<U0A59>..<U0A5C>;<U0A5E>;<U0A66>..<U0A74>;/
+   <U0A81>..<U0A83>;<U0A85>..<U0A8B>;<U0A8D>;<U0A8F>..<U0A91>;/
+   <U0A93>..<U0AA8>;<U0AAA>..<U0AB0>;<U0AB2>..<U0AB3>;<U0AB5>..<U0AB9>;/
+   <U0ABC>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;<U0AD0>;<U0AE0>;/
+   <U0AE6>..<U0AEF>;<U0B01>..<U0B03>;<U0B05>..<U0B0C>;<U0B0F>..<U0B10>;/
+   <U0B13>..<U0B28>;<U0B2A>..<U0B30>;<U0B32>..<U0B33>;<U0B36>..<U0B39>;/
+   <U0B3C>..<U0B43>;<U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;/
+   <U0B5C>..<U0B5D>;<U0B5F>..<U0B61>;<U0B66>..<U0B70>;<U0B82>..<U0B83>;/
+   <U0B85>..<U0B8A>;<U0B8E>..<U0B90>;<U0B92>..<U0B95>;<U0B99>..<U0B9A>;/
+   <U0B9C>;<U0B9E>..<U0B9F>;<U0BA3>..<U0BA4>;<U0BA8>..<U0BAA>;/
+   <U0BAE>..<U0BB5>;<U0BB7>..<U0BB9>;<U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;/
+   <U0BCA>..<U0BCD>;<U0BD7>;<U0BE7>..<U0BF2>;<U0C01>..<U0C03>;/
+   <U0C05>..<U0C0C>;<U0C0E>..<U0C10>;<U0C12>..<U0C28>;<U0C2A>..<U0C33>;/
+   <U0C35>..<U0C39>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;<U0C4A>..<U0C4D>;/
+   <U0C55>..<U0C56>;<U0C60>..<U0C61>;<U0C66>..<U0C6F>;<U0C82>..<U0C83>;/
+   <U0C85>..<U0C8C>;<U0C8E>..<U0C90>;<U0C92>..<U0CA8>;<U0CAA>..<U0CB3>;/
+   <U0CB5>..<U0CB9>;<U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;/
+   <U0CD5>..<U0CD6>;<U0CDE>;<U0CE0>..<U0CE1>;<U0CE6>..<U0CEF>;/
+   <U0D02>..<U0D03>;<U0D05>..<U0D0C>;<U0D0E>..<U0D10>;<U0D12>..<U0D28>;/
+   <U0D2A>..<U0D39>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/
+   <U0D57>;<U0D60>..<U0D61>;<U0D66>..<U0D6F>;<U0D82>..<U0D83>;/
+   <U0D85>..<U0D96>;<U0D9A>..<U0DB1>;<U0DB3>..<U0DBB>;<U0DBD>;/
+   <U0DC0>..<U0DC6>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;/
+   <U0DF2>..<U0DF4>;<U0E01>..<U0E3A>;<U0E3F>..<U0E5B>;<U0E81>..<U0E82>;/
+   <U0E84>;<U0E87>..<U0E88>;<U0E8A>;<U0E8D>;<U0E94>..<U0E97>;/
+   <U0E99>..<U0E9F>;<U0EA1>..<U0EA3>;<U0EA5>;<U0EA7>;<U0EAA>..<U0EAB>;/
+   <U0EAD>..<U0EB9>;<U0EBB>..<U0EBD>;<U0EC0>..<U0EC4>;<U0EC6>;/
+   <U0EC8>..<U0ECD>;<U0ED0>..<U0ED9>;<U0EDC>..<U0EDD>;<U0F00>..<U0F47>;/
+   <U0F49>..<U0F6A>;<U0F71>..<U0F8B>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;/
+   <U0FBE>..<U0FCC>;<U0FCF>;<U1000>..<U1021>;<U1023>..<U1027>;/
+   <U1029>..<U102A>;<U102C>..<U1032>;<U1036>..<U1039>;<U1040>..<U1059>;/
+   <U10A0>..<U10C5>;<U10D0>..<U10F6>;<U10FB>;<U1100>..<U1159>;/
+   <U115F>..<U11A2>;<U11A8>..<U11F9>;<U1200>..<U1206>;<U1208>..<U1246>;/
+   <U1248>;<U124A>..<U124D>;<U1250>..<U1256>;<U1258>;<U125A>..<U125D>;/
+   <U1260>..<U1286>;<U1288>;<U128A>..<U128D>;<U1290>..<U12AE>;<U12B0>;/
+   <U12B2>..<U12B5>;<U12B8>..<U12BE>;<U12C0>;<U12C2>..<U12C5>;/
+   <U12C8>..<U12CE>;<U12D0>..<U12D6>;<U12D8>..<U12EE>;<U12F0>..<U130E>;/
+   <U1310>;<U1312>..<U1315>;<U1318>..<U131E>;<U1320>..<U1346>;/
+   <U1348>..<U135A>;<U1361>..<U137C>;<U13A0>..<U13F4>;<U1401>..<U1676>;/
+   <U1680>..<U169C>;<U16A0>..<U16F0>;<U1780>..<U17DC>;<U17E0>..<U17E9>;/
+   <U1800>..<U180E>;<U1810>..<U1819>;<U1820>..<U1877>;<U1880>..<U18A9>;/
+   <U1E00>..<U1E9B>;<U1EA0>..<U1EF9>;<U1F00>..<U1F15>;<U1F18>..<U1F1D>;/
+   <U1F20>..<U1F45>;<U1F48>..<U1F4D>;<U1F50>..<U1F57>;<U1F59>;<U1F5B>;/
+   <U1F5D>;<U1F5F>..<U1F7D>;<U1F80>..<U1FB4>;<U1FB6>..<U1FC4>;/
+   <U1FC6>..<U1FD3>;<U1FD6>..<U1FDB>;<U1FDD>..<U1FEF>;<U1FF2>..<U1FF4>;/
+   <U1FF6>..<U1FFE>;<U2000>..<U2027>;<U202A>..<U2046>;<U2048>..<U204D>;/
+   <U206A>..<U2070>;<U2074>..<U208E>;<U20A0>..<U20AF>;<U20D0>..<U20E3>;/
+   <U2100>..<U213A>;<U2153>..<U2183>;<U2190>..<U21F3>;<U2200>..<U22F1>;/
+   <U2300>..<U237B>;<U237D>..<U239A>;<U2400>..<U2426>;<U2440>..<U244A>;/
+   <U2460>..<U24EA>;<U2500>..<U2595>;<U25A0>..<U25F7>;<U2600>..<U2613>;/
+   <U2619>..<U2671>;<U2701>..<U2704>;<U2706>..<U2709>;<U270C>..<U2727>;/
+   <U2729>..<U274B>;<U274D>;<U274F>..<U2752>;<U2756>;<U2758>..<U275E>;/
+   <U2761>..<U2767>;<U2776>..<U2794>;<U2798>..<U27AF>;<U27B1>..<U27BE>;/
+   <U2800>..<U28FF>;<U2E80>..<U2E99>;<U2E9B>..<U2EF3>;<U2F00>..<U2FD5>;/
+   <U2FF0>..<U2FFB>;<U3000>..<U303A>;<U303E>..<U303F>;<U3041>..<U3094>;/
+   <U3099>..<U309E>;<U30A1>..<U30FE>;<U3105>..<U312C>;<U3131>..<U318E>;/
+   <U3190>..<U31B7>;<U3200>..<U321C>;<U3220>..<U3243>;<U3260>..<U327B>;/
+   <U327F>..<U32B0>;<U32C0>..<U32CB>;<U32D0>..<U32FE>;<U3300>..<U3376>;/
+   <U337B>..<U33DD>;<U33E0>..<U33FE>;<U3400>..<U4DB5>;<U4E00>..<U9FA5>;/
+   <UA000>..<UA48C>;<UA490>..<UA4A1>;<UA4A4>..<UA4B3>;<UA4B5>..<UA4C0>;/
+   <UA4C2>..<UA4C4>;<UA4C6>;<UAC00>..<UD7A3>;<UD800>..<UFA2D>;/
+   <UFB00>..<UFB06>;<UFB13>..<UFB17>;<UFB1D>..<UFB36>;<UFB38>..<UFB3C>;/
+   <UFB3E>;<UFB40>..<UFB41>;<UFB43>..<UFB44>;<UFB46>..<UFBB1>;/
+   <UFBD3>..<UFD3F>;<UFD50>..<UFD8F>;<UFD92>..<UFDC7>;<UFDF0>..<UFDFB>;/
+   <UFE20>..<UFE23>;<UFE30>..<UFE44>;<UFE49>..<UFE52>;<UFE54>..<UFE66>;/
+   <UFE68>..<UFE6B>;<UFE70>..<UFE72>;<UFE74>;<UFE76>..<UFEFC>;<UFEFF>;/
+   <UFF01>..<UFF5E>;<UFF61>..<UFFBE>;<UFFC2>..<UFFC7>;<UFFCA>..<UFFCF>;/
+   <UFFD2>..<UFFD7>;<UFFDA>..<UFFDC>;<UFFE0>..<UFFE6>;<UFFE8>..<UFFEE>;/
+   <UFFF9>..<UFFFD>
+
+xdigit /
+   <U0030>..<U0039>;<U0041>..<U0046>;<U0061>..<U0066>
+
+blank   <U0009>;<U0020>;<U1680>;<U2000>..<U2006>;<U2008>..<U200B>;<U3000>
+
 toupper /
    (<U0061>,<U0041>);(<U0062>,<U0042>);(<U0063>,<U0043>);(<U0064>,<U0044>);/
    (<U0065>,<U0045>);(<U0066>,<U0046>);(<U0067>,<U0047>);(<U0068>,<U0048>);/
@@ -396,55 +614,54 @@ toupper /
    (<U006D>,<U004D>);(<U006E>,<U004E>);(<U006F>,<U004F>);(<U0070>,<U0050>);/
    (<U0071>,<U0051>);(<U0072>,<U0052>);(<U0073>,<U0053>);(<U0074>,<U0054>);/
    (<U0075>,<U0055>);(<U0076>,<U0056>);(<U0077>,<U0057>);(<U0078>,<U0058>);/
-   (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00E0>,<U00C0>);(<U00E1>,<U00C1>);/
-   (<U00E2>,<U00C2>);(<U00E3>,<U00C3>);(<U00E4>,<U00C4>);(<U00E5>,<U00C5>);/
-   (<U00E6>,<U00C6>);(<U00E7>,<U00C7>);(<U00E8>,<U00C8>);(<U00E9>,<U00C9>);/
-   (<U00EA>,<U00CA>);(<U00EB>,<U00CB>);(<U00EC>,<U00CC>);(<U00ED>,<U00CD>);/
-   (<U00EE>,<U00CE>);(<U00EF>,<U00CF>);(<U00F0>,<U00D0>);(<U00F1>,<U00D1>);/
-   (<U00F2>,<U00D2>);(<U00F3>,<U00D3>);(<U00F4>,<U00D4>);(<U00F5>,<U00D5>);/
-   (<U00F6>,<U00D6>);(<U00F8>,<U00D8>);(<U00F9>,<U00D9>);(<U00FA>,<U00DA>);/
-   (<U00FB>,<U00DB>);(<U00FC>,<U00DC>);(<U00FD>,<U00DD>);(<U00FE>,<U00DE>);/
-   (<U00FF>,<U0178>);(<U0101>,<U0100>);(<U0103>,<U0102>);(<U0105>,<U0104>);/
-   (<U0107>,<U0106>);(<U0109>,<U0108>);(<U010B>,<U010A>);(<U010D>,<U010C>);/
-   (<U010F>,<U010E>);(<U0111>,<U0110>);(<U0113>,<U0112>);(<U0115>,<U0114>);/
-   (<U0117>,<U0116>);(<U0119>,<U0118>);(<U011B>,<U011A>);(<U011D>,<U011C>);/
-   (<U011F>,<U011E>);(<U0121>,<U0120>);(<U0123>,<U0122>);(<U0125>,<U0124>);/
-   (<U0127>,<U0126>);(<U0129>,<U0128>);(<U012B>,<U012A>);(<U012D>,<U012C>);/
-   (<U012F>,<U012E>);(<U0133>,<U0132>);(<U0135>,<U0134>);(<U0137>,<U0136>);/
-   (<U013A>,<U0139>);(<U013C>,<U013B>);(<U013E>,<U013D>);(<U0140>,<U013F>);/
-   (<U0142>,<U0141>);(<U0144>,<U0143>);(<U0146>,<U0145>);(<U0148>,<U0147>);/
-   (<U014B>,<U014A>);(<U014D>,<U014C>);(<U014F>,<U014E>);(<U0151>,<U0150>);/
-   (<U0153>,<U0152>);(<U0155>,<U0154>);(<U0157>,<U0156>);(<U0159>,<U0158>);/
-   (<U015B>,<U015A>);(<U015D>,<U015C>);(<U015F>,<U015E>);(<U0161>,<U0160>);/
-   (<U0163>,<U0162>);(<U0165>,<U0164>);(<U0167>,<U0166>);(<U0169>,<U0168>);/
-   (<U016B>,<U016A>);(<U016D>,<U016C>);(<U016F>,<U016E>);(<U0171>,<U0170>);/
-   (<U0173>,<U0172>);(<U0175>,<U0174>);(<U0177>,<U0176>);(<U017A>,<U0179>);/
-   (<U017C>,<U017B>);(<U017E>,<U017D>);(<U017F>,<U0053>);(<U0183>,<U0182>);/
-   (<U0185>,<U0184>);(<U0188>,<U0187>);(<U018C>,<U018B>);(<U0192>,<U0191>);/
-   (<U0199>,<U0198>);(<U01A1>,<U01A0>);(<U01A3>,<U01A2>);(<U01A5>,<U01A4>);/
-   (<U01A8>,<U01A7>);(<U01AD>,<U01AC>);(<U01B0>,<U01AF>);(<U01B4>,<U01B3>);/
-   (<U01B6>,<U01B5>);(<U01B9>,<U01B8>);(<U01BD>,<U01BC>);(<U01C5>,<U01C4>);/
-   (<U01C6>,<U01C4>);(<U01C8>,<U01C7>);/
-   (<U01C9>,<U01C7>);(<U01CB>,<U01CA>);(<U01CC>,<U01CA>);/
-   (<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);(<U01D4>,<U01D3>);/
-   (<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);(<U01DC>,<U01DB>);/
-   (<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);(<U01E3>,<U01E2>);/
-   (<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);(<U01EB>,<U01EA>);/
-   (<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F2>,<U01F1>);(<U01F3>,<U01F1>);/
-   (<U01F5>,<U01F4>);(<U0195>,<U01F6>);(<U01BF>,<U01F7>);(<U01F9>,<U01F8>);/
-   (<U01FB>,<U01FA>);(<U01FD>,<U01FC>);/
-   (<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);(<U0205>,<U0204>);/
-   (<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);(<U020D>,<U020C>);/
-   (<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);(<U0215>,<U0214>);/
-   (<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);(<U021D>,<U021C>);/
-   (<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);(<U0227>,<U0226>);/
-   (<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);(<U022F>,<U022E>);/
-   (<U0231>,<U0230>);(<U0233>,<U0232>);/
-   (<U0253>,<U0181>);(<U0254>,<U0186>);(<U0256>,<U0189>);/
-   (<U0257>,<U018A>);(<U0259>,<U018F>);(<U025B>,<U0190>);(<U0260>,<U0193>);/
-   (<U0263>,<U0194>);(<U0268>,<U0197>);(<U0269>,<U0196>);(<U026F>,<U019C>);/
-   (<U0272>,<U019D>);(<U0275>,<U019F>);(<U0283>,<U01A9>);(<U0288>,<U01AE>);/
-   (<U028A>,<U01B1>);(<U028B>,<U01B2>);(<U0292>,<U01B7>);(<U03AC>,<U0386>);/
+   (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00B5>,<U039C>);(<U00E0>,<U00C0>);/
+   (<U00E1>,<U00C1>);(<U00E2>,<U00C2>);(<U00E3>,<U00C3>);(<U00E4>,<U00C4>);/
+   (<U00E5>,<U00C5>);(<U00E6>,<U00C6>);(<U00E7>,<U00C7>);(<U00E8>,<U00C8>);/
+   (<U00E9>,<U00C9>);(<U00EA>,<U00CA>);(<U00EB>,<U00CB>);(<U00EC>,<U00CC>);/
+   (<U00ED>,<U00CD>);(<U00EE>,<U00CE>);(<U00EF>,<U00CF>);(<U00F0>,<U00D0>);/
+   (<U00F1>,<U00D1>);(<U00F2>,<U00D2>);(<U00F3>,<U00D3>);(<U00F4>,<U00D4>);/
+   (<U00F5>,<U00D5>);(<U00F6>,<U00D6>);(<U00F8>,<U00D8>);(<U00F9>,<U00D9>);/
+   (<U00FA>,<U00DA>);(<U00FB>,<U00DB>);(<U00FC>,<U00DC>);(<U00FD>,<U00DD>);/
+   (<U00FE>,<U00DE>);(<U00FF>,<U0178>);(<U0101>,<U0100>);(<U0103>,<U0102>);/
+   (<U0105>,<U0104>);(<U0107>,<U0106>);(<U0109>,<U0108>);(<U010B>,<U010A>);/
+   (<U010D>,<U010C>);(<U010F>,<U010E>);(<U0111>,<U0110>);(<U0113>,<U0112>);/
+   (<U0115>,<U0114>);(<U0117>,<U0116>);(<U0119>,<U0118>);(<U011B>,<U011A>);/
+   (<U011D>,<U011C>);(<U011F>,<U011E>);(<U0121>,<U0120>);(<U0123>,<U0122>);/
+   (<U0125>,<U0124>);(<U0127>,<U0126>);(<U0129>,<U0128>);(<U012B>,<U012A>);/
+   (<U012D>,<U012C>);(<U012F>,<U012E>);(<U0131>,<U0049>);(<U0133>,<U0132>);/
+   (<U0135>,<U0134>);(<U0137>,<U0136>);(<U013A>,<U0139>);(<U013C>,<U013B>);/
+   (<U013E>,<U013D>);(<U0140>,<U013F>);(<U0142>,<U0141>);(<U0144>,<U0143>);/
+   (<U0146>,<U0145>);(<U0148>,<U0147>);(<U014B>,<U014A>);(<U014D>,<U014C>);/
+   (<U014F>,<U014E>);(<U0151>,<U0150>);(<U0153>,<U0152>);(<U0155>,<U0154>);/
+   (<U0157>,<U0156>);(<U0159>,<U0158>);(<U015B>,<U015A>);(<U015D>,<U015C>);/
+   (<U015F>,<U015E>);(<U0161>,<U0160>);(<U0163>,<U0162>);(<U0165>,<U0164>);/
+   (<U0167>,<U0166>);(<U0169>,<U0168>);(<U016B>,<U016A>);(<U016D>,<U016C>);/
+   (<U016F>,<U016E>);(<U0171>,<U0170>);(<U0173>,<U0172>);(<U0175>,<U0174>);/
+   (<U0177>,<U0176>);(<U017A>,<U0179>);(<U017C>,<U017B>);(<U017E>,<U017D>);/
+   (<U017F>,<U0053>);(<U0183>,<U0182>);(<U0185>,<U0184>);(<U0188>,<U0187>);/
+   (<U018C>,<U018B>);(<U0192>,<U0191>);(<U0195>,<U01F6>);(<U0199>,<U0198>);/
+   (<U01A1>,<U01A0>);(<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);/
+   (<U01AD>,<U01AC>);(<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);/
+   (<U01B9>,<U01B8>);(<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C5>,<U01C4>);/
+   (<U01C6>,<U01C4>);(<U01C8>,<U01C7>);(<U01C9>,<U01C7>);(<U01CB>,<U01CA>);/
+   (<U01CC>,<U01CA>);(<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);/
+   (<U01D4>,<U01D3>);(<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);/
+   (<U01DC>,<U01DB>);(<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);/
+   (<U01E3>,<U01E2>);(<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);/
+   (<U01EB>,<U01EA>);(<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F2>,<U01F1>);/
+   (<U01F3>,<U01F1>);(<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);/
+   (<U01FD>,<U01FC>);(<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);/
+   (<U0205>,<U0204>);(<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);/
+   (<U020D>,<U020C>);(<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);/
+   (<U0215>,<U0214>);(<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);/
+   (<U021D>,<U021C>);(<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);/
+   (<U0227>,<U0226>);(<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);/
+   (<U022F>,<U022E>);(<U0231>,<U0230>);(<U0233>,<U0232>);(<U0253>,<U0181>);/
+   (<U0254>,<U0186>);(<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);/
+   (<U025B>,<U0190>);(<U0260>,<U0193>);(<U0263>,<U0194>);(<U0268>,<U0197>);/
+   (<U0269>,<U0196>);(<U026F>,<U019C>);(<U0272>,<U019D>);(<U0275>,<U019F>);/
+   (<U0280>,<U01A6>);(<U0283>,<U01A9>);(<U0288>,<U01AE>);(<U028A>,<U01B1>);/
+   (<U028B>,<U01B2>);(<U0292>,<U01B7>);(<U0345>,<U0399>);(<U03AC>,<U0386>);/
    (<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);(<U03B1>,<U0391>);/
    (<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);(<U03B5>,<U0395>);/
    (<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);(<U03B9>,<U0399>);/
@@ -453,77 +670,68 @@ toupper /
    (<U03C2>,<U03A3>);(<U03C3>,<U03A3>);(<U03C4>,<U03A4>);(<U03C5>,<U03A5>);/
    (<U03C6>,<U03A6>);(<U03C7>,<U03A7>);(<U03C8>,<U03A8>);(<U03C9>,<U03A9>);/
    (<U03CA>,<U03AA>);(<U03CB>,<U03AB>);(<U03CC>,<U038C>);(<U03CD>,<U038E>);/
-   (<U03CE>,<U038F>);/
-   (<U03E3>,<U03E2>);(<U03E5>,<U03E4>);(<U03E7>,<U03E6>);(<U03E9>,<U03E8>);/
-   (<U03EB>,<U03EA>);(<U03ED>,<U03EC>);(<U03EF>,<U03EE>);/
-   (<U0430>,<U0410>);(<U0431>,<U0411>);(<U0432>,<U0412>);/
-   (<U0433>,<U0413>);(<U0434>,<U0414>);(<U0435>,<U0415>);(<U0436>,<U0416>);/
-   (<U0437>,<U0417>);(<U0438>,<U0418>);(<U0439>,<U0419>);(<U043A>,<U041A>);/
-   (<U043B>,<U041B>);(<U043C>,<U041C>);(<U043D>,<U041D>);(<U043E>,<U041E>);/
-   (<U043F>,<U041F>);(<U0440>,<U0420>);(<U0441>,<U0421>);(<U0442>,<U0422>);/
-   (<U0443>,<U0423>);(<U0444>,<U0424>);(<U0445>,<U0425>);(<U0446>,<U0426>);/
-   (<U0447>,<U0427>);(<U0448>,<U0428>);(<U0449>,<U0429>);(<U044A>,<U042A>);/
-   (<U044B>,<U042B>);(<U044C>,<U042C>);(<U044D>,<U042D>);(<U044E>,<U042E>);/
-   (<U044F>,<U042F>);(<U0451>,<U0401>);(<U0452>,<U0402>);(<U0453>,<U0403>);/
-   (<U0454>,<U0404>);(<U0455>,<U0405>);(<U0456>,<U0406>);(<U0457>,<U0407>);/
-   (<U0458>,<U0408>);(<U0459>,<U0409>);(<U045A>,<U040A>);(<U045B>,<U040B>);/
-   (<U045C>,<U040C>);(<U045E>,<U040E>);(<U045F>,<U040F>);(<U0461>,<U0460>);/
+   (<U03CE>,<U038F>);(<U03D0>,<U0392>);(<U03D1>,<U0398>);(<U03D5>,<U03A6>);/
+   (<U03D6>,<U03A0>);(<U03DB>,<U03DA>);(<U03DD>,<U03DC>);(<U03DF>,<U03DE>);/
+   (<U03E1>,<U03E0>);(<U03E3>,<U03E2>);(<U03E5>,<U03E4>);(<U03E7>,<U03E6>);/
+   (<U03E9>,<U03E8>);(<U03EB>,<U03EA>);(<U03ED>,<U03EC>);(<U03EF>,<U03EE>);/
+   (<U03F0>,<U039A>);(<U03F1>,<U03A1>);(<U03F2>,<U03A3>);(<U0430>,<U0410>);/
+   (<U0431>,<U0411>);(<U0432>,<U0412>);(<U0433>,<U0413>);(<U0434>,<U0414>);/
+   (<U0435>,<U0415>);(<U0436>,<U0416>);(<U0437>,<U0417>);(<U0438>,<U0418>);/
+   (<U0439>,<U0419>);(<U043A>,<U041A>);(<U043B>,<U041B>);(<U043C>,<U041C>);/
+   (<U043D>,<U041D>);(<U043E>,<U041E>);(<U043F>,<U041F>);(<U0440>,<U0420>);/
+   (<U0441>,<U0421>);(<U0442>,<U0422>);(<U0443>,<U0423>);(<U0444>,<U0424>);/
+   (<U0445>,<U0425>);(<U0446>,<U0426>);(<U0447>,<U0427>);(<U0448>,<U0428>);/
+   (<U0449>,<U0429>);(<U044A>,<U042A>);(<U044B>,<U042B>);(<U044C>,<U042C>);/
+   (<U044D>,<U042D>);(<U044E>,<U042E>);(<U044F>,<U042F>);(<U0450>,<U0400>);/
+   (<U0451>,<U0401>);(<U0452>,<U0402>);(<U0453>,<U0403>);(<U0454>,<U0404>);/
+   (<U0455>,<U0405>);(<U0456>,<U0406>);(<U0457>,<U0407>);(<U0458>,<U0408>);/
+   (<U0459>,<U0409>);(<U045A>,<U040A>);(<U045B>,<U040B>);(<U045C>,<U040C>);/
+   (<U045D>,<U040D>);(<U045E>,<U040E>);(<U045F>,<U040F>);(<U0461>,<U0460>);/
    (<U0463>,<U0462>);(<U0465>,<U0464>);(<U0467>,<U0466>);(<U0469>,<U0468>);/
    (<U046B>,<U046A>);(<U046D>,<U046C>);(<U046F>,<U046E>);(<U0471>,<U0470>);/
    (<U0473>,<U0472>);(<U0475>,<U0474>);(<U0477>,<U0476>);(<U0479>,<U0478>);/
    (<U047B>,<U047A>);(<U047D>,<U047C>);(<U047F>,<U047E>);(<U0481>,<U0480>);/
-   (<U0491>,<U0490>);(<U0493>,<U0492>);(<U0495>,<U0494>);(<U0497>,<U0496>);/
-   (<U0499>,<U0498>);(<U049B>,<U049A>);(<U049D>,<U049C>);(<U049F>,<U049E>);/
-   (<U04A1>,<U04A0>);(<U04A3>,<U04A2>);(<U04A5>,<U04A4>);(<U04A7>,<U04A6>);/
-   (<U04A9>,<U04A8>);(<U04AB>,<U04AA>);(<U04AD>,<U04AC>);(<U04AF>,<U04AE>);/
-   (<U04B1>,<U04B0>);(<U04B3>,<U04B2>);(<U04B5>,<U04B4>);(<U04B7>,<U04B6>);/
-   (<U04B9>,<U04B8>);(<U04BB>,<U04BA>);(<U04BD>,<U04BC>);(<U04BF>,<U04BE>);/
-   (<U04C2>,<U04C1>);(<U04C4>,<U04C3>);(<U04C8>,<U04C7>);(<U04CC>,<U04CB>);/
-   (<U04D1>,<U04D0>);(<U04D3>,<U04D2>);(<U04D5>,<U04D4>);(<U04D7>,<U04D6>);/
-   (<U04D9>,<U04D8>);(<U04DB>,<U04DA>);(<U04DD>,<U04DC>);(<U04DF>,<U04DE>);/
-   (<U04E1>,<U04E0>);(<U04E3>,<U04E2>);(<U04E5>,<U04E4>);(<U04E7>,<U04E6>);/
-   (<U04E9>,<U04E8>);(<U04EB>,<U04EA>);(<U04EF>,<U04EE>);(<U04F1>,<U04F0>);/
-   (<U04F3>,<U04F2>);(<U04F5>,<U04F4>);(<U04F9>,<U04F8>);(<U0561>,<U0531>);/
-   (<U0562>,<U0532>);(<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);/
-   (<U0566>,<U0536>);(<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);/
-   (<U056A>,<U053A>);(<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);/
-   (<U056E>,<U053E>);(<U056F>,<U053F>);(<U0570>,<U0540>);(<U0571>,<U0541>);/
-   (<U0572>,<U0542>);(<U0573>,<U0543>);(<U0574>,<U0544>);(<U0575>,<U0545>);/
-   (<U0576>,<U0546>);(<U0577>,<U0547>);(<U0578>,<U0548>);(<U0579>,<U0549>);/
-   (<U057A>,<U054A>);(<U057B>,<U054B>);(<U057C>,<U054C>);(<U057D>,<U054D>);/
-   (<U057E>,<U054E>);(<U057F>,<U054F>);(<U0580>,<U0550>);(<U0581>,<U0551>);/
-   (<U0582>,<U0552>);(<U0583>,<U0553>);(<U0584>,<U0554>);(<U0585>,<U0555>);/
-   (<U0586>,<U0556>);/
-   (<U10D0>,<U10A0>);(<U10D1>,<U10A1>);(<U10D2>,<U10A2>);(<U10D3>,<U10A3>);/
-   (<U10D4>,<U10A4>);(<U10D5>,<U10A5>);(<U10D6>,<U10A6>);(<U10D7>,<U10A7>);/
-   (<U10D8>,<U10A8>);(<U10D9>,<U10A9>);(<U10DA>,<U10AA>);(<U10DB>,<U10AB>);/
-   (<U10DC>,<U10AC>);(<U10DD>,<U10AD>);(<U10DE>,<U10AE>);(<U10DF>,<U10AF>);/
-   (<U10E0>,<U10B0>);(<U10E1>,<U10B1>);(<U10E2>,<U10B2>);(<U10E3>,<U10B3>);/
-   (<U10E4>,<U10B4>);(<U10E5>,<U10B5>);(<U10E6>,<U10B6>);(<U10E7>,<U10B7>);/
-   (<U10E8>,<U10B8>);(<U10E9>,<U10B9>);(<U10EA>,<U10BA>);(<U10EB>,<U10BB>);/
-   (<U10EC>,<U10BC>);(<U10ED>,<U10BD>);(<U10EE>,<U10BE>);(<U10EF>,<U10BF>);/
-   (<U10F0>,<U10C0>);(<U10F1>,<U10C1>);(<U10F2>,<U10C2>);(<U10F3>,<U10C3>);/
-   (<U10F4>,<U10C4>);(<U10F5>,<U10C5>);/
-   (<U1E01>,<U1E00>);(<U1E03>,<U1E02>);(<U1E05>,<U1E04>);/
-   (<U1E07>,<U1E06>);(<U1E09>,<U1E08>);(<U1E0B>,<U1E0A>);(<U1E0D>,<U1E0C>);/
-   (<U1E0F>,<U1E0E>);(<U1E11>,<U1E10>);(<U1E13>,<U1E12>);(<U1E15>,<U1E14>);/
-   (<U1E17>,<U1E16>);(<U1E19>,<U1E18>);(<U1E1B>,<U1E1A>);(<U1E1D>,<U1E1C>);/
-   (<U1E1F>,<U1E1E>);(<U1E21>,<U1E20>);(<U1E23>,<U1E22>);(<U1E25>,<U1E24>);/
-   (<U1E27>,<U1E26>);(<U1E29>,<U1E28>);(<U1E2B>,<U1E2A>);(<U1E2D>,<U1E2C>);/
-   (<U1E2F>,<U1E2E>);(<U1E31>,<U1E30>);(<U1E33>,<U1E32>);(<U1E35>,<U1E34>);/
-   (<U1E37>,<U1E36>);(<U1E39>,<U1E38>);(<U1E3B>,<U1E3A>);(<U1E3D>,<U1E3C>);/
-   (<U1E3F>,<U1E3E>);(<U1E41>,<U1E40>);(<U1E43>,<U1E42>);(<U1E45>,<U1E44>);/
-   (<U1E47>,<U1E46>);(<U1E49>,<U1E48>);(<U1E4B>,<U1E4A>);(<U1E4D>,<U1E4C>);/
-   (<U1E4F>,<U1E4E>);(<U1E51>,<U1E50>);(<U1E53>,<U1E52>);(<U1E55>,<U1E54>);/
-   (<U1E57>,<U1E56>);(<U1E59>,<U1E58>);(<U1E5B>,<U1E5A>);(<U1E5D>,<U1E5C>);/
-   (<U1E5F>,<U1E5E>);(<U1E61>,<U1E60>);(<U1E63>,<U1E62>);(<U1E65>,<U1E64>);/
-   (<U1E67>,<U1E66>);(<U1E69>,<U1E68>);(<U1E6B>,<U1E6A>);(<U1E6D>,<U1E6C>);/
-   (<U1E6F>,<U1E6E>);(<U1E71>,<U1E70>);(<U1E73>,<U1E72>);(<U1E75>,<U1E74>);/
-   (<U1E77>,<U1E76>);(<U1E79>,<U1E78>);(<U1E7B>,<U1E7A>);(<U1E7D>,<U1E7C>);/
-   (<U1E7F>,<U1E7E>);(<U1E81>,<U1E80>);(<U1E83>,<U1E82>);(<U1E85>,<U1E84>);/
-   (<U1E87>,<U1E86>);(<U1E89>,<U1E88>);(<U1E8B>,<U1E8A>);(<U1E8D>,<U1E8C>);/
-   (<U1E8F>,<U1E8E>);(<U1E91>,<U1E90>);(<U1E93>,<U1E92>);(<U1E95>,<U1E94>);/
-   (<U1E9B>,<U1E60>);/
+   (<U048D>,<U048C>);(<U048F>,<U048E>);(<U0491>,<U0490>);(<U0493>,<U0492>);/
+   (<U0495>,<U0494>);(<U0497>,<U0496>);(<U0499>,<U0498>);(<U049B>,<U049A>);/
+   (<U049D>,<U049C>);(<U049F>,<U049E>);(<U04A1>,<U04A0>);(<U04A3>,<U04A2>);/
+   (<U04A5>,<U04A4>);(<U04A7>,<U04A6>);(<U04A9>,<U04A8>);(<U04AB>,<U04AA>);/
+   (<U04AD>,<U04AC>);(<U04AF>,<U04AE>);(<U04B1>,<U04B0>);(<U04B3>,<U04B2>);/
+   (<U04B5>,<U04B4>);(<U04B7>,<U04B6>);(<U04B9>,<U04B8>);(<U04BB>,<U04BA>);/
+   (<U04BD>,<U04BC>);(<U04BF>,<U04BE>);(<U04C2>,<U04C1>);(<U04C4>,<U04C3>);/
+   (<U04C8>,<U04C7>);(<U04CC>,<U04CB>);(<U04D1>,<U04D0>);(<U04D3>,<U04D2>);/
+   (<U04D5>,<U04D4>);(<U04D7>,<U04D6>);(<U04D9>,<U04D8>);(<U04DB>,<U04DA>);/
+   (<U04DD>,<U04DC>);(<U04DF>,<U04DE>);(<U04E1>,<U04E0>);(<U04E3>,<U04E2>);/
+   (<U04E5>,<U04E4>);(<U04E7>,<U04E6>);(<U04E9>,<U04E8>);(<U04EB>,<U04EA>);/
+   (<U04ED>,<U04EC>);(<U04EF>,<U04EE>);(<U04F1>,<U04F0>);(<U04F3>,<U04F2>);/
+   (<U04F5>,<U04F4>);(<U04F9>,<U04F8>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
+   (<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/
+   (<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/
+   (<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/
+   (<U056F>,<U053F>);(<U0570>,<U0540>);(<U0571>,<U0541>);(<U0572>,<U0542>);/
+   (<U0573>,<U0543>);(<U0574>,<U0544>);(<U0575>,<U0545>);(<U0576>,<U0546>);/
+   (<U0577>,<U0547>);(<U0578>,<U0548>);(<U0579>,<U0549>);(<U057A>,<U054A>);/
+   (<U057B>,<U054B>);(<U057C>,<U054C>);(<U057D>,<U054D>);(<U057E>,<U054E>);/
+   (<U057F>,<U054F>);(<U0580>,<U0550>);(<U0581>,<U0551>);(<U0582>,<U0552>);/
+   (<U0583>,<U0553>);(<U0584>,<U0554>);(<U0585>,<U0555>);(<U0586>,<U0556>);/
+   (<U1E01>,<U1E00>);(<U1E03>,<U1E02>);(<U1E05>,<U1E04>);(<U1E07>,<U1E06>);/
+   (<U1E09>,<U1E08>);(<U1E0B>,<U1E0A>);(<U1E0D>,<U1E0C>);(<U1E0F>,<U1E0E>);/
+   (<U1E11>,<U1E10>);(<U1E13>,<U1E12>);(<U1E15>,<U1E14>);(<U1E17>,<U1E16>);/
+   (<U1E19>,<U1E18>);(<U1E1B>,<U1E1A>);(<U1E1D>,<U1E1C>);(<U1E1F>,<U1E1E>);/
+   (<U1E21>,<U1E20>);(<U1E23>,<U1E22>);(<U1E25>,<U1E24>);(<U1E27>,<U1E26>);/
+   (<U1E29>,<U1E28>);(<U1E2B>,<U1E2A>);(<U1E2D>,<U1E2C>);(<U1E2F>,<U1E2E>);/
+   (<U1E31>,<U1E30>);(<U1E33>,<U1E32>);(<U1E35>,<U1E34>);(<U1E37>,<U1E36>);/
+   (<U1E39>,<U1E38>);(<U1E3B>,<U1E3A>);(<U1E3D>,<U1E3C>);(<U1E3F>,<U1E3E>);/
+   (<U1E41>,<U1E40>);(<U1E43>,<U1E42>);(<U1E45>,<U1E44>);(<U1E47>,<U1E46>);/
+   (<U1E49>,<U1E48>);(<U1E4B>,<U1E4A>);(<U1E4D>,<U1E4C>);(<U1E4F>,<U1E4E>);/
+   (<U1E51>,<U1E50>);(<U1E53>,<U1E52>);(<U1E55>,<U1E54>);(<U1E57>,<U1E56>);/
+   (<U1E59>,<U1E58>);(<U1E5B>,<U1E5A>);(<U1E5D>,<U1E5C>);(<U1E5F>,<U1E5E>);/
+   (<U1E61>,<U1E60>);(<U1E63>,<U1E62>);(<U1E65>,<U1E64>);(<U1E67>,<U1E66>);/
+   (<U1E69>,<U1E68>);(<U1E6B>,<U1E6A>);(<U1E6D>,<U1E6C>);(<U1E6F>,<U1E6E>);/
+   (<U1E71>,<U1E70>);(<U1E73>,<U1E72>);(<U1E75>,<U1E74>);(<U1E77>,<U1E76>);/
+   (<U1E79>,<U1E78>);(<U1E7B>,<U1E7A>);(<U1E7D>,<U1E7C>);(<U1E7F>,<U1E7E>);/
+   (<U1E81>,<U1E80>);(<U1E83>,<U1E82>);(<U1E85>,<U1E84>);(<U1E87>,<U1E86>);/
+   (<U1E89>,<U1E88>);(<U1E8B>,<U1E8A>);(<U1E8D>,<U1E8C>);(<U1E8F>,<U1E8E>);/
+   (<U1E91>,<U1E90>);(<U1E93>,<U1E92>);(<U1E95>,<U1E94>);(<U1E9B>,<U1E60>);/
    (<U1EA1>,<U1EA0>);(<U1EA3>,<U1EA2>);(<U1EA5>,<U1EA4>);(<U1EA7>,<U1EA6>);/
    (<U1EA9>,<U1EA8>);(<U1EAB>,<U1EAA>);(<U1EAD>,<U1EAC>);(<U1EAF>,<U1EAE>);/
    (<U1EB1>,<U1EB0>);(<U1EB3>,<U1EB2>);(<U1EB5>,<U1EB4>);(<U1EB7>,<U1EB6>);/
@@ -557,9 +765,27 @@ toupper /
    (<U1F95>,<U1F9D>);(<U1F96>,<U1F9E>);(<U1F97>,<U1F9F>);(<U1FA0>,<U1FA8>);/
    (<U1FA1>,<U1FA9>);(<U1FA2>,<U1FAA>);(<U1FA3>,<U1FAB>);(<U1FA4>,<U1FAC>);/
    (<U1FA5>,<U1FAD>);(<U1FA6>,<U1FAE>);(<U1FA7>,<U1FAF>);(<U1FB0>,<U1FB8>);/
-   (<U1FB1>,<U1FB9>);(<U1FB3>,<U1FBC>);(<U1FC3>,<U1FCC>);(<U1FD0>,<U1FD8>);/
-   (<U1FD1>,<U1FD9>);(<U1FE0>,<U1FE8>);(<U1FE1>,<U1FE9>);(<U1FE5>,<U1FEC>);/
-   (<U1FF3>,<U1FFC>)
+   (<U1FB1>,<U1FB9>);(<U1FB3>,<U1FBC>);(<U1FBE>,<U0399>);(<U1FC3>,<U1FCC>);/
+   (<U1FD0>,<U1FD8>);(<U1FD1>,<U1FD9>);(<U1FE0>,<U1FE8>);(<U1FE1>,<U1FE9>);/
+   (<U1FE5>,<U1FEC>);(<U1FF3>,<U1FFC>);(<U2170>,<U2160>);(<U2171>,<U2161>);/
+   (<U2172>,<U2162>);(<U2173>,<U2163>);(<U2174>,<U2164>);(<U2175>,<U2165>);/
+   (<U2176>,<U2166>);(<U2177>,<U2167>);(<U2178>,<U2168>);(<U2179>,<U2169>);/
+   (<U217A>,<U216A>);(<U217B>,<U216B>);(<U217C>,<U216C>);(<U217D>,<U216D>);/
+   (<U217E>,<U216E>);(<U217F>,<U216F>);(<U24D0>,<U24B6>);(<U24D1>,<U24B7>);/
+   (<U24D2>,<U24B8>);(<U24D3>,<U24B9>);(<U24D4>,<U24BA>);(<U24D5>,<U24BB>);/
+   (<U24D6>,<U24BC>);(<U24D7>,<U24BD>);(<U24D8>,<U24BE>);(<U24D9>,<U24BF>);/
+   (<U24DA>,<U24C0>);(<U24DB>,<U24C1>);(<U24DC>,<U24C2>);(<U24DD>,<U24C3>);/
+   (<U24DE>,<U24C4>);(<U24DF>,<U24C5>);(<U24E0>,<U24C6>);(<U24E1>,<U24C7>);/
+   (<U24E2>,<U24C8>);(<U24E3>,<U24C9>);(<U24E4>,<U24CA>);(<U24E5>,<U24CB>);/
+   (<U24E6>,<U24CC>);(<U24E7>,<U24CD>);(<U24E8>,<U24CE>);(<U24E9>,<U24CF>);/
+   (<UFF41>,<UFF21>);(<UFF42>,<UFF22>);(<UFF43>,<UFF23>);(<UFF44>,<UFF24>);/
+   (<UFF45>,<UFF25>);(<UFF46>,<UFF26>);(<UFF47>,<UFF27>);(<UFF48>,<UFF28>);/
+   (<UFF49>,<UFF29>);(<UFF4A>,<UFF2A>);(<UFF4B>,<UFF2B>);(<UFF4C>,<UFF2C>);/
+   (<UFF4D>,<UFF2D>);(<UFF4E>,<UFF2E>);(<UFF4F>,<UFF2F>);(<UFF50>,<UFF30>);/
+   (<UFF51>,<UFF31>);(<UFF52>,<UFF32>);(<UFF53>,<UFF33>);(<UFF54>,<UFF34>);/
+   (<UFF55>,<UFF35>);(<UFF56>,<UFF36>);(<UFF57>,<UFF37>);(<UFF58>,<UFF38>);/
+   (<UFF59>,<UFF39>);(<UFF5A>,<UFF3A>)
+
 tolower /
    (<U0041>,<U0061>);(<U0042>,<U0062>);(<U0043>,<U0063>);(<U0044>,<U0064>);/
    (<U0045>,<U0065>);(<U0046>,<U0066>);(<U0047>,<U0067>);(<U0048>,<U0068>);/
@@ -575,13 +801,13 @@ tolower /
    (<U00D2>,<U00F2>);(<U00D3>,<U00F3>);(<U00D4>,<U00F4>);(<U00D5>,<U00F5>);/
    (<U00D6>,<U00F6>);(<U00D8>,<U00F8>);(<U00D9>,<U00F9>);(<U00DA>,<U00FA>);/
    (<U00DB>,<U00FB>);(<U00DC>,<U00FC>);(<U00DD>,<U00FD>);(<U00DE>,<U00FE>);/
-   (<U0178>,<U00FF>);(<U0100>,<U0101>);(<U0102>,<U0103>);(<U0104>,<U0105>);/
-   (<U0106>,<U0107>);(<U0108>,<U0109>);(<U010A>,<U010B>);(<U010C>,<U010D>);/
-   (<U010E>,<U010F>);(<U0110>,<U0111>);(<U0112>,<U0113>);(<U0114>,<U0115>);/
-   (<U0116>,<U0117>);(<U0118>,<U0119>);(<U011A>,<U011B>);(<U011C>,<U011D>);/
-   (<U011E>,<U011F>);(<U0120>,<U0121>);(<U0122>,<U0123>);(<U0124>,<U0125>);/
-   (<U0126>,<U0127>);(<U0128>,<U0129>);(<U012A>,<U012B>);(<U012C>,<U012D>);/
-   (<U012E>,<U012F>);(<U0132>,<U0133>);(<U0134>,<U0135>);(<U0136>,<U0137>);/
+   (<U0100>,<U0101>);(<U0102>,<U0103>);(<U0104>,<U0105>);(<U0106>,<U0107>);/
+   (<U0108>,<U0109>);(<U010A>,<U010B>);(<U010C>,<U010D>);(<U010E>,<U010F>);/
+   (<U0110>,<U0111>);(<U0112>,<U0113>);(<U0114>,<U0115>);(<U0116>,<U0117>);/
+   (<U0118>,<U0119>);(<U011A>,<U011B>);(<U011C>,<U011D>);(<U011E>,<U011F>);/
+   (<U0120>,<U0121>);(<U0122>,<U0123>);(<U0124>,<U0125>);(<U0126>,<U0127>);/
+   (<U0128>,<U0129>);(<U012A>,<U012B>);(<U012C>,<U012D>);(<U012E>,<U012F>);/
+   (<U0130>,<U0069>);(<U0132>,<U0133>);(<U0134>,<U0135>);(<U0136>,<U0137>);/
    (<U0139>,<U013A>);(<U013B>,<U013C>);(<U013D>,<U013E>);(<U013F>,<U0140>);/
    (<U0141>,<U0142>);(<U0143>,<U0144>);(<U0145>,<U0146>);(<U0147>,<U0148>);/
    (<U014A>,<U014B>);(<U014C>,<U014D>);(<U014E>,<U014F>);(<U0150>,<U0151>);/
@@ -589,178 +815,385 @@ tolower /
    (<U015A>,<U015B>);(<U015C>,<U015D>);(<U015E>,<U015F>);(<U0160>,<U0161>);/
    (<U0162>,<U0163>);(<U0164>,<U0165>);(<U0166>,<U0167>);(<U0168>,<U0169>);/
    (<U016A>,<U016B>);(<U016C>,<U016D>);(<U016E>,<U016F>);(<U0170>,<U0171>);/
-   (<U0172>,<U0173>);(<U0174>,<U0175>);(<U0176>,<U0177>);(<U0179>,<U017A>);/
-   (<U017B>,<U017C>);(<U017D>,<U017E>);(<U0182>,<U0183>);(<U0184>,<U0185>);/
-   (<U0187>,<U0188>);(<U0256>,<U0189>);(<U018B>,<U018C>);(<U018E>,<U01DD>);/
-   (<U0191>,<U0192>);(<U0198>,<U0199>);(<U01A0>,<U01A1>);(<U01A2>,<U01A3>);/
-   (<U01A4>,<U01A5>);(<U01A7>,<U01A8>);(<U01AC>,<U01AD>);(<U01AF>,<U01B0>);/
-   (<U01B3>,<U01B4>);(<U01B5>,<U01B6>);(<U01B8>,<U01B9>);(<U01BC>,<U01BD>);/
-   (<U01C4>,<U01C6>);(<U01C5>,<U01C6>);(<U01C7>,<U01C9>);/
-   (<U01C8>,<U01C9>);(<U01CA>,<U01CC>);(<U01CB>,<U01CC>);/
-   (<U01CD>,<U01CE>);(<U01CF>,<U01D0>);(<U01D1>,<U01D2>);/
+   (<U0172>,<U0173>);(<U0174>,<U0175>);(<U0176>,<U0177>);(<U0178>,<U00FF>);/
+   (<U0179>,<U017A>);(<U017B>,<U017C>);(<U017D>,<U017E>);(<U0181>,<U0253>);/
+   (<U0182>,<U0183>);(<U0184>,<U0185>);(<U0186>,<U0254>);(<U0187>,<U0188>);/
+   (<U0189>,<U0256>);(<U018A>,<U0257>);(<U018B>,<U018C>);(<U018E>,<U01DD>);/
+   (<U018F>,<U0259>);(<U0190>,<U025B>);(<U0191>,<U0192>);(<U0193>,<U0260>);/
+   (<U0194>,<U0263>);(<U0196>,<U0269>);(<U0197>,<U0268>);(<U0198>,<U0199>);/
+   (<U019C>,<U026F>);(<U019D>,<U0272>);(<U019F>,<U0275>);(<U01A0>,<U01A1>);/
+   (<U01A2>,<U01A3>);(<U01A4>,<U01A5>);(<U01A6>,<U0280>);(<U01A7>,<U01A8>);/
+   (<U01A9>,<U0283>);(<U01AC>,<U01AD>);(<U01AE>,<U0288>);(<U01AF>,<U01B0>);/
+   (<U01B1>,<U028A>);(<U01B2>,<U028B>);(<U01B3>,<U01B4>);(<U01B5>,<U01B6>);/
+   (<U01B7>,<U0292>);(<U01B8>,<U01B9>);(<U01BC>,<U01BD>);(<U01C4>,<U01C6>);/
+   (<U01C5>,<U01C6>);(<U01C7>,<U01C9>);(<U01C8>,<U01C9>);(<U01CA>,<U01CC>);/
+   (<U01CB>,<U01CC>);(<U01CD>,<U01CE>);(<U01CF>,<U01D0>);(<U01D1>,<U01D2>);/
    (<U01D3>,<U01D4>);(<U01D5>,<U01D6>);(<U01D7>,<U01D8>);(<U01D9>,<U01DA>);/
    (<U01DB>,<U01DC>);(<U01DE>,<U01DF>);(<U01E0>,<U01E1>);(<U01E2>,<U01E3>);/
    (<U01E4>,<U01E5>);(<U01E6>,<U01E7>);(<U01E8>,<U01E9>);(<U01EA>,<U01EB>);/
    (<U01EC>,<U01ED>);(<U01EE>,<U01EF>);(<U01F1>,<U01F3>);(<U01F2>,<U01F3>);/
-   (<U01F4>,<U01F5>);(<U0195>,<U01F6>);(<U01BF>,<U01F7>);(<U01F8>,<U01F9>);/
-   (<U01FA>,<U01FB>);(<U01FC>,<U01FD>);/
-   (<U01FE>,<U01FF>);(<U0200>,<U0201>);(<U0202>,<U0203>);(<U0204>,<U0205>);/
-   (<U0206>,<U0207>);(<U0208>,<U0209>);(<U020A>,<U020B>);(<U020C>,<U020D>);/
-   (<U020E>,<U020F>);(<U0210>,<U0211>);(<U0212>,<U0213>);(<U0214>,<U0215>);/
-   (<U0216>,<U0217>);(<U0218>,<U0219>);(<U021A>,<U021B>);(<U021C>,<U021D>);/
-   (<U021E>,<U021F>);(<U0222>,<U0223>);(<U0224>,<U0225>);(<U0226>,<U0227>);/
-   (<U0228>,<U0229>);(<U022A>,<U022B>);(<U022C>,<U022D>);(<U022E>,<U022F>);/
-   (<U0230>,<U0231>);(<U0232>,<U0233>);/
-   (<U0181>,<U0253>);(<U0186>,<U0254>);(<U018A>,<U0257>);/
-   (<U018E>,<U0258>);(<U018F>,<U0259>);(<U0190>,<U025B>);(<U0193>,<U0260>);/
-   (<U0194>,<U0263>);(<U0197>,<U0268>);(<U0196>,<U0269>);(<U019C>,<U026F>);/
-   (<U019D>,<U0272>);(<U01A9>,<U0283>);(<U01AE>,<U0288>);(<U01B1>,<U028A>);/
-   (<U01B2>,<U028B>);(<U01B7>,<U0292>);(<U0386>,<U03AC>);(<U0388>,<U03AD>);/
-   (<U0389>,<U03AE>);(<U038A>,<U03AF>);(<U0391>,<U03B1>);(<U0392>,<U03B2>);/
-   (<U0393>,<U03B3>);(<U0394>,<U03B4>);(<U0395>,<U03B5>);(<U0396>,<U03B6>);/
-   (<U0397>,<U03B7>);(<U0398>,<U03B8>);(<U0399>,<U03B9>);(<U039A>,<U03BA>);/
-   (<U039B>,<U03BB>);(<U039C>,<U03BC>);(<U039D>,<U03BD>);(<U039E>,<U03BE>);/
-   (<U039F>,<U03BF>);(<U03A0>,<U03C0>);(<U03A1>,<U03C1>);(<U03A3>,<U03C3>);/
-   (<U03A4>,<U03C4>);(<U03A5>,<U03C5>);(<U03A6>,<U03C6>);(<U03A7>,<U03C7>);/
-   (<U03A8>,<U03C8>);(<U03A9>,<U03C9>);(<U03AA>,<U03CA>);(<U03AB>,<U03CB>);/
-   (<U038C>,<U03CC>);(<U038E>,<U03CD>);(<U038F>,<U03CE>);(<U03E2>,<U03E3>);/
-   (<U03E4>,<U03E5>);(<U03E6>,<U03E7>);(<U03E8>,<U03E9>);(<U03EA>,<U03EB>);/
-   (<U03EC>,<U03ED>);(<U03EE>,<U03EF>);(<U0410>,<U0430>);/
-   (<U0411>,<U0431>);(<U0412>,<U0432>);(<U0413>,<U0433>);(<U0414>,<U0434>);/
-   (<U0415>,<U0435>);(<U0416>,<U0436>);(<U0417>,<U0437>);(<U0418>,<U0438>);/
-   (<U0419>,<U0439>);(<U041A>,<U043A>);(<U041B>,<U043B>);(<U041C>,<U043C>);/
-   (<U041D>,<U043D>);(<U041E>,<U043E>);(<U041F>,<U043F>);(<U0420>,<U0440>);/
-   (<U0421>,<U0441>);(<U0422>,<U0442>);(<U0423>,<U0443>);(<U0424>,<U0444>);/
-   (<U0425>,<U0445>);(<U0426>,<U0446>);(<U0427>,<U0447>);(<U0428>,<U0448>);/
-   (<U0429>,<U0449>);(<U042A>,<U044A>);(<U042B>,<U044B>);(<U042C>,<U044C>);/
-   (<U042D>,<U044D>);(<U042E>,<U044E>);(<U042F>,<U044F>);(<U0401>,<U0451>);/
-   (<U0402>,<U0452>);(<U0403>,<U0453>);(<U0404>,<U0454>);(<U0405>,<U0455>);/
-   (<U0406>,<U0456>);(<U0407>,<U0457>);(<U0408>,<U0458>);(<U0409>,<U0459>);/
-   (<U040A>,<U045A>);(<U040B>,<U045B>);(<U040C>,<U045C>);(<U040E>,<U045E>);/
-   (<U040F>,<U045F>);(<U0460>,<U0461>);(<U0462>,<U0463>);(<U0464>,<U0465>);/
-   (<U0466>,<U0467>);(<U0468>,<U0469>);(<U046A>,<U046B>);(<U046C>,<U046D>);/
-   (<U046E>,<U046F>);(<U0470>,<U0471>);(<U0472>,<U0473>);(<U0474>,<U0475>);/
-   (<U0476>,<U0477>);(<U0478>,<U0479>);(<U047A>,<U047B>);(<U047C>,<U047D>);/
-   (<U047E>,<U047F>);(<U0480>,<U0481>);(<U0490>,<U0491>);(<U0492>,<U0493>);/
-   (<U0494>,<U0495>);(<U0496>,<U0497>);(<U0498>,<U0499>);(<U049A>,<U049B>);/
-   (<U049C>,<U049D>);(<U049E>,<U049F>);(<U04A0>,<U04A1>);(<U04A2>,<U04A3>);/
-   (<U04A4>,<U04A5>);(<U04A6>,<U04A7>);(<U04A8>,<U04A9>);(<U04AA>,<U04AB>);/
-   (<U04AC>,<U04AD>);(<U04AE>,<U04AF>);(<U04B0>,<U04B1>);(<U04B2>,<U04B3>);/
-   (<U04B4>,<U04B5>);(<U04B6>,<U04B7>);(<U04B8>,<U04B9>);(<U04BA>,<U04BB>);/
-   (<U04BC>,<U04BD>);(<U04BE>,<U04BF>);(<U04C1>,<U04C2>);(<U04C3>,<U04C4>);/
-   (<U04C7>,<U04C8>);(<U04CB>,<U04CC>);(<U04D0>,<U04D1>);(<U04D2>,<U04D3>);/
-   (<U04D4>,<U04D5>);(<U04D6>,<U04D7>);(<U04D8>,<U04D9>);(<U04DA>,<U04DB>);/
-   (<U04DC>,<U04DD>);(<U04DE>,<U04DF>);(<U04E0>,<U04E1>);(<U04E2>,<U04E3>);/
-   (<U04E4>,<U04E5>);(<U04E6>,<U04E7>);(<U04E8>,<U04E9>);(<U04EA>,<U04EB>);/
-   (<U04EE>,<U04EF>);(<U04F0>,<U04F1>);(<U04F2>,<U04F3>);(<U04F4>,<U04F5>);/
-   (<U04F8>,<U04F9>);(<U0531>,<U0561>);(<U0532>,<U0562>);(<U0533>,<U0563>);/
-   (<U0534>,<U0564>);(<U0535>,<U0565>);(<U0536>,<U0566>);(<U0537>,<U0567>);/
-   (<U0538>,<U0568>);(<U0539>,<U0569>);(<U053A>,<U056A>);(<U053B>,<U056B>);/
-   (<U053C>,<U056C>);(<U053D>,<U056D>);(<U053E>,<U056E>);(<U053F>,<U056F>);/
-   (<U0540>,<U0570>);(<U0541>,<U0571>);(<U0542>,<U0572>);(<U0543>,<U0573>);/
-   (<U0544>,<U0574>);(<U0545>,<U0575>);(<U0546>,<U0576>);(<U0547>,<U0577>);/
-   (<U0548>,<U0578>);(<U0549>,<U0579>);(<U054A>,<U057A>);(<U054B>,<U057B>);/
-   (<U054C>,<U057C>);(<U054D>,<U057D>);(<U054E>,<U057E>);(<U054F>,<U057F>);/
-   (<U0550>,<U0580>);(<U0551>,<U0581>);(<U0552>,<U0582>);(<U0553>,<U0583>);/
-   (<U0554>,<U0584>);(<U0555>,<U0585>);(<U0556>,<U0586>);/
-   (<U10A0>,<U10D0>);(<U10A1>,<U10D1>);(<U10A2>,<U10D2>);(<U10A3>,<U10D3>);/
-   (<U10A4>,<U10D4>);(<U10A5>,<U10D5>);(<U10A6>,<U10D6>);(<U10A7>,<U10D7>);/
-   (<U10A8>,<U10D8>);(<U10A9>,<U10D9>);(<U10AA>,<U10DA>);(<U10AB>,<U10DB>);/
-   (<U10AC>,<U10DC>);(<U10AD>,<U10DD>);(<U10AE>,<U10DE>);(<U10AF>,<U10DF>);/
-   (<U10B0>,<U10E0>);(<U10B1>,<U10E1>);(<U10B2>,<U10E2>);(<U10B3>,<U10E3>);/
-   (<U10B4>,<U10E4>);(<U10B5>,<U10E5>);(<U10B6>,<U10E6>);(<U10B7>,<U10E7>);/
-   (<U10B8>,<U10E8>);(<U10B9>,<U10E9>);(<U10BA>,<U10EA>);(<U10BB>,<U10EB>);/
-   (<U10BC>,<U10EC>);(<U10BD>,<U10ED>);(<U10BE>,<U10EE>);(<U10BF>,<U10EF>);/
-   (<U10C0>,<U10F0>);(<U10C1>,<U10F1>);(<U10C2>,<U10F2>);(<U10C3>,<U10F3>);/
-   (<U10C4>,<U10F4>);(<U10C5>,<U10F5>);/
-   (<U1E00>,<U1E01>);/
-   (<U1E02>,<U1E03>);(<U1E04>,<U1E05>);(<U1E06>,<U1E07>);(<U1E08>,<U1E09>);/
-   (<U1E0A>,<U1E0B>);(<U1E0C>,<U1E0D>);(<U1E0E>,<U1E0F>);(<U1E10>,<U1E11>);/
-   (<U1E12>,<U1E13>);(<U1E14>,<U1E15>);(<U1E16>,<U1E17>);(<U1E18>,<U1E19>);/
-   (<U1E1A>,<U1E1B>);(<U1E1C>,<U1E1D>);(<U1E1E>,<U1E1F>);(<U1E20>,<U1E21>);/
-   (<U1E22>,<U1E23>);(<U1E24>,<U1E25>);(<U1E26>,<U1E27>);(<U1E28>,<U1E29>);/
-   (<U1E2A>,<U1E2B>);(<U1E2C>,<U1E2D>);(<U1E2E>,<U1E2F>);(<U1E30>,<U1E31>);/
-   (<U1E32>,<U1E33>);(<U1E34>,<U1E35>);(<U1E36>,<U1E37>);(<U1E38>,<U1E39>);/
-   (<U1E3A>,<U1E3B>);(<U1E3C>,<U1E3D>);(<U1E3E>,<U1E3F>);(<U1E40>,<U1E41>);/
-   (<U1E42>,<U1E43>);(<U1E44>,<U1E45>);(<U1E46>,<U1E47>);(<U1E48>,<U1E49>);/
-   (<U1E4A>,<U1E4B>);(<U1E4C>,<U1E4D>);(<U1E4E>,<U1E4F>);(<U1E50>,<U1E51>);/
-   (<U1E52>,<U1E53>);(<U1E54>,<U1E55>);(<U1E56>,<U1E57>);(<U1E58>,<U1E59>);/
-   (<U1E5A>,<U1E5B>);(<U1E5C>,<U1E5D>);(<U1E5E>,<U1E5F>);(<U1E60>,<U1E61>);/
-   (<U1E62>,<U1E63>);(<U1E64>,<U1E65>);(<U1E66>,<U1E67>);(<U1E68>,<U1E69>);/
-   (<U1E6A>,<U1E6B>);(<U1E6C>,<U1E6D>);(<U1E6E>,<U1E6F>);(<U1E70>,<U1E71>);/
-   (<U1E72>,<U1E73>);(<U1E74>,<U1E75>);(<U1E76>,<U1E77>);(<U1E78>,<U1E79>);/
-   (<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);(<U1E7E>,<U1E7F>);(<U1E80>,<U1E81>);/
-   (<U1E82>,<U1E83>);(<U1E84>,<U1E85>);(<U1E86>,<U1E87>);(<U1E88>,<U1E89>);/
-   (<U1E8A>,<U1E8B>);(<U1E8C>,<U1E8D>);(<U1E8E>,<U1E8F>);(<U1E90>,<U1E91>);/
-   (<U1E92>,<U1E93>);(<U1E94>,<U1E95>);(<U1EA0>,<U1EA1>);(<U1EA2>,<U1EA3>);/
-   (<U1EA4>,<U1EA5>);(<U1EA6>,<U1EA7>);(<U1EA8>,<U1EA9>);(<U1EAA>,<U1EAB>);/
-   (<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);(<U1EB0>,<U1EB1>);(<U1EB2>,<U1EB3>);/
-   (<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);(<U1EB8>,<U1EB9>);(<U1EBA>,<U1EBB>);/
-   (<U1EBC>,<U1EBD>);(<U1EBE>,<U1EBF>);(<U1EC0>,<U1EC1>);(<U1EC2>,<U1EC3>);/
-   (<U1EC4>,<U1EC5>);(<U1EC6>,<U1EC7>);(<U1EC8>,<U1EC9>);(<U1ECA>,<U1ECB>);/
-   (<U1ECC>,<U1ECD>);(<U1ECE>,<U1ECF>);(<U1ED0>,<U1ED1>);(<U1ED2>,<U1ED3>);/
-   (<U1ED4>,<U1ED5>);(<U1ED6>,<U1ED7>);(<U1ED8>,<U1ED9>);(<U1EDA>,<U1EDB>);/
-   (<U1EDC>,<U1EDD>);(<U1EDE>,<U1EDF>);(<U1EE0>,<U1EE1>);(<U1EE2>,<U1EE3>);/
-   (<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);(<U1EE8>,<U1EE9>);(<U1EEA>,<U1EEB>);/
-   (<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);(<U1EF0>,<U1EF1>);(<U1EF2>,<U1EF3>);/
-   (<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);(<U1EF8>,<U1EF9>);(<U1F08>,<U1F00>);/
-   (<U1F09>,<U1F01>);(<U1F0A>,<U1F02>);(<U1F0B>,<U1F03>);(<U1F0C>,<U1F04>);/
-   (<U1F0D>,<U1F05>);(<U1F0E>,<U1F06>);(<U1F0F>,<U1F07>);(<U1F18>,<U1F10>);/
-   (<U1F19>,<U1F11>);(<U1F1A>,<U1F12>);(<U1F1B>,<U1F13>);(<U1F1C>,<U1F14>);/
-   (<U1F1D>,<U1F15>);(<U1F28>,<U1F20>);(<U1F29>,<U1F21>);(<U1F2A>,<U1F22>);/
-   (<U1F2B>,<U1F23>);(<U1F2C>,<U1F24>);(<U1F2D>,<U1F25>);(<U1F2E>,<U1F26>);/
-   (<U1F2F>,<U1F27>);(<U1F38>,<U1F30>);(<U1F39>,<U1F31>);(<U1F3A>,<U1F32>);/
-   (<U1F3B>,<U1F33>);(<U1F3C>,<U1F34>);(<U1F3D>,<U1F35>);(<U1F3E>,<U1F36>);/
-   (<U1F3F>,<U1F37>);(<U1F48>,<U1F40>);(<U1F49>,<U1F41>);(<U1F4A>,<U1F42>);/
-   (<U1F4B>,<U1F43>);(<U1F4C>,<U1F44>);(<U1F4D>,<U1F45>);(<U1F59>,<U1F51>);/
-   (<U1F5B>,<U1F53>);(<U1F5D>,<U1F55>);(<U1F5F>,<U1F57>);(<U1F68>,<U1F60>);/
-   (<U1F69>,<U1F61>);(<U1F6A>,<U1F62>);(<U1F6B>,<U1F63>);(<U1F6C>,<U1F64>);/
-   (<U1F6D>,<U1F65>);(<U1F6E>,<U1F66>);(<U1F6F>,<U1F67>);(<U1FBA>,<U1F70>);/
-   (<U1FBB>,<U1F71>);(<U1FC8>,<U1F72>);(<U1FC9>,<U1F73>);(<U1FCA>,<U1F74>);/
-   (<U1FCB>,<U1F75>);(<U1FDA>,<U1F76>);(<U1FDB>,<U1F77>);(<U1FF8>,<U1F78>);/
-   (<U1FF9>,<U1F79>);(<U1FEA>,<U1F7A>);(<U1FEB>,<U1F7B>);(<U1FFA>,<U1F7C>);/
-   (<U1FFB>,<U1F7D>);(<U1F88>,<U1F80>);(<U1F89>,<U1F81>);(<U1F8A>,<U1F82>);/
+   (<U01F4>,<U01F5>);(<U01F6>,<U0195>);(<U01F7>,<U01BF>);(<U01F8>,<U01F9>);/
+   (<U01FA>,<U01FB>);(<U01FC>,<U01FD>);(<U01FE>,<U01FF>);(<U0200>,<U0201>);/
+   (<U0202>,<U0203>);(<U0204>,<U0205>);(<U0206>,<U0207>);(<U0208>,<U0209>);/
+   (<U020A>,<U020B>);(<U020C>,<U020D>);(<U020E>,<U020F>);(<U0210>,<U0211>);/
+   (<U0212>,<U0213>);(<U0214>,<U0215>);(<U0216>,<U0217>);(<U0218>,<U0219>);/
+   (<U021A>,<U021B>);(<U021C>,<U021D>);(<U021E>,<U021F>);(<U0222>,<U0223>);/
+   (<U0224>,<U0225>);(<U0226>,<U0227>);(<U0228>,<U0229>);(<U022A>,<U022B>);/
+   (<U022C>,<U022D>);(<U022E>,<U022F>);(<U0230>,<U0231>);(<U0232>,<U0233>);/
+   (<U0386>,<U03AC>);(<U0388>,<U03AD>);(<U0389>,<U03AE>);(<U038A>,<U03AF>);/
+   (<U038C>,<U03CC>);(<U038E>,<U03CD>);(<U038F>,<U03CE>);(<U0391>,<U03B1>);/
+   (<U0392>,<U03B2>);(<U0393>,<U03B3>);(<U0394>,<U03B4>);(<U0395>,<U03B5>);/
+   (<U0396>,<U03B6>);(<U0397>,<U03B7>);(<U0398>,<U03B8>);(<U0399>,<U03B9>);/
+   (<U039A>,<U03BA>);(<U039B>,<U03BB>);(<U039C>,<U03BC>);(<U039D>,<U03BD>);/
+   (<U039E>,<U03BE>);(<U039F>,<U03BF>);(<U03A0>,<U03C0>);(<U03A1>,<U03C1>);/
+   (<U03A3>,<U03C3>);(<U03A4>,<U03C4>);(<U03A5>,<U03C5>);(<U03A6>,<U03C6>);/
+   (<U03A7>,<U03C7>);(<U03A8>,<U03C8>);(<U03A9>,<U03C9>);(<U03AA>,<U03CA>);/
+   (<U03AB>,<U03CB>);(<U03DA>,<U03DB>);(<U03DC>,<U03DD>);(<U03DE>,<U03DF>);/
+   (<U03E0>,<U03E1>);(<U03E2>,<U03E3>);(<U03E4>,<U03E5>);(<U03E6>,<U03E7>);/
+   (<U03E8>,<U03E9>);(<U03EA>,<U03EB>);(<U03EC>,<U03ED>);(<U03EE>,<U03EF>);/
+   (<U0400>,<U0450>);(<U0401>,<U0451>);(<U0402>,<U0452>);(<U0403>,<U0453>);/
+   (<U0404>,<U0454>);(<U0405>,<U0455>);(<U0406>,<U0456>);(<U0407>,<U0457>);/
+   (<U0408>,<U0458>);(<U0409>,<U0459>);(<U040A>,<U045A>);(<U040B>,<U045B>);/
+   (<U040C>,<U045C>);(<U040D>,<U045D>);(<U040E>,<U045E>);(<U040F>,<U045F>);/
+   (<U0410>,<U0430>);(<U0411>,<U0431>);(<U0412>,<U0432>);(<U0413>,<U0433>);/
+   (<U0414>,<U0434>);(<U0415>,<U0435>);(<U0416>,<U0436>);(<U0417>,<U0437>);/
+   (<U0418>,<U0438>);(<U0419>,<U0439>);(<U041A>,<U043A>);(<U041B>,<U043B>);/
+   (<U041C>,<U043C>);(<U041D>,<U043D>);(<U041E>,<U043E>);(<U041F>,<U043F>);/
+   (<U0420>,<U0440>);(<U0421>,<U0441>);(<U0422>,<U0442>);(<U0423>,<U0443>);/
+   (<U0424>,<U0444>);(<U0425>,<U0445>);(<U0426>,<U0446>);(<U0427>,<U0447>);/
+   (<U0428>,<U0448>);(<U0429>,<U0449>);(<U042A>,<U044A>);(<U042B>,<U044B>);/
+   (<U042C>,<U044C>);(<U042D>,<U044D>);(<U042E>,<U044E>);(<U042F>,<U044F>);/
+   (<U0460>,<U0461>);(<U0462>,<U0463>);(<U0464>,<U0465>);(<U0466>,<U0467>);/
+   (<U0468>,<U0469>);(<U046A>,<U046B>);(<U046C>,<U046D>);(<U046E>,<U046F>);/
+   (<U0470>,<U0471>);(<U0472>,<U0473>);(<U0474>,<U0475>);(<U0476>,<U0477>);/
+   (<U0478>,<U0479>);(<U047A>,<U047B>);(<U047C>,<U047D>);(<U047E>,<U047F>);/
+   (<U0480>,<U0481>);(<U048C>,<U048D>);(<U048E>,<U048F>);(<U0490>,<U0491>);/
+   (<U0492>,<U0493>);(<U0494>,<U0495>);(<U0496>,<U0497>);(<U0498>,<U0499>);/
+   (<U049A>,<U049B>);(<U049C>,<U049D>);(<U049E>,<U049F>);(<U04A0>,<U04A1>);/
+   (<U04A2>,<U04A3>);(<U04A4>,<U04A5>);(<U04A6>,<U04A7>);(<U04A8>,<U04A9>);/
+   (<U04AA>,<U04AB>);(<U04AC>,<U04AD>);(<U04AE>,<U04AF>);(<U04B0>,<U04B1>);/
+   (<U04B2>,<U04B3>);(<U04B4>,<U04B5>);(<U04B6>,<U04B7>);(<U04B8>,<U04B9>);/
+   (<U04BA>,<U04BB>);(<U04BC>,<U04BD>);(<U04BE>,<U04BF>);(<U04C1>,<U04C2>);/
+   (<U04C3>,<U04C4>);(<U04C7>,<U04C8>);(<U04CB>,<U04CC>);(<U04D0>,<U04D1>);/
+   (<U04D2>,<U04D3>);(<U04D4>,<U04D5>);(<U04D6>,<U04D7>);(<U04D8>,<U04D9>);/
+   (<U04DA>,<U04DB>);(<U04DC>,<U04DD>);(<U04DE>,<U04DF>);(<U04E0>,<U04E1>);/
+   (<U04E2>,<U04E3>);(<U04E4>,<U04E5>);(<U04E6>,<U04E7>);(<U04E8>,<U04E9>);/
+   (<U04EA>,<U04EB>);(<U04EC>,<U04ED>);(<U04EE>,<U04EF>);(<U04F0>,<U04F1>);/
+   (<U04F2>,<U04F3>);(<U04F4>,<U04F5>);(<U04F8>,<U04F9>);(<U0531>,<U0561>);/
+   (<U0532>,<U0562>);(<U0533>,<U0563>);(<U0534>,<U0564>);(<U0535>,<U0565>);/
+   (<U0536>,<U0566>);(<U0537>,<U0567>);(<U0538>,<U0568>);(<U0539>,<U0569>);/
+   (<U053A>,<U056A>);(<U053B>,<U056B>);(<U053C>,<U056C>);(<U053D>,<U056D>);/
+   (<U053E>,<U056E>);(<U053F>,<U056F>);(<U0540>,<U0570>);(<U0541>,<U0571>);/
+   (<U0542>,<U0572>);(<U0543>,<U0573>);(<U0544>,<U0574>);(<U0545>,<U0575>);/
+   (<U0546>,<U0576>);(<U0547>,<U0577>);(<U0548>,<U0578>);(<U0549>,<U0579>);/
+   (<U054A>,<U057A>);(<U054B>,<U057B>);(<U054C>,<U057C>);(<U054D>,<U057D>);/
+   (<U054E>,<U057E>);(<U054F>,<U057F>);(<U0550>,<U0580>);(<U0551>,<U0581>);/
+   (<U0552>,<U0582>);(<U0553>,<U0583>);(<U0554>,<U0584>);(<U0555>,<U0585>);/
+   (<U0556>,<U0586>);(<U1E00>,<U1E01>);(<U1E02>,<U1E03>);(<U1E04>,<U1E05>);/
+   (<U1E06>,<U1E07>);(<U1E08>,<U1E09>);(<U1E0A>,<U1E0B>);(<U1E0C>,<U1E0D>);/
+   (<U1E0E>,<U1E0F>);(<U1E10>,<U1E11>);(<U1E12>,<U1E13>);(<U1E14>,<U1E15>);/
+   (<U1E16>,<U1E17>);(<U1E18>,<U1E19>);(<U1E1A>,<U1E1B>);(<U1E1C>,<U1E1D>);/
+   (<U1E1E>,<U1E1F>);(<U1E20>,<U1E21>);(<U1E22>,<U1E23>);(<U1E24>,<U1E25>);/
+   (<U1E26>,<U1E27>);(<U1E28>,<U1E29>);(<U1E2A>,<U1E2B>);(<U1E2C>,<U1E2D>);/
+   (<U1E2E>,<U1E2F>);(<U1E30>,<U1E31>);(<U1E32>,<U1E33>);(<U1E34>,<U1E35>);/
+   (<U1E36>,<U1E37>);(<U1E38>,<U1E39>);(<U1E3A>,<U1E3B>);(<U1E3C>,<U1E3D>);/
+   (<U1E3E>,<U1E3F>);(<U1E40>,<U1E41>);(<U1E42>,<U1E43>);(<U1E44>,<U1E45>);/
+   (<U1E46>,<U1E47>);(<U1E48>,<U1E49>);(<U1E4A>,<U1E4B>);(<U1E4C>,<U1E4D>);/
+   (<U1E4E>,<U1E4F>);(<U1E50>,<U1E51>);(<U1E52>,<U1E53>);(<U1E54>,<U1E55>);/
+   (<U1E56>,<U1E57>);(<U1E58>,<U1E59>);(<U1E5A>,<U1E5B>);(<U1E5C>,<U1E5D>);/
+   (<U1E5E>,<U1E5F>);(<U1E60>,<U1E61>);(<U1E62>,<U1E63>);(<U1E64>,<U1E65>);/
+   (<U1E66>,<U1E67>);(<U1E68>,<U1E69>);(<U1E6A>,<U1E6B>);(<U1E6C>,<U1E6D>);/
+   (<U1E6E>,<U1E6F>);(<U1E70>,<U1E71>);(<U1E72>,<U1E73>);(<U1E74>,<U1E75>);/
+   (<U1E76>,<U1E77>);(<U1E78>,<U1E79>);(<U1E7A>,<U1E7B>);(<U1E7C>,<U1E7D>);/
+   (<U1E7E>,<U1E7F>);(<U1E80>,<U1E81>);(<U1E82>,<U1E83>);(<U1E84>,<U1E85>);/
+   (<U1E86>,<U1E87>);(<U1E88>,<U1E89>);(<U1E8A>,<U1E8B>);(<U1E8C>,<U1E8D>);/
+   (<U1E8E>,<U1E8F>);(<U1E90>,<U1E91>);(<U1E92>,<U1E93>);(<U1E94>,<U1E95>);/
+   (<U1EA0>,<U1EA1>);(<U1EA2>,<U1EA3>);(<U1EA4>,<U1EA5>);(<U1EA6>,<U1EA7>);/
+   (<U1EA8>,<U1EA9>);(<U1EAA>,<U1EAB>);(<U1EAC>,<U1EAD>);(<U1EAE>,<U1EAF>);/
+   (<U1EB0>,<U1EB1>);(<U1EB2>,<U1EB3>);(<U1EB4>,<U1EB5>);(<U1EB6>,<U1EB7>);/
+   (<U1EB8>,<U1EB9>);(<U1EBA>,<U1EBB>);(<U1EBC>,<U1EBD>);(<U1EBE>,<U1EBF>);/
+   (<U1EC0>,<U1EC1>);(<U1EC2>,<U1EC3>);(<U1EC4>,<U1EC5>);(<U1EC6>,<U1EC7>);/
+   (<U1EC8>,<U1EC9>);(<U1ECA>,<U1ECB>);(<U1ECC>,<U1ECD>);(<U1ECE>,<U1ECF>);/
+   (<U1ED0>,<U1ED1>);(<U1ED2>,<U1ED3>);(<U1ED4>,<U1ED5>);(<U1ED6>,<U1ED7>);/
+   (<U1ED8>,<U1ED9>);(<U1EDA>,<U1EDB>);(<U1EDC>,<U1EDD>);(<U1EDE>,<U1EDF>);/
+   (<U1EE0>,<U1EE1>);(<U1EE2>,<U1EE3>);(<U1EE4>,<U1EE5>);(<U1EE6>,<U1EE7>);/
+   (<U1EE8>,<U1EE9>);(<U1EEA>,<U1EEB>);(<U1EEC>,<U1EED>);(<U1EEE>,<U1EEF>);/
+   (<U1EF0>,<U1EF1>);(<U1EF2>,<U1EF3>);(<U1EF4>,<U1EF5>);(<U1EF6>,<U1EF7>);/
+   (<U1EF8>,<U1EF9>);(<U1F08>,<U1F00>);(<U1F09>,<U1F01>);(<U1F0A>,<U1F02>);/
+   (<U1F0B>,<U1F03>);(<U1F0C>,<U1F04>);(<U1F0D>,<U1F05>);(<U1F0E>,<U1F06>);/
+   (<U1F0F>,<U1F07>);(<U1F18>,<U1F10>);(<U1F19>,<U1F11>);(<U1F1A>,<U1F12>);/
+   (<U1F1B>,<U1F13>);(<U1F1C>,<U1F14>);(<U1F1D>,<U1F15>);(<U1F28>,<U1F20>);/
+   (<U1F29>,<U1F21>);(<U1F2A>,<U1F22>);(<U1F2B>,<U1F23>);(<U1F2C>,<U1F24>);/
+   (<U1F2D>,<U1F25>);(<U1F2E>,<U1F26>);(<U1F2F>,<U1F27>);(<U1F38>,<U1F30>);/
+   (<U1F39>,<U1F31>);(<U1F3A>,<U1F32>);(<U1F3B>,<U1F33>);(<U1F3C>,<U1F34>);/
+   (<U1F3D>,<U1F35>);(<U1F3E>,<U1F36>);(<U1F3F>,<U1F37>);(<U1F48>,<U1F40>);/
+   (<U1F49>,<U1F41>);(<U1F4A>,<U1F42>);(<U1F4B>,<U1F43>);(<U1F4C>,<U1F44>);/
+   (<U1F4D>,<U1F45>);(<U1F59>,<U1F51>);(<U1F5B>,<U1F53>);(<U1F5D>,<U1F55>);/
+   (<U1F5F>,<U1F57>);(<U1F68>,<U1F60>);(<U1F69>,<U1F61>);(<U1F6A>,<U1F62>);/
+   (<U1F6B>,<U1F63>);(<U1F6C>,<U1F64>);(<U1F6D>,<U1F65>);(<U1F6E>,<U1F66>);/
+   (<U1F6F>,<U1F67>);(<U1F88>,<U1F80>);(<U1F89>,<U1F81>);(<U1F8A>,<U1F82>);/
    (<U1F8B>,<U1F83>);(<U1F8C>,<U1F84>);(<U1F8D>,<U1F85>);(<U1F8E>,<U1F86>);/
    (<U1F8F>,<U1F87>);(<U1F98>,<U1F90>);(<U1F99>,<U1F91>);(<U1F9A>,<U1F92>);/
    (<U1F9B>,<U1F93>);(<U1F9C>,<U1F94>);(<U1F9D>,<U1F95>);(<U1F9E>,<U1F96>);/
    (<U1F9F>,<U1F97>);(<U1FA8>,<U1FA0>);(<U1FA9>,<U1FA1>);(<U1FAA>,<U1FA2>);/
    (<U1FAB>,<U1FA3>);(<U1FAC>,<U1FA4>);(<U1FAD>,<U1FA5>);(<U1FAE>,<U1FA6>);/
-   (<U1FAF>,<U1FA7>);(<U1FB8>,<U1FB0>);(<U1FB9>,<U1FB1>);(<U1FBC>,<U1FB3>);/
-   (<U1FCC>,<U1FC3>);(<U1FD8>,<U1FD0>);(<U1FD9>,<U1FD1>);(<U1FE8>,<U1FE0>);/
-   (<U1FE9>,<U1FE1>);(<U1FEC>,<U1FE5>);(<U1FFC>,<U1FF3>)
-%
+   (<U1FAF>,<U1FA7>);(<U1FB8>,<U1FB0>);(<U1FB9>,<U1FB1>);(<U1FBA>,<U1F70>);/
+   (<U1FBB>,<U1F71>);(<U1FBC>,<U1FB3>);(<U1FC8>,<U1F72>);(<U1FC9>,<U1F73>);/
+   (<U1FCA>,<U1F74>);(<U1FCB>,<U1F75>);(<U1FCC>,<U1FC3>);(<U1FD8>,<U1FD0>);/
+   (<U1FD9>,<U1FD1>);(<U1FDA>,<U1F76>);(<U1FDB>,<U1F77>);(<U1FE8>,<U1FE0>);/
+   (<U1FE9>,<U1FE1>);(<U1FEA>,<U1F7A>);(<U1FEB>,<U1F7B>);(<U1FEC>,<U1FE5>);/
+   (<U1FF8>,<U1F78>);(<U1FF9>,<U1F79>);(<U1FFA>,<U1F7C>);(<U1FFB>,<U1F7D>);/
+   (<U1FFC>,<U1FF3>);(<U2126>,<U03C9>);(<U212A>,<U006B>);(<U212B>,<U00E5>);/
+   (<U2160>,<U2170>);(<U2161>,<U2171>);(<U2162>,<U2172>);(<U2163>,<U2173>);/
+   (<U2164>,<U2174>);(<U2165>,<U2175>);(<U2166>,<U2176>);(<U2167>,<U2177>);/
+   (<U2168>,<U2178>);(<U2169>,<U2179>);(<U216A>,<U217A>);(<U216B>,<U217B>);/
+   (<U216C>,<U217C>);(<U216D>,<U217D>);(<U216E>,<U217E>);(<U216F>,<U217F>);/
+   (<U24B6>,<U24D0>);(<U24B7>,<U24D1>);(<U24B8>,<U24D2>);(<U24B9>,<U24D3>);/
+   (<U24BA>,<U24D4>);(<U24BB>,<U24D5>);(<U24BC>,<U24D6>);(<U24BD>,<U24D7>);/
+   (<U24BE>,<U24D8>);(<U24BF>,<U24D9>);(<U24C0>,<U24DA>);(<U24C1>,<U24DB>);/
+   (<U24C2>,<U24DC>);(<U24C3>,<U24DD>);(<U24C4>,<U24DE>);(<U24C5>,<U24DF>);/
+   (<U24C6>,<U24E0>);(<U24C7>,<U24E1>);(<U24C8>,<U24E2>);(<U24C9>,<U24E3>);/
+   (<U24CA>,<U24E4>);(<U24CB>,<U24E5>);(<U24CC>,<U24E6>);(<U24CD>,<U24E7>);/
+   (<U24CE>,<U24E8>);(<U24CF>,<U24E9>);(<UFF21>,<UFF41>);(<UFF22>,<UFF42>);/
+   (<UFF23>,<UFF43>);(<UFF24>,<UFF44>);(<UFF25>,<UFF45>);(<UFF26>,<UFF46>);/
+   (<UFF27>,<UFF47>);(<UFF28>,<UFF48>);(<UFF29>,<UFF49>);(<UFF2A>,<UFF4A>);/
+   (<UFF2B>,<UFF4B>);(<UFF2C>,<UFF4C>);(<UFF2D>,<UFF4D>);(<UFF2E>,<UFF4E>);/
+   (<UFF2F>,<UFF4F>);(<UFF30>,<UFF50>);(<UFF31>,<UFF51>);(<UFF32>,<UFF52>);/
+   (<UFF33>,<UFF53>);(<UFF34>,<UFF54>);(<UFF35>,<UFF55>);(<UFF36>,<UFF56>);/
+   (<UFF37>,<UFF57>);(<UFF38>,<UFF58>);(<UFF39>,<UFF59>);(<UFF3A>,<UFF5A>)
+
+map "totitle"; /
+   (<U0061>,<U0041>);(<U0062>,<U0042>);(<U0063>,<U0043>);(<U0064>,<U0044>);/
+   (<U0065>,<U0045>);(<U0066>,<U0046>);(<U0067>,<U0047>);(<U0068>,<U0048>);/
+   (<U0069>,<U0049>);(<U006A>,<U004A>);(<U006B>,<U004B>);(<U006C>,<U004C>);/
+   (<U006D>,<U004D>);(<U006E>,<U004E>);(<U006F>,<U004F>);(<U0070>,<U0050>);/
+   (<U0071>,<U0051>);(<U0072>,<U0052>);(<U0073>,<U0053>);(<U0074>,<U0054>);/
+   (<U0075>,<U0055>);(<U0076>,<U0056>);(<U0077>,<U0057>);(<U0078>,<U0058>);/
+   (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00B5>,<U039C>);(<U00E0>,<U00C0>);/
+   (<U00E1>,<U00C1>);(<U00E2>,<U00C2>);(<U00E3>,<U00C3>);(<U00E4>,<U00C4>);/
+   (<U00E5>,<U00C5>);(<U00E6>,<U00C6>);(<U00E7>,<U00C7>);(<U00E8>,<U00C8>);/
+   (<U00E9>,<U00C9>);(<U00EA>,<U00CA>);(<U00EB>,<U00CB>);(<U00EC>,<U00CC>);/
+   (<U00ED>,<U00CD>);(<U00EE>,<U00CE>);(<U00EF>,<U00CF>);(<U00F0>,<U00D0>);/
+   (<U00F1>,<U00D1>);(<U00F2>,<U00D2>);(<U00F3>,<U00D3>);(<U00F4>,<U00D4>);/
+   (<U00F5>,<U00D5>);(<U00F6>,<U00D6>);(<U00F8>,<U00D8>);(<U00F9>,<U00D9>);/
+   (<U00FA>,<U00DA>);(<U00FB>,<U00DB>);(<U00FC>,<U00DC>);(<U00FD>,<U00DD>);/
+   (<U00FE>,<U00DE>);(<U00FF>,<U0178>);(<U0101>,<U0100>);(<U0103>,<U0102>);/
+   (<U0105>,<U0104>);(<U0107>,<U0106>);(<U0109>,<U0108>);(<U010B>,<U010A>);/
+   (<U010D>,<U010C>);(<U010F>,<U010E>);(<U0111>,<U0110>);(<U0113>,<U0112>);/
+   (<U0115>,<U0114>);(<U0117>,<U0116>);(<U0119>,<U0118>);(<U011B>,<U011A>);/
+   (<U011D>,<U011C>);(<U011F>,<U011E>);(<U0121>,<U0120>);(<U0123>,<U0122>);/
+   (<U0125>,<U0124>);(<U0127>,<U0126>);(<U0129>,<U0128>);(<U012B>,<U012A>);/
+   (<U012D>,<U012C>);(<U012F>,<U012E>);(<U0131>,<U0049>);(<U0133>,<U0132>);/
+   (<U0135>,<U0134>);(<U0137>,<U0136>);(<U013A>,<U0139>);(<U013C>,<U013B>);/
+   (<U013E>,<U013D>);(<U0140>,<U013F>);(<U0142>,<U0141>);(<U0144>,<U0143>);/
+   (<U0146>,<U0145>);(<U0148>,<U0147>);(<U014B>,<U014A>);(<U014D>,<U014C>);/
+   (<U014F>,<U014E>);(<U0151>,<U0150>);(<U0153>,<U0152>);(<U0155>,<U0154>);/
+   (<U0157>,<U0156>);(<U0159>,<U0158>);(<U015B>,<U015A>);(<U015D>,<U015C>);/
+   (<U015F>,<U015E>);(<U0161>,<U0160>);(<U0163>,<U0162>);(<U0165>,<U0164>);/
+   (<U0167>,<U0166>);(<U0169>,<U0168>);(<U016B>,<U016A>);(<U016D>,<U016C>);/
+   (<U016F>,<U016E>);(<U0171>,<U0170>);(<U0173>,<U0172>);(<U0175>,<U0174>);/
+   (<U0177>,<U0176>);(<U017A>,<U0179>);(<U017C>,<U017B>);(<U017E>,<U017D>);/
+   (<U017F>,<U0053>);(<U0183>,<U0182>);(<U0185>,<U0184>);(<U0188>,<U0187>);/
+   (<U018C>,<U018B>);(<U0192>,<U0191>);(<U0195>,<U01F6>);(<U0199>,<U0198>);/
+   (<U01A1>,<U01A0>);(<U01A3>,<U01A2>);(<U01A5>,<U01A4>);(<U01A8>,<U01A7>);/
+   (<U01AD>,<U01AC>);(<U01B0>,<U01AF>);(<U01B4>,<U01B3>);(<U01B6>,<U01B5>);/
+   (<U01B9>,<U01B8>);(<U01BD>,<U01BC>);(<U01BF>,<U01F7>);(<U01C4>,<U01C5>);/
+   (<U01C6>,<U01C5>);(<U01C7>,<U01C8>);(<U01C9>,<U01C8>);(<U01CA>,<U01CB>);/
+   (<U01CC>,<U01CB>);(<U01CE>,<U01CD>);(<U01D0>,<U01CF>);(<U01D2>,<U01D1>);/
+   (<U01D4>,<U01D3>);(<U01D6>,<U01D5>);(<U01D8>,<U01D7>);(<U01DA>,<U01D9>);/
+   (<U01DC>,<U01DB>);(<U01DD>,<U018E>);(<U01DF>,<U01DE>);(<U01E1>,<U01E0>);/
+   (<U01E3>,<U01E2>);(<U01E5>,<U01E4>);(<U01E7>,<U01E6>);(<U01E9>,<U01E8>);/
+   (<U01EB>,<U01EA>);(<U01ED>,<U01EC>);(<U01EF>,<U01EE>);(<U01F1>,<U01F2>);/
+   (<U01F3>,<U01F2>);(<U01F5>,<U01F4>);(<U01F9>,<U01F8>);(<U01FB>,<U01FA>);/
+   (<U01FD>,<U01FC>);(<U01FF>,<U01FE>);(<U0201>,<U0200>);(<U0203>,<U0202>);/
+   (<U0205>,<U0204>);(<U0207>,<U0206>);(<U0209>,<U0208>);(<U020B>,<U020A>);/
+   (<U020D>,<U020C>);(<U020F>,<U020E>);(<U0211>,<U0210>);(<U0213>,<U0212>);/
+   (<U0215>,<U0214>);(<U0217>,<U0216>);(<U0219>,<U0218>);(<U021B>,<U021A>);/
+   (<U021D>,<U021C>);(<U021F>,<U021E>);(<U0223>,<U0222>);(<U0225>,<U0224>);/
+   (<U0227>,<U0226>);(<U0229>,<U0228>);(<U022B>,<U022A>);(<U022D>,<U022C>);/
+   (<U022F>,<U022E>);(<U0231>,<U0230>);(<U0233>,<U0232>);(<U0253>,<U0181>);/
+   (<U0254>,<U0186>);(<U0256>,<U0189>);(<U0257>,<U018A>);(<U0259>,<U018F>);/
+   (<U025B>,<U0190>);(<U0260>,<U0193>);(<U0263>,<U0194>);(<U0268>,<U0197>);/
+   (<U0269>,<U0196>);(<U026F>,<U019C>);(<U0272>,<U019D>);(<U0275>,<U019F>);/
+   (<U0280>,<U01A6>);(<U0283>,<U01A9>);(<U0288>,<U01AE>);(<U028A>,<U01B1>);/
+   (<U028B>,<U01B2>);(<U0292>,<U01B7>);(<U0345>,<U0399>);(<U03AC>,<U0386>);/
+   (<U03AD>,<U0388>);(<U03AE>,<U0389>);(<U03AF>,<U038A>);(<U03B1>,<U0391>);/
+   (<U03B2>,<U0392>);(<U03B3>,<U0393>);(<U03B4>,<U0394>);(<U03B5>,<U0395>);/
+   (<U03B6>,<U0396>);(<U03B7>,<U0397>);(<U03B8>,<U0398>);(<U03B9>,<U0399>);/
+   (<U03BA>,<U039A>);(<U03BB>,<U039B>);(<U03BC>,<U039C>);(<U03BD>,<U039D>);/
+   (<U03BE>,<U039E>);(<U03BF>,<U039F>);(<U03C0>,<U03A0>);(<U03C1>,<U03A1>);/
+   (<U03C2>,<U03A3>);(<U03C3>,<U03A3>);(<U03C4>,<U03A4>);(<U03C5>,<U03A5>);/
+   (<U03C6>,<U03A6>);(<U03C7>,<U03A7>);(<U03C8>,<U03A8>);(<U03C9>,<U03A9>);/
+   (<U03CA>,<U03AA>);(<U03CB>,<U03AB>);(<U03CC>,<U038C>);(<U03CD>,<U038E>);/
+   (<U03CE>,<U038F>);(<U03D0>,<U0392>);(<U03D1>,<U0398>);(<U03D5>,<U03A6>);/
+   (<U03D6>,<U03A0>);(<U03DB>,<U03DA>);(<U03DD>,<U03DC>);(<U03DF>,<U03DE>);/
+   (<U03E1>,<U03E0>);(<U03E3>,<U03E2>);(<U03E5>,<U03E4>);(<U03E7>,<U03E6>);/
+   (<U03E9>,<U03E8>);(<U03EB>,<U03EA>);(<U03ED>,<U03EC>);(<U03EF>,<U03EE>);/
+   (<U03F0>,<U039A>);(<U03F1>,<U03A1>);(<U03F2>,<U03A3>);(<U0430>,<U0410>);/
+   (<U0431>,<U0411>);(<U0432>,<U0412>);(<U0433>,<U0413>);(<U0434>,<U0414>);/
+   (<U0435>,<U0415>);(<U0436>,<U0416>);(<U0437>,<U0417>);(<U0438>,<U0418>);/
+   (<U0439>,<U0419>);(<U043A>,<U041A>);(<U043B>,<U041B>);(<U043C>,<U041C>);/
+   (<U043D>,<U041D>);(<U043E>,<U041E>);(<U043F>,<U041F>);(<U0440>,<U0420>);/
+   (<U0441>,<U0421>);(<U0442>,<U0422>);(<U0443>,<U0423>);(<U0444>,<U0424>);/
+   (<U0445>,<U0425>);(<U0446>,<U0426>);(<U0447>,<U0427>);(<U0448>,<U0428>);/
+   (<U0449>,<U0429>);(<U044A>,<U042A>);(<U044B>,<U042B>);(<U044C>,<U042C>);/
+   (<U044D>,<U042D>);(<U044E>,<U042E>);(<U044F>,<U042F>);(<U0450>,<U0400>);/
+   (<U0451>,<U0401>);(<U0452>,<U0402>);(<U0453>,<U0403>);(<U0454>,<U0404>);/
+   (<U0455>,<U0405>);(<U0456>,<U0406>);(<U0457>,<U0407>);(<U0458>,<U0408>);/
+   (<U0459>,<U0409>);(<U045A>,<U040A>);(<U045B>,<U040B>);(<U045C>,<U040C>);/
+   (<U045D>,<U040D>);(<U045E>,<U040E>);(<U045F>,<U040F>);(<U0461>,<U0460>);/
+   (<U0463>,<U0462>);(<U0465>,<U0464>);(<U0467>,<U0466>);(<U0469>,<U0468>);/
+   (<U046B>,<U046A>);(<U046D>,<U046C>);(<U046F>,<U046E>);(<U0471>,<U0470>);/
+   (<U0473>,<U0472>);(<U0475>,<U0474>);(<U0477>,<U0476>);(<U0479>,<U0478>);/
+   (<U047B>,<U047A>);(<U047D>,<U047C>);(<U047F>,<U047E>);(<U0481>,<U0480>);/
+   (<U048D>,<U048C>);(<U048F>,<U048E>);(<U0491>,<U0490>);(<U0493>,<U0492>);/
+   (<U0495>,<U0494>);(<U0497>,<U0496>);(<U0499>,<U0498>);(<U049B>,<U049A>);/
+   (<U049D>,<U049C>);(<U049F>,<U049E>);(<U04A1>,<U04A0>);(<U04A3>,<U04A2>);/
+   (<U04A5>,<U04A4>);(<U04A7>,<U04A6>);(<U04A9>,<U04A8>);(<U04AB>,<U04AA>);/
+   (<U04AD>,<U04AC>);(<U04AF>,<U04AE>);(<U04B1>,<U04B0>);(<U04B3>,<U04B2>);/
+   (<U04B5>,<U04B4>);(<U04B7>,<U04B6>);(<U04B9>,<U04B8>);(<U04BB>,<U04BA>);/
+   (<U04BD>,<U04BC>);(<U04BF>,<U04BE>);(<U04C2>,<U04C1>);(<U04C4>,<U04C3>);/
+   (<U04C8>,<U04C7>);(<U04CC>,<U04CB>);(<U04D1>,<U04D0>);(<U04D3>,<U04D2>);/
+   (<U04D5>,<U04D4>);(<U04D7>,<U04D6>);(<U04D9>,<U04D8>);(<U04DB>,<U04DA>);/
+   (<U04DD>,<U04DC>);(<U04DF>,<U04DE>);(<U04E1>,<U04E0>);(<U04E3>,<U04E2>);/
+   (<U04E5>,<U04E4>);(<U04E7>,<U04E6>);(<U04E9>,<U04E8>);(<U04EB>,<U04EA>);/
+   (<U04ED>,<U04EC>);(<U04EF>,<U04EE>);(<U04F1>,<U04F0>);(<U04F3>,<U04F2>);/
+   (<U04F5>,<U04F4>);(<U04F9>,<U04F8>);(<U0561>,<U0531>);(<U0562>,<U0532>);/
+   (<U0563>,<U0533>);(<U0564>,<U0534>);(<U0565>,<U0535>);(<U0566>,<U0536>);/
+   (<U0567>,<U0537>);(<U0568>,<U0538>);(<U0569>,<U0539>);(<U056A>,<U053A>);/
+   (<U056B>,<U053B>);(<U056C>,<U053C>);(<U056D>,<U053D>);(<U056E>,<U053E>);/
+   (<U056F>,<U053F>);(<U0570>,<U0540>);(<U0571>,<U0541>);(<U0572>,<U0542>);/
+   (<U0573>,<U0543>);(<U0574>,<U0544>);(<U0575>,<U0545>);(<U0576>,<U0546>);/
+   (<U0577>,<U0547>);(<U0578>,<U0548>);(<U0579>,<U0549>);(<U057A>,<U054A>);/
+   (<U057B>,<U054B>);(<U057C>,<U054C>);(<U057D>,<U054D>);(<U057E>,<U054E>);/
+   (<U057F>,<U054F>);(<U0580>,<U0550>);(<U0581>,<U0551>);(<U0582>,<U0552>);/
+   (<U0583>,<U0553>);(<U0584>,<U0554>);(<U0585>,<U0555>);(<U0586>,<U0556>);/
+   (<U1E01>,<U1E00>);(<U1E03>,<U1E02>);(<U1E05>,<U1E04>);(<U1E07>,<U1E06>);/
+   (<U1E09>,<U1E08>);(<U1E0B>,<U1E0A>);(<U1E0D>,<U1E0C>);(<U1E0F>,<U1E0E>);/
+   (<U1E11>,<U1E10>);(<U1E13>,<U1E12>);(<U1E15>,<U1E14>);(<U1E17>,<U1E16>);/
+   (<U1E19>,<U1E18>);(<U1E1B>,<U1E1A>);(<U1E1D>,<U1E1C>);(<U1E1F>,<U1E1E>);/
+   (<U1E21>,<U1E20>);(<U1E23>,<U1E22>);(<U1E25>,<U1E24>);(<U1E27>,<U1E26>);/
+   (<U1E29>,<U1E28>);(<U1E2B>,<U1E2A>);(<U1E2D>,<U1E2C>);(<U1E2F>,<U1E2E>);/
+   (<U1E31>,<U1E30>);(<U1E33>,<U1E32>);(<U1E35>,<U1E34>);(<U1E37>,<U1E36>);/
+   (<U1E39>,<U1E38>);(<U1E3B>,<U1E3A>);(<U1E3D>,<U1E3C>);(<U1E3F>,<U1E3E>);/
+   (<U1E41>,<U1E40>);(<U1E43>,<U1E42>);(<U1E45>,<U1E44>);(<U1E47>,<U1E46>);/
+   (<U1E49>,<U1E48>);(<U1E4B>,<U1E4A>);(<U1E4D>,<U1E4C>);(<U1E4F>,<U1E4E>);/
+   (<U1E51>,<U1E50>);(<U1E53>,<U1E52>);(<U1E55>,<U1E54>);(<U1E57>,<U1E56>);/
+   (<U1E59>,<U1E58>);(<U1E5B>,<U1E5A>);(<U1E5D>,<U1E5C>);(<U1E5F>,<U1E5E>);/
+   (<U1E61>,<U1E60>);(<U1E63>,<U1E62>);(<U1E65>,<U1E64>);(<U1E67>,<U1E66>);/
+   (<U1E69>,<U1E68>);(<U1E6B>,<U1E6A>);(<U1E6D>,<U1E6C>);(<U1E6F>,<U1E6E>);/
+   (<U1E71>,<U1E70>);(<U1E73>,<U1E72>);(<U1E75>,<U1E74>);(<U1E77>,<U1E76>);/
+   (<U1E79>,<U1E78>);(<U1E7B>,<U1E7A>);(<U1E7D>,<U1E7C>);(<U1E7F>,<U1E7E>);/
+   (<U1E81>,<U1E80>);(<U1E83>,<U1E82>);(<U1E85>,<U1E84>);(<U1E87>,<U1E86>);/
+   (<U1E89>,<U1E88>);(<U1E8B>,<U1E8A>);(<U1E8D>,<U1E8C>);(<U1E8F>,<U1E8E>);/
+   (<U1E91>,<U1E90>);(<U1E93>,<U1E92>);(<U1E95>,<U1E94>);(<U1E9B>,<U1E60>);/
+   (<U1EA1>,<U1EA0>);(<U1EA3>,<U1EA2>);(<U1EA5>,<U1EA4>);(<U1EA7>,<U1EA6>);/
+   (<U1EA9>,<U1EA8>);(<U1EAB>,<U1EAA>);(<U1EAD>,<U1EAC>);(<U1EAF>,<U1EAE>);/
+   (<U1EB1>,<U1EB0>);(<U1EB3>,<U1EB2>);(<U1EB5>,<U1EB4>);(<U1EB7>,<U1EB6>);/
+   (<U1EB9>,<U1EB8>);(<U1EBB>,<U1EBA>);(<U1EBD>,<U1EBC>);(<U1EBF>,<U1EBE>);/
+   (<U1EC1>,<U1EC0>);(<U1EC3>,<U1EC2>);(<U1EC5>,<U1EC4>);(<U1EC7>,<U1EC6>);/
+   (<U1EC9>,<U1EC8>);(<U1ECB>,<U1ECA>);(<U1ECD>,<U1ECC>);(<U1ECF>,<U1ECE>);/
+   (<U1ED1>,<U1ED0>);(<U1ED3>,<U1ED2>);(<U1ED5>,<U1ED4>);(<U1ED7>,<U1ED6>);/
+   (<U1ED9>,<U1ED8>);(<U1EDB>,<U1EDA>);(<U1EDD>,<U1EDC>);(<U1EDF>,<U1EDE>);/
+   (<U1EE1>,<U1EE0>);(<U1EE3>,<U1EE2>);(<U1EE5>,<U1EE4>);(<U1EE7>,<U1EE6>);/
+   (<U1EE9>,<U1EE8>);(<U1EEB>,<U1EEA>);(<U1EED>,<U1EEC>);(<U1EEF>,<U1EEE>);/
+   (<U1EF1>,<U1EF0>);(<U1EF3>,<U1EF2>);(<U1EF5>,<U1EF4>);(<U1EF7>,<U1EF6>);/
+   (<U1EF9>,<U1EF8>);(<U1F00>,<U1F08>);(<U1F01>,<U1F09>);(<U1F02>,<U1F0A>);/
+   (<U1F03>,<U1F0B>);(<U1F04>,<U1F0C>);(<U1F05>,<U1F0D>);(<U1F06>,<U1F0E>);/
+   (<U1F07>,<U1F0F>);(<U1F10>,<U1F18>);(<U1F11>,<U1F19>);(<U1F12>,<U1F1A>);/
+   (<U1F13>,<U1F1B>);(<U1F14>,<U1F1C>);(<U1F15>,<U1F1D>);(<U1F20>,<U1F28>);/
+   (<U1F21>,<U1F29>);(<U1F22>,<U1F2A>);(<U1F23>,<U1F2B>);(<U1F24>,<U1F2C>);/
+   (<U1F25>,<U1F2D>);(<U1F26>,<U1F2E>);(<U1F27>,<U1F2F>);(<U1F30>,<U1F38>);/
+   (<U1F31>,<U1F39>);(<U1F32>,<U1F3A>);(<U1F33>,<U1F3B>);(<U1F34>,<U1F3C>);/
+   (<U1F35>,<U1F3D>);(<U1F36>,<U1F3E>);(<U1F37>,<U1F3F>);(<U1F40>,<U1F48>);/
+   (<U1F41>,<U1F49>);(<U1F42>,<U1F4A>);(<U1F43>,<U1F4B>);(<U1F44>,<U1F4C>);/
+   (<U1F45>,<U1F4D>);(<U1F51>,<U1F59>);(<U1F53>,<U1F5B>);(<U1F55>,<U1F5D>);/
+   (<U1F57>,<U1F5F>);(<U1F60>,<U1F68>);(<U1F61>,<U1F69>);(<U1F62>,<U1F6A>);/
+   (<U1F63>,<U1F6B>);(<U1F64>,<U1F6C>);(<U1F65>,<U1F6D>);(<U1F66>,<U1F6E>);/
+   (<U1F67>,<U1F6F>);(<U1F70>,<U1FBA>);(<U1F71>,<U1FBB>);(<U1F72>,<U1FC8>);/
+   (<U1F73>,<U1FC9>);(<U1F74>,<U1FCA>);(<U1F75>,<U1FCB>);(<U1F76>,<U1FDA>);/
+   (<U1F77>,<U1FDB>);(<U1F78>,<U1FF8>);(<U1F79>,<U1FF9>);(<U1F7A>,<U1FEA>);/
+   (<U1F7B>,<U1FEB>);(<U1F7C>,<U1FFA>);(<U1F7D>,<U1FFB>);(<U1F80>,<U1F88>);/
+   (<U1F81>,<U1F89>);(<U1F82>,<U1F8A>);(<U1F83>,<U1F8B>);(<U1F84>,<U1F8C>);/
+   (<U1F85>,<U1F8D>);(<U1F86>,<U1F8E>);(<U1F87>,<U1F8F>);(<U1F90>,<U1F98>);/
+   (<U1F91>,<U1F99>);(<U1F92>,<U1F9A>);(<U1F93>,<U1F9B>);(<U1F94>,<U1F9C>);/
+   (<U1F95>,<U1F9D>);(<U1F96>,<U1F9E>);(<U1F97>,<U1F9F>);(<U1FA0>,<U1FA8>);/
+   (<U1FA1>,<U1FA9>);(<U1FA2>,<U1FAA>);(<U1FA3>,<U1FAB>);(<U1FA4>,<U1FAC>);/
+   (<U1FA5>,<U1FAD>);(<U1FA6>,<U1FAE>);(<U1FA7>,<U1FAF>);(<U1FB0>,<U1FB8>);/
+   (<U1FB1>,<U1FB9>);(<U1FB3>,<U1FBC>);(<U1FBE>,<U0399>);(<U1FC3>,<U1FCC>);/
+   (<U1FD0>,<U1FD8>);(<U1FD1>,<U1FD9>);(<U1FE0>,<U1FE8>);(<U1FE1>,<U1FE9>);/
+   (<U1FE5>,<U1FEC>);(<U1FF3>,<U1FFC>);(<U2170>,<U2160>);(<U2171>,<U2161>);/
+   (<U2172>,<U2162>);(<U2173>,<U2163>);(<U2174>,<U2164>);(<U2175>,<U2165>);/
+   (<U2176>,<U2166>);(<U2177>,<U2167>);(<U2178>,<U2168>);(<U2179>,<U2169>);/
+   (<U217A>,<U216A>);(<U217B>,<U216B>);(<U217C>,<U216C>);(<U217D>,<U216D>);/
+   (<U217E>,<U216E>);(<U217F>,<U216F>);(<U24D0>,<U24B6>);(<U24D1>,<U24B7>);/
+   (<U24D2>,<U24B8>);(<U24D3>,<U24B9>);(<U24D4>,<U24BA>);(<U24D5>,<U24BB>);/
+   (<U24D6>,<U24BC>);(<U24D7>,<U24BD>);(<U24D8>,<U24BE>);(<U24D9>,<U24BF>);/
+   (<U24DA>,<U24C0>);(<U24DB>,<U24C1>);(<U24DC>,<U24C2>);(<U24DD>,<U24C3>);/
+   (<U24DE>,<U24C4>);(<U24DF>,<U24C5>);(<U24E0>,<U24C6>);(<U24E1>,<U24C7>);/
+   (<U24E2>,<U24C8>);(<U24E3>,<U24C9>);(<U24E4>,<U24CA>);(<U24E5>,<U24CB>);/
+   (<U24E6>,<U24CC>);(<U24E7>,<U24CD>);(<U24E8>,<U24CE>);(<U24E9>,<U24CF>);/
+   (<UFF41>,<UFF21>);(<UFF42>,<UFF22>);(<UFF43>,<UFF23>);(<UFF44>,<UFF24>);/
+   (<UFF45>,<UFF25>);(<UFF46>,<UFF26>);(<UFF47>,<UFF27>);(<UFF48>,<UFF28>);/
+   (<UFF49>,<UFF29>);(<UFF4A>,<UFF2A>);(<UFF4B>,<UFF2B>);(<UFF4C>,<UFF2C>);/
+   (<UFF4D>,<UFF2D>);(<UFF4E>,<UFF2E>);(<UFF4F>,<UFF2F>);(<UFF50>,<UFF30>);/
+   (<UFF51>,<UFF31>);(<UFF52>,<UFF32>);(<UFF53>,<UFF33>);(<UFF54>,<UFF34>);/
+   (<UFF55>,<UFF35>);(<UFF56>,<UFF36>);(<UFF57>,<UFF37>);(<UFF58>,<UFF38>);/
+   (<UFF59>,<UFF39>);(<UFF5A>,<UFF3A>)
+
 % The "combining" class reflects ISO/IEC 10646-1 annex B.1
 % That is, all combining characters (level 2+3).
-class          "combining"; /
-   <U0300>..<U036F>; <U20D0>..<U20FF>; <UFE20>..<UFE2F>;/
-   <U0483>..<U0486>;<U0591>..<U05A1>;<U05A3>..<U05B9>;/
-   <U05BB>..<U05BD>;<U05BF>;<U05C1>;<U05C2>;<U05C4>;<U064B>..<U0652>;<U0670>;/
-   <U06D7>..<U06E4>;<U06E7>;<U06E8>;<U06EA>..<U06ED>;<U0901>..<U0903>;<U093C>;/
-   <U093E>..<U094D>;<U0951>..<U0954>;<U0962>;<U0963>;<U0981>..<U0983>;<U09BC>;/
-   <U09BE>..<U09C4>;<U09C7>;<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>;<U09E3>;/
-   <U0A02>;<U0A3C>;<U0A3E>..<U0A42>;<U0A47>;<U0A48>;<U0A4B>..<U0A4D>;/
-   <U0A70>;<U0A71>;<U0A81>..<U0A83>;<U0ABC>;<U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;/
-   <U0ACB>..<U0ACD>;<U0B01>..<U0B03>;<U0B3C>;<U0B3E>..<U0B43>;<U0B47>;<U0B48>;/
-   <U0B4B>..<U0B4D>;<U0B56>;<U0B57>;<U0B82>;<U0B83>;<U0BBE>..<U0BC2>;/
-   <U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;<U0BD7>;<U0C01>..<U0C03>;<U0C3E>..<U0C44>;/
-   <U0C46>..<U0C48>;<U0C4A>..<U0C4D>;<U0C55>;<U0C56>;<U0C82>;<U0C83>;/
-   <U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>;<U0CD6>;/
-   <U0D02>;<U0D03>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;/
-   <U0E31>;<U0E34>..<U0E3A>;<U0E47>..<U0E4E>;<U0EB1>;<U0EB4>..<U0EB9>;/
-   <U0EBB>;<U0EBC>;<U0EC8>..<U0ECD>;<U0F18>;<U0F19>;<U0F35>;<U0F37>;<U0F39>;/
-   <U0F3E>;<U0F3F>;<U0F71>..<U0F84>;<U0F86>..<U0F89>;<U0F8B>;<U0F90>..<U0F95>;/
-   <U0F97>;<U0F99>..<U0FAD>;<U0FB1>..<U0FB7>;<U0FB9>;<U302A>..<U302F>;/
-   <U3099>;<U309A>;<UFB1E>
-%
+class "combining"; /
+   <U0300>..<U034E>;<U0360>..<U0362>;<U0483>..<U0486>;<U0488>..<U0489>;/
+   <U0591>..<U05A1>;<U05A3>..<U05B9>;<U05BB>..<U05BD>;<U05BF>;/
+   <U05C1>..<U05C2>;<U05C4>;<U064B>..<U0655>;<U0670>;<U06D6>..<U06E4>;/
+   <U06E7>..<U06E8>;<U06EA>..<U06ED>;<U0711>;<U0730>..<U074A>;/
+   <U07A6>..<U07B0>;<U0901>..<U0903>;<U093C>;<U093E>..<U094D>;/
+   <U0951>..<U0954>;<U0962>..<U0963>;<U0981>..<U0983>;<U09BC>;/
+   <U09BE>..<U09C4>;<U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;/
+   <U09E2>..<U09E3>;<U0A02>;<U0A3C>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;/
+   <U0A4B>..<U0A4D>;<U0A70>..<U0A71>;<U0A81>..<U0A83>;<U0ABC>;/
+   <U0ABE>..<U0AC5>;<U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;<U0B01>..<U0B03>;/
+   <U0B3C>;<U0B3E>..<U0B43>;<U0B47>..<U0B48>;<U0B4B>..<U0B4D>;/
+   <U0B56>..<U0B57>;<U0B82>..<U0B83>;<U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;/
+   <U0BCA>..<U0BCD>;<U0BD7>;<U0C01>..<U0C03>;<U0C3E>..<U0C44>;/
+   <U0C46>..<U0C48>;<U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C82>..<U0C83>;/
+   <U0CBE>..<U0CC4>;<U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;/
+   <U0D02>..<U0D03>;<U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;/
+   <U0D57>;<U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;/
+   <U0DD8>..<U0DDF>;<U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;/
+   <U0E47>..<U0E4E>;<U0EB1>;<U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;/
+   <U0EC8>..<U0ECD>;<U0F18>..<U0F19>;<U0F35>;<U0F37>;<U0F39>;/
+   <U0F3E>..<U0F3F>;<U0F71>..<U0F84>;<U0F86>..<U0F87>;<U0F90>..<U0F97>;/
+   <U0F99>..<U0FBC>;<U0FC6>;<U102C>..<U1032>;<U1036>..<U1039>;/
+   <U1056>..<U1059>;<U17B4>..<U17D3>;<U18A9>;<U20D0>..<U20E3>;/
+   <U302A>..<U302F>;<U3099>..<U309A>;<UF8F0>..<UF8FF>;<UFB1E>;/
+   <UFE20>..<UFE23>
+
 % The "combining_level3" class reflects ISO/IEC 10646-1 annex B.2
 % That is, combining characters of level 3.
-class          "combining_level3"; /
-   <U0300>..<U036F>;<U20D0>..<U20FF>;<U1100>..<U11FF>;<UFE20>..<UFE2F>;/
-   <U0483>..<U0486>;<U0591>..<U05A1>;<U05A3>..<U05AE>;<U05C4>;/
-   <U05AF>;<U093C>;<U0953>;<U0954>;<U09BC>;<U09D7>;<U0A3C>;/
-   <U0A70>;<U0A71>;<U0ABC>;<U0B3C>;<U0B56>;<U0B57>;<U0BD7>;<U0C55>;<U0C56>;/
-   <U0CD5>;<U0CD6>;<U0D57>;<U0F39>;<U302A>..<U302F>;<U3099>;<U309A>
-%
+class "combining_level3"; /
+   <U0334>..<U0338>;<U0488>..<U0489>;<U05B0>..<U05B9>;<U05BB>..<U05BD>;/
+   <U05BF>;<U05C1>..<U05C2>;<U064B>..<U0652>;<U0670>;<U06DD>..<U06DE>;/
+   <U0711>;<U07A6>..<U07B0>;<U0901>..<U0903>;<U093C>;<U093E>..<U094D>;/
+   <U0962>..<U0963>;<U0981>..<U0983>;<U09BC>;<U09BE>..<U09C4>;/
+   <U09C7>..<U09C8>;<U09CB>..<U09CD>;<U09D7>;<U09E2>..<U09E3>;<U0A02>;/
+   <U0A3C>;<U0A3E>..<U0A42>;<U0A47>..<U0A48>;<U0A4B>..<U0A4D>;/
+   <U0A70>..<U0A71>;<U0A81>..<U0A83>;<U0ABC>;<U0ABE>..<U0AC5>;/
+   <U0AC7>..<U0AC9>;<U0ACB>..<U0ACD>;<U0B01>..<U0B03>;<U0B3C>;/
+   <U0B3E>..<U0B43>;<U0B47>..<U0B48>;<U0B4B>..<U0B4D>;<U0B56>..<U0B57>;/
+   <U0B82>..<U0B83>;<U0BBE>..<U0BC2>;<U0BC6>..<U0BC8>;<U0BCA>..<U0BCD>;/
+   <U0BD7>;<U0C01>..<U0C03>;<U0C3E>..<U0C44>;<U0C46>..<U0C48>;/
+   <U0C4A>..<U0C4D>;<U0C55>..<U0C56>;<U0C82>..<U0C83>;<U0CBE>..<U0CC4>;/
+   <U0CC6>..<U0CC8>;<U0CCA>..<U0CCD>;<U0CD5>..<U0CD6>;<U0D02>..<U0D03>;/
+   <U0D3E>..<U0D43>;<U0D46>..<U0D48>;<U0D4A>..<U0D4D>;<U0D57>;/
+   <U0D82>..<U0D83>;<U0DCA>;<U0DCF>..<U0DD4>;<U0DD6>;<U0DD8>..<U0DDF>;/
+   <U0DF2>..<U0DF3>;<U0E31>;<U0E34>..<U0E3A>;<U0E47>..<U0E4E>;<U0EB1>;/
+   <U0EB4>..<U0EB9>;<U0EBB>..<U0EBC>;<U0EC8>..<U0ECD>;<U0F3E>..<U0F3F>;/
+   <U0F71>..<U0F81>;<U0F84>;<U0F90>..<U0F97>;<U0F99>..<U0FBC>;/
+   <U102C>..<U1032>;<U1036>..<U1039>;<U1056>..<U1059>;<U17B4>..<U17D3>;/
+   <U20D2>..<U20D3>;<U20D8>..<U20DA>;<U20DD>..<U20E0>;<U20E2>..<U20E3>;/
+   <U3099>..<U309A>;<UF8F0>..<UF8FF>;<UFB1E>
 
 translit_start
 
index 86d0835304956ae0e251c61d2a3635f1b17d5b49..644cbbc2730921a5042779802600975734e6e668 100644 (file)
@@ -81,7 +81,11 @@ TST_ISWCTYPE tst_iswctype_loc [] = {
       {         { 0x00B9, "digit"  }, { 0,1,0 }  },       /* SUP 1    */
       {         { 0x00BE, "digit"  }, { 0,1,0 }  },       /* 3/4      */
       {         { 0x009F, "graph"  }, { 0,1,0 }  },       /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
       {         { 0x00A0, "graph"  }, { 0,1,0 }  },       /* NB SPACE */
+#else
+      {         { 0x00A0, "graph"  }, { 0,0,0 }  },       /* NB SPACE */
+#endif
       {         { 0x00A1, "graph"  }, { 0,0,0 }  },       /* UD !     */
       {         { 0x00B1, "graph"  }, { 0,0,0 }  },       /* +- sign  */
       {         { 0x00B3, "graph"  }, { 0,0,0 }  },       /* SUP 3    */
@@ -97,7 +101,11 @@ TST_ISWCTYPE tst_iswctype_loc [] = {
       {         { 0x00F8, "graph"  }, { 0,0,0 }  },       /* o stroke */
       {         { 0x00FF, "graph"  }, { 0,0,0 }  },       /* y dia    */
       {         { 0x009F, "print"  }, { 0,1,0 }  },       /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
       {         { 0x00A0, "print"  }, { 0,1,0 }  },       /* NB SPACE */
+#else
+      {         { 0x00A0, "print"  }, { 0,0,0 }  },       /* NB SPACE */
+#endif
       {         { 0x00A1, "print"  }, { 0,0,0 }  },       /* UD !     */
       {         { 0x00B1, "print"  }, { 0,0,0 }  },       /* +- sign  */
       {         { 0x00B4, "print"  }, { 0,0,0 }  },       /* ACUTE    */
@@ -112,7 +120,11 @@ TST_ISWCTYPE tst_iswctype_loc [] = {
       {         { 0x00F8, "print"  }, { 0,0,0 }  },       /* o stroke */
       {         { 0x00FF, "print"  }, { 0,0,0 }  },       /* y dia    */
       {         { 0x009F, "punct"  }, { 0,1,0 }  },       /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
       {         { 0x00A0, "punct"  }, { 0,1,0 }  },       /* NB SPACE */
+#else
+      {         { 0x00A0, "punct"  }, { 0,0,0 }  },       /* NB SPACE */
+#endif
       {         { 0x00A1, "punct"  }, { 0,0,0 }  },       /* UD !     */
       {         { 0x00B0, "punct"  }, { 0,0,0 }  },       /* Degree   */
       {         { 0x00B1, "punct"  }, { 0,0,0 }  },       /* +- sign  */
index 98583e2fd32e8d36fb8ff563887873110c0abdf5..0ab56d273e16ffa8870ea1c1538a520219bf26d9 100644 (file)
@@ -16,7 +16,11 @@ TST_ISW_LOC (GRAPH, graph) = {
       {
        {  { 0x0080 }, { 0,1,0 }  },    /* CTRL     */
        {  { 0x009F }, { 0,1,0 }  },    /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
        {  { 0x00A0 }, { 0,1,0 }  },    /* NB SPACE */
+#else
+       {  { 0x00A0 }, { 0,0,0 }  },    /* NB SPACE */
+#endif
        {  { 0x00A1 }, { 0,0,0 }  },    /* UD !     */
        {  { 0x00B0 }, { 0,0,0 }  },    /* Degree   */
        {  { 0x00B1 }, { 0,0,0 }  },    /* +- sign  */
index a7cf34cffb533c008f236de6f7f47a8b4a821109..a574a5906b7d7f81b1fa70781438a4a66647775a 100644 (file)
@@ -16,7 +16,11 @@ TST_ISW_LOC (PRINT, print) = {
       {
        {  { 0x0080 }, { 0,1,0 }  },  /* CTRL     */
        {  { 0x009F }, { 0,1,0 }  },  /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
        {  { 0x00A0 }, { 0,1,0 }  },  /* NB SPACE */
+#else
+       {  { 0x00A0 }, { 0,0,0 }  },  /* NB SPACE */
+#endif
        {  { 0x00A1 }, { 0,0,0 }  },  /* UD !     */
        {  { 0x00B0 }, { 0,0,0 }  },  /* Degree   */
        {  { 0x00B1 }, { 0,0,0 }  },  /* +- sign  */
index 710395c7172e203c4c894d50fa207b0f91fca651..2d17478121925ef65ebd1871c48bcdc5700146a2 100644 (file)
@@ -16,7 +16,11 @@ TST_ISW_LOC (PUNCT, punct) = {
       {
        {  { 0x0080 }, { 0,1,0 }  },    /* CTRL     */
        {  { 0x009F }, { 0,1,0 }  },    /* CTRL     */
+#ifdef SHOJI_IS_RIGHT
        {  { 0x00A0 }, { 0,1,0 }  },    /* NB SPACE */
+#else
+       {  { 0x00A0 }, { 0,0,0 }  },    /* NB SPACE */
+#endif
        {  { 0x00A1 }, { 0,0,0 }  },    /* UD !     */
        {  { 0x00B0 }, { 0,0,0 }  },    /* Degree   */
        {  { 0x00B1 }, { 0,0,0 }  },    /* +- sign  */
index fd426ef2c18d66c7ed92f3438f1c56013b685352..fb66d979e5332ffaee5e974b44e28567fa065ea4 100644 (file)
@@ -56,7 +56,11 @@ TST_WCSWIDTH tst_wcswidth_loc [] = {
        /*expect*/ { 0,1,-1                                },
       },
       { /*input.*/ { { 0x00C1,0x00A0,0x0000 },          2 },  /* 16 */
+#ifdef SHOJI_IS_RIGHT
        /*expect*/ { 0,1,-1                                },
+#else
+       /*expect*/ { 0,1,2                                 },
+#endif
       },
       { /*input.*/ { { 0x00C1,0x00A1,0x0000 },          2 },  /* 17 */
        /*expect*/ { 0,1,2                                 },
index 61a82d5a86d476258d9ed2805a26d8a2e87c3c35..f71d76cc2adc84d9326ee441feb5631bcc504756 100644 (file)
@@ -1,5 +1,5 @@
 lower    ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
-        000000000000000000000000000000000000000000000000
+        000000000000000000000100000000000000000000000000
 lower   ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
         000000000000000111111111111111111111111011111111
 upper    ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
@@ -23,11 +23,11 @@ space   
 space   ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
         000000000000000000000000000000000000000000000000
 print    ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
-        011111111111111111111111111111111111111111111111
+        111111111111111111111111111111111111111111111111
 print   ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
         111111111111111111111111111111111111111111111111
 graph    ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
-        011111111111111111111111111111111111111111111111
+        111111111111111111111111111111111111111111111111
 graph   ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
         111111111111111111111111111111111111111111111111
 blank    ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
@@ -39,7 +39,7 @@ cntrl   
 cntrl   ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
         000000000000000000000000000000000000000000000000
 punct    ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
-        011111111101111111111011110111110000000000000000
+        111111111101111111111011110111110000000000000000
 punct   ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
         000000010000000000000000000000000000000100000000
 alnum    ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ