Merge r21-2-19-utf-2000-0_12-0.
authortomo <tomo>
Fri, 7 Jan 2000 10:40:34 +0000 (10:40 +0000)
committertomo <tomo>
Fri, 7 Jan 2000 10:40:34 +0000 (10:40 +0000)
245 files changed:
ChangeLog
configure
configure.in
info/custom.info
info/emodules.info
info/info.info
info/internals.info
info/internals.info-1
info/internals.info-2
info/internals.info-3
info/internals.info-4
info/internals.info-5
info/internals.info-6
info/internals.info-7
info/internals.info-8
info/lispref.info
info/lispref.info-1
info/lispref.info-10
info/lispref.info-11
info/lispref.info-12
info/lispref.info-13
info/lispref.info-14
info/lispref.info-15
info/lispref.info-16
info/lispref.info-17
info/lispref.info-18
info/lispref.info-19
info/lispref.info-2
info/lispref.info-20
info/lispref.info-21
info/lispref.info-22
info/lispref.info-23
info/lispref.info-24
info/lispref.info-25
info/lispref.info-26
info/lispref.info-27
info/lispref.info-28
info/lispref.info-29
info/lispref.info-3
info/lispref.info-30
info/lispref.info-31
info/lispref.info-32
info/lispref.info-33
info/lispref.info-34
info/lispref.info-35
info/lispref.info-36
info/lispref.info-37
info/lispref.info-38
info/lispref.info-39
info/lispref.info-4
info/lispref.info-40
info/lispref.info-41
info/lispref.info-42
info/lispref.info-43
info/lispref.info-44
info/lispref.info-5
info/lispref.info-6
info/lispref.info-7
info/lispref.info-8
info/lispref.info-9
info/new-users-guide.info
info/new-users-guide.info-1
info/new-users-guide.info-2
info/new-users-guide.info-3
info/standards.info
info/standards.info-1
info/standards.info-2
info/standards.info-3
info/texinfo.info
info/texinfo.info-1
info/texinfo.info-10
info/texinfo.info-11
info/texinfo.info-12
info/texinfo.info-2
info/texinfo.info-3
info/texinfo.info-4
info/texinfo.info-5
info/texinfo.info-6
info/texinfo.info-7
info/texinfo.info-8
info/texinfo.info-9
info/widget.info
info/xemacs-faq.info
info/xemacs-faq.info-1
info/xemacs-faq.info-2
info/xemacs-faq.info-3
info/xemacs-faq.info-4
info/xemacs-faq.info-5
info/xemacs.info
info/xemacs.info-1
info/xemacs.info-10
info/xemacs.info-11
info/xemacs.info-12
info/xemacs.info-13
info/xemacs.info-14
info/xemacs.info-15
info/xemacs.info-16
info/xemacs.info-17
info/xemacs.info-18
info/xemacs.info-19
info/xemacs.info-2
info/xemacs.info-20
info/xemacs.info-21
info/xemacs.info-3
info/xemacs.info-4
info/xemacs.info-5
info/xemacs.info-6
info/xemacs.info-7
info/xemacs.info-8
info/xemacs.info-9
lib-src/ChangeLog
lib-src/update-elc.sh
lisp/ChangeLog
lisp/bytecomp.el
lisp/dumped-lisp.el
lisp/files.el
lisp/mule/chinese.el
lisp/mule/ethiopic.el
lisp/mule/japanese.el
lisp/mule/misc-lang.el
lisp/mule/mule-charset.el
lisp/mule/mule-cmds.el
lisp/mule/mule-coding.el
lisp/mule/mule-conf.el [new file with mode: 0644]
lisp/mule/viet-chars.el
lisp/mule/vietnamese.el
lisp/startup.el
lisp/utf-2000/auto-autoloads.el [new file with mode: 0644]
lisp/utf-2000/ccs-jisx0201-latin.el [new file with mode: 0644]
lisp/utf-2000/ccs-jisx0208-1983.el [new file with mode: 0644]
lisp/utf-2000/ccs-tcvn5712.el [new file with mode: 0644]
lisp/utf-2000/char-db-util.el [new file with mode: 0644]
lisp/utf-2000/u00000-C0.el [new file with mode: 0644]
lisp/utf-2000/u00020-Basic-Latin.el [new file with mode: 0644]
lisp/utf-2000/u00080-C1.el [new file with mode: 0644]
lisp/utf-2000/u000A0-Latin-1-Supplement.el [new file with mode: 0755]
lisp/utf-2000/u00100-Latin-Extended-A.el [new file with mode: 0644]
lisp/utf-2000/u00180-Latin-Extended-B.el [new file with mode: 0644]
lisp/utf-2000/u00250-IPA-Extensions.el [new file with mode: 0644]
lisp/utf-2000/u002B0-Spacing-Modifier-Letters.el [new file with mode: 0644]
lisp/utf-2000/u00300-Combining-Diacritical-Marks.el [new file with mode: 0644]
lisp/utf-2000/u00370-Greek.el [new file with mode: 0644]
lisp/utf-2000/u00400-Cyrillic.el [new file with mode: 0644]
lisp/utf-2000/u00530-Armenian.el [new file with mode: 0644]
lisp/utf-2000/u00590-Hebrew.el [new file with mode: 0644]
lisp/utf-2000/u00600-Arabic.el [new file with mode: 0644]
lisp/utf-2000/u00700-Syriac.el [new file with mode: 0644]
lisp/utf-2000/u00780-Thaana.el [new file with mode: 0644]
lisp/utf-2000/u00900-Devanagari.el [new file with mode: 0644]
lisp/utf-2000/u00980-Bengali.el [new file with mode: 0644]
lisp/utf-2000/u00A00-Gurmukhi.el [new file with mode: 0644]
lisp/utf-2000/u00A80-Gujarati.el [new file with mode: 0644]
lisp/utf-2000/u00B00-Oriya.el [new file with mode: 0644]
lisp/utf-2000/u00B80-Tamil.el [new file with mode: 0644]
lisp/utf-2000/u00C00-Telugu.el [new file with mode: 0644]
lisp/utf-2000/u00C80-Kannada.el [new file with mode: 0644]
lisp/utf-2000/u00D00-Malayalam.el [new file with mode: 0644]
lisp/utf-2000/u00D80-Sinhala.el [new file with mode: 0644]
lisp/utf-2000/u00E00-Thai.el [new file with mode: 0644]
lisp/utf-2000/u00E80-Lao.el [new file with mode: 0644]
lisp/utf-2000/u00F00-Tibetan.el [new file with mode: 0644]
lisp/utf-2000/u01000-Myanmar.el [new file with mode: 0644]
lisp/utf-2000/u010A0-Georgian.el [new file with mode: 0644]
lisp/utf-2000/u01100-Hangul-Jamo.el [new file with mode: 0644]
lisp/utf-2000/u01200-Ethiopic.el [new file with mode: 0644]
lisp/utf-2000/u013A0-Cherokee.el [new file with mode: 0644]
lisp/utf-2000/u01400-Canadian.el [new file with mode: 0644]
lisp/utf-2000/u01680-Ogham.el [new file with mode: 0644]
lisp/utf-2000/u016A0-Runic.el [new file with mode: 0644]
lisp/utf-2000/u01780-Khmer.el [new file with mode: 0644]
lisp/utf-2000/u01800-Mongolian.el [new file with mode: 0644]
lisp/utf-2000/u01E00-Latin-Extended-Additional.el [new file with mode: 0644]
lisp/utf-2000/u01F00-Greek-Extended.el [new file with mode: 0644]
lisp/utf-2000/u02000-General-Punctuation.el [new file with mode: 0644]
lisp/utf-2000/u02070-Superscripts.el [new file with mode: 0644]
lisp/utf-2000/u02080-Subscripts.el [new file with mode: 0644]
lisp/utf-2000/u020A0-Currency-Symbols.el [new file with mode: 0644]
lisp/utf-2000/u020D0-Combining-Diacritical-Marks-for-Symbols.el [new file with mode: 0644]
lisp/utf-2000/u02100-Letterlike-Symbols.el [new file with mode: 0644]
lisp/utf-2000/u02150-Number-Forms.el [new file with mode: 0644]
lisp/utf-2000/u02190-Arrows.el [new file with mode: 0644]
lisp/utf-2000/u02200-Mathematical-Operators.el [new file with mode: 0644]
lisp/utf-2000/u02300-Miscellaneous-Technical.el [new file with mode: 0644]
lisp/utf-2000/u02400-Control-Pictures.el [new file with mode: 0644]
lisp/utf-2000/u02440-OCR.el [new file with mode: 0644]
lisp/utf-2000/u02460-Enclosed-Alphanumerics.el [new file with mode: 0644]
lisp/utf-2000/u02500-Box-Drawing.el [new file with mode: 0644]
lisp/utf-2000/u02580-Block-Elements.el [new file with mode: 0644]
lisp/utf-2000/u025A0-Geometric-Shapes.el [new file with mode: 0644]
lisp/utf-2000/u02600-Miscellaneous-Symbols.el [new file with mode: 0644]
lisp/utf-2000/u02700-Dingbats.el [new file with mode: 0644]
lisp/utf-2000/u02800-Braille-Patterns.el [new file with mode: 0644]
lisp/utf-2000/u02E00-CJK-Radical-Supplement.el [new file with mode: 0644]
lisp/utf-2000/u02F00-Kangxi-Radicals.el [new file with mode: 0644]
lisp/utf-2000/u02FF0-Ideographic-Description-Characters.el [new file with mode: 0644]
lisp/utf-2000/u03000-CJK-Symbols-and-Punctuation.el [new file with mode: 0644]
lisp/utf-2000/u03040-Hiragana.el [new file with mode: 0644]
lisp/utf-2000/u030A0-Katakana.el [new file with mode: 0644]
lisp/utf-2000/u03100-Bopomofo.el [new file with mode: 0644]
lisp/utf-2000/u03130-Hangul-Compatibility-Jamo.el [new file with mode: 0644]
lisp/utf-2000/u03190-Kanbun.el [new file with mode: 0644]
lisp/utf-2000/u031A0-Extended-Bopomofo.el [new file with mode: 0644]
lisp/utf-2000/u03200-Enclosed-CJK-Letters-and-Months.el [new file with mode: 0644]
lisp/utf-2000/u03300-CJK-Compatibility.el [new file with mode: 0644]
lisp/version.el
src/ChangeLog
src/alloc.c
src/buffer.h
src/char-1byte.h [new file with mode: 0644]
src/char-lb.h [new file with mode: 0644]
src/char-ucs.h [new file with mode: 0644]
src/character.h [new file with mode: 0644]
src/chartab.c
src/chartab.h
src/config.h.in
src/depend
src/doprnt.c
src/faces.c
src/faces.h
src/file-coding.c
src/glyphs.c
src/indent.c
src/insdel.c
src/lisp.h
src/lread.c
src/lstream.h
src/mb-1byte.h [new file with mode: 0644]
src/mb-lb.h [new file with mode: 0644]
src/mb-multibyte.h [new file with mode: 0644]
src/mb-utf-8.h [new file with mode: 0644]
src/mule-canna.c
src/mule-ccl.c
src/mule-charset.c
src/mule-charset.h
src/mule-wnnfns.c
src/mule.c
src/multibyte.h [new file with mode: 0644]
src/objects-msw.c
src/objects-tty.c
src/redisplay-msw.c
src/redisplay-tty.c
src/redisplay.c
src/regex.c
src/text-coding.c [new file with mode: 0644]
src/toolbar-x.c

index fee99c7..9603cc4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+1999-09-09  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * configure.in: Add new option `--with-text-coding'; define
+       `TEXT_CODING' if it is specified.
+
+1999-08-30  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * configure.in:
+       - Delete `--with-ucs4' option.
+       - Display message about UTF-2000 if "$with_utf_2000" = yes.
+
+1999-06-17  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * configure.in:
+       - Add new option `--with-ucs4'; define `CHAR_IS_UCS4' if it is
+         specified.
+       - Define `CHAR_IS_UCS4' if `--with-utf-2000' is specified.
+
+1999-06-15  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * configure.in: Add new option `--with-utf-2000'; define `UTF2000'
+       if it is specified.
+
 1999-12-14  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.24 is released.
 
        * etc/HELLO (Thai): Modify for new font.
 
+1999-06-29  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * etc/TUTORIAL.th: Change code to tis-620.
+
 1999-07-22  SL Baur  <steve@beopen.com>
 
        * configure.in: add sco7 support
index ee408ed..edc8c18 100755 (executable)
--- a/configure
+++ b/configure
@@ -341,6 +341,8 @@ while test $# != 0; do
        with_xfs        | \
        with_i18n3      | \
        with_mule       | \
+       with_utf_2000   | \
+       with_text_coding| \
        with_file_coding| \
        with_canna      | \
        with_wnn        | \
@@ -816,7 +818,7 @@ echo "  Use \`$progname --help' to show usage.") >&2 && exit 1
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:820: checking whether ln -s works" >&5
+echo "configure:822: checking whether ln -s works" >&5
 
 rm -f conftestdata
 if ln -s X conftestdata 2>/dev/null
@@ -1061,7 +1063,7 @@ EOF
 
 
 echo $ac_n "checking "host system type"""... $ac_c" 1>&6
-echo "configure:1065: checking "host system type"" >&5
+echo "configure:1067: checking "host system type"" >&5
 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
 canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"`
 configuration=`echo "$configuration" | sed 's/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/'`
@@ -1555,7 +1557,7 @@ xe_save_CFLAGS="$CFLAGS"
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1559: checking for $ac_word" >&5
+echo "configure:1561: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1582,7 +1584,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1586: checking for $ac_word" >&5
+echo "configure:1588: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1630,7 +1632,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1634: checking for $ac_word" >&5
+echo "configure:1636: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1659,7 +1661,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1663: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1665: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -1672,12 +1674,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1676 "configure"
+#line 1678 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1705,19 +1707,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1709: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1711: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1714: checking whether we are using GNU C" >&5
+echo "configure:1716: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1721: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1723: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1735,7 +1737,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1739: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1741: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1768,7 +1770,7 @@ if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1772: checking for $ac_word" >&5
+echo "configure:1774: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1795,7 +1797,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1799: checking for $ac_word" >&5
+echo "configure:1801: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1843,7 +1845,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1847: checking for $ac_word" >&5
+echo "configure:1849: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1872,7 +1874,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1876: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1878: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -1885,12 +1887,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1889 "configure"
+#line 1891 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1918,19 +1920,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1922: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1924: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1927: checking whether we are using GNU C" >&5
+echo "configure:1929: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1934: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1936: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1948,7 +1950,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1952: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1954: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1981,7 +1983,7 @@ elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1985: checking for $ac_word" >&5
+echo "configure:1987: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2008,7 +2010,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2012: checking for $ac_word" >&5
+echo "configure:2014: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2056,7 +2058,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2060: checking for $ac_word" >&5
+echo "configure:2062: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2085,7 +2087,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2089: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2091: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -2098,12 +2100,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 2102 "configure"
+#line 2104 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:2107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -2131,19 +2133,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:2135: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2137: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:2140: checking whether we are using GNU C" >&5
+echo "configure:2142: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2147: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -2161,7 +2163,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2165: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2167: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2198,7 +2200,7 @@ test -n "$CPP" -a -d "$CPP" && CPP=
 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2202: checking how to run the C preprocessor" >&5
+echo "configure:2204: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -2211,13 +2213,13 @@ if test -z "$CPP"; then
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 2215 "configure"
+#line 2217 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2223: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2228,13 +2230,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 2232 "configure"
+#line 2234 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2238: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2240: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2245,13 +2247,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 2249 "configure"
+#line 2251 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2276,9 +2278,9 @@ echo "$ac_t""$CPP" 1>&6
 
 
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:2280: checking for AIX" >&5
+echo "configure:2282: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2282 "configure"
+#line 2284 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -2305,9 +2307,9 @@ rm -f conftest*
 
 
 echo $ac_n "checking for GNU libc""... $ac_c" 1>&6
-echo "configure:2309: checking for GNU libc" >&5
+echo "configure:2311: checking for GNU libc" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2311 "configure"
+#line 2313 "configure"
 #include "confdefs.h"
 #include <features.h>
 int main() {
@@ -2319,7 +2321,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   have_glibc=yes
 else
@@ -2341,7 +2343,7 @@ EOF
 
 
 cat > conftest.$ac_ext <<EOF
-#line 2345 "configure"
+#line 2347 "configure"
 #include "confdefs.h"
 int main () {
 #if defined __SUNPRO_C
@@ -2353,7 +2355,7 @@ return 0;
 #endif
 }
 EOF
-if { (eval echo configure:2357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:2359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -2627,7 +2629,7 @@ test -n "$unexec"          && extra_objs="$extra_objs $unexec" &&  if test "$ext
  fi
 
 echo $ac_n "checking for dynodump""... $ac_c" 1>&6
-echo "configure:2631: checking for dynodump" >&5
+echo "configure:2633: checking for dynodump" >&5
 if test "$unexec" != "unexsol2.o"; then
   echo "$ac_t""no" 1>&6
 else
@@ -2665,12 +2667,12 @@ if test "$unexec" = "unexaix.o"; then
   done
   
 echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:2669: checking for terminateAndUnload in -lC" >&5
+echo "configure:2671: checking for terminateAndUnload in -lC" >&5
 ac_lib_var=`echo C'_'terminateAndUnload | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lC "
 cat > conftest.$ac_ext <<EOF
-#line 2674 "configure"
+#line 2676 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -2681,7 +2683,7 @@ int main() {
 terminateAndUnload()
 ; return 0; }
 EOF
-if { (eval echo configure:2685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2785,7 +2787,7 @@ fi
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:2789: checking "for runtime libraries flag"" >&5
+echo "configure:2791: checking "for runtime libraries flag"" >&5
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
     decosf* | linux* | irix*) dash_r="-rpath " ;;
@@ -2807,14 +2809,14 @@ if test "$GCC" = "yes"; then
   done
 fi
         cat > conftest.$ac_ext <<EOF
-#line 2811 "configure"
+#line 2813 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   dash_r="$try_dash_r"
 else
@@ -2916,10 +2918,10 @@ else
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_get_state""... $ac_c" 1>&6
-echo "configure:2920: checking for malloc_get_state" >&5
+echo "configure:2922: checking for malloc_get_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 2923 "configure"
+#line 2925 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_get_state(); below.  */
@@ -2942,7 +2944,7 @@ malloc_get_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_malloc_get_state=yes"
 else
@@ -2962,10 +2964,10 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:2966: checking for malloc_set_state" >&5
+echo "configure:2968: checking for malloc_set_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 2969 "configure"
+#line 2971 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_set_state(); below.  */
@@ -2988,7 +2990,7 @@ malloc_set_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2992: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2994: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_malloc_set_state=yes"
 else
@@ -3008,16 +3010,16 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:3012: checking whether __after_morecore_hook exists" >&5
+echo "configure:3014: checking whether __after_morecore_hook exists" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3014 "configure"
+#line 3016 "configure"
 #include "confdefs.h"
 extern void (* __after_morecore_hook)();
 int main() {
 __after_morecore_hook = 0
 ; return 0; }
 EOF
-if { (eval echo configure:3021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
 else
@@ -3076,7 +3078,7 @@ fi
 # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3080: checking for $ac_word" >&5
+echo "configure:3082: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -3131,7 +3133,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:3135: checking for a BSD compatible install" >&5
+echo "configure:3137: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS=":"
@@ -3185,7 +3187,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3189: checking for $ac_word" >&5
+echo "configure:3191: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -3217,15 +3219,15 @@ for ac_hdr in mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3221: checking for $ac_hdr" >&5
+echo "configure:3223: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3224 "configure"
+#line 3226 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3231: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3258,15 +3260,15 @@ for ac_hdr in utime.h locale.h libgen.h fcntl.h ulimit.h cygwin/version.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3262: checking for $ac_hdr" >&5
+echo "configure:3264: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3265 "configure"
+#line 3267 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3270: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3299,15 +3301,15 @@ for ac_hdr in kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3303: checking for $ac_hdr" >&5
+echo "configure:3305: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3306 "configure"
+#line 3308 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3311: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3313: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3337,10 +3339,10 @@ fi
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3341: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:3343: checking for sys/wait.h that is POSIX.1 compatible" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3344 "configure"
+#line 3346 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -3356,7 +3358,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:3360: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3362: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -3380,10 +3382,10 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3384: checking for ANSI C header files" >&5
+echo "configure:3386: checking for ANSI C header files" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3387 "configure"
+#line 3389 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3391,7 +3393,7 @@ cat > conftest.$ac_ext <<EOF
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3395: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3397: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3408,7 +3410,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3412 "configure"
+#line 3414 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3426,7 +3428,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 3430 "configure"
+#line 3432 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3444,7 +3446,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
 cat > conftest.$ac_ext <<EOF
-#line 3448 "configure"
+#line 3450 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3455,7 +3457,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -3481,10 +3483,10 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3485: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3487: checking whether time.h and sys/time.h may both be included" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3488 "configure"
+#line 3490 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3493,7 +3495,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3499: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3517,10 +3519,10 @@ EOF
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3521: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3523: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3524 "configure"
+#line 3526 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3532,7 +3534,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3536: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3557,9 +3559,9 @@ fi
 
 
 echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6
-echo "configure:3561: checking for struct utimbuf" >&5
+echo "configure:3563: checking for struct utimbuf" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3563 "configure"
+#line 3565 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3578,7 +3580,7 @@ int main() {
 static struct utimbuf x; x.actime = x.modtime;
 ; return 0; }
 EOF
-if { (eval echo configure:3582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3584: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
@@ -3598,10 +3600,10 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3602: checking return type of signal handlers" >&5
+echo "configure:3604: checking return type of signal handlers" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3605 "configure"
+#line 3607 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3618,7 +3620,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3624: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3640,10 +3642,10 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3644: checking for size_t" >&5
+echo "configure:3646: checking for size_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3647 "configure"
+#line 3649 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3674,10 +3676,10 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3678: checking for pid_t" >&5
+echo "configure:3680: checking for pid_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3681 "configure"
+#line 3683 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3708,10 +3710,10 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3712: checking for uid_t in sys/types.h" >&5
+echo "configure:3714: checking for uid_t in sys/types.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3715 "configure"
+#line 3717 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3747,10 +3749,10 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3751: checking for mode_t" >&5
+echo "configure:3753: checking for mode_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3754 "configure"
+#line 3756 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3781,10 +3783,10 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3785: checking for off_t" >&5
+echo "configure:3787: checking for off_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3788 "configure"
+#line 3790 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3815,10 +3817,10 @@ EOF
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3819: checking for ssize_t" >&5
+echo "configure:3821: checking for ssize_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3822 "configure"
+#line 3824 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3850,9 +3852,9 @@ fi
 
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:3854: checking for struct timeval" >&5
+echo "configure:3856: checking for struct timeval" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3856 "configure"
+#line 3858 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3868,7 +3870,7 @@ int main() {
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:3872: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3874: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -3890,10 +3892,10 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
-echo "configure:3894: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:3896: checking whether struct tm is in sys/time.h or time.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3897 "configure"
+#line 3899 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -3901,7 +3903,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:3905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3907: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -3925,10 +3927,10 @@ EOF
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:3929: checking for tm_zone in struct tm" >&5
+echo "configure:3931: checking for tm_zone in struct tm" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3932 "configure"
+#line 3934 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -3936,7 +3938,7 @@ int main() {
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:3940: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -3959,10 +3961,10 @@ EOF
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:3963: checking for tzname" >&5
+echo "configure:3965: checking for tzname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3966 "configure"
+#line 3968 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -3972,7 +3974,7 @@ int main() {
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:3976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -3998,10 +4000,10 @@ fi
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4002: checking for working const" >&5
+echo "configure:4004: checking for working const" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4005 "configure"
+#line 4007 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4050,7 +4052,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4075,7 +4077,7 @@ fi
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4079: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4081: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -4100,12 +4102,12 @@ fi
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4104: checking whether byte ordering is bigendian" >&5
+echo "configure:4106: checking whether byte ordering is bigendian" >&5
 
 ac_cv_c_bigendian=unknown
 # See if sys/param.h defines the BYTE_ORDER macro.
 cat > conftest.$ac_ext <<EOF
-#line 4109 "configure"
+#line 4111 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4116,11 +4118,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4120: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   # It does; now see whether it defined to BIG_ENDIAN or not.
 cat > conftest.$ac_ext <<EOF
-#line 4124 "configure"
+#line 4126 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4131,7 +4133,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4135: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4137: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4148,7 +4150,7 @@ fi
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 4152 "configure"
+#line 4154 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4161,7 +4163,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:4165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_bigendian=no
 else
@@ -4188,10 +4190,10 @@ fi
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4192: checking size of short" >&5
+echo "configure:4194: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4195 "configure"
+#line 4197 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4202,7 +4204,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -4230,10 +4232,10 @@ if test "$ac_cv_sizeof_short" = 0; then
   exit 1
 fi
 echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:4234: checking size of int" >&5
+echo "configure:4236: checking size of int" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4237 "configure"
+#line 4239 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4244,7 +4246,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -4266,10 +4268,10 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4270: checking size of long" >&5
+echo "configure:4272: checking size of long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4273 "configure"
+#line 4275 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4280,7 +4282,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -4302,10 +4304,10 @@ EOF
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4306: checking size of long long" >&5
+echo "configure:4308: checking size of long long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4309 "configure"
+#line 4311 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4316,7 +4318,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long_long=`cat conftestval`
 else
@@ -4338,10 +4340,10 @@ EOF
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4342: checking size of void *" >&5
+echo "configure:4344: checking size of void *" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4345 "configure"
+#line 4347 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4352,7 +4354,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_void_p=`cat conftestval`
 else
@@ -4375,7 +4377,7 @@ EOF
 
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4379: checking for long file names" >&5
+echo "configure:4381: checking for long file names" >&5
 
 ac_cv_sys_long_file_names=yes
 # Test for long file names in all the places we know might matter:
@@ -4421,10 +4423,10 @@ fi
 
 
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4425: checking for sin" >&5
+echo "configure:4427: checking for sin" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4428 "configure"
+#line 4430 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
@@ -4447,7 +4449,7 @@ sin();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_sin=yes"
 else
@@ -4465,12 +4467,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4469: checking for sin in -lm" >&5
+echo "configure:4471: checking for sin in -lm" >&5
 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lm "
 cat > conftest.$ac_ext <<EOF
-#line 4474 "configure"
+#line 4476 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4481,7 +4483,7 @@ int main() {
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:4485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4525,14 +4527,14 @@ EOF
 
 
 cat > conftest.$ac_ext <<EOF
-#line 4529 "configure"
+#line 4531 "configure"
 #include "confdefs.h"
 #include <math.h>
 int main() {
 return atanh(1.0) + asinh(1.0) + acosh(1.0); 
 ; return 0; }
 EOF
-if { (eval echo configure:4536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_INVERSE_HYPERBOLIC
@@ -4549,7 +4551,7 @@ fi
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:4553: checking type of mail spool file locking" >&5
+echo "configure:4555: checking type of mail spool file locking" >&5
 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
 if   test "$mail_locking" = "lockf"; then { test "$extra_verbose" = "yes" && cat << \EOF
@@ -4574,12 +4576,12 @@ fi
 case "$opsys" in decosf*)
   
 echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6
-echo "configure:4578: checking for cma_open in -lpthreads" >&5
+echo "configure:4580: checking for cma_open in -lpthreads" >&5
 ac_lib_var=`echo pthreads'_'cma_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpthreads "
 cat > conftest.$ac_ext <<EOF
-#line 4583 "configure"
+#line 4585 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -4590,7 +4592,7 @@ int main() {
 cma_open()
 ; return 0; }
 EOF
-if { (eval echo configure:4594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4626,7 +4628,7 @@ fi
 esac
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:4630: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:4632: checking whether the -xildoff compiler flag is required" >&5
 if   ${CC-cc} '-###' -xildon  no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then
   if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ;
     then echo "$ac_t""no" 1>&6;
@@ -4637,7 +4639,7 @@ fi
 
 if test "$opsys" = "sol2" && test "$OS_RELEASE" -ge 56; then
   echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
-echo "configure:4641: checking for \"-z ignore\" linker flag" >&5
+echo "configure:4643: checking for \"-z ignore\" linker flag" >&5
   case "`ld -h 2>&1`" in
     *-z\ ignore\|record* ) echo "$ac_t""yes" 1>&6
       ld_switch_site="-z ignore $ld_switch_site" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-z ignore\" to \$ld_switch_site"; fi ;;
@@ -4647,7 +4649,7 @@ fi
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:4651: checking "for specified window system"" >&5
+echo "configure:4653: checking "for specified window system"" >&5
 
 if test "$with_x11" != "no"; then
     test "$x_includes $x_libraries" != "NONE NONE" && \
@@ -4680,7 +4682,7 @@ if test "$with_x11" != "no"; then
 # Uses ac_ vars as temps to allow command line to override cache and checks.
 # --without-x overrides everything else, but does not touch the cache.
 echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:4684: checking for X" >&5
+echo "configure:4686: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -4740,12 +4742,12 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 4744 "configure"
+#line 4746 "configure"
 #include "confdefs.h"
 #include <$x_direct_test_include>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4749: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4814,14 +4816,14 @@ if test "$ac_x_libraries" = NO; then
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 4818 "configure"
+#line 4820 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:4825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   LIBS="$ac_save_LIBS"
 # We can link X programs with no special library path.
@@ -4930,17 +4932,17 @@ else
     case "`(uname -sr) 2>/dev/null`" in
     "SunOS 5"*)
       echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
-echo "configure:4934: checking whether -R must be followed by a space" >&5
+echo "configure:4936: checking whether -R must be followed by a space" >&5
       ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
       cat > conftest.$ac_ext <<EOF
-#line 4937 "configure"
+#line 4939 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -4956,14 +4958,14 @@ rm -f conftest*
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 4960 "configure"
+#line 4962 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -4999,12 +5001,12 @@ ac_cv_lib_dnet_dnet_ntoa=no
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:5003: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:5005: checking for dnet_ntoa in -ldnet" >&5
 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldnet "
 cat > conftest.$ac_ext <<EOF
-#line 5008 "configure"
+#line 5010 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5015,7 +5017,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5039,12 +5041,12 @@ fi
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
       
 echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
-echo "configure:5043: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:5045: checking for dnet_ntoa in -ldnet_stub" >&5
 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldnet_stub "
 cat > conftest.$ac_ext <<EOF
-#line 5048 "configure"
+#line 5050 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5055,7 +5057,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5084,10 +5086,10 @@ fi
     # The nsl library prevents programs from opening the X display
     # on Irix 5.2, according to dickey@clark.net.
     echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:5088: checking for gethostbyname" >&5
+echo "configure:5090: checking for gethostbyname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5091 "configure"
+#line 5093 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -5110,7 +5112,7 @@ gethostbyname();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5114: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_gethostbyname=yes"
 else
@@ -5131,12 +5133,12 @@ fi
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:5135: checking for gethostbyname in -lnsl" >&5
+echo "configure:5137: checking for gethostbyname in -lnsl" >&5
 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lnsl "
 cat > conftest.$ac_ext <<EOF
-#line 5140 "configure"
+#line 5142 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5147,7 +5149,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:5151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5177,10 +5179,10 @@ fi
     # -lsocket must be given before -lnsl if both are needed.
     # We assume that if connect needs -lnsl, so does gethostbyname.
     echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:5181: checking for connect" >&5
+echo "configure:5183: checking for connect" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5184 "configure"
+#line 5186 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -5203,7 +5205,7 @@ connect();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_connect=yes"
 else
@@ -5226,12 +5228,12 @@ fi
 xe_msg_checking="for connect in -lsocket"
 test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:5230: checking "$xe_msg_checking"" >&5
+echo "configure:5232: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lsocket $X_EXTRA_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5235 "configure"
+#line 5237 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5242,7 +5244,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:5246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5266,10 +5268,10 @@ fi
 
     # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
     echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:5270: checking for remove" >&5
+echo "configure:5272: checking for remove" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5273 "configure"
+#line 5275 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -5292,7 +5294,7 @@ remove();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5298: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_remove=yes"
 else
@@ -5313,12 +5315,12 @@ fi
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:5317: checking for remove in -lposix" >&5
+echo "configure:5319: checking for remove in -lposix" >&5
 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lposix "
 cat > conftest.$ac_ext <<EOF
-#line 5322 "configure"
+#line 5324 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5329,7 +5331,7 @@ int main() {
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:5333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5353,10 +5355,10 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:5357: checking for shmat" >&5
+echo "configure:5359: checking for shmat" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5360 "configure"
+#line 5362 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -5379,7 +5381,7 @@ shmat();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_shmat=yes"
 else
@@ -5400,12 +5402,12 @@ fi
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:5404: checking for shmat in -lipc" >&5
+echo "configure:5406: checking for shmat in -lipc" >&5
 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lipc "
 cat > conftest.$ac_ext <<EOF
-#line 5409 "configure"
+#line 5411 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5416,7 +5418,7 @@ int main() {
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:5420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5452,12 +5454,12 @@ fi
 xe_msg_checking="for IceConnectionNumber in -lICE"
 test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:5456: checking "$xe_msg_checking"" >&5
+echo "configure:5458: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lICE $X_EXTRA_LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 5461 "configure"
+#line 5463 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5468,7 +5470,7 @@ int main() {
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:5472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5637,7 +5639,7 @@ EOF
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:5641: checking for X defines extracted by xmkmf" >&5
+echo "configure:5643: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -5669,15 +5671,15 @@ EOF
 
     ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6
-echo "configure:5673: checking for X11/Intrinsic.h" >&5
+echo "configure:5675: checking for X11/Intrinsic.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5676 "configure"
+#line 5678 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5681: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5701,12 +5703,12 @@ fi
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:5705: checking for XOpenDisplay in -lX11" >&5
+echo "configure:5707: checking for XOpenDisplay in -lX11" >&5
 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 5710 "configure"
+#line 5712 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5717,7 +5719,7 @@ int main() {
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5742,12 +5744,12 @@ fi
 xe_msg_checking="for XGetFontProperty in -lX11"
 test -n "-b i486-linuxaout" && xe_msg_checking="$xe_msg_checking using extra libs -b i486-linuxaout"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:5746: checking "$xe_msg_checking"" >&5
+echo "configure:5748: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo X11'_'XGetFontProperty | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 -b i486-linuxaout"
 cat > conftest.$ac_ext <<EOF
-#line 5751 "configure"
+#line 5753 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5758,7 +5760,7 @@ int main() {
 XGetFontProperty()
 ; return 0; }
 EOF
-if { (eval echo configure:5762: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5785,12 +5787,12 @@ fi
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:5789: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:5791: checking for XShapeSelectInput in -lXext" >&5
 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXext "
 cat > conftest.$ac_ext <<EOF
-#line 5794 "configure"
+#line 5796 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5801,7 +5803,7 @@ int main() {
 XShapeSelectInput()
 ; return 0; }
 EOF
-if { (eval echo configure:5805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5824,12 +5826,12 @@ fi
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:5828: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:5830: checking for XtOpenDisplay in -lXt" >&5
 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXt "
 cat > conftest.$ac_ext <<EOF
-#line 5833 "configure"
+#line 5835 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5840,7 +5842,7 @@ int main() {
 XtOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5863,14 +5865,14 @@ fi
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:5867: checking the version of X11 being used" >&5
+echo "configure:5869: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<EOF
-#line 5869 "configure"
+#line 5871 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }
 EOF
-if { (eval echo configure:5874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:5876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest foobar; x11_release=$?
 else
@@ -5895,15 +5897,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5899: checking for $ac_hdr" >&5
+echo "configure:5901: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5902 "configure"
+#line 5904 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5907: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5909: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5934,7 +5936,7 @@ done
 
 
     echo $ac_n "checking for XFree86""... $ac_c" 1>&6
-echo "configure:5938: checking for XFree86" >&5
+echo "configure:5940: checking for XFree86" >&5
   if test -d "/usr/X386/include" -o \
           -f "/etc/XF86Config"    -o \
          -f "/etc/X11/XF86Config" -o \
@@ -5954,12 +5956,12 @@ EOF
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:5958: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:5960: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXmu "
 cat > conftest.$ac_ext <<EOF
-#line 5963 "configure"
+#line 5965 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -5970,7 +5972,7 @@ int main() {
 XmuReadBitmapDataFromFile()
 ; return 0; }
 EOF
-if { (eval echo configure:5974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6009,19 +6011,19 @@ EOF
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:6013: checking for main in -lXbsd" >&5
+echo "configure:6015: checking for main in -lXbsd" >&5
 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXbsd "
 cat > conftest.$ac_ext <<EOF
-#line 6018 "configure"
+#line 6020 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6058,22 +6060,22 @@ fi
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:6062: checking for MS-Windows" >&5
+echo "configure:6064: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:6065: checking for main in -lgdi32" >&5
+echo "configure:6067: checking for main in -lgdi32" >&5
 ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgdi32 "
 cat > conftest.$ac_ext <<EOF
-#line 6070 "configure"
+#line 6072 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6139,12 +6141,12 @@ EOF
  fi
     fi
         cat > conftest.$ac_ext <<EOF
-#line 6143 "configure"
+#line 6145 "configure"
 #include "confdefs.h"
 #include <fcntl.h>
     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }
 EOF
-if { (eval echo configure:6148: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MSG_SELECT
@@ -6220,7 +6222,7 @@ case "$x_libraries" in *X11R4* )
 esac
 
 echo "checking for WM_COMMAND option" 1>&6
-echo "configure:6224: checking for WM_COMMAND option" >&5;
+echo "configure:6226: checking for WM_COMMAND option" >&5;
 if test "$with_wmcommand" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_WMCOMMAND
@@ -6235,15 +6237,15 @@ fi
 test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no
 test -z "$with_xauth" && { ac_safe=`echo "X11/Xauth.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xauth.h""... $ac_c" 1>&6
-echo "configure:6239: checking for X11/Xauth.h" >&5
+echo "configure:6241: checking for X11/Xauth.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6242 "configure"
+#line 6244 "configure"
 #include "confdefs.h"
 #include <X11/Xauth.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6266,12 +6268,12 @@ fi
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:6270: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:6272: checking for XauGetAuthByAddr in -lXau" >&5
 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXau "
 cat > conftest.$ac_ext <<EOF
-#line 6275 "configure"
+#line 6277 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6282,7 +6284,7 @@ int main() {
 XauGetAuthByAddr()
 ; return 0; }
 EOF
-if { (eval echo configure:6286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6327,15 +6329,15 @@ if test "$with_tooltalk" != "no" ; then
       for dir in "" "Tt/" "desktop/" ; do
     ac_safe=`echo "${dir}tt_c.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${dir}tt_c.h""... $ac_c" 1>&6
-echo "configure:6331: checking for ${dir}tt_c.h" >&5
+echo "configure:6333: checking for ${dir}tt_c.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6334 "configure"
+#line 6336 "configure"
 #include "confdefs.h"
 #include <${dir}tt_c.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6371,12 +6373,12 @@ if test "$with_tooltalk" != "no" ; then
 xe_msg_checking="for tt_message_create in -ltt"
 test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6375: checking "$xe_msg_checking"" >&5
+echo "configure:6377: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltt $extra_libs"
 cat > conftest.$ac_ext <<EOF
-#line 6380 "configure"
+#line 6382 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6387,7 +6389,7 @@ int main() {
 tt_message_create()
 ; return 0; }
 EOF
-if { (eval echo configure:6391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6444,15 +6446,15 @@ fi
 
 test -z "$with_cde" && { ac_safe=`echo "Dt/Dt.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Dt/Dt.h""... $ac_c" 1>&6
-echo "configure:6448: checking for Dt/Dt.h" >&5
+echo "configure:6450: checking for Dt/Dt.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6451 "configure"
+#line 6453 "configure"
 #include "confdefs.h"
 #include <Dt/Dt.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6456: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6475,12 +6477,12 @@ fi
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:6479: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:6481: checking for DtDndDragStart in -lDtSvc" >&5
 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lDtSvc "
 cat > conftest.$ac_ext <<EOF
-#line 6484 "configure"
+#line 6486 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6491,7 +6493,7 @@ int main() {
 DtDndDragStart()
 ; return 0; }
 EOF
-if { (eval echo configure:6495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6560,7 +6562,7 @@ EOF
 fi
 
 echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6
-echo "configure:6564: checking if drag and drop API is needed" >&5
+echo "configure:6566: checking if drag and drop API is needed" >&5
 if test "$with_dragndrop" != "no" ; then
   if test -n "$dragndrop_proto" ; then
     with_dragndrop=yes
@@ -6581,18 +6583,18 @@ EOF
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:6585: checking for LDAP" >&5
+echo "configure:6587: checking for LDAP" >&5
 test -z "$with_ldap" && { ac_safe=`echo "ldap.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ldap.h""... $ac_c" 1>&6
-echo "configure:6588: checking for ldap.h" >&5
+echo "configure:6590: checking for ldap.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6591 "configure"
+#line 6593 "configure"
 #include "confdefs.h"
 #include <ldap.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6598: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6615,15 +6617,15 @@ fi
  }
 test -z "$with_ldap" && { ac_safe=`echo "lber.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for lber.h""... $ac_c" 1>&6
-echo "configure:6619: checking for lber.h" >&5
+echo "configure:6621: checking for lber.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6622 "configure"
+#line 6624 "configure"
 #include "confdefs.h"
 #include <lber.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6627: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6629: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6647,12 +6649,12 @@ fi
 if test "$with_ldap" != "no"; then
   
 echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:6651: checking for ldap_search in -lldap" >&5
+echo "configure:6653: checking for ldap_search in -lldap" >&5
 ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap "
 cat > conftest.$ac_ext <<EOF
-#line 6656 "configure"
+#line 6658 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6663,7 +6665,7 @@ int main() {
 ldap_search()
 ; return 0; }
 EOF
-if { (eval echo configure:6667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6688,12 +6690,12 @@ fi
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6692: checking "$xe_msg_checking"" >&5
+echo "configure:6694: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber"
 cat > conftest.$ac_ext <<EOF
-#line 6697 "configure"
+#line 6699 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6704,7 +6706,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6729,12 +6731,12 @@ fi
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6733: checking "$xe_msg_checking"" >&5
+echo "configure:6735: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber -lkrb"
 cat > conftest.$ac_ext <<EOF
-#line 6738 "configure"
+#line 6740 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6745,7 +6747,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6770,12 +6772,12 @@ fi
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber -lkrb -ldes" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb -ldes"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6774: checking "$xe_msg_checking"" >&5
+echo "configure:6776: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber -lkrb -ldes"
 cat > conftest.$ac_ext <<EOF
-#line 6779 "configure"
+#line 6781 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6786,7 +6788,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6837,10 +6839,10 @@ EOF
   for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6841: checking for $ac_func" >&5
+echo "configure:6843: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6844 "configure"
+#line 6846 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6863,7 +6865,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -6895,15 +6897,15 @@ fi
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:6899: checking for graphics libraries" >&5
+echo "configure:6901: checking for graphics libraries" >&5
 
     xpm_problem=""
   if test -z "$with_xpm"; then
     echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6
-echo "configure:6904: checking for Xpm - no older than 3.4f" >&5
+echo "configure:6906: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 6907 "configure"
+#line 6909 "configure"
 #include "confdefs.h"
 #include <X11/xpm.h>
     int main(int c, char **v) {
@@ -6911,7 +6913,7 @@ echo "configure:6904: checking for Xpm - no older than 3.4f" >&5
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:6915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest dummy_arg; xpm_status=$?;
       if test "$xpm_status" = "0"; then
@@ -6953,17 +6955,17 @@ EOF
 
     libs_x="-lXpm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXpm\" to \$libs_x"; fi
     echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6
-echo "configure:6957: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:6959: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 6960 "configure"
+#line 6962 "configure"
 #include "confdefs.h"
 
 int main() {
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:6967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   xpm_for_msw=no
 else
@@ -6989,15 +6991,15 @@ EOF
 
     test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for compface.h""... $ac_c" 1>&6
-echo "configure:6993: checking for compface.h" >&5
+echo "configure:6995: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6996 "configure"
+#line 6998 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7001: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7003: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7020,12 +7022,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:7024: checking for UnGenFace in -lcompface" >&5
+echo "configure:7026: checking for UnGenFace in -lcompface" >&5
 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcompface "
 cat > conftest.$ac_ext <<EOF
-#line 7029 "configure"
+#line 7031 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7036,7 +7038,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:7040: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7042: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7088,12 +7090,12 @@ EOF
       if test "$with_png $with_tiff" != "no no"; then
     
 echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6
-echo "configure:7092: checking for inflate in -lc" >&5
+echo "configure:7094: checking for inflate in -lc" >&5
 ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 7097 "configure"
+#line 7099 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7104,7 +7106,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7123,12 +7125,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:7127: checking for inflate in -lz" >&5
+echo "configure:7129: checking for inflate in -lz" >&5
 ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lz "
 cat > conftest.$ac_ext <<EOF
-#line 7132 "configure"
+#line 7134 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7139,7 +7141,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7158,12 +7160,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:7162: checking for inflate in -lgz" >&5
+echo "configure:7164: checking for inflate in -lgz" >&5
 ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgz "
 cat > conftest.$ac_ext <<EOF
-#line 7167 "configure"
+#line 7169 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7174,7 +7176,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7178: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7204,15 +7206,15 @@ fi
 
     test -z "$with_jpeg" && { ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6
-echo "configure:7208: checking for jpeglib.h" >&5
+echo "configure:7210: checking for jpeglib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7211 "configure"
+#line 7213 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7216: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7218: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7235,12 +7237,12 @@ fi
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:7239: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:7241: checking for jpeg_destroy_decompress in -ljpeg" >&5
 ac_lib_var=`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ljpeg "
 cat > conftest.$ac_ext <<EOF
-#line 7244 "configure"
+#line 7246 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7251,7 +7253,7 @@ int main() {
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:7255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7287,10 +7289,10 @@ EOF
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:7291: checking for pow" >&5
+echo "configure:7293: checking for pow" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7294 "configure"
+#line 7296 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -7313,7 +7315,7 @@ pow();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_pow=yes"
 else
@@ -7334,15 +7336,15 @@ fi
  }
   test -z "$with_png" && { ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for png.h""... $ac_c" 1>&6
-echo "configure:7338: checking for png.h" >&5
+echo "configure:7340: checking for png.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7341 "configure"
+#line 7343 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7348: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7365,12 +7367,12 @@ fi
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:7369: checking for png_read_image in -lpng" >&5
+echo "configure:7371: checking for png_read_image in -lpng" >&5
 ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpng "
 cat > conftest.$ac_ext <<EOF
-#line 7374 "configure"
+#line 7376 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7381,7 +7383,7 @@ int main() {
 png_read_image()
 ; return 0; }
 EOF
-if { (eval echo configure:7385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7404,10 +7406,10 @@ fi
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:7408: checking for workable png version information" >&5
+echo "configure:7410: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 7411 "configure"
+#line 7413 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -7415,7 +7417,7 @@ echo "configure:7408: checking for workable png version information" >&5
     if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1;
     return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;}
 EOF
-if { (eval echo configure:7419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest dummy_arg; png_status=$?;
       if test "$png_status" = "0"; then
@@ -7458,15 +7460,15 @@ EOF
 
     test -z "$with_tiff" && { ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6
-echo "configure:7462: checking for tiffio.h" >&5
+echo "configure:7464: checking for tiffio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7465 "configure"
+#line 7467 "configure"
 #include "confdefs.h"
 #include <tiffio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7470: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7472: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7489,12 +7491,12 @@ fi
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:7493: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:7495: checking for TIFFClientOpen in -ltiff" >&5
 ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltiff "
 cat > conftest.$ac_ext <<EOF
-#line 7498 "configure"
+#line 7500 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7505,7 +7507,7 @@ int main() {
 TIFFClientOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:7509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7544,16 +7546,16 @@ fi
 if test "$with_x11" = "yes"; then
 
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:7548: checking for X11 graphics libraries" >&5
+echo "configure:7550: checking for X11 graphics libraries" >&5
 
     
 echo $ac_n "checking for XawScrollbarSetThumb in -lXaw""... $ac_c" 1>&6
-echo "configure:7552: checking for XawScrollbarSetThumb in -lXaw" >&5
+echo "configure:7554: checking for XawScrollbarSetThumb in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw "
 cat > conftest.$ac_ext <<EOF
-#line 7557 "configure"
+#line 7559 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7564,7 +7566,7 @@ int main() {
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:7568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7588,12 +7590,12 @@ fi
                     
     
 echo $ac_n "checking for XawScrollbarSetThumb in -lXaw3d""... $ac_c" 1>&6
-echo "configure:7592: checking for XawScrollbarSetThumb in -lXaw3d" >&5
+echo "configure:7594: checking for XawScrollbarSetThumb in -lXaw3d" >&5
 ac_lib_var=`echo Xaw3d'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw3d "
 cat > conftest.$ac_ext <<EOF
-#line 7597 "configure"
+#line 7599 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7604,7 +7606,7 @@ int main() {
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:7608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7628,15 +7630,15 @@ fi
 
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:7632: checking for Xm/Xm.h" >&5
+echo "configure:7634: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7635 "configure"
+#line 7637 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7642: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7653,12 +7655,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   
 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6
-echo "configure:7657: checking for XmStringFree in -lXm" >&5
+echo "configure:7659: checking for XmStringFree in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<EOF
-#line 7662 "configure"
+#line 7664 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -7669,7 +7671,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:7673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7698,9 +7700,9 @@ fi
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:7702: checking for Lesstif" >&5
+echo "configure:7704: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 7704 "configure"
+#line 7706 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -8027,7 +8029,7 @@ fi
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:8031: checking for Mule-related features" >&5
+echo "configure:8033: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -8044,23 +8046,39 @@ cat >> confdefs.h <<\EOF
 EOF
 }
 
-  extra_objs="$extra_objs mule.o mule-ccl.o mule-charset.o file-coding.o" &&  if test "$extra_verbose" = "yes"; then
-   echo "    xemacs will be linked with \"mule.o mule-ccl.o mule-charset.o file-coding.o\""
+  extra_objs="$extra_objs mule.o mule-ccl.o mule-charset.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"mule.o mule-ccl.o mule-charset.o\""
  fi
+  if test "$with_utf_2000" = "yes" && test "$with_text_coding" = "yes"; then
+    { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining TEXT_CODING
+EOF
+cat >> confdefs.h <<\EOF
+#define TEXT_CODING 1
+EOF
+}
 
+    extra_objs="$extra_objs text-coding.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"text-coding.o\""
+ fi
+  else
+    extra_objs="$extra_objs file-coding.o" &&  if test "$extra_verbose" = "yes"; then
+   echo "    xemacs will be linked with \"file-coding.o\""
+ fi
+  fi
     for ac_hdr in libintl.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8056: checking for $ac_hdr" >&5
+echo "configure:8074: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8059 "configure"
+#line 8077 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8064: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8091,12 +8109,12 @@ done
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:8095: checking for strerror in -lintl" >&5
+echo "configure:8113: checking for strerror in -lintl" >&5
 ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lintl "
 cat > conftest.$ac_ext <<EOF
-#line 8100 "configure"
+#line 8118 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8107,7 +8125,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:8111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8139,19 +8157,38 @@ fi
 
 
 
+  if test "$with_utf_2000" = "yes" ; then
+    { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining CHAR_IS_UCS4
+EOF
+cat >> confdefs.h <<\EOF
+#define CHAR_IS_UCS4 1
+EOF
+}
+
+    { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining UTF2000
+EOF
+cat >> confdefs.h <<\EOF
+#define UTF2000 1
+EOF
+}
+
+  fi
+
   echo "checking for Mule input methods" 1>&6
-echo "configure:8144: checking for Mule input methods" >&5
+echo "configure:8181: checking for Mule input methods" >&5
         case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:8147: checking for XIM" >&5
+echo "configure:8184: checking for XIM" >&5
     
 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:8150: checking for XOpenIM in -lX11" >&5
+echo "configure:8187: checking for XOpenIM in -lX11" >&5
 ac_lib_var=`echo X11'_'XOpenIM | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 8155 "configure"
+#line 8192 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8162,7 +8199,7 @@ int main() {
 XOpenIM()
 ; return 0; }
 EOF
-if { (eval echo configure:8166: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8186,12 +8223,12 @@ fi
         if test "$have_motif $have_lesstif" = "yes no"; then
       
 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:8190: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:8227: checking for XmImMbLookupString in -lXm" >&5
 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXm "
 cat > conftest.$ac_ext <<EOF
-#line 8195 "configure"
+#line 8232 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8202,7 +8239,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:8206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8267,15 +8304,15 @@ EOF
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:8271: checking for XFontSet" >&5
+echo "configure:8308: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:8274: checking for XmbDrawString in -lX11" >&5
+echo "configure:8311: checking for XmbDrawString in -lX11" >&5
 ac_lib_var=`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lX11 "
 cat > conftest.$ac_ext <<EOF
-#line 8279 "configure"
+#line 8316 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8286,7 +8323,7 @@ int main() {
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:8290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8326,15 +8363,15 @@ EOF
     test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support
   test -z "$with_wnn" && { ac_safe=`echo "wnn/jllib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for wnn/jllib.h""... $ac_c" 1>&6
-echo "configure:8330: checking for wnn/jllib.h" >&5
+echo "configure:8367: checking for wnn/jllib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8333 "configure"
+#line 8370 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8375: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8359,10 +8396,10 @@ fi
     for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8363: checking for $ac_func" >&5
+echo "configure:8400: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8366 "configure"
+#line 8403 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8385,7 +8422,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -8414,12 +8451,12 @@ done
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:8418: checking for crypt in -lcrypt" >&5
+echo "configure:8455: checking for crypt in -lcrypt" >&5
 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcrypt "
 cat > conftest.$ac_ext <<EOF
-#line 8423 "configure"
+#line 8460 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8430,7 +8467,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:8434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8465,12 +8502,12 @@ fi
     if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
     
 echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6
-echo "configure:8469: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:8506: checking for jl_dic_list_e in -lwnn" >&5
 ac_lib_var=`echo wnn'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn "
 cat > conftest.$ac_ext <<EOF
-#line 8474 "configure"
+#line 8511 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8481,7 +8518,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8499,12 +8536,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6
-echo "configure:8503: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:8540: checking for jl_dic_list_e in -lwnn4" >&5
 ac_lib_var=`echo wnn4'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn4 "
 cat > conftest.$ac_ext <<EOF
-#line 8508 "configure"
+#line 8545 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8515,7 +8552,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8533,12 +8570,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6
-echo "configure:8537: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:8574: checking for jl_dic_list_e in -lwnn6" >&5
 ac_lib_var=`echo wnn6'_'jl_dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6 "
 cat > conftest.$ac_ext <<EOF
-#line 8542 "configure"
+#line 8579 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8549,7 +8586,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8567,12 +8604,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6
-echo "configure:8571: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:8608: checking for dic_list_e in -lwnn6_fromsrc" >&5
 ac_lib_var=`echo wnn6_fromsrc'_'dic_list_e | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lwnn6_fromsrc "
 cat > conftest.$ac_ext <<EOF
-#line 8576 "configure"
+#line 8613 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8583,7 +8620,7 @@ int main() {
 dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8624: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8631,12 +8668,12 @@ EOF
     if test "$with_wnn6" != "no"; then
       
 echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6
-echo "configure:8635: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:8672: checking for jl_fi_dic_list in -l$libwnn" >&5
 ac_lib_var=`echo $libwnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$libwnn "
 cat > conftest.$ac_ext <<EOF
-#line 8640 "configure"
+#line 8677 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8647,7 +8684,7 @@ int main() {
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:8651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8682,15 +8719,15 @@ EOF
   if test "$with_canna" != "no"; then
     ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
-echo "configure:8686: checking for canna/jrkanji.h" >&5
+echo "configure:8723: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8689 "configure"
+#line 8726 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8694: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8731: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8717,15 +8754,15 @@ fi
     c_switch_site="$c_switch_site -I/usr/local/canna/include"
     ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
-echo "configure:8721: checking for canna/jrkanji.h" >&5
+echo "configure:8758: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8724 "configure"
+#line 8761 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8753,15 +8790,15 @@ fi
 
   test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6
-echo "configure:8757: checking for canna/RK.h" >&5
+echo "configure:8794: checking for canna/RK.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8760 "configure"
+#line 8797 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8765: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8802: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8784,12 +8821,12 @@ fi
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6
-echo "configure:8788: checking for RkBgnBun in -lRKC" >&5
+echo "configure:8825: checking for RkBgnBun in -lRKC" >&5
 ac_lib_var=`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lRKC "
 cat > conftest.$ac_ext <<EOF
-#line 8793 "configure"
+#line 8830 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8800,7 +8837,7 @@ int main() {
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:8804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8823,12 +8860,12 @@ fi
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6
-echo "configure:8827: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:8864: checking for jrKanjiControl in -lcanna" >&5
 ac_lib_var=`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcanna "
 cat > conftest.$ac_ext <<EOF
-#line 8832 "configure"
+#line 8869 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8839,7 +8876,7 @@ int main() {
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:8843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8888,12 +8925,12 @@ if test "$need_motif" = "yes" ; then
   libs_x="-lXm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXm\" to \$libs_x"; fi
     
 echo $ac_n "checking for layout_object_getvalue in -li18n""... $ac_c" 1>&6
-echo "configure:8892: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:8929: checking for layout_object_getvalue in -li18n" >&5
 ac_lib_var=`echo i18n'_'layout_object_getvalue | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -li18n "
 cat > conftest.$ac_ext <<EOF
-#line 8897 "configure"
+#line 8934 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -8904,7 +8941,7 @@ int main() {
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:8908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8990,10 +9027,10 @@ fi
 for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8994: checking for $ac_func" >&5
+echo "configure:9031: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8997 "configure"
+#line 9034 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9016,7 +9053,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -9057,10 +9094,10 @@ case "$opsys" in
       * ) for ac_func in realpath
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9061: checking for $ac_func" >&5
+echo "configure:9098: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9064 "configure"
+#line 9101 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9083,7 +9120,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9124: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -9119,10 +9156,10 @@ esac
 for ac_func in getloadavg
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9123: checking for $ac_func" >&5
+echo "configure:9160: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9126 "configure"
+#line 9163 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9145,7 +9182,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -9181,12 +9218,12 @@ then
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:9185: checking for kstat_open in -lkstat" >&5
+echo "configure:9222: checking for kstat_open in -lkstat" >&5
 ac_lib_var=`echo kstat'_'kstat_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkstat "
 cat > conftest.$ac_ext <<EOF
-#line 9190 "configure"
+#line 9227 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9197,7 +9234,7 @@ int main() {
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:9201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9231,12 +9268,12 @@ fi
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:9235: checking for kvm_read in -lkvm" >&5
+echo "configure:9272: checking for kvm_read in -lkvm" >&5
 ac_lib_var=`echo kvm'_'kvm_read | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lkvm "
 cat > conftest.$ac_ext <<EOF
-#line 9240 "configure"
+#line 9277 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -9247,7 +9284,7 @@ int main() {
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:9251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9281,16 +9318,16 @@ fi
 fi
 
 echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6
-echo "configure:9285: checking whether netdb declares h_errno" >&5
+echo "configure:9322: checking whether netdb declares h_errno" >&5
 cat > conftest.$ac_ext <<EOF
-#line 9287 "configure"
+#line 9324 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:9294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
@@ -9310,16 +9347,16 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:9314: checking for sigsetjmp" >&5
+echo "configure:9351: checking for sigsetjmp" >&5
 cat > conftest.$ac_ext <<EOF
-#line 9316 "configure"
+#line 9353 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:9323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9360: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
@@ -9339,11 +9376,11 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6
-echo "configure:9343: checking whether localtime caches TZ" >&5
+echo "configure:9380: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 9347 "configure"
+#line 9384 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -9378,7 +9415,7 @@ main()
   exit (0);
 }
 EOF
-if { (eval echo configure:9382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -9408,9 +9445,9 @@ fi
 
 if test "$HAVE_TIMEVAL" = "yes"; then
 echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6
-echo "configure:9412: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:9449: checking whether gettimeofday accepts one or two arguments" >&5
 cat > conftest.$ac_ext <<EOF
-#line 9414 "configure"
+#line 9451 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -9432,7 +9469,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:9436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""two" 1>&6
 else
@@ -9454,19 +9491,19 @@ fi
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:9458: checking for inline" >&5
+echo "configure:9495: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 9463 "configure"
+#line 9500 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:9470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -9516,17 +9553,17 @@ fi
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
 echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:9520: checking for working alloca.h" >&5
+echo "configure:9557: checking for working alloca.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9523 "configure"
+#line 9560 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:9530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_header_alloca_h=yes
 else
@@ -9550,10 +9587,10 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:9554: checking for alloca" >&5
+echo "configure:9591: checking for alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9557 "configure"
+#line 9594 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -9581,7 +9618,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:9585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_func_alloca_works=yes
 else
@@ -9620,10 +9657,10 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:9624: checking whether alloca needs Cray hooks" >&5
+echo "configure:9661: checking whether alloca needs Cray hooks" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9627 "configure"
+#line 9664 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -9647,10 +9684,10 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
 if test $ac_cv_os_cray = yes; then
 for ac_func in _getb67 GETB67 getb67; do
   echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9651: checking for $ac_func" >&5
+echo "configure:9688: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9654 "configure"
+#line 9691 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9673,7 +9710,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -9703,10 +9740,10 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:9707: checking stack direction for C alloca" >&5
+echo "configure:9744: checking stack direction for C alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9710 "configure"
+#line 9747 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -9725,7 +9762,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:9729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_stack_direction=1
 else
@@ -9754,15 +9791,15 @@ test -n "$ALLOCA" && extra_objs="$extra_objs $ALLOCA" &&  if test "$extra_verbos
 
 ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:9758: checking for vfork.h" >&5
+echo "configure:9795: checking for vfork.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9761 "configure"
+#line 9798 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9803: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9790,10 +9827,10 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:9794: checking for working vfork" >&5
+echo "configure:9831: checking for working vfork" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9797 "configure"
+#line 9834 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -9888,7 +9925,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:9892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_vfork_works=yes
 else
@@ -9914,10 +9951,10 @@ fi
 
 
 echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:9918: checking for working strcoll" >&5
+echo "configure:9955: checking for working strcoll" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9921 "configure"
+#line 9958 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -9927,7 +9964,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:9931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_strcoll_works=yes
 else
@@ -9955,10 +9992,10 @@ fi
 for ac_func in getpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9959: checking for $ac_func" >&5
+echo "configure:9996: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9962 "configure"
+#line 9999 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9981,7 +10018,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
 done
 
 echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:10013: checking whether getpgrp takes no argument" >&5
+echo "configure:10050: checking whether getpgrp takes no argument" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10016 "configure"
+#line 10053 "configure"
 #include "confdefs.h"
 
 /*
@@ -10067,7 +10104,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:10071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_getpgrp_void=yes
 else
 
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:10098: checking for working mmap" >&5
+echo "configure:10135: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 10101 "configure"
+#line 10138 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -10130,7 +10167,7 @@ int main (int argc, char *argv[])
   return 1;
 }
 EOF
-if { (eval echo configure:10134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -10165,15 +10202,15 @@ EOF
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:10169: checking for termios.h" >&5
+echo "configure:10206: checking for termios.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10172 "configure"
+#line 10209 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10216,15 +10253,15 @@ else
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "termio.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termio.h""... $ac_c" 1>&6
-echo "configure:10220: checking for termio.h" >&5
+echo "configure:10257: checking for termio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10223 "configure"
+#line 10260 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10228: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 
 echo $ac_n "checking for socket""... $ac_c" 1>&6
-echo "configure:10260: checking for socket" >&5
+echo "configure:10297: checking for socket" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10263 "configure"
+#line 10300 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -10282,7 +10319,7 @@ socket();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_socket=yes"
 else
@@ -10297,15 +10334,15 @@ if eval "test \"`echo '$ac_cv_func_'socket`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "netinet/in.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for netinet/in.h""... $ac_c" 1>&6
-echo "configure:10301: checking for netinet/in.h" >&5
+echo "configure:10338: checking for netinet/in.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10304 "configure"
+#line 10341 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10322,15 +10359,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "arpa/inet.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for arpa/inet.h""... $ac_c" 1>&6
-echo "configure:10326: checking for arpa/inet.h" >&5
+echo "configure:10363: checking for arpa/inet.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10329 "configure"
+#line 10366 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10355,9 +10392,9 @@ EOF
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:10359: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:10396: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 10361 "configure"
+#line 10398 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10368,7 +10405,7 @@ int main() {
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:10372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_SOCKADDR_SUN_LEN
@@ -10386,9 +10423,9 @@ else
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:10390: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:10427: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 10392 "configure"
+#line 10429 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10398,7 +10435,7 @@ int main() {
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:10402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10439: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MULTICAST
 
 
 echo $ac_n "checking for msgget""... $ac_c" 1>&6
-echo "configure:10433: checking for msgget" >&5
+echo "configure:10470: checking for msgget" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10436 "configure"
+#line 10473 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -10455,7 +10492,7 @@ msgget();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_msgget=yes"
 else
@@ -10470,15 +10507,15 @@ if eval "test \"`echo '$ac_cv_func_'msgget`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6
-echo "configure:10474: checking for sys/ipc.h" >&5
+echo "configure:10511: checking for sys/ipc.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10477 "configure"
+#line 10514 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10482: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10519: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10495,15 +10532,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "sys/msg.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/msg.h""... $ac_c" 1>&6
-echo "configure:10499: checking for sys/msg.h" >&5
+echo "configure:10536: checking for sys/msg.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10502 "configure"
+#line 10539 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10507: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10544: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dirent.h""... $ac_c" 1>&6
-echo "configure:10545: checking for dirent.h" >&5
+echo "configure:10582: checking for dirent.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10548 "configure"
+#line 10585 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10590: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10576,15 +10613,15 @@ else
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "sys/dir.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/dir.h""... $ac_c" 1>&6
-echo "configure:10580: checking for sys/dir.h" >&5
+echo "configure:10617: checking for sys/dir.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10583 "configure"
+#line 10620 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10588: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10625: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for nlist.h""... $ac_c" 1>&6
-echo "configure:10621: checking for nlist.h" >&5
+echo "configure:10658: checking for nlist.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10624 "configure"
+#line 10661 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10629: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10666: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 
 echo "checking "for sound support"" 1>&6
-echo "configure:10659: checking "for sound support"" >&5
+echo "configure:10696: checking "for sound support"" >&5
 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
 
 if test "$with_native_sound" != "no"; then
     if test -n "$native_sound_lib"; then
     ac_safe=`echo "multimedia/audio_device.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for multimedia/audio_device.h""... $ac_c" 1>&6
-echo "configure:10666: checking for multimedia/audio_device.h" >&5
+echo "configure:10703: checking for multimedia/audio_device.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10669 "configure"
+#line 10706 "configure"
 #include "confdefs.h"
 #include <multimedia/audio_device.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
       if test -z "$native_sound_lib"; then
         
 echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6
-echo "configure:10722: checking for ALopenport in -laudio" >&5
+echo "configure:10759: checking for ALopenport in -laudio" >&5
 ac_lib_var=`echo audio'_'ALopenport | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<EOF
-#line 10727 "configure"
+#line 10764 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10734,7 +10771,7 @@ int main() {
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:10738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
       if test -z "$native_sound_lib"; then
        
 echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6
-echo "configure:10769: checking for AOpenAudio in -lAlib" >&5
+echo "configure:10806: checking for AOpenAudio in -lAlib" >&5
 ac_lib_var=`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lAlib "
 cat > conftest.$ac_ext <<EOF
-#line 10774 "configure"
+#line 10811 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10781,7 +10818,7 @@ int main() {
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:10785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
     for dir in "machine" "sys" "linux"; do
       ac_safe=`echo "${dir}/soundcard.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ${dir}/soundcard.h""... $ac_c" 1>&6
-echo "configure:10823: checking for ${dir}/soundcard.h" >&5
+echo "configure:10860: checking for ${dir}/soundcard.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10826 "configure"
+#line 10863 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10831: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10868: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 if test "$with_nas_sound" != "no"; then
   ac_safe=`echo "audio/audiolib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for audio/audiolib.h""... $ac_c" 1>&6
-echo "configure:10885: checking for audio/audiolib.h" >&5
+echo "configure:10922: checking for audio/audiolib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10888 "configure"
+#line 10925 "configure"
 #include "confdefs.h"
 #include <audio/audiolib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10893: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10930: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10907,12 +10944,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
     
 echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6
-echo "configure:10911: checking for AuOpenServer in -laudio" >&5
+echo "configure:10948: checking for AuOpenServer in -laudio" >&5
 ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<EOF
-#line 10916 "configure"
+#line 10953 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -10923,7 +10960,7 @@ int main() {
 AuOpenServer()
 ; return 0; }
 EOF
-if { (eval echo configure:10927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -10962,7 +10999,7 @@ EOF
  fi
     libs_x="-laudio $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-laudio\" to \$libs_x"; fi
             cat > conftest.$ac_ext <<EOF
-#line 10966 "configure"
+#line 11003 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -10993,7 +11030,7 @@ if test "$with_esd_sound" != "no"; then
   # Extract the first word of "esd-config", so it can be a program name with args.
 set dummy esd-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:10997: checking for $ac_word" >&5
+echo "configure:11034: checking for $ac_word" >&5
 
 if test -n "$have_esd_config"; then
   ac_cv_prog_have_esd_config="$have_esd_config" # Let the user override the test.
     c_switch_site="$c_switch_site `esd-config --cflags`" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"`esd-config --cflags`\" to \$c_switch_site"; fi
     LIBS="`esd-config --libs` $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"`esd-config --libs`\" to \$LIBS"; fi
     echo $ac_n "checking for esd_play_stream""... $ac_c" 1>&6
-echo "configure:11026: checking for esd_play_stream" >&5
+echo "configure:11063: checking for esd_play_stream" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11029 "configure"
+#line 11066 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char esd_play_stream(); below.  */
@@ -11048,7 +11085,7 @@ esd_play_stream();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_esd_play_stream=yes"
 else
@@ -11099,7 +11136,7 @@ test -z "$with_tty" && with_tty=yes
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:11103: checking for TTY-related features" >&5
+echo "configure:11140: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -11115,12 +11152,12 @@ EOF
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:11119: checking for tgetent in -lncurses" >&5
+echo "configure:11156: checking for tgetent in -lncurses" >&5
 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lncurses "
 cat > conftest.$ac_ext <<EOF
-#line 11124 "configure"
+#line 11161 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11131,7 +11168,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11135: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11164,15 +11201,15 @@ EOF
 
     ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:11168: checking for ncurses/curses.h" >&5
+echo "configure:11205: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11171 "configure"
+#line 11208 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11176: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11213: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
     ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6
-echo "configure:11198: checking for ncurses/term.h" >&5
+echo "configure:11235: checking for ncurses/term.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11201 "configure"
+#line 11238 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11206: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11243: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
       c_switch_site="$c_switch_site -I/usr/include/ncurses"
       ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:11236: checking for ncurses/curses.h" >&5
+echo "configure:11273: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11239 "configure"
+#line 11276 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
        for lib in curses termlib termcap; do
          
 echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6
-echo "configure:11279: checking for tgetent in -l$lib" >&5
+echo "configure:11316: checking for tgetent in -l$lib" >&5
 ac_lib_var=`echo $lib'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$lib "
 cat > conftest.$ac_ext <<EOF
-#line 11284 "configure"
+#line 11321 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11291,7 +11328,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11295: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
       else
        
 echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6
-echo "configure:11326: checking for tgetent in -lcurses" >&5
+echo "configure:11363: checking for tgetent in -lcurses" >&5
 ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lcurses "
 cat > conftest.$ac_ext <<EOF
-#line 11331 "configure"
+#line 11368 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11338,7 +11375,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11342: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11356,12 +11393,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:11360: checking for tgetent in -ltermcap" >&5
+echo "configure:11397: checking for tgetent in -ltermcap" >&5
 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ltermcap "
 cat > conftest.$ac_ext <<EOF
-#line 11365 "configure"
+#line 11402 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11372,7 +11409,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11420,15 +11457,15 @@ EOF
 
     test -z "$with_gpm" && { ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for gpm.h""... $ac_c" 1>&6
-echo "configure:11424: checking for gpm.h" >&5
+echo "configure:11461: checking for gpm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11427 "configure"
+#line 11464 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11469: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
  }
   test -z "$with_gpm" && { 
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:11455: checking for Gpm_Open in -lgpm" >&5
+echo "configure:11492: checking for Gpm_Open in -lgpm" >&5
 ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgpm "
 cat > conftest.$ac_ext <<EOF
-#line 11460 "configure"
+#line 11497 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11467,7 +11504,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:11471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11517,20 +11554,20 @@ test "$with_x11" = "yes" -o "$with_tty" = "yes" && extra_objs="$extra_objs event
 
 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
   != "no no no" && echo "checking for database support" 1>&6
-echo "configure:11521: checking for database support" >&5
+echo "configure:11558: checking for database support" >&5
 
 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
   ac_safe=`echo "ndbm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ndbm.h""... $ac_c" 1>&6
-echo "configure:11526: checking for ndbm.h" >&5
+echo "configure:11563: checking for ndbm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11529 "configure"
+#line 11566 "configure"
 #include "confdefs.h"
 #include <ndbm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11534: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 if test "$with_database_gdbm" != "no"; then
   
 echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:11564: checking for dbm_open in -lgdbm" >&5
+echo "configure:11601: checking for dbm_open in -lgdbm" >&5
 ac_lib_var=`echo gdbm'_'dbm_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lgdbm "
 cat > conftest.$ac_ext <<EOF
-#line 11569 "configure"
+#line 11606 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11576,7 +11613,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:11580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test "$with_database_dbm" != "no"; then
   echo $ac_n "checking for dbm_open""... $ac_c" 1>&6
-echo "configure:11608: checking for dbm_open" >&5
+echo "configure:11645: checking for dbm_open" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11611 "configure"
+#line 11648 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -11630,7 +11667,7 @@ dbm_open();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_dbm_open=yes"
 else
@@ -11649,12 +11686,12 @@ else
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:11653: checking for dbm_open in -ldbm" >&5
+echo "configure:11690: checking for dbm_open in -ldbm" >&5
 ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldbm "
 cat > conftest.$ac_ext <<EOF
-#line 11658 "configure"
+#line 11695 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11665,7 +11702,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:11669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11706,10 +11743,10 @@ EOF
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:11710: checking for Berkeley db.h" >&5
+echo "configure:11747: checking for Berkeley db.h" >&5
   for path in "db/db.h" "db.h"; do
     cat > conftest.$ac_ext <<EOF
-#line 11713 "configure"
+#line 11750 "configure"
 #include "confdefs.h"
 #ifdef HAVE_INTTYPES_H
 #define __BIT_TYPES_DEFINED__
@@ -11727,7 +11764,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11768: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_path="$path"; break
 else
@@ -11743,9 +11780,9 @@ rm -f conftest*
 
   if test "$with_database_berkdb" != "no"; then
     echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6
-echo "configure:11747: checking for Berkeley DB version" >&5
+echo "configure:11784: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 11749 "configure"
+#line 11786 "configure"
 #include "confdefs.h"
 #include <$db_h_path>
 #if DB_VERSION_MAJOR > 1
 rm -f conftest*
 
     echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:11768: checking for $dbfunc" >&5
+echo "configure:11805: checking for $dbfunc" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11771 "configure"
+#line 11808 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -11790,7 +11827,7 @@ $dbfunc();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$dbfunc=yes"
 else
@@ -11809,12 +11846,12 @@ else
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:11813: checking for $dbfunc in -ldb" >&5
+echo "configure:11850: checking for $dbfunc in -ldb" >&5
 ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldb "
 cat > conftest.$ac_ext <<EOF
-#line 11818 "configure"
+#line 11855 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11825,7 +11862,7 @@ int main() {
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:11829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 if test "$with_socks" = "yes"; then
   
 echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:11893: checking for SOCKSinit in -lsocks" >&5
+echo "configure:11930: checking for SOCKSinit in -lsocks" >&5
 ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lsocks "
 cat > conftest.$ac_ext <<EOF
-#line 11898 "configure"
+#line 11935 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -11905,7 +11942,7 @@ int main() {
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:11909: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test "$with_modules" != "no"; then
   echo "checking for module support" 1>&6
-echo "configure:11964: checking for module support" >&5
+echo "configure:12001: checking for module support" >&5
 
     ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:11968: checking for dlfcn.h" >&5
+echo "configure:12005: checking for dlfcn.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11971 "configure"
+#line 12008 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11976: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12013: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11990,12 +12027,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
     
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:11994: checking for dlopen in -ldl" >&5
+echo "configure:12031: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldl "
 cat > conftest.$ac_ext <<EOF
-#line 11999 "configure"
+#line 12036 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12006,7 +12043,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:12010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12025,12 +12062,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:12029: checking for dlopen in -lc" >&5
+echo "configure:12066: checking for dlopen in -lc" >&5
 ac_lib_var=`echo c'_'dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 12034 "configure"
+#line 12071 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12041,7 +12078,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:12045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12080,12 +12117,12 @@ EOF
   else
     
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:12084: checking for shl_load in -ldld" >&5
+echo "configure:12121: checking for shl_load in -ldld" >&5
 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<EOF
-#line 12089 "configure"
+#line 12126 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12096,7 +12133,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:12100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12123,12 +12160,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:12127: checking for dld_init in -ldld" >&5
+echo "configure:12164: checking for dld_init in -ldld" >&5
 ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldld "
 cat > conftest.$ac_ext <<EOF
-#line 12132 "configure"
+#line 12169 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -12139,7 +12176,7 @@ int main() {
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:12143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12184,7 +12221,7 @@ xehost=$canonical
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:12188: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:12225: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -12212,9 +12249,9 @@ if test "$GCC" = "yes"; then
   XEGCC=yes
 else
   echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:12216: checking checking whether we are using GNU C" >&5
+echo "configure:12253: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 12218 "configure"
+#line 12255 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -12236,7 +12273,7 @@ rm -f conftest*
 fi
 
 echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:12240: checking how to produce PIC code" >&5
+echo "configure:12277: checking how to produce PIC code" >&5
 wl=
 
 can_build_shared=yes
@@ -12329,18 +12366,18 @@ if test -n "$dll_cflags"; then
   
   # Check to make sure the dll_cflags actually works.
   echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" 1>&6
-echo "configure:12333: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:12370: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<EOF
-#line 12337 "configure"
+#line 12374 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:12344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   
     # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also
@@ -12371,7 +12408,7 @@ cc_produces_so=no
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:12375: checking if C compiler can produce shared libraries" >&5
+echo "configure:12412: checking if C compiler can produce shared libraries" >&5
 if test "$XEGCC" = yes; then
   xcldf="-shared"
   xldf="-shared"
@@ -12422,14 +12459,14 @@ if test -n "$xcldf"; then
   xe_libs=
   ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5'
   cat > conftest.$ac_ext <<EOF
-#line 12426 "configure"
+#line 12463 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:12433: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cc_produces_so=yes
 else
@@ -12454,7 +12491,7 @@ if test -z "$LTLD"; then
   if test "$XEGCC" = yes; then
     # Check if gcc -print-prog-name=ld gives a path.
     echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:12458: checking for ld used by GCC" >&5
+echo "configure:12495: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -12479,7 +12516,7 @@ echo "configure:12458: checking for ld used by GCC" >&5
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:12483: checking for GNU ld" >&5
+echo "configure:12520: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -12517,7 +12554,7 @@ ld_dynamic_link_flags=
 
 # Check to see if it really is or isn't GNU ld.
 echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6
-echo "configure:12521: checking if the linker is GNU ld" >&5
+echo "configure:12558: checking if the linker is GNU ld" >&5
 # I'd rather use --version here, but apparently some GNU ld's only accept -v.
 if $LTLD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
   xe_gnu_ld=yes
@@ -12544,7 +12581,7 @@ else
   # OK - only NOW do we futz about with ld.
   # See if the linker supports building shared libraries.
   echo $ac_n "checking whether the linker supports shared libraries""... $ac_c" 1>&6
-echo "configure:12548: checking whether the linker supports shared libraries" >&5
+echo "configure:12585: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -12759,10 +12796,10 @@ EOF
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12763: checking for $ac_func" >&5
+echo "configure:12800: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12766 "configure"
+#line 12803 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12785,7 +12822,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -12824,11 +12861,11 @@ done
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 12828 "configure"
+#line 12865 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:12832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -13510,6 +13547,8 @@ test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
 test "$with_gpm"      = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
 
 test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
+test "$with_utf_2000" = yes && echo "  Using UTF-2000 (UTF-8) buffer/string representation."
+test "$with_text_coding"     = yes && echo "  Compiling in Text coding support."
 test "$with_file_coding"     = yes && echo "  Compiling in File coding support."
 test "$with_xim"      != no && echo "  Compiling in XIM (X11R5+ I18N input method) support."
 test "$with_xim" = motif    && echo "    Using Motif to provide XIM support."
index 25048ad..74ee273 100644 (file)
@@ -498,6 +498,8 @@ while test $# != 0; do
        with_xfs        | \
        with_i18n3      | \
        with_mule       | \
+       with_utf_2000   | \
+       with_text_coding| \
        with_file_coding| \
        with_canna      | \
        with_wnn        | \
@@ -3033,12 +3035,22 @@ if test "$with_mule" = "yes" ; then
   AC_CHECKING(for Mule-related features)
   AC_DEFINE(MULE)
   AC_DEFINE(FILE_CODING)
-  XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o file-coding.o)
-
+  XE_ADD_OBJS(mule.o mule-ccl.o mule-charset.o)
+  if test "$with_utf_2000" = "yes" && test "$with_text_coding" = "yes"; then
+    AC_DEFINE(TEXT_CODING)
+    XE_ADD_OBJS(text-coding.o)
+  else
+    XE_ADD_OBJS(file-coding.o)
+  fi
   dnl Use -lintl to get internationalized strerror for Mule
   AC_CHECK_HEADERS(libintl.h)
   AC_CHECK_LIB(intl, strerror)
 
+  if test "$with_utf_2000" = "yes" ; then
+    AC_DEFINE(CHAR_IS_UCS4)
+    AC_DEFINE(UTF2000)
+  fi
+
   AC_CHECKING(for Mule input methods)
   dnl Do we have the XmIm* routines?  And if so, do we want to use them?
   dnl XIM seems to be flaky except on Solaris...
@@ -4200,6 +4212,8 @@ test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
 test "$with_gpm"      = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
 
 test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
+test "$with_utf_2000" = yes && echo "  Using UTF-2000 (UTF-8) buffer/string representation."
+test "$with_text_coding"     = yes && echo "  Compiling in Text coding support."
 test "$with_file_coding"     = yes && echo "  Compiling in File coding support."
 test "$with_xim"      != no && echo "  Compiling in XIM (X11R5+ I18N input method) support."
 test "$with_xim" = motif    && echo "    Using Motif to provide XIM support."
index 0a0b284..6e119d0 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/custom.info, produced by makeinfo version 4.0 from
+This is ../info/custom.info, produced by makeinfo version 3.12s from
 custom.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -381,13 +381,13 @@ Wishlist
 
 \1f
 Tag Table:
-Node: Top\7f204
-Node: Declaring Groups\7f1625
-Node: Declaring Variables\7f2726
-Node: Declaring Faces\7f5817
-Node: Usage for Package Authors\7f7515
-Node: Utilities\7f8294
-Node: The Init File\7f9378
-Node: Wishlist\7f9830
+Node: Top\7f206
+Node: Declaring Groups\7f1627
+Node: Declaring Variables\7f2728
+Node: Declaring Faces\7f5819
+Node: Usage for Package Authors\7f7517
+Node: Utilities\7f8296
+Node: The Init File\7f9380
+Node: Wishlist\7f9832
 \1f
 End Tag Table
index 9b95d11..6de33b4 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/emodules.info, produced by makeinfo version 4.0 from
+This is ../info/emodules.info, produced by makeinfo version 3.12s from
 emodules.texi.
 
    This file documents the module loading technology of XEmacs.
@@ -930,23 +930,23 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f1536
-Node: Introduction\7f2884
-Node: Annatomy of a Module\7f7393
-Node: Required Header File\7f8209
-Node: Required Functions\7f10130
-Node: Required Variables\7f12379
-Node: Loading other Modules\7f15066
-Node: Using ellcc\7f17124
-Node: Compile Mode\7f18919
-Node: Initialization Mode\7f20287
-Node: Link Mode\7f25319
-Node: Other ellcc options\7f26466
-Node: Environment Variables\7f29046
-Node: Defining Functions\7f30737
-Node: Using DEFUN\7f32748
-Node: Declaring Functions\7f34459
-Node: Defining Variables\7f35802
-Node: Index\7f38047
+Node: Top\7f1538
+Node: Introduction\7f2886
+Node: Annatomy of a Module\7f7395
+Node: Required Header File\7f8211
+Node: Required Functions\7f10132
+Node: Required Variables\7f12381
+Node: Loading other Modules\7f15068
+Node: Using ellcc\7f17126
+Node: Compile Mode\7f18921
+Node: Initialization Mode\7f20289
+Node: Link Mode\7f25321
+Node: Other ellcc options\7f26468
+Node: Environment Variables\7f29048
+Node: Defining Functions\7f30739
+Node: Using DEFUN\7f32750
+Node: Declaring Functions\7f34461
+Node: Defining Variables\7f35804
+Node: Index\7f38049
 \1f
 End Tag Table
index 0ef2859..b81e791 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/info.info, produced by makeinfo version 4.0 from
+This is ../info/info.info, produced by makeinfo version 3.12s from
 info.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
@@ -816,25 +816,25 @@ learn how to install an Info file after you have created one.
 
 \1f
 Tag Table:
-Node: Top\7f1067
-Node: Getting Started\7f1612
-Node: Help-Small-Screen\7f2360
-Node: Help\7f4109
-Node: Help-P\7f5139
-Node: Help-^L\7f6001
-Node: Help-M\7f8879
-Node: Help-FOO\7f14859
-Node: Help-Adv\7f15597
-Node: Help-Cross\7f18272
-Node: Help-Q\7f18918
-Node: Advanced Info\7f19545
-Node: Expert\7f20523
-Node: Add\7f23037
-Node: Menus\7f26397
-Node: Cross-refs\7f29271
-Node: Tags\7f29973
-Node: Checking\7f31275
-Node: Emacs Info Variables\7f32228
-Node: Creating an Info File\7f33217
+Node: Top\7f1069
+Node: Getting Started\7f1614
+Node: Help-Small-Screen\7f2362
+Node: Help\7f4111
+Node: Help-P\7f5141
+Node: Help-^L\7f6003
+Node: Help-M\7f8881
+Node: Help-FOO\7f14861
+Node: Help-Adv\7f15599
+Node: Help-Cross\7f18274
+Node: Help-Q\7f18920
+Node: Advanced Info\7f19547
+Node: Expert\7f20525
+Node: Add\7f23039
+Node: Menus\7f26399
+Node: Cross-refs\7f29273
+Node: Tags\7f29975
+Node: Checking\7f31277
+Node: Emacs Info Variables\7f32230
+Node: Creating an Info File\7f33219
 \1f
 End Tag Table
index 0674c50..478c0bd 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 3.12s from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -39,141 +39,141 @@ Foundation instead of in the original English.
 
 \1f
 Indirect:
-internals.info-1: 1770
-internals.info-2: 45926
-internals.info-3: 92999
-internals.info-4: 141365
-internals.info-5: 183396
-internals.info-6: 232817
-internals.info-7: 281547
-internals.info-8: 331004
+internals.info-1: 1772
+internals.info-2: 45928
+internals.info-3: 93001
+internals.info-4: 141367
+internals.info-5: 183398
+internals.info-6: 232819
+internals.info-7: 281549
+internals.info-8: 331006
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f1770
-Node: A History of Emacs\7f6352
-Node: Through Version 18\7f7877
-Node: Lucid Emacs\7f11298
-Node: GNU Emacs 19\7f14316
-Node: GNU Emacs 20\7f16499
-Node: XEmacs\7f16926
-Node: XEmacs From the Outside\7f20105
-Node: The Lisp Language\7f21873
-Node: XEmacs From the Perspective of Building\7f31418
-Node: XEmacs From the Inside\7f37543
-Node: The XEmacs Object System (Abstractly Speaking)\7f45926
-Node: How Lisp Objects Are Represented in C\7f60014
-Node: Rules When Writing New C Code\7f68576
-Node: General Coding Rules\7f69380
-Node: Writing Lisp Primitives\7f74540
-Node: Adding Global Lisp Variables\7f85709
-Node: Coding for Mule\7f89347
-Node: Character-Related Data Types\7f90326
-Node: Working With Character and Byte Positions\7f92999
-Node: Conversion to and from External Data\7f96749
-Node: General Guidelines for Writing Mule-Aware Code\7f101630
-Node: An Example of Mule-Aware Code\7f103661
-Node: Techniques for XEmacs Developers\7f105648
-Node: A Summary of the Various XEmacs Modules\7f109413
-Node: Low-Level Modules\7f110233
-Node: Basic Lisp Modules\7f117755
-Node: Modules for Standard Editing Operations\7f126079
-Node: Editor-Level Control Flow Modules\7f131967
-Node: Modules for the Basic Displayable Lisp Objects\7f135414
-Node: Modules for other Display-Related Lisp Objects\7f137936
-Node: Modules for the Redisplay Mechanism\7f139014
-Node: Modules for Interfacing with the File System\7f141365
-Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f145063
-Node: Modules for Interfacing with the Operating System\7f150517
-Node: Modules for Interfacing with X Windows\7f158178
-Node: Modules for Internationalization\7f161614
-Node: Allocation of Objects in XEmacs Lisp\7f164251
-Node: Introduction to Allocation\7f164805
-Node: Garbage Collection\7f170268
-Node: GCPROing\7f173221
-Node: Garbage Collection - Step by Step\7f180032
-Node: Invocation\7f180424
-Node: garbage_collect_1\7f183396
-Node: mark_object\7f192876
-Node: gc_sweep\7f194688
-Node: sweep_lcrecords_1\7f199751
-Node: compact_string_chars\7f200746
-Node: sweep_strings\7f202926
-Node: sweep_bit_vectors_1\7f203891
-Node: Integers and Characters\7f204567
-Node: Allocation from Frob Blocks\7f205319
-Node: lrecords\7f206923
-Node: Low-level allocation\7f219385
-Node: Pure Space\7f223553
-Node: Cons\7f223728
-Node: Vector\7f224444
-Node: Bit Vector\7f225021
-Node: Symbol\7f225514
-Node: Marker\7f226083
-Node: String\7f226638
-Node: Compiled Function\7f230253
-Node: Events and the Event Loop\7f230422
-Node: Introduction to Events\7f230901
-Node: Main Loop\7f232817
-Node: Specifics of the Event Gathering Mechanism\7f236393
-Node: Specifics About the Emacs Event\7f248846
-Node: The Event Stream Callback Routines\7f249101
-Node: Other Event Loop Functions\7f249346
-Node: Converting Events\7f250486
-Node: Dispatching Events; The Command Builder\7f251095
-Node: Evaluation; Stack Frames; Bindings\7f251330
-Node: Evaluation\7f251672
-Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f258212
-Node: Simple Special Forms\7f260596
-Node: Catch and Throw\7f261378
-Node: Symbols and Variables\7f263953
-Node: Introduction to Symbols\7f264217
-Node: Obarrays\7f265255
-Node: Symbol Values\7f268788
-Node: Buffers and Textual Representation\7f271076
-Node: Introduction to Buffers\7f271734
-Node: The Text in a Buffer\7f274397
-Node: Buffer Lists\7f281547
-Node: Markers and Extents\7f283498
-Node: Bufbytes and Emchars\7f285763
-Node: The Buffer Object\7f285978
-Node: MULE Character Sets and Encodings\7f289458
-Node: Character Sets\7f290520
-Node: Encodings\7f293963
-Node: Japanese EUC (Extended Unix Code)\7f295030
-Node: JIS7\7f295844
-Node: Internal Mule Encodings\7f297194
-Node: Internal String Encoding\7f299024
-Node: Internal Character Encoding\7f301137
-Node: CCL\7f302861
-Node: The Lisp Reader and Compiler\7f309613
-Node: Lstreams\7f309826
-Node: Creating an Lstream\7f310857
-Node: Lstream Types\7f312067
-Node: Lstream Functions\7f312319
-Node: Lstream Methods\7f315888
-Node: Consoles; Devices; Frames; Windows\7f319031
-Node: Introduction to Consoles; Devices; Frames; Windows\7f319346
-Node: Point\7f321838
-Node: Window Hierarchy\7f323117
-Node: The Window Object\7f327567
-Node: The Redisplay Mechanism\7f331004
-Node: Critical Redisplay Sections\7f331796
-Node: Line Start Cache\7f332751
-Node: Redisplay Piece by Piece\7f335988
-Node: Extents\7f338024
-Node: Introduction to Extents\7f338562
-Node: Extent Ordering\7f339688
-Node: Format of the Extent Info\7f340929
-Node: Zero-Length Extents\7f342817
-Node: Mathematics of Extent Ordering\7f344215
-Node: Extent Fragments\7f348972
-Node: Faces\7f350059
-Node: Glyphs\7f350175
-Node: Specifiers\7f353193
-Node: Menus\7f353322
-Node: Subprocesses\7f355580
-Node: Interface to X Windows\7f357556
-Node: Index\7f357727
+Node: Top\7f1772
+Node: A History of Emacs\7f6354
+Node: Through Version 18\7f7879
+Node: Lucid Emacs\7f11300
+Node: GNU Emacs 19\7f14318
+Node: GNU Emacs 20\7f16501
+Node: XEmacs\7f16928
+Node: XEmacs From the Outside\7f20107
+Node: The Lisp Language\7f21875
+Node: XEmacs From the Perspective of Building\7f31420
+Node: XEmacs From the Inside\7f37545
+Node: The XEmacs Object System (Abstractly Speaking)\7f45928
+Node: How Lisp Objects Are Represented in C\7f60016
+Node: Rules When Writing New C Code\7f68578
+Node: General Coding Rules\7f69382
+Node: Writing Lisp Primitives\7f74542
+Node: Adding Global Lisp Variables\7f85711
+Node: Coding for Mule\7f89349
+Node: Character-Related Data Types\7f90328
+Node: Working With Character and Byte Positions\7f93001
+Node: Conversion to and from External Data\7f96751
+Node: General Guidelines for Writing Mule-Aware Code\7f101632
+Node: An Example of Mule-Aware Code\7f103663
+Node: Techniques for XEmacs Developers\7f105650
+Node: A Summary of the Various XEmacs Modules\7f109415
+Node: Low-Level Modules\7f110235
+Node: Basic Lisp Modules\7f117757
+Node: Modules for Standard Editing Operations\7f126081
+Node: Editor-Level Control Flow Modules\7f131969
+Node: Modules for the Basic Displayable Lisp Objects\7f135416
+Node: Modules for other Display-Related Lisp Objects\7f137938
+Node: Modules for the Redisplay Mechanism\7f139016
+Node: Modules for Interfacing with the File System\7f141367
+Node: Modules for Other Aspects of the Lisp Interpreter and Object System\7f145065
+Node: Modules for Interfacing with the Operating System\7f150519
+Node: Modules for Interfacing with X Windows\7f158180
+Node: Modules for Internationalization\7f161616
+Node: Allocation of Objects in XEmacs Lisp\7f164253
+Node: Introduction to Allocation\7f164807
+Node: Garbage Collection\7f170270
+Node: GCPROing\7f173223
+Node: Garbage Collection - Step by Step\7f180034
+Node: Invocation\7f180426
+Node: garbage_collect_1\7f183398
+Node: mark_object\7f192878
+Node: gc_sweep\7f194690
+Node: sweep_lcrecords_1\7f199753
+Node: compact_string_chars\7f200748
+Node: sweep_strings\7f202928
+Node: sweep_bit_vectors_1\7f203893
+Node: Integers and Characters\7f204569
+Node: Allocation from Frob Blocks\7f205321
+Node: lrecords\7f206925
+Node: Low-level allocation\7f219387
+Node: Pure Space\7f223555
+Node: Cons\7f223730
+Node: Vector\7f224446
+Node: Bit Vector\7f225023
+Node: Symbol\7f225516
+Node: Marker\7f226085
+Node: String\7f226640
+Node: Compiled Function\7f230255
+Node: Events and the Event Loop\7f230424
+Node: Introduction to Events\7f230903
+Node: Main Loop\7f232819
+Node: Specifics of the Event Gathering Mechanism\7f236395
+Node: Specifics About the Emacs Event\7f248848
+Node: The Event Stream Callback Routines\7f249103
+Node: Other Event Loop Functions\7f249348
+Node: Converting Events\7f250488
+Node: Dispatching Events; The Command Builder\7f251097
+Node: Evaluation; Stack Frames; Bindings\7f251332
+Node: Evaluation\7f251674
+Node: Dynamic Binding; The specbinding Stack; Unwind-Protects\7f258214
+Node: Simple Special Forms\7f260598
+Node: Catch and Throw\7f261380
+Node: Symbols and Variables\7f263955
+Node: Introduction to Symbols\7f264219
+Node: Obarrays\7f265257
+Node: Symbol Values\7f268790
+Node: Buffers and Textual Representation\7f271078
+Node: Introduction to Buffers\7f271736
+Node: The Text in a Buffer\7f274399
+Node: Buffer Lists\7f281549
+Node: Markers and Extents\7f283500
+Node: Bufbytes and Emchars\7f285765
+Node: The Buffer Object\7f285980
+Node: MULE Character Sets and Encodings\7f289460
+Node: Character Sets\7f290522
+Node: Encodings\7f293965
+Node: Japanese EUC (Extended Unix Code)\7f295032
+Node: JIS7\7f295846
+Node: Internal Mule Encodings\7f297196
+Node: Internal String Encoding\7f299026
+Node: Internal Character Encoding\7f301139
+Node: CCL\7f302863
+Node: The Lisp Reader and Compiler\7f309615
+Node: Lstreams\7f309828
+Node: Creating an Lstream\7f310859
+Node: Lstream Types\7f312069
+Node: Lstream Functions\7f312321
+Node: Lstream Methods\7f315890
+Node: Consoles; Devices; Frames; Windows\7f319033
+Node: Introduction to Consoles; Devices; Frames; Windows\7f319348
+Node: Point\7f321840
+Node: Window Hierarchy\7f323119
+Node: The Window Object\7f327569
+Node: The Redisplay Mechanism\7f331006
+Node: Critical Redisplay Sections\7f331798
+Node: Line Start Cache\7f332753
+Node: Redisplay Piece by Piece\7f335990
+Node: Extents\7f338026
+Node: Introduction to Extents\7f338564
+Node: Extent Ordering\7f339690
+Node: Format of the Extent Info\7f340931
+Node: Zero-Length Extents\7f342819
+Node: Mathematics of Extent Ordering\7f344217
+Node: Extent Fragments\7f348974
+Node: Faces\7f350061
+Node: Glyphs\7f350177
+Node: Specifiers\7f353195
+Node: Menus\7f353324
+Node: Subprocesses\7f355582
+Node: Interface to X Windows\7f357558
+Node: Index\7f357729
 \1f
 End Tag Table
index 5768b91..e45a1de 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 3.12s from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 0ae8e55..33026bd 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 3.12s from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 7db06a9..4d9538c 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 3.12s from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 151d7cf..d2c7e72 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 3.12s from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 91df6a0..f5cbeb4 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 3.12s from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 177e1a5..820bedd 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 3.12s from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 6f509c6..f7310c5 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 3.12s from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 1ed3191..68652f1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/internals.info, produced by makeinfo version 4.0 from
+This is ../info/internals.info, produced by makeinfo version 3.12s from
 internals/internals.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 360182b..19586e0 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -51,838 +51,838 @@ Foundation instead of in the original English.
 
 \1f
 Indirect:
-lispref.info-1: 2366
-lispref.info-2: 48385
-lispref.info-3: 96924
-lispref.info-4: 146766
-lispref.info-5: 195600
-lispref.info-6: 243285
-lispref.info-7: 291568
-lispref.info-8: 340704
-lispref.info-9: 388026
-lispref.info-10: 436665
-lispref.info-11: 484608
-lispref.info-12: 531220
-lispref.info-13: 579119
-lispref.info-14: 627342
-lispref.info-15: 675596
-lispref.info-16: 724798
-lispref.info-17: 772038
-lispref.info-18: 818888
-lispref.info-19: 865939
-lispref.info-20: 914669
-lispref.info-21: 964091
-lispref.info-22: 1011010
-lispref.info-23: 1058037
-lispref.info-24: 1107436
-lispref.info-25: 1157118
-lispref.info-26: 1207028
-lispref.info-27: 1256251
-lispref.info-28: 1305018
-lispref.info-29: 1353990
-lispref.info-30: 1395325
-lispref.info-31: 1444468
-lispref.info-32: 1493681
-lispref.info-33: 1543255
-lispref.info-34: 1591432
-lispref.info-35: 1637064
-lispref.info-36: 1678380
-lispref.info-37: 1723321
-lispref.info-38: 1773008
-lispref.info-39: 1822112
-lispref.info-40: 1871516
-lispref.info-41: 1921400
-lispref.info-42: 1970391
-lispref.info-43: 2014283
-lispref.info-44: 2052619
+lispref.info-1: 2368
+lispref.info-2: 48387
+lispref.info-3: 96926
+lispref.info-4: 146768
+lispref.info-5: 195602
+lispref.info-6: 243287
+lispref.info-7: 291570
+lispref.info-8: 340706
+lispref.info-9: 388028
+lispref.info-10: 436667
+lispref.info-11: 484610
+lispref.info-12: 531222
+lispref.info-13: 579121
+lispref.info-14: 627344
+lispref.info-15: 675598
+lispref.info-16: 724800
+lispref.info-17: 772040
+lispref.info-18: 818890
+lispref.info-19: 865941
+lispref.info-20: 914671
+lispref.info-21: 964093
+lispref.info-22: 1011012
+lispref.info-23: 1058039
+lispref.info-24: 1107438
+lispref.info-25: 1157120
+lispref.info-26: 1207030
+lispref.info-27: 1256253
+lispref.info-28: 1305020
+lispref.info-29: 1353992
+lispref.info-30: 1395327
+lispref.info-31: 1444470
+lispref.info-32: 1493683
+lispref.info-33: 1543257
+lispref.info-34: 1591434
+lispref.info-35: 1637066
+lispref.info-36: 1678382
+lispref.info-37: 1723323
+lispref.info-38: 1773010
+lispref.info-39: 1822114
+lispref.info-40: 1871518
+lispref.info-41: 1921402
+lispref.info-42: 1970393
+lispref.info-43: 2014285
+lispref.info-44: 2052621
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f2366
-Node: Copying\7f48385
-Node: Introduction\7f67543
-Node: Caveats\7f69134
-Node: Lisp History\7f70865
-Node: Conventions\7f72121
-Node: Some Terms\7f72936
-Node: nil and t\7f73657
-Node: Evaluation Notation\7f75334
-Node: Printing Notation\7f76247
-Node: Error Messages\7f77121
-Node: Buffer Text Notation\7f77562
-Node: Format of Descriptions\7f78437
-Node: A Sample Function Description\7f79291
-Node: A Sample Variable Description\7f83277
-Node: Acknowledgements\7f84185
-Node: Lisp Data Types\7f86163
-Node: Printed Representation\7f88718
-Node: Comments\7f90760
-Node: Primitive Types\7f91657
-Node: Programming Types\7f93316
-Node: Integer Type\7f95268
-Node: Floating Point Type\7f96305
-Node: Character Type\7f96924
-Node: Symbol Type\7f104830
-Node: Sequence Type\7f107525
-Node: Cons Cell Type\7f109044
-Node: Dotted Pair Notation\7f113528
-Node: Association List Type\7f115649
-Node: Array Type\7f116532
-Node: String Type\7f117998
-Node: Vector Type\7f120679
-Node: Bit Vector Type\7f121451
-Node: Function Type\7f122313
-Node: Macro Type\7f123426
-Node: Primitive Function Type\7f124123
-Node: Compiled-Function Type\7f125649
-Node: Autoload Type\7f126203
-Node: Char Table Type\7f127217
-Node: Hash Table Type\7f127391
-Node: Range Table Type\7f128546
-Node: Weak List Type\7f129399
-Node: Editing Types\7f129549
-Node: Buffer Type\7f131176
-Node: Marker Type\7f133203
-Node: Extent Type\7f133927
-Node: Window Type\7f135195
-Node: Frame Type\7f136606
-Node: Device Type\7f137401
-Node: Console Type\7f138227
-Node: Window Configuration Type\7f139428
-Node: Event Type\7f140126
-Node: Process Type\7f140290
-Node: Stream Type\7f141325
-Node: Keymap Type\7f142448
-Node: Syntax Table Type\7f142986
-Node: Display Table Type\7f144009
-Node: Database Type\7f144448
-Node: Charset Type\7f144614
-Node: Coding System Type\7f144778
-Node: ToolTalk Message Type\7f144962
-Node: ToolTalk Pattern Type\7f145161
-Node: Window-System Types\7f145333
-Node: Face Type\7f146479
-Node: Glyph Type\7f146610
-Node: Specifier Type\7f146766
-Node: Font Instance Type\7f146939
-Node: Color Instance Type\7f147129
-Node: Image Instance Type\7f147326
-Node: Toolbar Button Type\7f147524
-Node: Subwindow Type\7f147717
-Node: X Resource Type\7f147896
-Node: Type Predicates\7f148049
-Node: Equality Predicates\7f157178
-Node: Numbers\7f161983
-Node: Integer Basics\7f163438
-Node: Float Basics\7f165787
-Node: Predicates on Numbers\7f167529
-Node: Comparison of Numbers\7f169162
-Node: Numeric Conversions\7f172983
-Node: Arithmetic Operations\7f174449
-Node: Rounding Operations\7f179914
-Node: Bitwise Operations\7f181019
-Node: Math Functions\7f190065
-Node: Random Numbers\7f192381
-Node: Strings and Characters\7f194147
-Node: String Basics\7f195600
-Node: Predicates for Strings\7f198018
-Node: Creating Strings\7f198781
-Node: Predicates for Characters\7f204098
-Node: Character Codes\7f205169
-Node: Text Comparison\7f206582
-Node: String Conversion\7f209944
-Node: Modifying Strings\7f213620
-Node: String Properties\7f214261
-Node: Formatting Strings\7f214904
-Node: Character Case\7f224522
-Node: Case Tables\7f227668
-Node: Char Tables\7f231566
-Node: Char Table Types\7f232958
-Node: Working With Char Tables\7f234533
-Node: Lists\7f236482
-Node: Cons Cells\7f237605
-Node: Lists as Boxes\7f238941
-Node: List-related Predicates\7f241583
-Node: List Elements\7f243285
-Node: Building Lists\7f248314
-Node: Modifying Lists\7f254306
-Node: Setcar\7f255118
-Node: Setcdr\7f257539
-Node: Rearrangement\7f260050
-Node: Sets And Lists\7f265636
-Node: Association Lists\7f269864
-Ref: Association Lists-Footnote-1\7f279159
-Node: Property Lists\7f279364
-Node: Working With Normal Plists\7f280912
-Node: Working With Lax Plists\7f283180
-Node: Converting Plists To/From Alists\7f285420
-Node: Weak Lists\7f286768
-Node: Sequences Arrays Vectors\7f288932
-Node: Sequence Functions\7f291568
-Node: Arrays\7f295227
-Node: Array Functions\7f298291
-Node: Vectors\7f300824
-Node: Vector Functions\7f302322
-Node: Bit Vectors\7f304893
-Node: Bit Vector Functions\7f305738
-Node: Symbols\7f307988
-Node: Symbol Components\7f309037
-Node: Definitions\7f313210
-Node: Creating Symbols\7f315435
-Node: Symbol Properties\7f322469
-Node: Plists and Alists\7f323985
-Node: Symbol Plists\7f325734
-Node: Other Plists\7f327543
-Node: Evaluation\7f329321
-Node: Intro Eval\7f330126
-Ref: Intro Eval-Footnote-1\7f333479
-Node: Eval\7f333614
-Node: Forms\7f338032
-Node: Self-Evaluating Forms\7f339191
-Node: Symbol Forms\7f340704
-Node: Classifying Lists\7f341621
-Node: Function Indirection\7f342377
-Node: Function Forms\7f345488
-Node: Macro Forms\7f346485
-Node: Special Forms\7f348085
-Node: Autoloading\7f350394
-Node: Quoting\7f350892
-Node: Control Structures\7f352253
-Node: Sequencing\7f353873
-Node: Conditionals\7f356738
-Node: Combining Conditions\7f360161
-Node: Iteration\7f363431
-Node: Nonlocal Exits\7f365210
-Node: Catch and Throw\7f365912
-Node: Examples of Catch\7f369751
-Node: Errors\7f371770
-Node: Signaling Errors\7f373259
-Node: Processing of Errors\7f376335
-Node: Handling Errors\7f377664
-Node: Error Symbols\7f384580
-Node: Cleanups\7f388026
-Node: Variables\7f391804
-Node: Global Variables\7f393573
-Node: Constant Variables\7f394649
-Node: Local Variables\7f395275
-Node: Void Variables\7f400212
-Node: Defining Variables\7f403728
-Node: Accessing Variables\7f410892
-Node: Setting Variables\7f412317
-Node: Variable Scoping\7f416836
-Node: Scope\7f418435
-Node: Extent\7f419960
-Node: Impl of Scope\7f421439
-Node: Using Scoping\7f423402
-Node: Buffer-Local Variables\7f424924
-Node: Intro to Buffer-Local\7f425760
-Node: Creating Buffer-Local\7f428303
-Node: Default Value\7f433522
-Node: Variable Aliases\7f436665
-Node: Functions\7f438450
-Node: What Is a Function\7f439544
-Node: Lambda Expressions\7f443590
-Node: Lambda Components\7f444500
-Node: Simple Lambda\7f446332
-Node: Argument List\7f447989
-Node: Function Documentation\7f451717
-Node: Function Names\7f453659
-Node: Defining Functions\7f456232
-Node: Calling Functions\7f459272
-Node: Mapping Functions\7f463121
-Node: Anonymous Functions\7f465514
-Node: Function Cells\7f468759
-Node: Inline Functions\7f473569
-Node: Related Topics\7f475379
-Node: Macros\7f476432
-Node: Simple Macro\7f477716
-Node: Expansion\7f478451
-Node: Compiling Macros\7f481455
-Node: Defining Macros\7f483291
-Node: Backquote\7f484608
-Node: Problems with Macros\7f487005
-Node: Argument Evaluation\7f487700
-Node: Surprising Local Vars\7f490615
-Node: Eval During Expansion\7f492683
-Node: Repeated Expansion\7f494376
-Node: Customization\7f496292
-Node: Common Keywords\7f496761
-Node: Group Definitions\7f499606
-Node: Variable Definitions\7f501798
-Node: Customization Types\7f506781
-Node: Simple Types\7f508216
-Node: Composite Types\7f510373
-Node: Splicing into Lists\7f515063
-Node: Type Keywords\7f516898
-Node: Loading\7f520418
-Node: How Programs Do Loading\7f522093
-Node: Autoload\7f531220
-Node: Repeated Loading\7f537299
-Node: Named Features\7f539412
-Node: Unloading\7f545844
-Node: Hooks for Loading\7f548000
-Node: Byte Compilation\7f548717
-Node: Speed of Byte-Code\7f550634
-Node: Compilation Functions\7f551841
-Node: Docs and Compilation\7f558228
-Node: Dynamic Loading\7f560881
-Node: Eval During Compile\7f563245
-Node: Compiled-Function Objects\7f564510
-Node: Disassembly\7f569308
-Node: Debugging\7f576562
-Node: Debugger\7f577974
-Node: Error Debugging\7f579119
-Node: Infinite Loops\7f581872
-Node: Function Debugging\7f583116
-Node: Explicit Debug\7f585906
-Node: Using Debugger\7f586677
-Node: Debugger Commands\7f588539
-Node: Invoking the Debugger\7f592856
-Node: Internals of Debugger\7f596771
-Node: Syntax Errors\7f601658
-Node: Excess Open\7f602906
-Node: Excess Close\7f604781
-Node: Compilation Errors\7f606202
-Node: Edebug\7f607490
-Node: Using Edebug\7f609598
-Node: Instrumenting\7f612295
-Node: Edebug Execution Modes\7f615784
-Node: Jumping\7f618894
-Node: Edebug Misc\7f621237
-Node: Breakpoints\7f622626
-Node: Global Break Condition\7f625432
-Node: Embedded Breakpoints\7f626387
-Node: Trapping Errors\7f627342
-Node: Edebug Views\7f629418
-Node: Edebug Eval\7f631383
-Node: Eval List\7f632560
-Node: Reading in Edebug\7f635945
-Node: Printing in Edebug\7f636744
-Node: Tracing\7f638459
-Node: Coverage Testing\7f640345
-Node: The Outside Context\7f642386
-Node: Checking Whether to Stop\7f643335
-Node: Edebug Display Update\7f643982
-Node: Edebug Recursive Edit\7f646005
-Node: Instrumenting Macro Calls\7f647660
-Node: Specification List\7f650142
-Node: Backtracking\7f659553
-Node: Debugging Backquote\7f661491
-Node: Specification Examples\7f665197
-Node: Edebug Options\7f667264
-Node: Read and Print\7f672601
-Node: Streams Intro\7f673578
-Node: Input Streams\7f675596
-Node: Input Functions\7f680497
-Node: Output Streams\7f682557
-Node: Output Functions\7f686608
-Node: Output Variables\7f690908
-Node: Minibuffers\7f695707
-Node: Intro to Minibuffers\7f696792
-Node: Text from Minibuffer\7f699118
-Node: Object from Minibuffer\7f703780
-Node: Minibuffer History\7f706997
-Node: Completion\7f709907
-Node: Basic Completion\7f711882
-Node: Minibuffer Completion\7f716906
-Node: Completion Commands\7f720151
-Node: High-Level Completion\7f724798
-Node: Reading File Names\7f728822
-Node: Programmed Completion\7f732511
-Node: Yes-or-No Queries\7f734721
-Node: Multiple Queries\7f740458
-Node: Minibuffer Misc\7f744522
-Node: Command Loop\7f749388
-Node: Command Overview\7f750732
-Node: Defining Commands\7f754010
-Node: Using Interactive\7f754758
-Node: Interactive Codes\7f759531
-Node: Interactive Examples\7f765323
-Node: Interactive Call\7f766637
-Node: Command Loop Info\7f772038
-Node: Events\7f777017
-Node: Event Types\7f778477
-Node: Event Contents\7f780400
-Node: Event Predicates\7f784876
-Node: Accessing Mouse Event Positions\7f786201
-Node: Frame-Level Event Position Info\7f786900
-Node: Window-Level Event Position Info\7f787940
-Node: Event Text Position Info\7f789704
-Node: Event Glyph Position Info\7f792196
-Node: Event Toolbar Position Info\7f793519
-Node: Other Event Position Info\7f794190
-Node: Accessing Other Event Info\7f794599
-Node: Working With Events\7f796219
-Node: Converting Events\7f802207
-Node: Reading Input\7f805160
-Node: Key Sequence Input\7f806162
-Node: Reading One Event\7f808116
-Node: Dispatching an Event\7f810877
-Node: Quoted Character Input\7f811328
-Node: Peeking and Discarding\7f812676
-Node: Waiting\7f816580
-Node: Quitting\7f818888
-Node: Prefix Command Arguments\7f823296
-Node: Recursive Editing\7f828383
-Node: Disabling Commands\7f833179
-Node: Command History\7f835247
-Node: Keyboard Macros\7f836984
-Node: Keymaps\7f839201
-Node: Keymap Terminology\7f840778
-Node: Format of Keymaps\7f843707
-Node: Creating Keymaps\7f844118
-Node: Inheritance and Keymaps\7f846197
-Node: Key Sequences\7f848569
-Node: Prefix Keys\7f853139
-Node: Active Keymaps\7f856724
-Node: Key Lookup\7f865939
-Node: Functions for Key Lookup\7f871102
-Node: Changing Key Bindings\7f876799
-Node: Key Binding Commands\7f883696
-Node: Scanning Keymaps\7f885761
-Node: Other Keymap Functions\7f894272
-Node: Menus\7f894894
-Node: Menu Format\7f895436
-Node: Menubar Format\7f904021
-Node: Menubar\7f904646
-Node: Modifying Menus\7f907759
-Node: Menu Filters\7f912773
-Node: Pop-Up Menus\7f914669
-Node: Menu Accelerators\7f916874
-Node: Creating Menu Accelerators\7f917596
-Node: Keyboard Menu Traversal\7f918914
-Node: Menu Accelerator Functions\7f919641
-Node: Buffers Menu\7f922676
-Node: Dialog Boxes\7f923970
-Node: Dialog Box Format\7f924137
-Node: Dialog Box Functions\7f925507
-Node: Toolbar\7f925904
-Node: Toolbar Intro\7f926229
-Node: Toolbar Descriptor Format\7f928639
-Node: Specifying the Toolbar\7f933133
-Node: Other Toolbar Variables\7f936738
-Node: Scrollbars\7f941165
-Node: Drag and Drop\7f941301
-Node: Supported Protocols\7f942377
-Node: OffiX DND\7f942880
-Node: CDE dt\7f943887
-Node: MSWindows OLE\7f944478
-Node: Loose ends\7f944649
-Node: Drop Interface\7f945041
-Node: Drag Interface\7f946063
-Node: Modes\7f946237
-Node: Major Modes\7f947188
-Node: Major Mode Conventions\7f950103
-Node: Example Major Modes\7f956058
-Node: Auto Major Mode\7f964091
-Node: Mode Help\7f971539
-Node: Derived Modes\7f972640
-Node: Minor Modes\7f974831
-Node: Minor Mode Conventions\7f976133
-Node: Keymaps and Minor Modes\7f978996
-Node: Modeline Format\7f979831
-Node: Modeline Data\7f981599
-Node: Modeline Variables\7f985869
-Node: %-Constructs\7f990585
-Node: Hooks\7f993496
-Node: Documentation\7f1000258
-Node: Documentation Basics\7f1001681
-Node: Accessing Documentation\7f1004731
-Node: Keys in Documentation\7f1011010
-Node: Describing Characters\7f1014489
-Node: Help Functions\7f1016838
-Node: Obsoleteness\7f1023289
-Node: Files\7f1026283
-Node: Visiting Files\7f1028208
-Node: Visiting Functions\7f1029713
-Node: Subroutines of Visiting\7f1034760
-Node: Saving Buffers\7f1036833
-Node: Reading from Files\7f1042926
-Node: Writing to Files\7f1045083
-Node: File Locks\7f1047800
-Node: Information about Files\7f1050853
-Node: Testing Accessibility\7f1051614
-Node: Kinds of Files\7f1055354
-Node: Truenames\7f1057035
-Node: File Attributes\7f1058037
-Node: Changing File Attributes\7f1063176
-Node: File Names\7f1068582
-Node: File Name Components\7f1070191
-Node: Directory Names\7f1073292
-Node: Relative File Names\7f1076745
-Node: File Name Expansion\7f1077823
-Node: Unique File Names\7f1081730
-Node: File Name Completion\7f1083345
-Node: User Name Completion\7f1086006
-Node: Contents of Directories\7f1087346
-Node: Create/Delete Dirs\7f1090659
-Node: Magic File Names\7f1091765
-Node: Partial Files\7f1097395
-Node: Intro to Partial Files\7f1097623
-Node: Creating a Partial File\7f1098863
-Node: Detached Partial Files\7f1099798
-Node: Format Conversion\7f1100920
-Node: Files and MS-DOS\7f1107436
-Node: Backups and Auto-Saving\7f1109500
-Node: Backup Files\7f1110175
-Node: Making Backups\7f1111572
-Node: Rename or Copy\7f1114321
-Node: Numbered Backups\7f1116814
-Node: Backup Names\7f1119058
-Node: Auto-Saving\7f1122350
-Node: Reverting\7f1130492
-Node: Buffers\7f1133650
-Node: Buffer Basics\7f1135067
-Node: Current Buffer\7f1137120
-Node: Buffer Names\7f1141808
-Node: Buffer File Name\7f1145013
-Node: Buffer Modification\7f1149132
-Node: Modification Time\7f1151325
-Node: Read Only Buffers\7f1154700
-Node: The Buffer List\7f1157118
-Node: Creating Buffers\7f1161948
-Node: Killing Buffers\7f1164094
-Node: Indirect Buffers\7f1167825
-Node: Windows\7f1170397
-Node: Basic Windows\7f1171875
-Node: Splitting Windows\7f1174973
-Node: Deleting Windows\7f1181862
-Node: Selecting Windows\7f1184542
-Node: Cyclic Window Ordering\7f1187671
-Node: Buffers and Windows\7f1192295
-Node: Displaying Buffers\7f1194136
-Node: Choosing Window\7f1199312
-Node: Window Point\7f1207028
-Node: Window Start\7f1209074
-Node: Vertical Scrolling\7f1213564
-Node: Horizontal Scrolling\7f1219701
-Node: Size of Window\7f1223210
-Node: Position of Window\7f1227928
-Node: Resizing Windows\7f1230168
-Node: Window Configurations\7f1235597
-Node: Frames\7f1239022
-Node: Creating Frames\7f1240791
-Node: Frame Properties\7f1242132
-Node: Property Access\7f1242948
-Node: Initial Properties\7f1243797
-Node: X Frame Properties\7f1246283
-Node: Size and Position\7f1250917
-Node: Frame Name\7f1252913
-Node: Frame Titles\7f1253827
-Node: Deleting Frames\7f1255651
-Node: Finding All Frames\7f1256251
-Node: Frames and Windows\7f1258245
-Node: Minibuffers and Frames\7f1259950
-Node: Input Focus\7f1260868
-Node: Visibility of Frames\7f1263945
-Node: Raising and Lowering\7f1265864
-Node: Frame Configurations\7f1268240
-Node: Frame Hooks\7f1268834
-Node: Consoles and Devices\7f1270639
-Node: Basic Console Functions\7f1273383
-Node: Basic Device Functions\7f1273806
-Node: Console Types and Device Classes\7f1274522
-Node: Connecting to a Console or Device\7f1276719
-Node: The Selected Console and Device\7f1278882
-Node: Console and Device I/O\7f1279908
-Node: Positions\7f1280672
-Node: Point\7f1281641
-Node: Motion\7f1284731
-Node: Character Motion\7f1285498
-Node: Word Motion\7f1287735
-Node: Buffer End Motion\7f1289236
-Node: Text Lines\7f1290733
-Node: Screen Lines\7f1295328
-Node: List Motion\7f1299391
-Node: Skipping Characters\7f1302799
-Node: Excursions\7f1305018
-Node: Narrowing\7f1308050
-Node: Markers\7f1313375
-Node: Overview of Markers\7f1314281
-Node: Predicates on Markers\7f1318973
-Node: Creating Markers\7f1320219
-Node: Information from Markers\7f1324256
-Node: Changing Markers\7f1325354
-Node: The Mark\7f1326732
-Node: The Region\7f1335226
-Node: Text\7f1340913
-Node: Near Point\7f1343612
-Node: Buffer Contents\7f1347334
-Node: Comparing Text\7f1348740
-Node: Insertion\7f1350148
-Node: Commands for Insertion\7f1353990
-Node: Deletion\7f1356946
-Node: User-Level Deletion\7f1360541
-Node: The Kill Ring\7f1364702
-Node: Kill Ring Concepts\7f1366876
-Node: Kill Functions\7f1367930
-Node: Yank Commands\7f1369835
-Node: Low-Level Kill Ring\7f1371706
-Node: Internals of Kill Ring\7f1374492
-Node: Undo\7f1377272
-Node: Maintaining Undo\7f1381601
-Node: Filling\7f1384221
-Node: Margins\7f1390215
-Node: Auto Filling\7f1394144
-Node: Sorting\7f1395325
-Node: Columns\7f1404625
-Node: Indentation\7f1407141
-Node: Primitive Indent\7f1407920
-Node: Mode-Specific Indent\7f1409164
-Node: Region Indent\7f1411675
-Node: Relative Indent\7f1414623
-Node: Indent Tabs\7f1417005
-Node: Motion by Indent\7f1418326
-Node: Case Changes\7f1419105
-Node: Text Properties\7f1422356
-Node: Examining Properties\7f1424169
-Node: Changing Properties\7f1426036
-Node: Property Search\7f1429627
-Node: Special Properties\7f1434338
-Node: Saving Properties\7f1434619
-Node: Substitution\7f1437761
-Node: Registers\7f1441031
-Node: Transposition\7f1443574
-Node: Change Hooks\7f1444468
-Node: Transformations\7f1446508
-Node: Searching and Matching\7f1450893
-Node: String Search\7f1452024
-Node: Regular Expressions\7f1456748
-Node: Syntax of Regexps\7f1458115
-Node: Regexp Example\7f1472494
-Node: Regexp Search\7f1474664
-Node: POSIX Regexps\7f1480752
-Node: Search and Replace\7f1482587
-Node: Match Data\7f1485952
-Node: Simple Match Data\7f1487082
-Node: Replacing Match\7f1491347
-Node: Entire Match Data\7f1493681
-Node: Saving Match Data\7f1495672
-Node: Searching and Case\7f1497053
-Node: Standard Regexps\7f1499087
-Node: Syntax Tables\7f1501285
-Node: Syntax Basics\7f1502399
-Node: Syntax Descriptors\7f1505371
-Node: Syntax Class Table\7f1507221
-Node: Syntax Flags\7f1513259
-Node: Syntax Table Functions\7f1516476
-Node: Motion and Syntax\7f1520340
-Node: Parsing Expressions\7f1521792
-Node: Standard Syntax Tables\7f1527861
-Node: Syntax Table Internals\7f1528705
-Node: Abbrevs\7f1529731
-Node: Abbrev Mode\7f1531534
-Node: Abbrev Tables\7f1532254
-Node: Defining Abbrevs\7f1533787
-Node: Abbrev Files\7f1535692
-Node: Abbrev Expansion\7f1537465
-Node: Standard Abbrev Tables\7f1542096
-Node: Extents\7f1543255
-Node: Intro to Extents\7f1544498
-Node: Creating and Modifying Extents\7f1548492
-Node: Extent Endpoints\7f1549999
-Node: Finding Extents\7f1553262
-Node: Mapping Over Extents\7f1557011
-Node: Extent Properties\7f1563128
-Node: Detached Extents\7f1573272
-Node: Extent Parents\7f1575131
-Node: Duplicable Extents\7f1576826
-Node: Extents and Events\7f1580047
-Node: Atomic Extents\7f1581954
-Node: Specifiers\7f1582401
-Node: Introduction to Specifiers\7f1584208
-Node: Specifiers In-Depth\7f1586518
-Node: Specifier Instancing\7f1591432
-Node: Specifier Types\7f1594694
-Node: Adding Specifications\7f1599768
-Node: Retrieving Specifications\7f1609130
-Node: Specifier Tag Functions\7f1612865
-Node: Specifier Instancing Functions\7f1616099
-Node: Specifier Example\7f1619506
-Node: Creating Specifiers\7f1622612
-Node: Specifier Validation Functions\7f1624861
-Node: Other Specification Functions\7f1627245
-Node: Faces and Window-System Objects\7f1631064
-Node: Faces\7f1631388
-Node: Merging Faces\7f1633005
-Node: Basic Face Functions\7f1634966
-Node: Face Properties\7f1637064
-Node: Face Convenience Functions\7f1646623
-Node: Other Face Display Functions\7f1649753
-Node: Fonts\7f1650566
-Node: Font Specifiers\7f1651267
-Node: Font Instances\7f1651508
-Node: Font Instance Names\7f1652475
-Node: Font Instance Size\7f1653316
-Node: Font Instance Characteristics\7f1654602
-Node: Font Convenience Functions\7f1655771
-Node: Colors\7f1657061
-Node: Color Specifiers\7f1657501
-Node: Color Instances\7f1657728
-Node: Color Instance Properties\7f1658472
-Node: Color Convenience Functions\7f1659098
-Node: Glyphs\7f1660151
-Node: Glyph Functions\7f1661743
-Node: Creating Glyphs\7f1662150
-Node: Glyph Properties\7f1663737
-Node: Glyph Convenience Functions\7f1672904
-Node: Glyph Dimensions\7f1676851
-Node: Images\7f1677931
-Node: Image Specifiers\7f1678380
-Node: Image Instantiator Conversion\7f1689802
-Node: Image Instances\7f1691167
-Node: Image Instance Types\7f1691918
-Node: Image Instance Functions\7f1694573
-Node: Glyph Types\7f1699142
-Node: Mouse Pointer\7f1700914
-Node: Redisplay Glyphs\7f1703917
-Node: Subwindows\7f1704950
-Node: Annotations\7f1705193
-Node: Annotation Basics\7f1706209
-Node: Annotation Primitives\7f1710147
-Node: Annotation Properties\7f1711476
-Node: Locating Annotations\7f1714516
-Node: Margin Primitives\7f1715353
-Node: Annotation Hooks\7f1717247
-Node: Display\7f1717907
-Node: Refresh Screen\7f1718885
-Node: Truncation\7f1720796
-Node: The Echo Area\7f1723321
-Node: Warnings\7f1729756
-Node: Invisible Text\7f1734192
-Node: Selective Display\7f1736771
-Node: Overlay Arrow\7f1740897
-Node: Temporary Displays\7f1742250
-Node: Blinking\7f1746371
-Node: Usual Display\7f1748556
-Node: Display Tables\7f1751105
-Node: Display Table Format\7f1751909
-Node: Active Display Table\7f1753351
-Node: Character Descriptors\7f1754543
-Node: Beeping\7f1755300
-Node: Hash Tables\7f1760066
-Node: Introduction to Hash Tables\7f1760674
-Node: Working With Hash Tables\7f1766697
-Node: Weak Hash Tables\7f1767814
-Node: Range Tables\7f1769613
-Node: Introduction to Range Tables\7f1770302
-Node: Working With Range Tables\7f1770733
-Node: Databases\7f1771618
-Node: Connecting to a Database\7f1771917
-Node: Working With a Database\7f1773008
-Node: Other Database Functions\7f1773866
-Node: Processes\7f1774440
-Node: Subprocess Creation\7f1776664
-Node: Synchronous Processes\7f1779953
-Node: MS-DOS Subprocesses\7f1786671
-Node: Asynchronous Processes\7f1787745
-Node: Deleting Processes\7f1791458
-Node: Process Information\7f1793329
-Node: Input to Processes\7f1797255
-Node: Signals to Processes\7f1799545
-Node: Output from Processes\7f1803965
-Node: Process Buffers\7f1804777
-Node: Filter Functions\7f1807644
-Node: Accepting Output\7f1813214
-Node: Sentinels\7f1814741
-Node: Process Window Size\7f1818231
-Node: Transaction Queues\7f1818580
-Node: Network\7f1820278
-Node: System Interface\7f1822112
-Node: Starting Up\7f1823382
-Node: Start-up Summary\7f1823976
-Node: Init File\7f1827530
-Node: Terminal-Specific\7f1829911
-Node: Command Line Arguments\7f1833070
-Node: Getting Out\7f1836559
-Node: Killing XEmacs\7f1837128
-Node: Suspending XEmacs\7f1838797
-Node: System Environment\7f1842139
-Node: User Identification\7f1848806
-Node: Time of Day\7f1852335
-Node: Time Conversion\7f1855122
-Node: Timers\7f1860162
-Node: Terminal Input\7f1862335
-Node: Input Modes\7f1862838
-Node: Translating Input\7f1865251
-Node: Recording Input\7f1869416
-Node: Terminal Output\7f1871516
-Node: Flow Control\7f1875139
-Node: Batch Mode\7f1878931
-Node: X-Windows\7f1880313
-Node: X Selections\7f1881125
-Node: X Server\7f1883335
-Node: Resources\7f1883736
-Node: Server Data\7f1888877
-Node: Grabs\7f1890084
-Node: X Miscellaneous\7f1891665
-Node: ToolTalk Support\7f1894050
-Node: XEmacs ToolTalk API Summary\7f1894267
-Node: Sending Messages\7f1895567
-Node: Example of Sending Messages\7f1895818
-Node: Elisp Interface for Sending Messages\7f1896880
-Node: Receiving Messages\7f1903273
-Node: Example of Receiving Messages\7f1903496
-Node: Elisp Interface for Receiving Messages\7f1904332
-Node: LDAP Support\7f1908157
-Node: Building XEmacs with LDAP support\7f1908653
-Node: XEmacs LDAP API\7f1909631
-Node: LDAP Variables\7f1910361
-Node: The High-Level LDAP API\7f1912837
-Node: The Low-Level LDAP API\7f1913942
-Node: The LDAP Lisp Object\7f1914216
-Node: Opening and Closing a LDAP Connection\7f1914769
-Node: Searching on a LDAP Server (Low-level)\7f1916552
-Node: Syntax of Search Filters\7f1917945
-Node: Internationalization\7f1919243
-Node: I18N Levels 1 and 2\7f1919580
-Node: I18N Level 3\7f1920286
-Node: Level 3 Basics\7f1920567
-Node: Level 3 Primitives\7f1921400
-Node: Dynamic Messaging\7f1923006
-Node: Domain Specification\7f1923469
-Node: Documentation String Extraction\7f1925372
-Node: I18N Level 4\7f1926290
-Node: MULE\7f1926482
-Node: Internationalization Terminology\7f1927593
-Node: Charsets\7f1936132
-Node: Charset Properties\7f1936828
-Node: Basic Charset Functions\7f1941514
-Node: Charset Property Functions\7f1943695
-Node: Predefined Charsets\7f1945738
-Node: MULE Characters\7f1948658
-Node: Composite Characters\7f1949505
-Node: ISO 2022\7f1950759
-Node: Coding Systems\7f1956481
-Node: Coding System Types\7f1958403
-Node: EOL Conversion\7f1960222
-Node: Coding System Properties\7f1961405
-Node: Basic Coding System Functions\7f1965257
-Node: Coding System Property Functions\7f1967161
-Node: Encoding and Decoding Text\7f1967719
-Node: Detection of Textual Encoding\7f1968855
-Node: Big5 and Shift-JIS Functions\7f1970391
-Node: CCL\7f1971479
-Node: CCL Syntax\7f1974583
-Node: CCL Statements\7f1976171
-Node: CCL Expressions\7f1980819
-Node: Calling CCL\7f1983358
-Node: CCL Examples\7f1986347
-Node: Category Tables\7f1986484
-Node: Tips\7f1988843
-Node: Style Tips\7f1989484
-Node: Compilation Tips\7f1999003
-Node: Documentation Tips\7f2000917
-Node: Comment Tips\7f2006426
-Node: Library Headers\7f2009428
-Node: Building XEmacs and Object Allocation\7f2013400
-Node: Building XEmacs\7f2014283
-Node: Pure Storage\7f2020618
-Node: Garbage Collection\7f2023406
-Node: Standard Errors\7f2034545
-Node: Standard Buffer-Local Variables\7f2038754
-Node: Standard Keymaps\7f2041387
-Node: Standard Hooks\7f2045119
-Node: Index\7f2052619
+Node: Top\7f2368
+Node: Copying\7f48387
+Node: Introduction\7f67545
+Node: Caveats\7f69136
+Node: Lisp History\7f70867
+Node: Conventions\7f72123
+Node: Some Terms\7f72938
+Node: nil and t\7f73659
+Node: Evaluation Notation\7f75336
+Node: Printing Notation\7f76249
+Node: Error Messages\7f77123
+Node: Buffer Text Notation\7f77564
+Node: Format of Descriptions\7f78439
+Node: A Sample Function Description\7f79293
+Node: A Sample Variable Description\7f83279
+Node: Acknowledgements\7f84187
+Node: Lisp Data Types\7f86165
+Node: Printed Representation\7f88720
+Node: Comments\7f90762
+Node: Primitive Types\7f91659
+Node: Programming Types\7f93318
+Node: Integer Type\7f95270
+Node: Floating Point Type\7f96307
+Node: Character Type\7f96926
+Node: Symbol Type\7f104832
+Node: Sequence Type\7f107527
+Node: Cons Cell Type\7f109046
+Node: Dotted Pair Notation\7f113530
+Node: Association List Type\7f115651
+Node: Array Type\7f116534
+Node: String Type\7f118000
+Node: Vector Type\7f120681
+Node: Bit Vector Type\7f121453
+Node: Function Type\7f122315
+Node: Macro Type\7f123428
+Node: Primitive Function Type\7f124125
+Node: Compiled-Function Type\7f125651
+Node: Autoload Type\7f126205
+Node: Char Table Type\7f127219
+Node: Hash Table Type\7f127393
+Node: Range Table Type\7f128548
+Node: Weak List Type\7f129401
+Node: Editing Types\7f129551
+Node: Buffer Type\7f131178
+Node: Marker Type\7f133205
+Node: Extent Type\7f133929
+Node: Window Type\7f135197
+Node: Frame Type\7f136608
+Node: Device Type\7f137403
+Node: Console Type\7f138229
+Node: Window Configuration Type\7f139430
+Node: Event Type\7f140128
+Node: Process Type\7f140292
+Node: Stream Type\7f141327
+Node: Keymap Type\7f142450
+Node: Syntax Table Type\7f142988
+Node: Display Table Type\7f144011
+Node: Database Type\7f144450
+Node: Charset Type\7f144616
+Node: Coding System Type\7f144780
+Node: ToolTalk Message Type\7f144964
+Node: ToolTalk Pattern Type\7f145163
+Node: Window-System Types\7f145335
+Node: Face Type\7f146481
+Node: Glyph Type\7f146612
+Node: Specifier Type\7f146768
+Node: Font Instance Type\7f146941
+Node: Color Instance Type\7f147131
+Node: Image Instance Type\7f147328
+Node: Toolbar Button Type\7f147526
+Node: Subwindow Type\7f147719
+Node: X Resource Type\7f147898
+Node: Type Predicates\7f148051
+Node: Equality Predicates\7f157180
+Node: Numbers\7f161985
+Node: Integer Basics\7f163440
+Node: Float Basics\7f165789
+Node: Predicates on Numbers\7f167531
+Node: Comparison of Numbers\7f169164
+Node: Numeric Conversions\7f172985
+Node: Arithmetic Operations\7f174451
+Node: Rounding Operations\7f179916
+Node: Bitwise Operations\7f181021
+Node: Math Functions\7f190067
+Node: Random Numbers\7f192383
+Node: Strings and Characters\7f194149
+Node: String Basics\7f195602
+Node: Predicates for Strings\7f198020
+Node: Creating Strings\7f198783
+Node: Predicates for Characters\7f204100
+Node: Character Codes\7f205171
+Node: Text Comparison\7f206584
+Node: String Conversion\7f209946
+Node: Modifying Strings\7f213622
+Node: String Properties\7f214263
+Node: Formatting Strings\7f214906
+Node: Character Case\7f224524
+Node: Case Tables\7f227670
+Node: Char Tables\7f231568
+Node: Char Table Types\7f232960
+Node: Working With Char Tables\7f234535
+Node: Lists\7f236484
+Node: Cons Cells\7f237607
+Node: Lists as Boxes\7f238943
+Node: List-related Predicates\7f241585
+Node: List Elements\7f243287
+Node: Building Lists\7f248316
+Node: Modifying Lists\7f254308
+Node: Setcar\7f255120
+Node: Setcdr\7f257541
+Node: Rearrangement\7f260052
+Node: Sets And Lists\7f265638
+Node: Association Lists\7f269866
+Ref: Association Lists-Footnote-1\7f279161
+Node: Property Lists\7f279366
+Node: Working With Normal Plists\7f280914
+Node: Working With Lax Plists\7f283182
+Node: Converting Plists To/From Alists\7f285422
+Node: Weak Lists\7f286770
+Node: Sequences Arrays Vectors\7f288934
+Node: Sequence Functions\7f291570
+Node: Arrays\7f295229
+Node: Array Functions\7f298293
+Node: Vectors\7f300826
+Node: Vector Functions\7f302324
+Node: Bit Vectors\7f304895
+Node: Bit Vector Functions\7f305740
+Node: Symbols\7f307990
+Node: Symbol Components\7f309039
+Node: Definitions\7f313212
+Node: Creating Symbols\7f315437
+Node: Symbol Properties\7f322471
+Node: Plists and Alists\7f323987
+Node: Symbol Plists\7f325736
+Node: Other Plists\7f327545
+Node: Evaluation\7f329323
+Node: Intro Eval\7f330128
+Ref: Intro Eval-Footnote-1\7f333481
+Node: Eval\7f333616
+Node: Forms\7f338034
+Node: Self-Evaluating Forms\7f339193
+Node: Symbol Forms\7f340706
+Node: Classifying Lists\7f341623
+Node: Function Indirection\7f342379
+Node: Function Forms\7f345490
+Node: Macro Forms\7f346487
+Node: Special Forms\7f348087
+Node: Autoloading\7f350396
+Node: Quoting\7f350894
+Node: Control Structures\7f352255
+Node: Sequencing\7f353875
+Node: Conditionals\7f356740
+Node: Combining Conditions\7f360163
+Node: Iteration\7f363433
+Node: Nonlocal Exits\7f365212
+Node: Catch and Throw\7f365914
+Node: Examples of Catch\7f369753
+Node: Errors\7f371772
+Node: Signaling Errors\7f373261
+Node: Processing of Errors\7f376337
+Node: Handling Errors\7f377666
+Node: Error Symbols\7f384582
+Node: Cleanups\7f388028
+Node: Variables\7f391806
+Node: Global Variables\7f393575
+Node: Constant Variables\7f394651
+Node: Local Variables\7f395277
+Node: Void Variables\7f400214
+Node: Defining Variables\7f403730
+Node: Accessing Variables\7f410894
+Node: Setting Variables\7f412319
+Node: Variable Scoping\7f416838
+Node: Scope\7f418437
+Node: Extent\7f419962
+Node: Impl of Scope\7f421441
+Node: Using Scoping\7f423404
+Node: Buffer-Local Variables\7f424926
+Node: Intro to Buffer-Local\7f425762
+Node: Creating Buffer-Local\7f428305
+Node: Default Value\7f433524
+Node: Variable Aliases\7f436667
+Node: Functions\7f438452
+Node: What Is a Function\7f439546
+Node: Lambda Expressions\7f443592
+Node: Lambda Components\7f444502
+Node: Simple Lambda\7f446334
+Node: Argument List\7f447991
+Node: Function Documentation\7f451719
+Node: Function Names\7f453661
+Node: Defining Functions\7f456234
+Node: Calling Functions\7f459274
+Node: Mapping Functions\7f463123
+Node: Anonymous Functions\7f465516
+Node: Function Cells\7f468761
+Node: Inline Functions\7f473571
+Node: Related Topics\7f475381
+Node: Macros\7f476434
+Node: Simple Macro\7f477718
+Node: Expansion\7f478453
+Node: Compiling Macros\7f481457
+Node: Defining Macros\7f483293
+Node: Backquote\7f484610
+Node: Problems with Macros\7f487007
+Node: Argument Evaluation\7f487702
+Node: Surprising Local Vars\7f490617
+Node: Eval During Expansion\7f492685
+Node: Repeated Expansion\7f494378
+Node: Customization\7f496294
+Node: Common Keywords\7f496763
+Node: Group Definitions\7f499608
+Node: Variable Definitions\7f501800
+Node: Customization Types\7f506783
+Node: Simple Types\7f508218
+Node: Composite Types\7f510375
+Node: Splicing into Lists\7f515065
+Node: Type Keywords\7f516900
+Node: Loading\7f520420
+Node: How Programs Do Loading\7f522095
+Node: Autoload\7f531222
+Node: Repeated Loading\7f537301
+Node: Named Features\7f539414
+Node: Unloading\7f545846
+Node: Hooks for Loading\7f548002
+Node: Byte Compilation\7f548719
+Node: Speed of Byte-Code\7f550636
+Node: Compilation Functions\7f551843
+Node: Docs and Compilation\7f558230
+Node: Dynamic Loading\7f560883
+Node: Eval During Compile\7f563247
+Node: Compiled-Function Objects\7f564512
+Node: Disassembly\7f569310
+Node: Debugging\7f576564
+Node: Debugger\7f577976
+Node: Error Debugging\7f579121
+Node: Infinite Loops\7f581874
+Node: Function Debugging\7f583118
+Node: Explicit Debug\7f585908
+Node: Using Debugger\7f586679
+Node: Debugger Commands\7f588541
+Node: Invoking the Debugger\7f592858
+Node: Internals of Debugger\7f596773
+Node: Syntax Errors\7f601660
+Node: Excess Open\7f602908
+Node: Excess Close\7f604783
+Node: Compilation Errors\7f606204
+Node: Edebug\7f607492
+Node: Using Edebug\7f609600
+Node: Instrumenting\7f612297
+Node: Edebug Execution Modes\7f615786
+Node: Jumping\7f618896
+Node: Edebug Misc\7f621239
+Node: Breakpoints\7f622628
+Node: Global Break Condition\7f625434
+Node: Embedded Breakpoints\7f626389
+Node: Trapping Errors\7f627344
+Node: Edebug Views\7f629420
+Node: Edebug Eval\7f631385
+Node: Eval List\7f632562
+Node: Reading in Edebug\7f635947
+Node: Printing in Edebug\7f636746
+Node: Tracing\7f638461
+Node: Coverage Testing\7f640347
+Node: The Outside Context\7f642388
+Node: Checking Whether to Stop\7f643337
+Node: Edebug Display Update\7f643984
+Node: Edebug Recursive Edit\7f646007
+Node: Instrumenting Macro Calls\7f647662
+Node: Specification List\7f650144
+Node: Backtracking\7f659555
+Node: Debugging Backquote\7f661493
+Node: Specification Examples\7f665199
+Node: Edebug Options\7f667266
+Node: Read and Print\7f672603
+Node: Streams Intro\7f673580
+Node: Input Streams\7f675598
+Node: Input Functions\7f680499
+Node: Output Streams\7f682559
+Node: Output Functions\7f686610
+Node: Output Variables\7f690910
+Node: Minibuffers\7f695709
+Node: Intro to Minibuffers\7f696794
+Node: Text from Minibuffer\7f699120
+Node: Object from Minibuffer\7f703782
+Node: Minibuffer History\7f706999
+Node: Completion\7f709909
+Node: Basic Completion\7f711884
+Node: Minibuffer Completion\7f716908
+Node: Completion Commands\7f720153
+Node: High-Level Completion\7f724800
+Node: Reading File Names\7f728824
+Node: Programmed Completion\7f732513
+Node: Yes-or-No Queries\7f734723
+Node: Multiple Queries\7f740460
+Node: Minibuffer Misc\7f744524
+Node: Command Loop\7f749390
+Node: Command Overview\7f750734
+Node: Defining Commands\7f754012
+Node: Using Interactive\7f754760
+Node: Interactive Codes\7f759533
+Node: Interactive Examples\7f765325
+Node: Interactive Call\7f766639
+Node: Command Loop Info\7f772040
+Node: Events\7f777019
+Node: Event Types\7f778479
+Node: Event Contents\7f780402
+Node: Event Predicates\7f784878
+Node: Accessing Mouse Event Positions\7f786203
+Node: Frame-Level Event Position Info\7f786902
+Node: Window-Level Event Position Info\7f787942
+Node: Event Text Position Info\7f789706
+Node: Event Glyph Position Info\7f792198
+Node: Event Toolbar Position Info\7f793521
+Node: Other Event Position Info\7f794192
+Node: Accessing Other Event Info\7f794601
+Node: Working With Events\7f796221
+Node: Converting Events\7f802209
+Node: Reading Input\7f805162
+Node: Key Sequence Input\7f806164
+Node: Reading One Event\7f808118
+Node: Dispatching an Event\7f810879
+Node: Quoted Character Input\7f811330
+Node: Peeking and Discarding\7f812678
+Node: Waiting\7f816582
+Node: Quitting\7f818890
+Node: Prefix Command Arguments\7f823298
+Node: Recursive Editing\7f828385
+Node: Disabling Commands\7f833181
+Node: Command History\7f835249
+Node: Keyboard Macros\7f836986
+Node: Keymaps\7f839203
+Node: Keymap Terminology\7f840780
+Node: Format of Keymaps\7f843709
+Node: Creating Keymaps\7f844120
+Node: Inheritance and Keymaps\7f846199
+Node: Key Sequences\7f848571
+Node: Prefix Keys\7f853141
+Node: Active Keymaps\7f856726
+Node: Key Lookup\7f865941
+Node: Functions for Key Lookup\7f871104
+Node: Changing Key Bindings\7f876801
+Node: Key Binding Commands\7f883698
+Node: Scanning Keymaps\7f885763
+Node: Other Keymap Functions\7f894274
+Node: Menus\7f894896
+Node: Menu Format\7f895438
+Node: Menubar Format\7f904023
+Node: Menubar\7f904648
+Node: Modifying Menus\7f907761
+Node: Menu Filters\7f912775
+Node: Pop-Up Menus\7f914671
+Node: Menu Accelerators\7f916876
+Node: Creating Menu Accelerators\7f917598
+Node: Keyboard Menu Traversal\7f918916
+Node: Menu Accelerator Functions\7f919643
+Node: Buffers Menu\7f922678
+Node: Dialog Boxes\7f923972
+Node: Dialog Box Format\7f924139
+Node: Dialog Box Functions\7f925509
+Node: Toolbar\7f925906
+Node: Toolbar Intro\7f926231
+Node: Toolbar Descriptor Format\7f928641
+Node: Specifying the Toolbar\7f933135
+Node: Other Toolbar Variables\7f936740
+Node: Scrollbars\7f941167
+Node: Drag and Drop\7f941303
+Node: Supported Protocols\7f942379
+Node: OffiX DND\7f942882
+Node: CDE dt\7f943889
+Node: MSWindows OLE\7f944480
+Node: Loose ends\7f944651
+Node: Drop Interface\7f945043
+Node: Drag Interface\7f946065
+Node: Modes\7f946239
+Node: Major Modes\7f947190
+Node: Major Mode Conventions\7f950105
+Node: Example Major Modes\7f956060
+Node: Auto Major Mode\7f964093
+Node: Mode Help\7f971541
+Node: Derived Modes\7f972642
+Node: Minor Modes\7f974833
+Node: Minor Mode Conventions\7f976135
+Node: Keymaps and Minor Modes\7f978998
+Node: Modeline Format\7f979833
+Node: Modeline Data\7f981601
+Node: Modeline Variables\7f985871
+Node: %-Constructs\7f990587
+Node: Hooks\7f993498
+Node: Documentation\7f1000260
+Node: Documentation Basics\7f1001683
+Node: Accessing Documentation\7f1004733
+Node: Keys in Documentation\7f1011012
+Node: Describing Characters\7f1014491
+Node: Help Functions\7f1016840
+Node: Obsoleteness\7f1023291
+Node: Files\7f1026285
+Node: Visiting Files\7f1028210
+Node: Visiting Functions\7f1029715
+Node: Subroutines of Visiting\7f1034762
+Node: Saving Buffers\7f1036835
+Node: Reading from Files\7f1042928
+Node: Writing to Files\7f1045085
+Node: File Locks\7f1047802
+Node: Information about Files\7f1050855
+Node: Testing Accessibility\7f1051616
+Node: Kinds of Files\7f1055356
+Node: Truenames\7f1057037
+Node: File Attributes\7f1058039
+Node: Changing File Attributes\7f1063178
+Node: File Names\7f1068584
+Node: File Name Components\7f1070193
+Node: Directory Names\7f1073294
+Node: Relative File Names\7f1076747
+Node: File Name Expansion\7f1077825
+Node: Unique File Names\7f1081732
+Node: File Name Completion\7f1083347
+Node: User Name Completion\7f1086008
+Node: Contents of Directories\7f1087348
+Node: Create/Delete Dirs\7f1090661
+Node: Magic File Names\7f1091767
+Node: Partial Files\7f1097397
+Node: Intro to Partial Files\7f1097625
+Node: Creating a Partial File\7f1098865
+Node: Detached Partial Files\7f1099800
+Node: Format Conversion\7f1100922
+Node: Files and MS-DOS\7f1107438
+Node: Backups and Auto-Saving\7f1109502
+Node: Backup Files\7f1110177
+Node: Making Backups\7f1111574
+Node: Rename or Copy\7f1114323
+Node: Numbered Backups\7f1116816
+Node: Backup Names\7f1119060
+Node: Auto-Saving\7f1122352
+Node: Reverting\7f1130494
+Node: Buffers\7f1133652
+Node: Buffer Basics\7f1135069
+Node: Current Buffer\7f1137122
+Node: Buffer Names\7f1141810
+Node: Buffer File Name\7f1145015
+Node: Buffer Modification\7f1149134
+Node: Modification Time\7f1151327
+Node: Read Only Buffers\7f1154702
+Node: The Buffer List\7f1157120
+Node: Creating Buffers\7f1161950
+Node: Killing Buffers\7f1164096
+Node: Indirect Buffers\7f1167827
+Node: Windows\7f1170399
+Node: Basic Windows\7f1171877
+Node: Splitting Windows\7f1174975
+Node: Deleting Windows\7f1181864
+Node: Selecting Windows\7f1184544
+Node: Cyclic Window Ordering\7f1187673
+Node: Buffers and Windows\7f1192297
+Node: Displaying Buffers\7f1194138
+Node: Choosing Window\7f1199314
+Node: Window Point\7f1207030
+Node: Window Start\7f1209076
+Node: Vertical Scrolling\7f1213566
+Node: Horizontal Scrolling\7f1219703
+Node: Size of Window\7f1223212
+Node: Position of Window\7f1227930
+Node: Resizing Windows\7f1230170
+Node: Window Configurations\7f1235599
+Node: Frames\7f1239024
+Node: Creating Frames\7f1240793
+Node: Frame Properties\7f1242134
+Node: Property Access\7f1242950
+Node: Initial Properties\7f1243799
+Node: X Frame Properties\7f1246285
+Node: Size and Position\7f1250919
+Node: Frame Name\7f1252915
+Node: Frame Titles\7f1253829
+Node: Deleting Frames\7f1255653
+Node: Finding All Frames\7f1256253
+Node: Frames and Windows\7f1258247
+Node: Minibuffers and Frames\7f1259952
+Node: Input Focus\7f1260870
+Node: Visibility of Frames\7f1263947
+Node: Raising and Lowering\7f1265866
+Node: Frame Configurations\7f1268242
+Node: Frame Hooks\7f1268836
+Node: Consoles and Devices\7f1270641
+Node: Basic Console Functions\7f1273385
+Node: Basic Device Functions\7f1273808
+Node: Console Types and Device Classes\7f1274524
+Node: Connecting to a Console or Device\7f1276721
+Node: The Selected Console and Device\7f1278884
+Node: Console and Device I/O\7f1279910
+Node: Positions\7f1280674
+Node: Point\7f1281643
+Node: Motion\7f1284733
+Node: Character Motion\7f1285500
+Node: Word Motion\7f1287737
+Node: Buffer End Motion\7f1289238
+Node: Text Lines\7f1290735
+Node: Screen Lines\7f1295330
+Node: List Motion\7f1299393
+Node: Skipping Characters\7f1302801
+Node: Excursions\7f1305020
+Node: Narrowing\7f1308052
+Node: Markers\7f1313377
+Node: Overview of Markers\7f1314283
+Node: Predicates on Markers\7f1318975
+Node: Creating Markers\7f1320221
+Node: Information from Markers\7f1324258
+Node: Changing Markers\7f1325356
+Node: The Mark\7f1326734
+Node: The Region\7f1335228
+Node: Text\7f1340915
+Node: Near Point\7f1343614
+Node: Buffer Contents\7f1347336
+Node: Comparing Text\7f1348742
+Node: Insertion\7f1350150
+Node: Commands for Insertion\7f1353992
+Node: Deletion\7f1356948
+Node: User-Level Deletion\7f1360543
+Node: The Kill Ring\7f1364704
+Node: Kill Ring Concepts\7f1366878
+Node: Kill Functions\7f1367932
+Node: Yank Commands\7f1369837
+Node: Low-Level Kill Ring\7f1371708
+Node: Internals of Kill Ring\7f1374494
+Node: Undo\7f1377274
+Node: Maintaining Undo\7f1381603
+Node: Filling\7f1384223
+Node: Margins\7f1390217
+Node: Auto Filling\7f1394146
+Node: Sorting\7f1395327
+Node: Columns\7f1404627
+Node: Indentation\7f1407143
+Node: Primitive Indent\7f1407922
+Node: Mode-Specific Indent\7f1409166
+Node: Region Indent\7f1411677
+Node: Relative Indent\7f1414625
+Node: Indent Tabs\7f1417007
+Node: Motion by Indent\7f1418328
+Node: Case Changes\7f1419107
+Node: Text Properties\7f1422358
+Node: Examining Properties\7f1424171
+Node: Changing Properties\7f1426038
+Node: Property Search\7f1429629
+Node: Special Properties\7f1434340
+Node: Saving Properties\7f1434621
+Node: Substitution\7f1437763
+Node: Registers\7f1441033
+Node: Transposition\7f1443576
+Node: Change Hooks\7f1444470
+Node: Transformations\7f1446510
+Node: Searching and Matching\7f1450895
+Node: String Search\7f1452026
+Node: Regular Expressions\7f1456750
+Node: Syntax of Regexps\7f1458117
+Node: Regexp Example\7f1472496
+Node: Regexp Search\7f1474666
+Node: POSIX Regexps\7f1480754
+Node: Search and Replace\7f1482589
+Node: Match Data\7f1485954
+Node: Simple Match Data\7f1487084
+Node: Replacing Match\7f1491349
+Node: Entire Match Data\7f1493683
+Node: Saving Match Data\7f1495674
+Node: Searching and Case\7f1497055
+Node: Standard Regexps\7f1499089
+Node: Syntax Tables\7f1501287
+Node: Syntax Basics\7f1502401
+Node: Syntax Descriptors\7f1505373
+Node: Syntax Class Table\7f1507223
+Node: Syntax Flags\7f1513261
+Node: Syntax Table Functions\7f1516478
+Node: Motion and Syntax\7f1520342
+Node: Parsing Expressions\7f1521794
+Node: Standard Syntax Tables\7f1527863
+Node: Syntax Table Internals\7f1528707
+Node: Abbrevs\7f1529733
+Node: Abbrev Mode\7f1531536
+Node: Abbrev Tables\7f1532256
+Node: Defining Abbrevs\7f1533789
+Node: Abbrev Files\7f1535694
+Node: Abbrev Expansion\7f1537467
+Node: Standard Abbrev Tables\7f1542098
+Node: Extents\7f1543257
+Node: Intro to Extents\7f1544500
+Node: Creating and Modifying Extents\7f1548494
+Node: Extent Endpoints\7f1550001
+Node: Finding Extents\7f1553264
+Node: Mapping Over Extents\7f1557013
+Node: Extent Properties\7f1563130
+Node: Detached Extents\7f1573274
+Node: Extent Parents\7f1575133
+Node: Duplicable Extents\7f1576828
+Node: Extents and Events\7f1580049
+Node: Atomic Extents\7f1581956
+Node: Specifiers\7f1582403
+Node: Introduction to Specifiers\7f1584210
+Node: Specifiers In-Depth\7f1586520
+Node: Specifier Instancing\7f1591434
+Node: Specifier Types\7f1594696
+Node: Adding Specifications\7f1599770
+Node: Retrieving Specifications\7f1609132
+Node: Specifier Tag Functions\7f1612867
+Node: Specifier Instancing Functions\7f1616101
+Node: Specifier Example\7f1619508
+Node: Creating Specifiers\7f1622614
+Node: Specifier Validation Functions\7f1624863
+Node: Other Specification Functions\7f1627247
+Node: Faces and Window-System Objects\7f1631066
+Node: Faces\7f1631390
+Node: Merging Faces\7f1633007
+Node: Basic Face Functions\7f1634968
+Node: Face Properties\7f1637066
+Node: Face Convenience Functions\7f1646625
+Node: Other Face Display Functions\7f1649755
+Node: Fonts\7f1650568
+Node: Font Specifiers\7f1651269
+Node: Font Instances\7f1651510
+Node: Font Instance Names\7f1652477
+Node: Font Instance Size\7f1653318
+Node: Font Instance Characteristics\7f1654604
+Node: Font Convenience Functions\7f1655773
+Node: Colors\7f1657063
+Node: Color Specifiers\7f1657503
+Node: Color Instances\7f1657730
+Node: Color Instance Properties\7f1658474
+Node: Color Convenience Functions\7f1659100
+Node: Glyphs\7f1660153
+Node: Glyph Functions\7f1661745
+Node: Creating Glyphs\7f1662152
+Node: Glyph Properties\7f1663739
+Node: Glyph Convenience Functions\7f1672906
+Node: Glyph Dimensions\7f1676853
+Node: Images\7f1677933
+Node: Image Specifiers\7f1678382
+Node: Image Instantiator Conversion\7f1689804
+Node: Image Instances\7f1691169
+Node: Image Instance Types\7f1691920
+Node: Image Instance Functions\7f1694575
+Node: Glyph Types\7f1699144
+Node: Mouse Pointer\7f1700916
+Node: Redisplay Glyphs\7f1703919
+Node: Subwindows\7f1704952
+Node: Annotations\7f1705195
+Node: Annotation Basics\7f1706211
+Node: Annotation Primitives\7f1710149
+Node: Annotation Properties\7f1711478
+Node: Locating Annotations\7f1714518
+Node: Margin Primitives\7f1715355
+Node: Annotation Hooks\7f1717249
+Node: Display\7f1717909
+Node: Refresh Screen\7f1718887
+Node: Truncation\7f1720798
+Node: The Echo Area\7f1723323
+Node: Warnings\7f1729758
+Node: Invisible Text\7f1734194
+Node: Selective Display\7f1736773
+Node: Overlay Arrow\7f1740899
+Node: Temporary Displays\7f1742252
+Node: Blinking\7f1746373
+Node: Usual Display\7f1748558
+Node: Display Tables\7f1751107
+Node: Display Table Format\7f1751911
+Node: Active Display Table\7f1753353
+Node: Character Descriptors\7f1754545
+Node: Beeping\7f1755302
+Node: Hash Tables\7f1760068
+Node: Introduction to Hash Tables\7f1760676
+Node: Working With Hash Tables\7f1766699
+Node: Weak Hash Tables\7f1767816
+Node: Range Tables\7f1769615
+Node: Introduction to Range Tables\7f1770304
+Node: Working With Range Tables\7f1770735
+Node: Databases\7f1771620
+Node: Connecting to a Database\7f1771919
+Node: Working With a Database\7f1773010
+Node: Other Database Functions\7f1773868
+Node: Processes\7f1774442
+Node: Subprocess Creation\7f1776666
+Node: Synchronous Processes\7f1779955
+Node: MS-DOS Subprocesses\7f1786673
+Node: Asynchronous Processes\7f1787747
+Node: Deleting Processes\7f1791460
+Node: Process Information\7f1793331
+Node: Input to Processes\7f1797257
+Node: Signals to Processes\7f1799547
+Node: Output from Processes\7f1803967
+Node: Process Buffers\7f1804779
+Node: Filter Functions\7f1807646
+Node: Accepting Output\7f1813216
+Node: Sentinels\7f1814743
+Node: Process Window Size\7f1818233
+Node: Transaction Queues\7f1818582
+Node: Network\7f1820280
+Node: System Interface\7f1822114
+Node: Starting Up\7f1823384
+Node: Start-up Summary\7f1823978
+Node: Init File\7f1827532
+Node: Terminal-Specific\7f1829913
+Node: Command Line Arguments\7f1833072
+Node: Getting Out\7f1836561
+Node: Killing XEmacs\7f1837130
+Node: Suspending XEmacs\7f1838799
+Node: System Environment\7f1842141
+Node: User Identification\7f1848808
+Node: Time of Day\7f1852337
+Node: Time Conversion\7f1855124
+Node: Timers\7f1860164
+Node: Terminal Input\7f1862337
+Node: Input Modes\7f1862840
+Node: Translating Input\7f1865253
+Node: Recording Input\7f1869418
+Node: Terminal Output\7f1871518
+Node: Flow Control\7f1875141
+Node: Batch Mode\7f1878933
+Node: X-Windows\7f1880315
+Node: X Selections\7f1881127
+Node: X Server\7f1883337
+Node: Resources\7f1883738
+Node: Server Data\7f1888879
+Node: Grabs\7f1890086
+Node: X Miscellaneous\7f1891667
+Node: ToolTalk Support\7f1894052
+Node: XEmacs ToolTalk API Summary\7f1894269
+Node: Sending Messages\7f1895569
+Node: Example of Sending Messages\7f1895820
+Node: Elisp Interface for Sending Messages\7f1896882
+Node: Receiving Messages\7f1903275
+Node: Example of Receiving Messages\7f1903498
+Node: Elisp Interface for Receiving Messages\7f1904334
+Node: LDAP Support\7f1908159
+Node: Building XEmacs with LDAP support\7f1908655
+Node: XEmacs LDAP API\7f1909633
+Node: LDAP Variables\7f1910363
+Node: The High-Level LDAP API\7f1912839
+Node: The Low-Level LDAP API\7f1913944
+Node: The LDAP Lisp Object\7f1914218
+Node: Opening and Closing a LDAP Connection\7f1914771
+Node: Searching on a LDAP Server (Low-level)\7f1916554
+Node: Syntax of Search Filters\7f1917947
+Node: Internationalization\7f1919245
+Node: I18N Levels 1 and 2\7f1919582
+Node: I18N Level 3\7f1920288
+Node: Level 3 Basics\7f1920569
+Node: Level 3 Primitives\7f1921402
+Node: Dynamic Messaging\7f1923008
+Node: Domain Specification\7f1923471
+Node: Documentation String Extraction\7f1925374
+Node: I18N Level 4\7f1926292
+Node: MULE\7f1926484
+Node: Internationalization Terminology\7f1927595
+Node: Charsets\7f1936134
+Node: Charset Properties\7f1936830
+Node: Basic Charset Functions\7f1941516
+Node: Charset Property Functions\7f1943697
+Node: Predefined Charsets\7f1945740
+Node: MULE Characters\7f1948660
+Node: Composite Characters\7f1949507
+Node: ISO 2022\7f1950761
+Node: Coding Systems\7f1956483
+Node: Coding System Types\7f1958405
+Node: EOL Conversion\7f1960224
+Node: Coding System Properties\7f1961407
+Node: Basic Coding System Functions\7f1965259
+Node: Coding System Property Functions\7f1967163
+Node: Encoding and Decoding Text\7f1967721
+Node: Detection of Textual Encoding\7f1968857
+Node: Big5 and Shift-JIS Functions\7f1970393
+Node: CCL\7f1971481
+Node: CCL Syntax\7f1974585
+Node: CCL Statements\7f1976173
+Node: CCL Expressions\7f1980821
+Node: Calling CCL\7f1983360
+Node: CCL Examples\7f1986349
+Node: Category Tables\7f1986486
+Node: Tips\7f1988845
+Node: Style Tips\7f1989486
+Node: Compilation Tips\7f1999005
+Node: Documentation Tips\7f2000919
+Node: Comment Tips\7f2006428
+Node: Library Headers\7f2009430
+Node: Building XEmacs and Object Allocation\7f2013402
+Node: Building XEmacs\7f2014285
+Node: Pure Storage\7f2020620
+Node: Garbage Collection\7f2023408
+Node: Standard Errors\7f2034547
+Node: Standard Buffer-Local Variables\7f2038756
+Node: Standard Keymaps\7f2041389
+Node: Standard Hooks\7f2045121
+Node: Index\7f2052621
 \1f
 End Tag Table
index dfc2f71..99ffbd8 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 7667fa8..d81ddda 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index a1b3017..260c1fe 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 5c5d7bf..326fc16 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 17c20e6..3d16406 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 489d392..6d73d79 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 21d545b..83f51b4 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 618b47f..cea78a6 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 37d9cc3..994f550 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 00f586c..7d8b054 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 79195d7..946587f 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index e2a39c4..671fdba 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index e14e62b..1be9fa5 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index c8cee5a..4ade6a9 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index b11b775..752357b 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 6f4fb86..f3a4258 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 7d6e8a6..9fe2d94 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 7329de7..b35c053 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 235bc4a..d580a61 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 7b2104f..7d7f70e 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index f4f4c69..76b354e 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 7d0ee18..0ea1ef6 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index bb82c59..4a04dc2 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index bfb3ed5..308e0ad 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 138661a..6924c2f 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 3173f9f..731b5f1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 9248a41..a7cb988 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 9b8b3d4..e47b116 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 2b0ca0f..6c3b144 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index cac5eb8..ff77d12 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index bb9e02e..d15f1e0 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index cfb33fd..55418af 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 90be6be..b4f7bd5 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 6f65791..96b4bfd 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 6cb3df7..8eac218 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 24be2e1..971cd08 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index aebbf29..2cb6c7f 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index aeb086b..8ae2af4 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index af17b43..c4d32ed 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 9b6e82b..7c590db 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index f65d3dc..212bafa 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index b24b1a9..7c4b616 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index c2d71fb..a6423b1 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 5b59644..8a8df7b 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/lispref.info, produced by makeinfo version 4.0 from
+This is ../info/lispref.info, produced by makeinfo version 3.12s from
 lispref/lispref.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 32e78d1..41ab099 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/new-users-guide.info, produced by makeinfo version 4.0
-from new-users-guide/new-users-guide.texi.
+This is ../info/new-users-guide.info, produced by makeinfo version
+3.12s from new-users-guide/new-users-guide.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
@@ -18,59 +18,59 @@ preserved on all copies.
 
 \1f
 Indirect:
-new-users-guide.info-1: 635
-new-users-guide.info-2: 50471
-new-users-guide.info-3: 99973
+new-users-guide.info-1: 637
+new-users-guide.info-2: 50473
+new-users-guide.info-3: 99975
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f635
-Node: Intro\7f4615
-Node: Entering\7f7198
-Node: Enter\7f8712
-Node: Frame\7f9394
-Node: Exiting\7f11063
-Node: Mode Line\7f12263
-Node: Echo Area\7f14410
-Node: Windows and Menus\7f15765
-Node: XEmacs Window\7f16218
-Node: Pull-down Menus\7f19839
-Node: File menu\7f20718
-Node: Edit menu\7f23977
-Node: Options Menu\7f26503
-Node: Buffers Menu\7f31285
-Node: Help menu\7f31671
-Node: Edit\7f32169
-Node: Insert\7f33763
-Node: Cursor Position\7f35091
-Node: Erase\7f37162
-Node: Numeric Argument\7f38316
-Node: Undo\7f39500
-Node: Customization Basics\7f40263
-Node: Customizing key Bindings\7f41492
-Node: Customizing Menus\7f44982
-Node: Help\7f50471
-Node: The Help Menu\7f51159
-Node: Modes\7f56084
-Node: Major Modes\7f57000
-Node: Minor Modes\7f60949
-Node: Files\7f65035
-Node: File Names\7f65757
-Node: Visiting\7f67560
-Node: Saving Files\7f69684
-Node: Other Customizations\7f73061
-Node: Setting Variables\7f75529
-Node: Init File\7f78738
-Node: Select and Move\7f84208
-Node: Selecting Text\7f85162
-Node: Mouse\7f86675
-Node: Region Operation\7f88000
-Node: Moving Text\7f89260
-Node: Accumulating text\7f90500
-Node: Search and Replace\7f92820
-Node: Key Index\7f96684
-Node: Command Index\7f99973
-Node: Variable Index\7f104075
-Node: Concept Index\7f104652
+Node: Top\7f637
+Node: Intro\7f4617
+Node: Entering\7f7200
+Node: Enter\7f8714
+Node: Frame\7f9396
+Node: Exiting\7f11065
+Node: Mode Line\7f12265
+Node: Echo Area\7f14412
+Node: Windows and Menus\7f15767
+Node: XEmacs Window\7f16220
+Node: Pull-down Menus\7f19841
+Node: File menu\7f20720
+Node: Edit menu\7f23979
+Node: Options Menu\7f26505
+Node: Buffers Menu\7f31287
+Node: Help menu\7f31673
+Node: Edit\7f32171
+Node: Insert\7f33765
+Node: Cursor Position\7f35093
+Node: Erase\7f37164
+Node: Numeric Argument\7f38318
+Node: Undo\7f39502
+Node: Customization Basics\7f40265
+Node: Customizing key Bindings\7f41494
+Node: Customizing Menus\7f44984
+Node: Help\7f50473
+Node: The Help Menu\7f51161
+Node: Modes\7f56086
+Node: Major Modes\7f57002
+Node: Minor Modes\7f60951
+Node: Files\7f65037
+Node: File Names\7f65759
+Node: Visiting\7f67562
+Node: Saving Files\7f69686
+Node: Other Customizations\7f73063
+Node: Setting Variables\7f75531
+Node: Init File\7f78740
+Node: Select and Move\7f84210
+Node: Selecting Text\7f85164
+Node: Mouse\7f86677
+Node: Region Operation\7f88002
+Node: Moving Text\7f89262
+Node: Accumulating text\7f90502
+Node: Search and Replace\7f92822
+Node: Key Index\7f96686
+Node: Command Index\7f99975
+Node: Variable Index\7f104077
+Node: Concept Index\7f104654
 \1f
 End Tag Table
index 1c11e21..d2a595e 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/new-users-guide.info, produced by makeinfo version 4.0
-from new-users-guide/new-users-guide.texi.
+This is ../info/new-users-guide.info, produced by makeinfo version
+3.12s from new-users-guide/new-users-guide.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
index f7ed816..b66855c 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/new-users-guide.info, produced by makeinfo version 4.0
-from new-users-guide/new-users-guide.texi.
+This is ../info/new-users-guide.info, produced by makeinfo version
+3.12s from new-users-guide/new-users-guide.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
index 7fdf960..f29fc2e 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/new-users-guide.info, produced by makeinfo version 4.0
-from new-users-guide/new-users-guide.texi.
+This is ../info/new-users-guide.info, produced by makeinfo version
+3.12s from new-users-guide/new-users-guide.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
index 6ecf2d6..94102b9 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/standards.info, produced by makeinfo version 4.0 from
+This is ../info/standards.info, produced by makeinfo version 3.12s from
 standards.texi.
 
 START-INFO-DIR-ENTRY
@@ -24,62 +24,62 @@ translation approved by the Free Software Foundation.
 
 \1f
 Indirect:
-standards.info-1: 974
-standards.info-2: 48769
-standards.info-3: 97946
+standards.info-1: 976
+standards.info-2: 48771
+standards.info-3: 97948
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f974
-Node: Preface\7f1565
-Node: Legal Issues\7f2582
-Node: Reading Non-Free Code\7f2948
-Node: Contributions\7f4671
-Node: Design Advice\7f6801
-Node: Compatibility\7f7309
-Node: Using Extensions\7f8820
-Node: ANSI C\7f10322
-Node: Source Language\7f12445
-Node: Program Behavior\7f13938
-Node: Semantics\7f14647
-Node: Libraries\7f18964
-Node: Errors\7f20199
-Node: User Interfaces\7f21975
-Node: Option Table\7f28852
-Node: Memory Usage\7f43662
-Node: Writing C\7f44656
-Node: Formatting\7f45497
-Node: Comments\7f48769
-Node: Syntactic Conventions\7f52067
-Node: Names\7f55005
-Node: System Portability\7f56939
-Node: CPU Portability\7f58536
-Node: System Functions\7f60793
-Node: Internationalization\7f65897
-Node: Mmap\7f69045
-Node: Documentation\7f69750
-Node: GNU Manuals\7f70385
-Node: Manual Structure Details\7f74633
-Node: License for Manuals\7f75966
-Node: NEWS File\7f76550
-Node: Change Logs\7f77226
-Node: Change Log Concepts\7f77943
-Node: Style of Change Logs\7f79798
-Node: Simple Changes\7f81352
-Node: Conditional Changes\7f82543
-Node: Man Pages\7f83920
-Node: Reading other Manuals\7f85539
-Node: Managing Releases\7f86323
-Node: Configuration\7f87078
-Node: Makefile Conventions\7f94018
-Node: Makefile Basics\7f94777
-Node: Utilities in Makefiles\7f97946
-Node: Command Variables\7f100082
-Node: Directory Variables\7f103583
-Node: Standard Targets\7f114460
-Ref: Standard Targets-Footnote-1\7f124899
-Node: Install Command Categories\7f124999
-Node: Releases\7f129572
-Node: References\7f133655
+Node: Top\7f976
+Node: Preface\7f1567
+Node: Legal Issues\7f2584
+Node: Reading Non-Free Code\7f2950
+Node: Contributions\7f4673
+Node: Design Advice\7f6803
+Node: Compatibility\7f7311
+Node: Using Extensions\7f8822
+Node: ANSI C\7f10324
+Node: Source Language\7f12447
+Node: Program Behavior\7f13940
+Node: Semantics\7f14649
+Node: Libraries\7f18966
+Node: Errors\7f20201
+Node: User Interfaces\7f21977
+Node: Option Table\7f28854
+Node: Memory Usage\7f43664
+Node: Writing C\7f44658
+Node: Formatting\7f45499
+Node: Comments\7f48771
+Node: Syntactic Conventions\7f52069
+Node: Names\7f55007
+Node: System Portability\7f56941
+Node: CPU Portability\7f58538
+Node: System Functions\7f60795
+Node: Internationalization\7f65899
+Node: Mmap\7f69047
+Node: Documentation\7f69752
+Node: GNU Manuals\7f70387
+Node: Manual Structure Details\7f74635
+Node: License for Manuals\7f75968
+Node: NEWS File\7f76552
+Node: Change Logs\7f77228
+Node: Change Log Concepts\7f77945
+Node: Style of Change Logs\7f79800
+Node: Simple Changes\7f81354
+Node: Conditional Changes\7f82545
+Node: Man Pages\7f83922
+Node: Reading other Manuals\7f85541
+Node: Managing Releases\7f86325
+Node: Configuration\7f87080
+Node: Makefile Conventions\7f94020
+Node: Makefile Basics\7f94779
+Node: Utilities in Makefiles\7f97948
+Node: Command Variables\7f100084
+Node: Directory Variables\7f103585
+Node: Standard Targets\7f114462
+Ref: Standard Targets-Footnote-1\7f124901
+Node: Install Command Categories\7f125001
+Node: Releases\7f129574
+Node: References\7f133657
 \1f
 End Tag Table
index 0ba5b2e..b1d8299 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/standards.info, produced by makeinfo version 4.0 from
+This is ../info/standards.info, produced by makeinfo version 3.12s from
 standards.texi.
 
 START-INFO-DIR-ENTRY
index 8fd19bd..f997e27 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/standards.info, produced by makeinfo version 4.0 from
+This is ../info/standards.info, produced by makeinfo version 3.12s from
 standards.texi.
 
 START-INFO-DIR-ENTRY
index bac2c56..0244350 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/standards.info, produced by makeinfo version 4.0 from
+This is ../info/standards.info, produced by makeinfo version 3.12s from
 standards.texi.
 
 START-INFO-DIR-ENTRY
index 9f25e17..586bcfc 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
@@ -34,317 +34,317 @@ translation approved by the Free Software Foundation.
 
 \1f
 Indirect:
-texinfo.info-1: 1484
-texinfo.info-2: 48703
-texinfo.info-3: 96677
-texinfo.info-4: 146069
-texinfo.info-5: 196042
-texinfo.info-6: 245134
-texinfo.info-7: 293729
-texinfo.info-8: 343544
-texinfo.info-9: 392857
-texinfo.info-10: 435235
-texinfo.info-11: 481351
-texinfo.info-12: 519511
+texinfo.info-1: 1486
+texinfo.info-2: 48705
+texinfo.info-3: 96679
+texinfo.info-4: 146071
+texinfo.info-5: 196044
+texinfo.info-6: 245136
+texinfo.info-7: 293731
+texinfo.info-8: 343546
+texinfo.info-9: 392859
+texinfo.info-10: 435237
+texinfo.info-11: 481353
+texinfo.info-12: 519513
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f1484
-Node: Copying\7f23799
-Node: Overview\7f25804
-Node: Overview-Footnotes\7f27233
-Ref: Overview-Footnote-1\7f27297
-Node: Using Texinfo\7f27769
-Node: Info Files\7f30252
-Node: Info Files-Footnotes\7f34288
-Ref: Info Files-Footnote-1\7f34356
-Node: Printed Books\7f34535
-Node: Printed Books-Footnotes\7f37207
-Ref: Printed Books-Footnote-1\7f37281
-Node: Formatting Commands\7f37491
-Node: Formatting Commands-Footnotes\7f40318
-Ref: Formatting Commands-Footnote-1\7f40404
-Node: Conventions\7f41020
-Node: Comments\7f43582
-Node: Minimum\7f45005
-Node: Six Parts\7f47191
-Node: Short Sample\7f48703
-Node: Acknowledgements\7f52839
-Node: Texinfo Mode\7f53674
-Node: Texinfo Mode Overview\7f55046
-Node: Emacs Editing\7f55822
-Node: Inserting\7f57952
-Node: Showing the Structure\7f62233
-Node: Updating Nodes and Menus\7f64760
-Node: Updating Commands\7f65833
-Node: Updating Requirements\7f71894
-Node: Other Updating Commands\7f74191
-Node: Info Formatting\7f77459
-Node: Printing\7f78717
-Node: Texinfo Mode Summary\7f81062
-Node: Beginning a File\7f85816
-Node: Four Parts\7f86707
-Node: Sample Beginning\7f88177
-Node: Header\7f89797
-Node: First Line\7f91149
-Node: Start of Header\7f92138
-Node: setfilename\7f92851
-Node: settitle\7f94787
-Node: setchapternewpage\7f96677
-Node: paragraphindent\7f99438
-Node: End of Header\7f100920
-Node: Info Summary and Permissions\7f101759
-Node: Titlepage & Copyright Page\7f102778
-Node: titlepage\7f104384
-Node: titlepage-Footnotes\7f106666
-Ref: titlepage-Footnote-1\7f106732
-Node: titlefont center sp\7f107006
-Node: title subtitle author\7f108232
-Node: Copyright & Permissions\7f110504
-Node: end titlepage\7f112505
-Node: headings on off\7f114211
-Node: The Top Node\7f116256
-Node: Title of Top Node\7f117411
-Node: Master Menu Parts\7f118664
-Node: Software Copying Permissions\7f120901
-Node: Ending a File\7f122069
-Node: Printing Indices & Menus\7f122917
-Node: Contents\7f125226
-Node: File End\7f127566
-Node: Structuring\7f128239
-Node: Tree Structuring\7f129896
-Node: Structuring Command Types\7f131339
-Node: makeinfo top\7f133666
-Node: chapter\7f134199
-Node: unnumbered & appendix\7f135223
-Node: majorheading & chapheading\7f136062
-Node: section\7f136883
-Node: unnumberedsec appendixsec heading\7f137647
-Node: subsection\7f138636
-Node: unnumberedsubsec appendixsubsec subheading\7f139208
-Node: subsubsection\7f140161
-Node: Raise/lower sections\7f141711
-Node: Nodes\7f143846
-Node: Two Paths\7f144783
-Node: Node Menu Illustration\7f146069
-Node: node\7f149764
-Node: Node Names\7f152460
-Node: Writing a Node\7f153536
-Node: Node Line Tips\7f155554
-Node: Node Line Requirements\7f156348
-Node: First Node\7f157949
-Node: makeinfo top command\7f159393
-Node: Top Node Summary\7f160572
-Node: makeinfo Pointer Creation\7f162022
-Node: Menus\7f163269
-Node: Menus-Footnotes\7f164208
-Ref: Menus-Footnote-1\7f164266
-Node: Menu Location\7f164559
-Node: Writing a Menu\7f166236
-Node: Menu Parts\7f167202
-Node: Less Cluttered Menu Entry\7f168360
-Node: Menu Example\7f168985
-Node: Other Info Files\7f170506
-Node: Cross References\7f172362
-Node: References\7f173319
-Node: Cross Reference Commands\7f175066
-Node: Cross Reference Parts\7f176125
-Node: xref\7f178961
-Node: Reference Syntax\7f179760
-Node: One Argument\7f181414
-Node: Two Arguments\7f182426
-Node: Three Arguments\7f183541
-Node: Four and Five Arguments\7f185932
-Node: Top Node Naming\7f188344
-Node: ref\7f189354
-Node: pxref\7f190744
-Node: inforef\7f193126
-Node: uref\7f194419
-Node: Marking Text\7f195418
-Node: Indicating\7f196042
-Node: Useful Highlighting\7f197947
-Node: code\7f199336
-Node: kbd\7f202374
-Node: key\7f204244
-Node: samp\7f205577
-Node: var\7f207164
-Node: file\7f208957
-Node: dfn\7f209564
-Node: cite\7f210474
-Node: url\7f210928
-Node: email\7f211492
-Node: Emphasis\7f212304
-Node: emph & strong\7f213204
-Node: Smallcaps\7f214190
-Node: Fonts\7f215517
-Node: Customized Highlighting\7f216605
-Node: Customized Highlighting-Footnotes\7f219420
-Ref: Customized Highlighting-Footnote-1\7f219514
-Node: Quotations and Examples\7f219640
-Node: Block Enclosing Commands\7f221262
-Node: quotation\7f223287
-Node: example\7f224377
-Node: noindent\7f226432
-Node: Lisp Example\7f227896
-Node: Lisp Example-Footnotes\7f228598
-Ref: Lisp Example-Footnote-1\7f228670
-Node: smallexample & smalllisp\7f228788
-Node: display\7f230813
-Node: format\7f231445
-Node: exdent\7f231906
-Node: flushleft & flushright\7f232986
-Node: cartouche\7f234252
-Node: Lists and Tables\7f235019
-Node: Introducing Lists\7f235695
-Node: itemize\7f237360
-Node: enumerate\7f239507
-Node: Two-column Tables\7f242012
-Node: table\7f242701
-Node: ftable vtable\7f245134
-Node: itemx\7f246235
-Node: Multi-column Tables\7f247246
-Node: Multitable Column Widths\7f247917
-Node: Multitable Rows\7f249371
-Node: Indices\7f251148
-Node: Index Entries\7f252298
-Node: Predefined Indices\7f253431
-Node: Indexing Commands\7f254428
-Node: Combining Indices\7f258968
-Node: syncodeindex\7f260331
-Node: synindex\7f261993
-Node: New Indices\7f262518
-Node: Insertions\7f264343
-Node: Braces Atsigns\7f265527
-Node: Inserting An Atsign\7f266079
-Node: Inserting Braces\7f266353
-Node: Inserting Space\7f266716
-Node: Not Ending a Sentence\7f267220
-Node: Ending a Sentence\7f268574
-Node: Multiple Spaces\7f269703
-Node: dmn\7f270922
-Node: Inserting Accents\7f272129
-Node: Dots Bullets\7f273886
-Node: dots\7f274708
-Node: bullet\7f275232
-Node: TeX and copyright\7f275629
-Node: tex\7f276196
-Node: copyright symbol\7f276612
-Node: pounds\7f276872
-Node: minus\7f277236
-Node: math\7f278158
-Node: Glyphs\7f278886
-Node: Glyphs Summary\7f279999
-Node: result\7f280627
-Node: expansion\7f281112
-Node: Print Glyph\7f282068
-Node: Error Glyph\7f282945
-Node: Equivalence\7f283778
-Node: Point Glyph\7f284466
-Node: Images\7f286023
-Node: Breaks\7f287690
-Node: Break Commands\7f289121
-Node: Line Breaks\7f289962
-Node: - and hyphenation\7f290980
-Node: w\7f292230
-Node: sp\7f292943
-Node: page\7f293352
-Node: group\7f293729
-Node: need\7f295472
-Node: Definition Commands\7f296202
-Node: Def Cmd Template\7f297773
-Node: Optional Arguments\7f300770
-Node: deffnx\7f302358
-Node: Def Cmds in Detail\7f303313
-Node: Functions Commands\7f304423
-Node: Variables Commands\7f307428
-Node: Typed Functions\7f309514
-Node: Typed Variables\7f313056
-Node: Abstract Objects\7f315039
-Node: Data Types\7f320264
-Node: Def Cmd Conventions\7f321519
-Node: Sample Function Definition\7f322082
-Node: Footnotes\7f324966
-Node: Footnotes-Footnotes\7f325354
-Ref: Footnotes-Footnote-1\7f325420
-Node: Footnote Commands\7f325700
-Node: Footnote Commands-Footnotes\7f327197
-Ref: Footnote Commands-Footnote-1\7f327279
-Node: Footnote Styles\7f327315
-Node: Conditionals\7f329901
-Node: Conditional Commands\7f330712
-Node: Conditional Not Commands\7f332205
-Node: Raw Formatter Commands\7f332950
-Node: set clear value\7f334780
-Node: ifset ifclear\7f335581
-Node: value\7f338760
-Node: value Example\7f340172
-Node: Macros\7f341750
-Node: Defining Macros\7f342455
-Node: Invoking Macros\7f343544
-Node: Format/Print Hardcopy\7f344650
-Node: Use TeX\7f346487
-Node: Format with tex/texindex\7f347115
-Node: Format with texi2dvi\7f350756
-Node: Print with lpr\7f351347
-Node: Within Emacs\7f352201
-Node: Texinfo Mode Printing\7f353120
-Node: Compile-Command\7f356530
-Node: Requirements Summary\7f357418
-Node: Preparing for TeX\7f358731
-Node: Overfull hboxes\7f361518
-Node: smallbook\7f363077
-Node: A4 Paper\7f364595
-Node: Cropmarks and Magnification\7f365820
-Node: Create an Info File\7f367761
-Node: makeinfo advantages\7f369064
-Node: Invoking makeinfo\7f369980
-Node: makeinfo options\7f370668
-Node: Pointer Validation\7f376152
-Node: makeinfo in Emacs\7f377496
-Node: texinfo-format commands\7f380054
-Node: Batch Formatting\7f381325
-Node: Tag and Split Files\7f382541
-Node: Install an Info File\7f385895
-Node: Directory file\7f386713
-Node: New Info File\7f388581
-Node: Other Info Directories\7f389642
-Node: Installing Dir Entries\7f392857
-Node: Invoking install-info\7f394850
-Node: Command List\7f397265
-Node: Tips\7f435235
-Node: Sample Texinfo File\7f446645
-Node: Sample Permissions\7f448764
-Node: Inserting Permissions\7f449807
-Node: ifinfo Permissions\7f452113
-Node: Titlepage Permissions\7f453734
-Node: Include Files\7f454996
-Node: Using Include Files\7f456083
-Node: texinfo-multiple-files-update\7f458038
-Node: Include File Requirements\7f460399
-Node: Sample Include File\7f461644
-Node: Include Files Evolution\7f463163
-Node: Headings\7f465134
-Node: Headings Introduced\7f465771
-Node: Heading Format\7f467659
-Node: Heading Choice\7f470111
-Node: Custom Headings\7f471483
-Node: Catching Mistakes\7f475811
-Node: makeinfo Preferred\7f477100
-Node: Debugging with Info\7f478005
-Node: Debugging with TeX\7f481351
-Node: Using texinfo-show-structure\7f485631
-Node: Using occur\7f488730
-Node: Running Info-Validate\7f490267
-Node: Using Info-validate\7f491328
-Node: Unsplit\7f493170
-Node: Tagifying\7f494216
-Node: Splitting\7f495068
-Node: Refilling Paragraphs\7f496684
-Node: Refilling Paragraphs-Footnotes\7f498338
-Ref: Refilling Paragraphs-Footnote-1\7f498426
-Node: Command Syntax\7f498589
-Node: Obtaining TeX\7f501546
-Node: Command and Variable Index\7f503659
-Node: Concept Index\7f519511
+Node: Top\7f1486
+Node: Copying\7f23801
+Node: Overview\7f25806
+Node: Overview-Footnotes\7f27235
+Ref: Overview-Footnote-1\7f27299
+Node: Using Texinfo\7f27771
+Node: Info Files\7f30254
+Node: Info Files-Footnotes\7f34290
+Ref: Info Files-Footnote-1\7f34358
+Node: Printed Books\7f34537
+Node: Printed Books-Footnotes\7f37209
+Ref: Printed Books-Footnote-1\7f37283
+Node: Formatting Commands\7f37493
+Node: Formatting Commands-Footnotes\7f40320
+Ref: Formatting Commands-Footnote-1\7f40406
+Node: Conventions\7f41022
+Node: Comments\7f43584
+Node: Minimum\7f45007
+Node: Six Parts\7f47193
+Node: Short Sample\7f48705
+Node: Acknowledgements\7f52841
+Node: Texinfo Mode\7f53676
+Node: Texinfo Mode Overview\7f55048
+Node: Emacs Editing\7f55824
+Node: Inserting\7f57954
+Node: Showing the Structure\7f62235
+Node: Updating Nodes and Menus\7f64762
+Node: Updating Commands\7f65835
+Node: Updating Requirements\7f71896
+Node: Other Updating Commands\7f74193
+Node: Info Formatting\7f77461
+Node: Printing\7f78719
+Node: Texinfo Mode Summary\7f81064
+Node: Beginning a File\7f85818
+Node: Four Parts\7f86709
+Node: Sample Beginning\7f88179
+Node: Header\7f89799
+Node: First Line\7f91151
+Node: Start of Header\7f92140
+Node: setfilename\7f92853
+Node: settitle\7f94789
+Node: setchapternewpage\7f96679
+Node: paragraphindent\7f99440
+Node: End of Header\7f100922
+Node: Info Summary and Permissions\7f101761
+Node: Titlepage & Copyright Page\7f102780
+Node: titlepage\7f104386
+Node: titlepage-Footnotes\7f106668
+Ref: titlepage-Footnote-1\7f106734
+Node: titlefont center sp\7f107008
+Node: title subtitle author\7f108234
+Node: Copyright & Permissions\7f110506
+Node: end titlepage\7f112507
+Node: headings on off\7f114213
+Node: The Top Node\7f116258
+Node: Title of Top Node\7f117413
+Node: Master Menu Parts\7f118666
+Node: Software Copying Permissions\7f120903
+Node: Ending a File\7f122071
+Node: Printing Indices & Menus\7f122919
+Node: Contents\7f125228
+Node: File End\7f127568
+Node: Structuring\7f128241
+Node: Tree Structuring\7f129898
+Node: Structuring Command Types\7f131341
+Node: makeinfo top\7f133668
+Node: chapter\7f134201
+Node: unnumbered & appendix\7f135225
+Node: majorheading & chapheading\7f136064
+Node: section\7f136885
+Node: unnumberedsec appendixsec heading\7f137649
+Node: subsection\7f138638
+Node: unnumberedsubsec appendixsubsec subheading\7f139210
+Node: subsubsection\7f140163
+Node: Raise/lower sections\7f141713
+Node: Nodes\7f143848
+Node: Two Paths\7f144785
+Node: Node Menu Illustration\7f146071
+Node: node\7f149766
+Node: Node Names\7f152462
+Node: Writing a Node\7f153538
+Node: Node Line Tips\7f155556
+Node: Node Line Requirements\7f156350
+Node: First Node\7f157951
+Node: makeinfo top command\7f159395
+Node: Top Node Summary\7f160574
+Node: makeinfo Pointer Creation\7f162024
+Node: Menus\7f163271
+Node: Menus-Footnotes\7f164210
+Ref: Menus-Footnote-1\7f164268
+Node: Menu Location\7f164561
+Node: Writing a Menu\7f166238
+Node: Menu Parts\7f167204
+Node: Less Cluttered Menu Entry\7f168362
+Node: Menu Example\7f168987
+Node: Other Info Files\7f170508
+Node: Cross References\7f172364
+Node: References\7f173321
+Node: Cross Reference Commands\7f175068
+Node: Cross Reference Parts\7f176127
+Node: xref\7f178963
+Node: Reference Syntax\7f179762
+Node: One Argument\7f181416
+Node: Two Arguments\7f182428
+Node: Three Arguments\7f183543
+Node: Four and Five Arguments\7f185934
+Node: Top Node Naming\7f188346
+Node: ref\7f189356
+Node: pxref\7f190746
+Node: inforef\7f193128
+Node: uref\7f194421
+Node: Marking Text\7f195420
+Node: Indicating\7f196044
+Node: Useful Highlighting\7f197949
+Node: code\7f199338
+Node: kbd\7f202376
+Node: key\7f204246
+Node: samp\7f205579
+Node: var\7f207166
+Node: file\7f208959
+Node: dfn\7f209566
+Node: cite\7f210476
+Node: url\7f210930
+Node: email\7f211494
+Node: Emphasis\7f212306
+Node: emph & strong\7f213206
+Node: Smallcaps\7f214192
+Node: Fonts\7f215519
+Node: Customized Highlighting\7f216607
+Node: Customized Highlighting-Footnotes\7f219422
+Ref: Customized Highlighting-Footnote-1\7f219516
+Node: Quotations and Examples\7f219642
+Node: Block Enclosing Commands\7f221264
+Node: quotation\7f223289
+Node: example\7f224379
+Node: noindent\7f226434
+Node: Lisp Example\7f227898
+Node: Lisp Example-Footnotes\7f228600
+Ref: Lisp Example-Footnote-1\7f228672
+Node: smallexample & smalllisp\7f228790
+Node: display\7f230815
+Node: format\7f231447
+Node: exdent\7f231908
+Node: flushleft & flushright\7f232988
+Node: cartouche\7f234254
+Node: Lists and Tables\7f235021
+Node: Introducing Lists\7f235697
+Node: itemize\7f237362
+Node: enumerate\7f239509
+Node: Two-column Tables\7f242014
+Node: table\7f242703
+Node: ftable vtable\7f245136
+Node: itemx\7f246237
+Node: Multi-column Tables\7f247248
+Node: Multitable Column Widths\7f247919
+Node: Multitable Rows\7f249373
+Node: Indices\7f251150
+Node: Index Entries\7f252300
+Node: Predefined Indices\7f253433
+Node: Indexing Commands\7f254430
+Node: Combining Indices\7f258970
+Node: syncodeindex\7f260333
+Node: synindex\7f261995
+Node: New Indices\7f262520
+Node: Insertions\7f264345
+Node: Braces Atsigns\7f265529
+Node: Inserting An Atsign\7f266081
+Node: Inserting Braces\7f266355
+Node: Inserting Space\7f266718
+Node: Not Ending a Sentence\7f267222
+Node: Ending a Sentence\7f268576
+Node: Multiple Spaces\7f269705
+Node: dmn\7f270924
+Node: Inserting Accents\7f272131
+Node: Dots Bullets\7f273888
+Node: dots\7f274710
+Node: bullet\7f275234
+Node: TeX and copyright\7f275631
+Node: tex\7f276198
+Node: copyright symbol\7f276614
+Node: pounds\7f276874
+Node: minus\7f277238
+Node: math\7f278160
+Node: Glyphs\7f278888
+Node: Glyphs Summary\7f280001
+Node: result\7f280629
+Node: expansion\7f281114
+Node: Print Glyph\7f282070
+Node: Error Glyph\7f282947
+Node: Equivalence\7f283780
+Node: Point Glyph\7f284468
+Node: Images\7f286025
+Node: Breaks\7f287692
+Node: Break Commands\7f289123
+Node: Line Breaks\7f289964
+Node: - and hyphenation\7f290982
+Node: w\7f292232
+Node: sp\7f292945
+Node: page\7f293354
+Node: group\7f293731
+Node: need\7f295474
+Node: Definition Commands\7f296204
+Node: Def Cmd Template\7f297775
+Node: Optional Arguments\7f300772
+Node: deffnx\7f302360
+Node: Def Cmds in Detail\7f303315
+Node: Functions Commands\7f304425
+Node: Variables Commands\7f307430
+Node: Typed Functions\7f309516
+Node: Typed Variables\7f313058
+Node: Abstract Objects\7f315041
+Node: Data Types\7f320266
+Node: Def Cmd Conventions\7f321521
+Node: Sample Function Definition\7f322084
+Node: Footnotes\7f324968
+Node: Footnotes-Footnotes\7f325356
+Ref: Footnotes-Footnote-1\7f325422
+Node: Footnote Commands\7f325702
+Node: Footnote Commands-Footnotes\7f327199
+Ref: Footnote Commands-Footnote-1\7f327281
+Node: Footnote Styles\7f327317
+Node: Conditionals\7f329903
+Node: Conditional Commands\7f330714
+Node: Conditional Not Commands\7f332207
+Node: Raw Formatter Commands\7f332952
+Node: set clear value\7f334782
+Node: ifset ifclear\7f335583
+Node: value\7f338762
+Node: value Example\7f340174
+Node: Macros\7f341752
+Node: Defining Macros\7f342457
+Node: Invoking Macros\7f343546
+Node: Format/Print Hardcopy\7f344652
+Node: Use TeX\7f346489
+Node: Format with tex/texindex\7f347117
+Node: Format with texi2dvi\7f350758
+Node: Print with lpr\7f351349
+Node: Within Emacs\7f352203
+Node: Texinfo Mode Printing\7f353122
+Node: Compile-Command\7f356532
+Node: Requirements Summary\7f357420
+Node: Preparing for TeX\7f358733
+Node: Overfull hboxes\7f361520
+Node: smallbook\7f363079
+Node: A4 Paper\7f364597
+Node: Cropmarks and Magnification\7f365822
+Node: Create an Info File\7f367763
+Node: makeinfo advantages\7f369066
+Node: Invoking makeinfo\7f369982
+Node: makeinfo options\7f370670
+Node: Pointer Validation\7f376154
+Node: makeinfo in Emacs\7f377498
+Node: texinfo-format commands\7f380056
+Node: Batch Formatting\7f381327
+Node: Tag and Split Files\7f382543
+Node: Install an Info File\7f385897
+Node: Directory file\7f386715
+Node: New Info File\7f388583
+Node: Other Info Directories\7f389644
+Node: Installing Dir Entries\7f392859
+Node: Invoking install-info\7f394852
+Node: Command List\7f397267
+Node: Tips\7f435237
+Node: Sample Texinfo File\7f446647
+Node: Sample Permissions\7f448766
+Node: Inserting Permissions\7f449809
+Node: ifinfo Permissions\7f452115
+Node: Titlepage Permissions\7f453736
+Node: Include Files\7f454998
+Node: Using Include Files\7f456085
+Node: texinfo-multiple-files-update\7f458040
+Node: Include File Requirements\7f460401
+Node: Sample Include File\7f461646
+Node: Include Files Evolution\7f463165
+Node: Headings\7f465136
+Node: Headings Introduced\7f465773
+Node: Heading Format\7f467661
+Node: Heading Choice\7f470113
+Node: Custom Headings\7f471485
+Node: Catching Mistakes\7f475813
+Node: makeinfo Preferred\7f477102
+Node: Debugging with Info\7f478007
+Node: Debugging with TeX\7f481353
+Node: Using texinfo-show-structure\7f485633
+Node: Using occur\7f488732
+Node: Running Info-Validate\7f490269
+Node: Using Info-validate\7f491330
+Node: Unsplit\7f493172
+Node: Tagifying\7f494218
+Node: Splitting\7f495070
+Node: Refilling Paragraphs\7f496686
+Node: Refilling Paragraphs-Footnotes\7f498340
+Ref: Refilling Paragraphs-Footnote-1\7f498428
+Node: Command Syntax\7f498591
+Node: Obtaining TeX\7f501548
+Node: Command and Variable Index\7f503661
+Node: Concept Index\7f519513
 \1f
 End Tag Table
index f31fc03..398ba54 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index aea9a20..f746dad 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 43fe115..e102b6a 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index de69019..58b9177 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index fc54512..a2ae54e 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 5eab100..a18f73e 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 8d30a06..f75aa98 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index f285171..8f64324 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 4bcdc71..e13c6f4 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 10a127a..315c7b4 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 79ed349..bc482a2 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 8448388..97b26f6 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/texinfo.info, produced by makeinfo version 4.0 from
+This is ../info/texinfo.info, produced by makeinfo version 3.12s from
 texinfo.texi.
 
 INFO-DIR-SECTION Texinfo documentation system
index 75b5ce0..014b716 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/widget.info, produced by makeinfo version 4.0 from
+This is ../info/widget.info, produced by makeinfo version 3.12s from
 widget.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -1517,37 +1517,37 @@ Wishlist
 
 \1f
 Tag Table:
-Node: Top\7f201
-Node: Introduction\7f581
-Node: User Interface\7f4064
-Node: Programming Example\7f8959
-Node: Setting Up the Buffer\7f12276
-Node: Basic Types\7f13993
-Node: link\7f20038
-Node: url-link\7f20552
-Node: info-link\7f20864
-Node: push-button\7f21155
-Node: editable-field\7f21728
-Node: text\7f23067
-Node: menu-choice\7f23365
-Node: radio-button-choice\7f24230
-Node: item\7f25809
-Node: choice-item\7f26197
-Node: toggle\7f26695
-Node: checkbox\7f27420
-Node: checklist\7f27726
-Node: editable-list\7f29170
-Node: group\7f30352
-Node: Sexp Types\7f30639
-Node: constants\7f30952
-Node: generic\7f32031
-Node: atoms\7f32564
-Node: composite\7f34511
-Node: Widget Properties\7f36977
-Node: Defining New Widgets\7f40040
-Node: Widget Browser\7f45340
-Node: Widget Minor Mode\7f46198
-Node: Utilities\7f46755
-Node: Widget Wishlist\7f47236
+Node: Top\7f203
+Node: Introduction\7f583
+Node: User Interface\7f4066
+Node: Programming Example\7f8961
+Node: Setting Up the Buffer\7f12278
+Node: Basic Types\7f13995
+Node: link\7f20040
+Node: url-link\7f20554
+Node: info-link\7f20866
+Node: push-button\7f21157
+Node: editable-field\7f21730
+Node: text\7f23069
+Node: menu-choice\7f23367
+Node: radio-button-choice\7f24232
+Node: item\7f25811
+Node: choice-item\7f26199
+Node: toggle\7f26697
+Node: checkbox\7f27422
+Node: checklist\7f27728
+Node: editable-list\7f29172
+Node: group\7f30354
+Node: Sexp Types\7f30641
+Node: constants\7f30954
+Node: generic\7f32033
+Node: atoms\7f32566
+Node: composite\7f34513
+Node: Widget Properties\7f36979
+Node: Defining New Widgets\7f40042
+Node: Widget Browser\7f45342
+Node: Widget Minor Mode\7f46200
+Node: Utilities\7f46757
+Node: Widget Wishlist\7f47238
 \1f
 End Tag Table
index cd678b0..2e37720 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
-xemacs-faq.texi.
+This is ../info/xemacs-faq.info, produced by makeinfo version 3.12s
+from xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
@@ -8,259 +8,259 @@ END-INFO-DIR-ENTRY
 
 \1f
 Indirect:
-xemacs-faq.info-1: 195
-xemacs-faq.info-2: 47856
-xemacs-faq.info-3: 94965
-xemacs-faq.info-4: 144800
-xemacs-faq.info-5: 194688
+xemacs-faq.info-1: 197
+xemacs-faq.info-2: 47858
+xemacs-faq.info-3: 94967
+xemacs-faq.info-4: 144802
+xemacs-faq.info-5: 194690
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f195
-Node: Introduction\7f16711
-Node: Q1.0.1\7f20230
-Node: Q1.0.2\7f20766
-Node: Q1.0.3\7f21261
-Node: Q1.0.4\7f21523
-Node: Q1.0.5\7f22973
-Node: Q1.0.6\7f23662
-Node: Q1.0.7\7f24668
-Node: Q1.0.8\7f24917
-Node: Q1.0.9\7f25132
-Node: Q1.0.10\7f25410
-Node: Q1.0.11\7f25653
-Node: Q1.0.12\7f26110
-Node: Q1.0.13\7f26478
-Node: Q1.0.14\7f26713
-Node: Q1.1.1\7f27187
-Node: Q1.1.2\7f28149
-Node: Q1.1.3\7f28542
-Node: Q1.2.1\7f29493
-Node: Q1.2.2\7f30549
-Node: Q1.2.3\7f30983
-Node: Q1.3.1\7f31934
-Node: Q1.3.2\7f35852
-Node: Q1.3.3\7f36407
-Node: Q1.3.4\7f36648
-Node: Q1.3.5\7f37412
-Node: Q1.3.6\7f39827
-Node: Q1.3.7\7f41322
-Node: Q1.4.1\7f42257
-Node: Q1.4.2\7f43119
-Node: Q1.4.3\7f43460
-Node: Q1.4.4\7f43879
-Node: Q1.4.5\7f45419
-Node: Q1.4.6\7f45723
-Node: Q1.4.7\7f46731
-Node: Installation\7f47856
-Node: Q2.0.1\7f50262
-Node: Q2.0.2\7f51135
-Node: Q2.0.3\7f58338
-Node: Q2.0.4\7f59636
-Node: Q2.0.5\7f60228
-Node: Q2.0.6\7f60596
-Node: Q2.0.7\7f60977
-Node: Q2.0.8\7f61358
-Node: Q2.0.9\7f62936
-Node: Q2.0.10\7f64374
-Node: Q2.0.11\7f65218
-Node: Q2.0.12\7f66159
-Node: Q2.0.13\7f67682
-Node: Q2.0.14\7f68340
-Node: Q2.1.1\7f68908
-Node: Q2.1.2\7f71650
-Node: Q2.1.3\7f72827
-Node: Q2.1.4\7f74120
-Node: Q2.1.5\7f74919
-Node: Q2.1.6\7f75281
-Node: Q2.1.7\7f75758
-Node: Q2.1.8\7f76111
-Node: Q2.1.9\7f77627
-Node: Q2.1.10\7f78049
-Node: Q2.1.11\7f78806
-Node: Q2.1.12\7f79671
-Node: Q2.1.13\7f80626
-Node: Q2.1.14\7f81657
-Node: Q2.1.15\7f82768
-Node: Q2.1.16\7f88726
-Node: Q2.1.17\7f89420
-Node: Q2.1.18\7f90017
-Node: Q2.1.19\7f91814
-Node: Q2.1.20\7f92344
-Node: Q2.1.21\7f92726
-Node: Q2.1.22\7f93016
-Node: Q2.1.23\7f94313
-Node: Customization\7f94965
-Node: Q3.0.1\7f99852
-Node: Q3.0.2\7f100558
-Node: Q3.0.3\7f101122
-Node: Q3.0.4\7f101539
-Node: Q3.0.5\7f102372
-Node: Q3.0.6\7f103153
-Node: Q3.0.7\7f103733
-Node: Q3.0.8\7f104397
-Node: Q3.0.9\7f105243
-Node: Q3.1.1\7f105804
-Node: Q3.1.2\7f106541
-Node: Q3.1.3\7f106972
-Node: Q3.1.4\7f107557
-Node: Q3.1.5\7f108093
-Node: Q3.1.6\7f108477
-Node: Q3.1.7\7f109158
-Node: Q3.1.8\7f111382
-Node: Q3.2.1\7f111924
-Node: Q3.2.2\7f113332
-Node: Q3.2.3\7f114131
-Node: Q3.2.4\7f114733
-Node: Q3.2.5\7f115767
-Node: Q3.2.6\7f116234
-Node: Q3.3.1\7f117196
-Node: Q3.3.2\7f117589
-Node: Q3.3.3\7f118220
-Node: Q3.3.4\7f118601
-Node: Q3.3.5\7f119695
-Node: Q3.4.1\7f121189
-Node: Q3.4.2\7f121832
-Node: Q3.5.1\7f122344
-Node: Q3.5.2\7f123798
-Node: Q3.5.3\7f124216
-Node: Q3.5.4\7f125056
-Node: Q3.5.5\7f125888
-Node: Q3.5.6\7f127028
-Node: Q3.5.7\7f128018
-Node: Q3.5.8\7f129370
-Node: Q3.5.9\7f130117
-Node: Q3.5.10\7f130897
-Node: Q3.5.11\7f131533
-Node: Q3.6.1\7f132086
-Node: Q3.6.2\7f132826
-Node: Q3.6.3\7f133254
-Node: Q3.7.1\7f133754
-Node: Q3.7.2\7f134642
-Node: Q3.7.3\7f135301
-Node: Q3.7.4\7f135723
-Node: Q3.7.5\7f136066
-Node: Q3.7.6\7f136534
-Node: Q3.7.7\7f137249
-Node: Q3.7.8\7f138269
-Node: Q3.8.1\7f138688
-Node: Q3.8.2\7f139148
-Node: Q3.8.3\7f139611
-Node: Q3.8.4\7f140217
-Node: Q3.8.5\7f140936
-Node: Q3.9.1\7f141721
-Node: Q3.9.2\7f142661
-Node: Q3.9.3\7f143259
-Node: Q3.9.4\7f143921
-Node: Q3.10.1\7f144800
-Node: Q3.10.2\7f145618
-Node: Q3.10.3\7f146399
-Node: Q3.10.4\7f147127
-Node: Q3.10.5\7f147510
-Node: Subsystems\7f148520
-Node: Q4.0.1\7f151005
-Node: Q4.0.2\7f151530
-Node: Q4.0.3\7f152088
-Node: Q4.0.4\7f152409
-Node: Q4.0.5\7f152651
-Node: Q4.0.6\7f152882
-Node: Q4.0.7\7f153463
-Node: Q4.0.8\7f153788
-Node: Q4.0.9\7f155015
-Node: Q4.0.10\7f157053
-Node: Q4.0.11\7f157507
-Node: Q4.0.12\7f158357
-Node: Q4.1.1\7f159330
-Node: Q4.1.2\7f159733
-Node: Q4.1.3\7f160060
-Node: Q4.2.1\7f160369
-Node: Q4.2.2\7f160999
-Node: Q4.2.3\7f161239
-Node: Q4.2.4\7f161783
-Node: Q4.3.1\7f162436
-Node: Q4.3.2\7f163020
-Node: Q4.3.3\7f164501
-Node: Q4.3.4\7f164773
-Node: Q4.3.5\7f165450
-Node: Q4.4.1\7f166078
-Node: Q4.4.2\7f167564
-Node: Q4.5.1\7f168768
-Node: Q4.6.1\7f169537
-Node: Q4.7.1\7f174797
-Node: Q4.7.2\7f175752
-Node: Q4.7.3\7f176049
-Node: Q4.7.4\7f176395
-Node: Q4.7.5\7f177279
-Node: Q4.7.6\7f178921
-Node: Miscellaneous\7f179515
-Node: Q5.0.1\7f182935
-Node: Q5.0.2\7f183669
-Node: Q5.0.3\7f184523
-Node: Q5.0.4\7f185225
-Node: Q5.0.5\7f186164
-Node: Q5.0.6\7f188144
-Node: Q5.0.7\7f188801
-Node: Q5.0.8\7f189406
-Node: Q5.0.9\7f189925
-Node: Q5.0.10\7f190439
-Node: Q5.0.11\7f190687
-Node: Q5.0.12\7f191248
-Node: Q5.0.13\7f192165
-Node: Q5.0.14\7f192849
-Node: Q5.0.15\7f193614
-Node: Q5.0.16\7f193911
-Node: Q5.0.17\7f194423
-Node: Q5.0.18\7f194688
-Node: Q5.0.19\7f195214
-Node: Q5.0.20\7f195638
-Node: Q5.1.1\7f196553
-Node: Q5.1.2\7f198622
-Node: Q5.1.3\7f199358
-Node: Q5.1.4\7f202752
-Node: Q5.1.5\7f203287
-Node: Q5.1.6\7f205381
-Node: Q5.1.7\7f206770
-Node: Q5.1.8\7f208371
-Node: Q5.1.9\7f208923
-Node: Q5.1.10\7f209808
-Node: Q5.1.11\7f210939
-Node: Q5.2.1\7f211488
-Node: Q5.2.2\7f212059
-Node: Q5.2.3\7f212476
-Node: Q5.2.4\7f212711
-Node: Q5.3.1\7f213621
-Node: Q5.3.2\7f214842
-Node: Q5.3.3\7f215618
-Node: Q5.3.4\7f216102
-Node: Q5.3.5\7f216769
-Node: Q5.3.6\7f217638
-Node: Q5.3.7\7f217883
-Node: Q5.3.8\7f220073
-Node: Q5.3.9\7f220320
-Node: Q5.3.10\7f221273
-Node: Q5.3.11\7f223357
-Node: Q5.3.12\7f224906
-Node: MS Windows\7f226180
-Node: Q6.0.1\7f227511
-Node: Q6.0.2\7f228258
-Node: Q6.0.3\7f228723
-Node: Q6.0.4\7f229003
-Node: Q6.1.1\7f231284
-Node: Q6.1.2\7f232155
-Node: Q6.1.3\7f232436
-Node: Q6.1.4\7f232718
-Node: Q6.1.5\7f233096
-Node: Q6.1.6\7f233928
-Node: Q6.2.1\7f234512
-Node: Q6.2.2\7f235413
-Node: Q6.2.3\7f235814
-Node: Q6.3.1\7f236103
-Node: Q6.3.2\7f237197
-Node: Q6.3.3\7f240378
-Node: Current Events\7f240632
-Node: Q7.0.1\7f241286
-Node: Q7.0.2\7f241925
-Node: Q7.0.3\7f242999
-Node: Q7.0.4\7f243227
+Node: Top\7f197
+Node: Introduction\7f16713
+Node: Q1.0.1\7f20232
+Node: Q1.0.2\7f20768
+Node: Q1.0.3\7f21263
+Node: Q1.0.4\7f21525
+Node: Q1.0.5\7f22975
+Node: Q1.0.6\7f23664
+Node: Q1.0.7\7f24670
+Node: Q1.0.8\7f24919
+Node: Q1.0.9\7f25134
+Node: Q1.0.10\7f25412
+Node: Q1.0.11\7f25655
+Node: Q1.0.12\7f26112
+Node: Q1.0.13\7f26480
+Node: Q1.0.14\7f26715
+Node: Q1.1.1\7f27189
+Node: Q1.1.2\7f28151
+Node: Q1.1.3\7f28544
+Node: Q1.2.1\7f29495
+Node: Q1.2.2\7f30551
+Node: Q1.2.3\7f30985
+Node: Q1.3.1\7f31936
+Node: Q1.3.2\7f35854
+Node: Q1.3.3\7f36409
+Node: Q1.3.4\7f36650
+Node: Q1.3.5\7f37414
+Node: Q1.3.6\7f39829
+Node: Q1.3.7\7f41324
+Node: Q1.4.1\7f42259
+Node: Q1.4.2\7f43121
+Node: Q1.4.3\7f43462
+Node: Q1.4.4\7f43881
+Node: Q1.4.5\7f45421
+Node: Q1.4.6\7f45725
+Node: Q1.4.7\7f46733
+Node: Installation\7f47858
+Node: Q2.0.1\7f50264
+Node: Q2.0.2\7f51137
+Node: Q2.0.3\7f58340
+Node: Q2.0.4\7f59638
+Node: Q2.0.5\7f60230
+Node: Q2.0.6\7f60598
+Node: Q2.0.7\7f60979
+Node: Q2.0.8\7f61360
+Node: Q2.0.9\7f62938
+Node: Q2.0.10\7f64376
+Node: Q2.0.11\7f65220
+Node: Q2.0.12\7f66161
+Node: Q2.0.13\7f67684
+Node: Q2.0.14\7f68342
+Node: Q2.1.1\7f68910
+Node: Q2.1.2\7f71652
+Node: Q2.1.3\7f72829
+Node: Q2.1.4\7f74122
+Node: Q2.1.5\7f74921
+Node: Q2.1.6\7f75283
+Node: Q2.1.7\7f75760
+Node: Q2.1.8\7f76113
+Node: Q2.1.9\7f77629
+Node: Q2.1.10\7f78051
+Node: Q2.1.11\7f78808
+Node: Q2.1.12\7f79673
+Node: Q2.1.13\7f80628
+Node: Q2.1.14\7f81659
+Node: Q2.1.15\7f82770
+Node: Q2.1.16\7f88728
+Node: Q2.1.17\7f89422
+Node: Q2.1.18\7f90019
+Node: Q2.1.19\7f91816
+Node: Q2.1.20\7f92346
+Node: Q2.1.21\7f92728
+Node: Q2.1.22\7f93018
+Node: Q2.1.23\7f94315
+Node: Customization\7f94967
+Node: Q3.0.1\7f99854
+Node: Q3.0.2\7f100560
+Node: Q3.0.3\7f101124
+Node: Q3.0.4\7f101541
+Node: Q3.0.5\7f102374
+Node: Q3.0.6\7f103155
+Node: Q3.0.7\7f103735
+Node: Q3.0.8\7f104399
+Node: Q3.0.9\7f105245
+Node: Q3.1.1\7f105806
+Node: Q3.1.2\7f106543
+Node: Q3.1.3\7f106974
+Node: Q3.1.4\7f107559
+Node: Q3.1.5\7f108095
+Node: Q3.1.6\7f108479
+Node: Q3.1.7\7f109160
+Node: Q3.1.8\7f111384
+Node: Q3.2.1\7f111926
+Node: Q3.2.2\7f113334
+Node: Q3.2.3\7f114133
+Node: Q3.2.4\7f114735
+Node: Q3.2.5\7f115769
+Node: Q3.2.6\7f116236
+Node: Q3.3.1\7f117198
+Node: Q3.3.2\7f117591
+Node: Q3.3.3\7f118222
+Node: Q3.3.4\7f118603
+Node: Q3.3.5\7f119697
+Node: Q3.4.1\7f121191
+Node: Q3.4.2\7f121834
+Node: Q3.5.1\7f122346
+Node: Q3.5.2\7f123800
+Node: Q3.5.3\7f124218
+Node: Q3.5.4\7f125058
+Node: Q3.5.5\7f125890
+Node: Q3.5.6\7f127030
+Node: Q3.5.7\7f128020
+Node: Q3.5.8\7f129372
+Node: Q3.5.9\7f130119
+Node: Q3.5.10\7f130899
+Node: Q3.5.11\7f131535
+Node: Q3.6.1\7f132088
+Node: Q3.6.2\7f132828
+Node: Q3.6.3\7f133256
+Node: Q3.7.1\7f133756
+Node: Q3.7.2\7f134644
+Node: Q3.7.3\7f135303
+Node: Q3.7.4\7f135725
+Node: Q3.7.5\7f136068
+Node: Q3.7.6\7f136536
+Node: Q3.7.7\7f137251
+Node: Q3.7.8\7f138271
+Node: Q3.8.1\7f138690
+Node: Q3.8.2\7f139150
+Node: Q3.8.3\7f139613
+Node: Q3.8.4\7f140219
+Node: Q3.8.5\7f140938
+Node: Q3.9.1\7f141723
+Node: Q3.9.2\7f142663
+Node: Q3.9.3\7f143261
+Node: Q3.9.4\7f143923
+Node: Q3.10.1\7f144802
+Node: Q3.10.2\7f145620
+Node: Q3.10.3\7f146401
+Node: Q3.10.4\7f147129
+Node: Q3.10.5\7f147512
+Node: Subsystems\7f148522
+Node: Q4.0.1\7f151007
+Node: Q4.0.2\7f151532
+Node: Q4.0.3\7f152090
+Node: Q4.0.4\7f152411
+Node: Q4.0.5\7f152653
+Node: Q4.0.6\7f152884
+Node: Q4.0.7\7f153465
+Node: Q4.0.8\7f153790
+Node: Q4.0.9\7f155017
+Node: Q4.0.10\7f157055
+Node: Q4.0.11\7f157509
+Node: Q4.0.12\7f158359
+Node: Q4.1.1\7f159332
+Node: Q4.1.2\7f159735
+Node: Q4.1.3\7f160062
+Node: Q4.2.1\7f160371
+Node: Q4.2.2\7f161001
+Node: Q4.2.3\7f161241
+Node: Q4.2.4\7f161785
+Node: Q4.3.1\7f162438
+Node: Q4.3.2\7f163022
+Node: Q4.3.3\7f164503
+Node: Q4.3.4\7f164775
+Node: Q4.3.5\7f165452
+Node: Q4.4.1\7f166080
+Node: Q4.4.2\7f167566
+Node: Q4.5.1\7f168770
+Node: Q4.6.1\7f169539
+Node: Q4.7.1\7f174799
+Node: Q4.7.2\7f175754
+Node: Q4.7.3\7f176051
+Node: Q4.7.4\7f176397
+Node: Q4.7.5\7f177281
+Node: Q4.7.6\7f178923
+Node: Miscellaneous\7f179517
+Node: Q5.0.1\7f182937
+Node: Q5.0.2\7f183671
+Node: Q5.0.3\7f184525
+Node: Q5.0.4\7f185227
+Node: Q5.0.5\7f186166
+Node: Q5.0.6\7f188146
+Node: Q5.0.7\7f188803
+Node: Q5.0.8\7f189408
+Node: Q5.0.9\7f189927
+Node: Q5.0.10\7f190441
+Node: Q5.0.11\7f190689
+Node: Q5.0.12\7f191250
+Node: Q5.0.13\7f192167
+Node: Q5.0.14\7f192851
+Node: Q5.0.15\7f193616
+Node: Q5.0.16\7f193913
+Node: Q5.0.17\7f194425
+Node: Q5.0.18\7f194690
+Node: Q5.0.19\7f195216
+Node: Q5.0.20\7f195640
+Node: Q5.1.1\7f196555
+Node: Q5.1.2\7f198624
+Node: Q5.1.3\7f199360
+Node: Q5.1.4\7f202754
+Node: Q5.1.5\7f203289
+Node: Q5.1.6\7f205383
+Node: Q5.1.7\7f206772
+Node: Q5.1.8\7f208373
+Node: Q5.1.9\7f208925
+Node: Q5.1.10\7f209810
+Node: Q5.1.11\7f210941
+Node: Q5.2.1\7f211490
+Node: Q5.2.2\7f212061
+Node: Q5.2.3\7f212478
+Node: Q5.2.4\7f212713
+Node: Q5.3.1\7f213623
+Node: Q5.3.2\7f214844
+Node: Q5.3.3\7f215620
+Node: Q5.3.4\7f216104
+Node: Q5.3.5\7f216771
+Node: Q5.3.6\7f217640
+Node: Q5.3.7\7f217885
+Node: Q5.3.8\7f220075
+Node: Q5.3.9\7f220322
+Node: Q5.3.10\7f221275
+Node: Q5.3.11\7f223359
+Node: Q5.3.12\7f224908
+Node: MS Windows\7f226182
+Node: Q6.0.1\7f227513
+Node: Q6.0.2\7f228260
+Node: Q6.0.3\7f228725
+Node: Q6.0.4\7f229005
+Node: Q6.1.1\7f231286
+Node: Q6.1.2\7f232157
+Node: Q6.1.3\7f232438
+Node: Q6.1.4\7f232720
+Node: Q6.1.5\7f233098
+Node: Q6.1.6\7f233930
+Node: Q6.2.1\7f234514
+Node: Q6.2.2\7f235415
+Node: Q6.2.3\7f235816
+Node: Q6.3.1\7f236105
+Node: Q6.3.2\7f237199
+Node: Q6.3.3\7f240380
+Node: Current Events\7f240634
+Node: Q7.0.1\7f241288
+Node: Q7.0.2\7f241927
+Node: Q7.0.3\7f243001
+Node: Q7.0.4\7f243229
 \1f
 End Tag Table
index 6d7aef0..80b96e3 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
-xemacs-faq.texi.
+This is ../info/xemacs-faq.info, produced by makeinfo version 3.12s
+from xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
index 2ea10ef..f540c5c 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
-xemacs-faq.texi.
+This is ../info/xemacs-faq.info, produced by makeinfo version 3.12s
+from xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
index 363dfef..0c24c82 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
-xemacs-faq.texi.
+This is ../info/xemacs-faq.info, produced by makeinfo version 3.12s
+from xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
index 769fb4c..01b60d1 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
-xemacs-faq.texi.
+This is ../info/xemacs-faq.info, produced by makeinfo version 3.12s
+from xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
index 60053a1..a87a738 100644 (file)
@@ -1,5 +1,5 @@
-This is ../info/xemacs-faq.info, produced by makeinfo version 4.0 from
-xemacs-faq.texi.
+This is ../info/xemacs-faq.info, produced by makeinfo version 3.12s
+from xemacs-faq.texi.
 
 INFO-DIR-SECTION XEmacs Editor
 START-INFO-DIR-ENTRY
index 2347717..17d169c 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
@@ -31,368 +31,368 @@ translation approved by the author instead of in the original English.
 
 \1f
 Indirect:
-xemacs.info-1: 1350
-xemacs.info-2: 47938
-xemacs.info-3: 95895
-xemacs.info-4: 143999
-xemacs.info-5: 192198
-xemacs.info-6: 241563
-xemacs.info-7: 290379
-xemacs.info-8: 339922
-xemacs.info-9: 385201
-xemacs.info-10: 433025
-xemacs.info-11: 482195
-xemacs.info-12: 531344
-xemacs.info-13: 580168
-xemacs.info-14: 628309
-xemacs.info-15: 677063
-xemacs.info-16: 726588
-xemacs.info-17: 775149
-xemacs.info-18: 819067
-xemacs.info-19: 860230
-xemacs.info-20: 908226
-xemacs.info-21: 948946
+xemacs.info-1: 1352
+xemacs.info-2: 47940
+xemacs.info-3: 95897
+xemacs.info-4: 144001
+xemacs.info-5: 192200
+xemacs.info-6: 241565
+xemacs.info-7: 290381
+xemacs.info-8: 339924
+xemacs.info-9: 385203
+xemacs.info-10: 433027
+xemacs.info-11: 482197
+xemacs.info-12: 531346
+xemacs.info-13: 580170
+xemacs.info-14: 628311
+xemacs.info-15: 677065
+xemacs.info-16: 726590
+xemacs.info-17: 775151
+xemacs.info-18: 819069
+xemacs.info-19: 860232
+xemacs.info-20: 908228
+xemacs.info-21: 948948
 \1f
 Tag Table:
 (Indirect)
-Node: Top\7f1350
-Node: License\7f22509
-Node: Distrib\7f35791
-Node: Intro\7f37455
-Node: Frame\7f40326
-Node: Point\7f43594
-Node: Echo Area\7f45561
-Node: Mode Line\7f47938
-Node: XEmacs under X\7f52369
-Node: Keystrokes\7f55546
-Node: Intro to Keystrokes\7f56390
-Node: Representing Keystrokes\7f58493
-Node: Key Sequences\7f59850
-Node: String Key Sequences\7f63190
-Node: Meta Key\7f63573
-Node: Super and Hyper Keys\7f65046
-Node: Character Representation\7f71270
-Node: Commands\7f72290
-Node: Pull-down Menus\7f75139
-Node: File Menu\7f78488
-Node: Edit Menu\7f82310
-Node: Apps Menu\7f84693
-Node: Options Menu\7f85183
-Node: Buffers Menu\7f89163
-Node: Tools Menu\7f89470
-Node: Help Menu\7f89961
-Node: Menu Customization\7f90362
-Node: Entering Emacs\7f94592
-Node: Exiting\7f95895
-Node: Command Switches\7f98986
-Node: Startup Paths\7f108173
-Node: Basic\7f115753
-Node: Blank Lines\7f125231
-Node: Continuation Lines\7f126657
-Node: Position Info\7f128089
-Node: Arguments\7f131222
-Node: Undo\7f134359
-Node: Minibuffer\7f137306
-Node: Minibuffer File\7f139790
-Node: Minibuffer Edit\7f141426
-Node: Completion\7f143999
-Node: Repetition\7f150874
-Node: M-x\7f153666
-Node: Help\7f158760
-Node: Mark\7f168679
-Node: Setting Mark\7f170533
-Node: Using Region\7f173655
-Node: Marking Objects\7f174392
-Node: Mark Ring\7f176230
-Node: Mouse Selection\7f177946
-Node: Additional Mouse Operations\7f179953
-Node: Killing\7f184157
-Node: Yanking\7f189793
-Node: Kill Ring\7f190596
-Node: Appending Kills\7f192198
-Node: Earlier Kills\7f194235
-Node: Using X Selections\7f196848
-Node: X Clipboard Selection\7f198098
-Node: X Selection Commands\7f200275
-Node: X Cut Buffers\7f201361
-Node: Active Regions\7f202720
-Node: Accumulating Text\7f207300
-Node: Rectangles\7f210373
-Node: Registers\7f213892
-Node: RegPos\7f214926
-Node: RegText\7f215829
-Node: RegRect\7f216913
-Node: Display\7f217653
-Node: Scrolling\7f219148
-Node: Horizontal Scrolling\7f223291
-Node: Selective Display\7f224486
-Node: Display Vars\7f225705
-Node: Search\7f228383
-Node: Incremental Search\7f229576
-Node: Non-Incremental Search\7f238503
-Node: Word Search\7f239945
-Node: Regexp Search\7f241563
-Node: Regexps\7f243099
-Node: Search Case\7f253400
-Node: Replace\7f254181
-Node: Unconditional Replace\7f255129
-Node: Regexp Replace\7f256264
-Node: Replacement and Case\7f257199
-Node: Query Replace\7f258179
-Node: Other Repeating Search\7f261406
-Node: Fixit\7f262661
-Node: Kill Errors\7f263241
-Node: Transpose\7f264574
-Node: Fixing Case\7f266978
-Node: Spelling\7f267624
-Node: Files\7f269085
-Node: File Names\7f270395
-Node: Visiting\7f274732
-Node: Saving\7f281418
-Node: Backup\7f286341
-Node: Backup Names\7f287737
-Node: Backup Deletion\7f289220
-Node: Backup Copying\7f290379
-Node: Interlocking\7f292085
-Node: Reverting\7f296213
-Node: Auto Save\7f298125
-Node: Auto Save Files\7f299092
-Node: Auto Save Control\7f300933
-Node: Recover\7f302771
-Node: Version Control\7f303926
-Node: Concepts of VC\7f305964
-Node: Editing with VC\7f307574
-Node: Variables for Check-in/out\7f312830
-Node: Log Entries\7f314729
-Node: Change Logs and VC\7f315909
-Node: Old Versions\7f319176
-Node: VC Status\7f321179
-Node: Renaming and VC\7f322893
-Node: Snapshots\7f323572
-Node: Making Snapshots\7f324073
-Node: Snapshot Caveats\7f325366
-Node: Version Headers\7f327175
-Node: ListDir\7f329874
-Node: Comparing Files\7f331923
-Node: Dired\7f333456
-Node: Dired Enter\7f334127
-Node: Dired Edit\7f334952
-Node: Dired Deletion\7f336699
-Node: Dired Immed\7f339922
-Node: Misc File Ops\7f341198
-Node: Buffers\7f343686
-Node: Select Buffer\7f345844
-Node: List Buffers\7f347639
-Node: Misc Buffer\7f349384
-Node: Kill Buffer\7f351027
-Node: Several Buffers\7f352157
-Node: Windows\7f356023
-Node: Basic Window\7f356734
-Node: Split Window\7f358453
-Node: Other Window\7f360586
-Node: Pop Up Window\7f363015
-Node: Change Window\7f364520
-Node: Mule\7f367428
-Node: Mule Intro\7f368691
-Node: Language Environments\7f369707
-Node: Input Methods\7f371814
-Node: Select Input Method\7f375534
-Node: Coding Systems\7f377689
-Node: Recognize Coding\7f381875
-Node: Specify Coding\7f385201
-Node: Major Modes\7f390132
-Node: Choosing Modes\7f392351
-Node: Indentation\7f394741
-Node: Indentation Commands\7f396836
-Node: Tab Stops\7f399565
-Node: Just Spaces\7f401414
-Node: Text\7f402229
-Node: Text Mode\7f404212
-Node: Nroff Mode\7f406291
-Node: TeX Mode\7f407934
-Node: TeX Editing\7f410186
-Node: TeX Print\7f413620
-Node: Outline Mode\7f416839
-Node: Outline Format\7f418320
-Node: Outline Motion\7f421120
-Node: Outline Visibility\7f422673
-Node: Words\7f425594
-Node: Sentences\7f428541
-Node: Paragraphs\7f430737
-Node: Pages\7f433025
-Node: Filling\7f435625
-Node: Auto Fill\7f436196
-Node: Fill Commands\7f438343
-Node: Fill Prefix\7f440508
-Node: Case\7f442696
-Node: Programs\7f444724
-Node: Program Modes\7f447273
-Node: Lists\7f449505
-Node: Defuns\7f455345
-Node: Grinding\7f457998
-Node: Basic Indent\7f458626
-Node: Multi-line Indent\7f460647
-Node: Lisp Indent\7f462263
-Node: C Indent\7f465713
-Node: Matching\7f470953
-Node: Comments\7f472475
-Node: Balanced Editing\7f478927
-Node: Lisp Completion\7f479941
-Node: Documentation\7f480956
-Node: Change Log\7f482195
-Node: Tags\7f484773
-Node: Tag Syntax\7f486422
-Node: Create Tags Table\7f490366
-Node: Etags Regexps\7f494426
-Node: Select Tags Table\7f499084
-Node: Find Tag\7f502822
-Node: Tags Search\7f505786
-Node: List Tags\7f509242
-Node: Fortran\7f510271
-Node: Fortran Motion\7f511347
-Node: Fortran Indent\7f512167
-Node: ForIndent Commands\7f512852
-Node: ForIndent Num\7f513997
-Node: ForIndent Conv\7f515271
-Node: ForIndent Vars\7f516047
-Node: Fortran Comments\7f517215
-Node: Fortran Columns\7f520813
-Node: Fortran Abbrev\7f522236
-Node: Asm Mode\7f523145
-Node: Running\7f523697
-Node: Compilation\7f524667
-Node: Lisp Modes\7f529517
-Node: Lisp Libraries\7f530790
-Node: Loading\7f531344
-Node: Compiling Libraries\7f535804
-Node: Mocklisp\7f538695
-Node: Lisp Eval\7f539372
-Node: Lisp Debug\7f543012
-Node: Lisp Interaction\7f548437
-Node: External Lisp\7f549792
-Node: Packages\7f551866
-Node: Package Terminology\7f552607
-Node: Using Packages\7f553965
-Node: Building Packages\7f562754
-Node: Abbrevs\7f565276
-Node: Defining Abbrevs\7f567476
-Node: Expanding Abbrevs\7f569923
-Node: Editing Abbrevs\7f572625
-Node: Saving Abbrevs\7f574493
-Node: Dynamic Abbrevs\7f576433
-Node: Picture\7f577735
-Node: Basic Picture\7f580168
-Node: Insert in Picture\7f582453
-Node: Tabs in Picture\7f583875
-Node: Rectangles in Picture\7f585396
-Node: Sending Mail\7f587304
-Node: Mail Format\7f589015
-Node: Mail Headers\7f590365
-Node: Mail Mode\7f596775
-Node: Reading Mail\7f600388
-Node: Calendar/Diary\7f601963
-Node: Calendar Motion\7f603635
-Node: Calendar Unit Motion\7f604518
-Node: Move to Beginning or End\7f606841
-Node: Specified Dates\7f607974
-Node: Scroll Calendar\7f608862
-Node: Mark and Region\7f610653
-Node: General Calendar\7f612559
-Node: LaTeX Calendar\7f614167
-Node: Holidays\7f616181
-Node: Sunrise/Sunset\7f619283
-Node: Lunar Phases\7f622326
-Node: Other Calendars\7f623711
-Node: Calendar Systems\7f625198
-Node: To Other Calendar\7f628309
-Node: From Other Calendar\7f630300
-Node: Mayan Calendar\7f632605
-Node: Diary\7f635800
-Node: Diary Commands\7f637549
-Node: Format of Diary File\7f640855
-Node: Date Formats\7f643725
-Node: Adding to Diary\7f646299
-Node: Special Diary Entries\7f647930
-Node: Calendar Customization\7f653269
-Node: Calendar Customizing\7f654131
-Node: Holiday Customizing\7f657350
-Node: Date Display Format\7f663818
-Node: Time Display Format\7f664776
-Node: Daylight Savings\7f665914
-Node: Diary Customizing\7f669102
-Node: Hebrew/Islamic Entries\7f673723
-Node: Fancy Diary Display\7f677063
-Node: Included Diary Files\7f678960
-Node: Sexp Diary Entries\7f679941
-Node: Appt Customizing\7f685031
-Node: Sorting\7f686077
-Node: Shell\7f690883
-Node: Single Shell\7f692176
-Node: Interactive Shell\7f693775
-Node: Shell Mode\7f697540
-Node: Terminal emulator\7f700031
-Node: Term Mode\7f702340
-Node: Paging in Term\7f703254
-Node: Narrowing\7f704052
-Node: Hardcopy\7f706002
-Node: Recursive Edit\7f706974
-Node: Dissociated Press\7f709961
-Node: CONX\7f712524
-Node: Amusements\7f713548
-Node: Emulation\7f714028
-Node: Customization\7f715872
-Node: Minor Modes\7f717596
-Node: Variables\7f719228
-Node: Examining\7f721184
-Node: Easy Customization\7f722645
-Node: Customization Groups\7f723659
-Node: Changing an Option\7f726588
-Node: Face Customization\7f732844
-Node: Specific Customization\7f734608
-Node: Edit Options\7f737215
-Node: Locals\7f738799
-Node: File Variables\7f741978
-Node: Keyboard Macros\7f746504
-Node: Basic Kbd Macro\7f748675
-Node: Save Kbd Macro\7f750607
-Node: Kbd Macro Query\7f752276
-Node: Key Bindings\7f754218
-Node: Keymaps\7f755092
-Node: Rebinding\7f758942
-Node: Interactive Rebinding\7f759638
-Node: Programmatic Rebinding\7f761830
-Node: Key Bindings Using Strings\7f764637
-Node: Disabling\7f766243
-Node: Syntax\7f768015
-Node: Syntax Entry\7f768896
-Node: Syntax Change\7f772980
-Node: Init File\7f775149
-Node: Init Syntax\7f776654
-Node: Init Examples\7f779006
-Node: Terminal Init\7f783196
-Node: Audible Bell\7f784906
-Node: Faces\7f788337
-Node: X Resources\7f793174
-Node: Geometry Resources\7f794795
-Node: Iconic Resources\7f797243
-Node: Resource List\7f797715
-Node: Face Resources\7f804222
-Node: Widgets\7f807899
-Node: Menubar Resources\7f808838
-Node: Quitting\7f809771
-Node: Lossage\7f812749
-Node: Stuck Recursive\7f813393
-Node: Screen Garbled\7f814099
-Node: Text Garbled\7f815233
-Node: Unasked-for Search\7f815872
-Node: Emergency Escape\7f816657
-Node: Total Frustration\7f818436
-Node: Bugs\7f819067
-Node: Glossary\7f828601
-Node: Manifesto\7f860230
-Node: Key Index\7f883706
-Node: Command Index\7f908226
-Node: Variable Index\7f948946
-Node: Concept Index\7f964897
+Node: Top\7f1352
+Node: License\7f22511
+Node: Distrib\7f35793
+Node: Intro\7f37457
+Node: Frame\7f40328
+Node: Point\7f43596
+Node: Echo Area\7f45563
+Node: Mode Line\7f47940
+Node: XEmacs under X\7f52371
+Node: Keystrokes\7f55548
+Node: Intro to Keystrokes\7f56392
+Node: Representing Keystrokes\7f58495
+Node: Key Sequences\7f59852
+Node: String Key Sequences\7f63192
+Node: Meta Key\7f63575
+Node: Super and Hyper Keys\7f65048
+Node: Character Representation\7f71272
+Node: Commands\7f72292
+Node: Pull-down Menus\7f75141
+Node: File Menu\7f78490
+Node: Edit Menu\7f82312
+Node: Apps Menu\7f84695
+Node: Options Menu\7f85185
+Node: Buffers Menu\7f89165
+Node: Tools Menu\7f89472
+Node: Help Menu\7f89963
+Node: Menu Customization\7f90364
+Node: Entering Emacs\7f94594
+Node: Exiting\7f95897
+Node: Command Switches\7f98988
+Node: Startup Paths\7f108175
+Node: Basic\7f115755
+Node: Blank Lines\7f125233
+Node: Continuation Lines\7f126659
+Node: Position Info\7f128091
+Node: Arguments\7f131224
+Node: Undo\7f134361
+Node: Minibuffer\7f137308
+Node: Minibuffer File\7f139792
+Node: Minibuffer Edit\7f141428
+Node: Completion\7f144001
+Node: Repetition\7f150876
+Node: M-x\7f153668
+Node: Help\7f158762
+Node: Mark\7f168681
+Node: Setting Mark\7f170535
+Node: Using Region\7f173657
+Node: Marking Objects\7f174394
+Node: Mark Ring\7f176232
+Node: Mouse Selection\7f177948
+Node: Additional Mouse Operations\7f179955
+Node: Killing\7f184159
+Node: Yanking\7f189795
+Node: Kill Ring\7f190598
+Node: Appending Kills\7f192200
+Node: Earlier Kills\7f194237
+Node: Using X Selections\7f196850
+Node: X Clipboard Selection\7f198100
+Node: X Selection Commands\7f200277
+Node: X Cut Buffers\7f201363
+Node: Active Regions\7f202722
+Node: Accumulating Text\7f207302
+Node: Rectangles\7f210375
+Node: Registers\7f213894
+Node: RegPos\7f214928
+Node: RegText\7f215831
+Node: RegRect\7f216915
+Node: Display\7f217655
+Node: Scrolling\7f219150
+Node: Horizontal Scrolling\7f223293
+Node: Selective Display\7f224488
+Node: Display Vars\7f225707
+Node: Search\7f228385
+Node: Incremental Search\7f229578
+Node: Non-Incremental Search\7f238505
+Node: Word Search\7f239947
+Node: Regexp Search\7f241565
+Node: Regexps\7f243101
+Node: Search Case\7f253402
+Node: Replace\7f254183
+Node: Unconditional Replace\7f255131
+Node: Regexp Replace\7f256266
+Node: Replacement and Case\7f257201
+Node: Query Replace\7f258181
+Node: Other Repeating Search\7f261408
+Node: Fixit\7f262663
+Node: Kill Errors\7f263243
+Node: Transpose\7f264576
+Node: Fixing Case\7f266980
+Node: Spelling\7f267626
+Node: Files\7f269087
+Node: File Names\7f270397
+Node: Visiting\7f274734
+Node: Saving\7f281420
+Node: Backup\7f286343
+Node: Backup Names\7f287739
+Node: Backup Deletion\7f289222
+Node: Backup Copying\7f290381
+Node: Interlocking\7f292087
+Node: Reverting\7f296215
+Node: Auto Save\7f298127
+Node: Auto Save Files\7f299094
+Node: Auto Save Control\7f300935
+Node: Recover\7f302773
+Node: Version Control\7f303928
+Node: Concepts of VC\7f305966
+Node: Editing with VC\7f307576
+Node: Variables for Check-in/out\7f312832
+Node: Log Entries\7f314731
+Node: Change Logs and VC\7f315911
+Node: Old Versions\7f319178
+Node: VC Status\7f321181
+Node: Renaming and VC\7f322895
+Node: Snapshots\7f323574
+Node: Making Snapshots\7f324075
+Node: Snapshot Caveats\7f325368
+Node: Version Headers\7f327177
+Node: ListDir\7f329876
+Node: Comparing Files\7f331925
+Node: Dired\7f333458
+Node: Dired Enter\7f334129
+Node: Dired Edit\7f334954
+Node: Dired Deletion\7f336701
+Node: Dired Immed\7f339924
+Node: Misc File Ops\7f341200
+Node: Buffers\7f343688
+Node: Select Buffer\7f345846
+Node: List Buffers\7f347641
+Node: Misc Buffer\7f349386
+Node: Kill Buffer\7f351029
+Node: Several Buffers\7f352159
+Node: Windows\7f356025
+Node: Basic Window\7f356736
+Node: Split Window\7f358455
+Node: Other Window\7f360588
+Node: Pop Up Window\7f363017
+Node: Change Window\7f364522
+Node: Mule\7f367430
+Node: Mule Intro\7f368693
+Node: Language Environments\7f369709
+Node: Input Methods\7f371816
+Node: Select Input Method\7f375536
+Node: Coding Systems\7f377691
+Node: Recognize Coding\7f381877
+Node: Specify Coding\7f385203
+Node: Major Modes\7f390134
+Node: Choosing Modes\7f392353
+Node: Indentation\7f394743
+Node: Indentation Commands\7f396838
+Node: Tab Stops\7f399567
+Node: Just Spaces\7f401416
+Node: Text\7f402231
+Node: Text Mode\7f404214
+Node: Nroff Mode\7f406293
+Node: TeX Mode\7f407936
+Node: TeX Editing\7f410188
+Node: TeX Print\7f413622
+Node: Outline Mode\7f416841
+Node: Outline Format\7f418322
+Node: Outline Motion\7f421122
+Node: Outline Visibility\7f422675
+Node: Words\7f425596
+Node: Sentences\7f428543
+Node: Paragraphs\7f430739
+Node: Pages\7f433027
+Node: Filling\7f435627
+Node: Auto Fill\7f436198
+Node: Fill Commands\7f438345
+Node: Fill Prefix\7f440510
+Node: Case\7f442698
+Node: Programs\7f444726
+Node: Program Modes\7f447275
+Node: Lists\7f449507
+Node: Defuns\7f455347
+Node: Grinding\7f458000
+Node: Basic Indent\7f458628
+Node: Multi-line Indent\7f460649
+Node: Lisp Indent\7f462265
+Node: C Indent\7f465715
+Node: Matching\7f470955
+Node: Comments\7f472477
+Node: Balanced Editing\7f478929
+Node: Lisp Completion\7f479943
+Node: Documentation\7f480958
+Node: Change Log\7f482197
+Node: Tags\7f484775
+Node: Tag Syntax\7f486424
+Node: Create Tags Table\7f490368
+Node: Etags Regexps\7f494428
+Node: Select Tags Table\7f499086
+Node: Find Tag\7f502824
+Node: Tags Search\7f505788
+Node: List Tags\7f509244
+Node: Fortran\7f510273
+Node: Fortran Motion\7f511349
+Node: Fortran Indent\7f512169
+Node: ForIndent Commands\7f512854
+Node: ForIndent Num\7f513999
+Node: ForIndent Conv\7f515273
+Node: ForIndent Vars\7f516049
+Node: Fortran Comments\7f517217
+Node: Fortran Columns\7f520815
+Node: Fortran Abbrev\7f522238
+Node: Asm Mode\7f523147
+Node: Running\7f523699
+Node: Compilation\7f524669
+Node: Lisp Modes\7f529519
+Node: Lisp Libraries\7f530792
+Node: Loading\7f531346
+Node: Compiling Libraries\7f535806
+Node: Mocklisp\7f538697
+Node: Lisp Eval\7f539374
+Node: Lisp Debug\7f543014
+Node: Lisp Interaction\7f548439
+Node: External Lisp\7f549794
+Node: Packages\7f551868
+Node: Package Terminology\7f552609
+Node: Using Packages\7f553967
+Node: Building Packages\7f562756
+Node: Abbrevs\7f565278
+Node: Defining Abbrevs\7f567478
+Node: Expanding Abbrevs\7f569925
+Node: Editing Abbrevs\7f572627
+Node: Saving Abbrevs\7f574495
+Node: Dynamic Abbrevs\7f576435
+Node: Picture\7f577737
+Node: Basic Picture\7f580170
+Node: Insert in Picture\7f582455
+Node: Tabs in Picture\7f583877
+Node: Rectangles in Picture\7f585398
+Node: Sending Mail\7f587306
+Node: Mail Format\7f589017
+Node: Mail Headers\7f590367
+Node: Mail Mode\7f596777
+Node: Reading Mail\7f600390
+Node: Calendar/Diary\7f601965
+Node: Calendar Motion\7f603637
+Node: Calendar Unit Motion\7f604520
+Node: Move to Beginning or End\7f606843
+Node: Specified Dates\7f607976
+Node: Scroll Calendar\7f608864
+Node: Mark and Region\7f610655
+Node: General Calendar\7f612561
+Node: LaTeX Calendar\7f614169
+Node: Holidays\7f616183
+Node: Sunrise/Sunset\7f619285
+Node: Lunar Phases\7f622328
+Node: Other Calendars\7f623713
+Node: Calendar Systems\7f625200
+Node: To Other Calendar\7f628311
+Node: From Other Calendar\7f630302
+Node: Mayan Calendar\7f632607
+Node: Diary\7f635802
+Node: Diary Commands\7f637551
+Node: Format of Diary File\7f640857
+Node: Date Formats\7f643727
+Node: Adding to Diary\7f646301
+Node: Special Diary Entries\7f647932
+Node: Calendar Customization\7f653271
+Node: Calendar Customizing\7f654133
+Node: Holiday Customizing\7f657352
+Node: Date Display Format\7f663820
+Node: Time Display Format\7f664778
+Node: Daylight Savings\7f665916
+Node: Diary Customizing\7f669104
+Node: Hebrew/Islamic Entries\7f673725
+Node: Fancy Diary Display\7f677065
+Node: Included Diary Files\7f678962
+Node: Sexp Diary Entries\7f679943
+Node: Appt Customizing\7f685033
+Node: Sorting\7f686079
+Node: Shell\7f690885
+Node: Single Shell\7f692178
+Node: Interactive Shell\7f693777
+Node: Shell Mode\7f697542
+Node: Terminal emulator\7f700033
+Node: Term Mode\7f702342
+Node: Paging in Term\7f703256
+Node: Narrowing\7f704054
+Node: Hardcopy\7f706004
+Node: Recursive Edit\7f706976
+Node: Dissociated Press\7f709963
+Node: CONX\7f712526
+Node: Amusements\7f713550
+Node: Emulation\7f714030
+Node: Customization\7f715874
+Node: Minor Modes\7f717598
+Node: Variables\7f719230
+Node: Examining\7f721186
+Node: Easy Customization\7f722647
+Node: Customization Groups\7f723661
+Node: Changing an Option\7f726590
+Node: Face Customization\7f732846
+Node: Specific Customization\7f734610
+Node: Edit Options\7f737217
+Node: Locals\7f738801
+Node: File Variables\7f741980
+Node: Keyboard Macros\7f746506
+Node: Basic Kbd Macro\7f748677
+Node: Save Kbd Macro\7f750609
+Node: Kbd Macro Query\7f752278
+Node: Key Bindings\7f754220
+Node: Keymaps\7f755094
+Node: Rebinding\7f758944
+Node: Interactive Rebinding\7f759640
+Node: Programmatic Rebinding\7f761832
+Node: Key Bindings Using Strings\7f764639
+Node: Disabling\7f766245
+Node: Syntax\7f768017
+Node: Syntax Entry\7f768898
+Node: Syntax Change\7f772982
+Node: Init File\7f775151
+Node: Init Syntax\7f776656
+Node: Init Examples\7f779008
+Node: Terminal Init\7f783198
+Node: Audible Bell\7f784908
+Node: Faces\7f788339
+Node: X Resources\7f793176
+Node: Geometry Resources\7f794797
+Node: Iconic Resources\7f797245
+Node: Resource List\7f797717
+Node: Face Resources\7f804224
+Node: Widgets\7f807901
+Node: Menubar Resources\7f808840
+Node: Quitting\7f809773
+Node: Lossage\7f812751
+Node: Stuck Recursive\7f813395
+Node: Screen Garbled\7f814101
+Node: Text Garbled\7f815235
+Node: Unasked-for Search\7f815874
+Node: Emergency Escape\7f816659
+Node: Total Frustration\7f818438
+Node: Bugs\7f819069
+Node: Glossary\7f828603
+Node: Manifesto\7f860232
+Node: Key Index\7f883708
+Node: Command Index\7f908228
+Node: Variable Index\7f948948
+Node: Concept Index\7f964899
 \1f
 End Tag Table
index 0055d09..7b8b001 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 1cb91de..ab72b52 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 7e31e57..7ecfaef 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 5192c01..4630e51 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index b6611e5..870d61e 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index aaaefb4..3a1dcaf 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 60eb892..ebeb838 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 60e6232..de5c1bf 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index e3c07cc..93f33a0 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 0789438..f97f6ef 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index cd04dc6..3b4ba89 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 40909ac..43a9b7e 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index b1879d6..c212a61 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index f16774b..06d3b1e 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index e6fe2a8..41e774e 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 66ed5a7..ca4fd3d 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 9dc6019..0923e18 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index db65e78..f4de8e8 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 4fa7c51..45b047d 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 811bbe5..7f8258b 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index 0c68a6c..29af4a3 100644 (file)
@@ -1,4 +1,4 @@
-This is ../info/xemacs.info, produced by makeinfo version 4.0 from
+This is ../info/xemacs.info, produced by makeinfo version 3.12s from
 xemacs/xemacs.texi.
 
 INFO-DIR-SECTION XEmacs Editor
index ae4dbc1..604446a 100644 (file)
@@ -1,3 +1,7 @@
+1999-10-04  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * update-elc.sh (ignore_dirs): Ignore lisp/utf-2000 subdirectory.
+
 1999-12-14  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.24 is released.
index e333051..985cfa9 100644 (file)
@@ -112,6 +112,8 @@ else
   echo Yes
 fi
 
+ignore_dirs="$ignore_dirs utf-2000"
+
 # first recompile the byte-compiler, so that the other compiles take place
 # with the latest version (assuming we're compiling the lisp dir of the emacs
 # we're running, which might not be the case, but often is.)
index 610a833..2eaa56f 100644 (file)
@@ -1,3 +1,488 @@
+1999-11-15  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "u031A0-Extended-Bopomofo" in UTF-2000.
+
+       * utf-2000/u031A0-Extended-Bopomofo.el: New file.
+
+1999-11-15  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * dumped-lisp.el (preloaded-file-list): u02E00-CJK-Radicals was
+       renamed to u02E00-CJK-Radical-Supplement.
+
+       * utf-2000/u02E00-CJK-Radical-Supplement.el: Renamed from
+       u02E00-CJK-Radicals.el.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "u03000-CJK-Symbols-and-Punctuation", "u03040-Hiragana",
+       "u030A0-Katakana", "u03100-Bopomofo",
+       "u03130-Hangul-Compatibility-Jamo", "u03190-Kanbun",
+       "u03200-Enclosed-CJK-Letters-and-Months" and
+       "u03300-CJK-Compatibility".
+
+       * utf-2000/u03000-CJK-Symbols-and-Punctuation.el,
+       utf-2000/u03040-Hiragana.el, utf-2000/u030A0-Katakana.el,
+       utf-2000/u03100-Bopomofo.el,
+       utf-2000/u03130-Hangul-Compatibility-Jamo.el,
+       utf-2000/u03190-Kanbun.el,
+       utf-2000/u03200-Enclosed-CJK-Letters-and-Months.el,
+       utf-2000/u03300-CJK-Compatibility.el: New files.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Add "u02E00-CJK-Radicals",
+       "u02F00-Kangxi-Radicals" and
+       "u02FF0-Ideographic-Description-Characters".
+
+       * utf-2000/u02E00-CJK-Radicals.el,
+       utf-2000/u02F00-Kangxi-Radicals.el,
+       utf-2000/u02FF0-Ideographic-Description-Characters.el: New files.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "u02600-Miscellaneous-Symbols", "u02700-Dingbats" and
+       "u02800-Braille-Patterns" in UTF-2000.
+
+       * utf-2000/u02600-Miscellaneous-Symbols.el,
+       utf-2000/u02700-Dingbats.el, utf-2000/u02800-Braille-Patterns.el:
+       New files.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Load "uXXXXX-*" instead of
+       "uXXXXX-*.el" in UTF-2000.
+
+       * bytecomp.el (byte-compile-insert-header): Delete comments if
+       non-ASCII characters are found; allow `byte-compile-dynamic' and
+       `byte-compile-dynamic-docstrings' if *.elc will be encoded by
+       `raw-text'.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "u02500-Box-Drawing.el", "u02580-Block-Elements.el" and
+       "u025A0-Geometric-Shapes.el".
+
+       * utf-2000/u02500-Box-Drawing.el,
+       utf-2000/u02580-Block-Elements.el,
+       utf-2000/u025A0-Geometric-Shapes.el: New file.
+
+       * utf-2000/u02500-Box-Drawing.el,
+       utf-2000/u02580-Block-Elements.el,
+       utf-2000/u025A0-Geometric-Shapes.el: New files.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "u02400-Control-Pictures.el", "u02440-OCR.el" and
+       "u02460-Enclosed-Alphanumerics.el".
+
+       * utf-2000/u02400-Control-Pictures.el, utf-2000/u02440-OCR.el,
+       utf-2000/u02460-Enclosed-Alphanumerics.el: New files.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `chinese-gb2312'.
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "u02200-Mathematical-Operators.el" and
+       "u02300-Miscellaneous-Technical.el".
+
+       * utf-2000/u02200-Mathematical-Operators.el,
+       utf-2000/u02300-Miscellaneous-Technical.el: New files.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `chinese-cns11643-*'.
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "u02100-Letterlike-Symbols.el", "u02150-Number-Forms.el" and
+       "u02190-Arrows.el" in UTF-2000.
+
+       * utf-2000/u02100-Letterlike-Symbols.el,
+       utf-2000/u02150-Number-Forms.el, utf-2000/u02190-Arrows.el: New
+       files.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `korean-ksc5601'.
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "u02000-General-Punctuation.el", "u02070-Superscripts.el",
+       "u02080-Subscripts.el", "u020A0-Currency-Symbols.el" and
+       "u020D0-Combining-Diacritical-Marks-for-Symbols.el" in UTF-2000.
+
+       * utf-2000/u02000-General-Punctuation.el,
+       utf-2000/u02070-Superscripts.el, utf-2000/u02080-Subscripts.el,
+       utf-2000/u020A0-Currency-Symbols.el,
+       utf-2000/u020D0-Combining-Diacritical-Marks-for-Symbols.el: New
+       files.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * utf-2000/u00180-Latin-Extended-B.el: Reformatted to print
+       code-point of GR-set as GR value.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * utf-2000/char-db-util.el (insert-char-data): Modify order when
+       CHAR does not have `decimal-digit-value' property.
+
+       * utf-2000/u00100-Latin-Extended-A.el: Reformatted to print
+       code-point of GR-set as GR value.
+       (FULLWIDTH LATIN SMALL LIGATURE IJ): Separated from <LATIN SMALL
+       LIGATURE IJ>.
+
+       * utf-2000/u000A0-Latin-1-Supplement.el: Reformatted to print
+       code-point of GR-set as GR value.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Delete "ccs-viscii.el".
+
+       * utf-2000/ccs-viscii.el: Deleted.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Add "u013A0-Cherokee.el",
+       "u01400-Canadian.el", "u01680-Ogham.el", "u016A0-Runic.el",
+       "u01780-Khmer.el", "u01800-Mongolian.el",
+       "u01E00-Latin-Extended-Additional.el" and
+       "u01F00-Greek-Extended.el" in UTF-2000.
+
+       * utf-2000/u013A0-Cherokee.el, utf-2000/u01400-Canadian.el,
+       utf-2000/u01680-Ogham.el, utf-2000/u016A0-Runic.el,
+       utf-2000/u01780-Khmer.el, utf-2000/u01800-Mongolian.el,
+       utf-2000/u01E00-Latin-Extended-Additional.el,
+       utf-2000/u01F00-Greek-Extended.el: New files.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * utf-2000/char-db-util.el (insert-char-data): Print GR value for
+       GR-set.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `ethiopic-ucs' and `ethiopic'.
+
+       * dumped-lisp.el (preloaded-file-list): Add "u010A0-Georgian.el",
+       "u01100-Hangul-Jamo.el" and "u01200-Ethiopic.el".
+
+       * mule/mule-conf.el: Move definition of coded-charset `ethiopic'
+       from mule/ethiopic.el.
+
+       * mule/ethiopic.el: Move definition of coded-charset `ethiopic' to
+       mule/mule-conf.el.
+
+       * utf-2000/u010A0-Georgian.el, utf-2000/u01100-Hangul-Jamo.el,
+       utf-2000/u01200-Ethiopic.el: New files.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * utf-2000/char-db-util.el (char-db-update-comment): Use
+       mapping-table for `arabic-iso8859-6'.
+       (insert-char-data-with-variant): New function.
+       (insert-char-range-data): Use `insert-char-data-with-variant'.
+       (what-char-definition): Use `insert-char-data-with-variant'
+       instead of `insert-char-data'; use `char-db-update-comment'.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `lao'.
+
+       * mule/mule-conf.el (lao): New coded-charset.
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "u00900-Devanagari.el", "u00980-Bengali.el", "u00A00-Gurmukhi.el",
+       "u00A80-Gujarati.el", "u00B00-Oriya.el", "u00B80-Tamil.el",
+       "u00C00-Telugu.el", "u00C80-Kannada.el", "u00D00-Malayalam.el",
+       "u00D80-Sinhala.el", "u00E00-Thai.el", "u00E80-Lao.el",
+       "u00F00-Tibetan.el" and "u01000-Myanmar.el".
+
+       * utf-2000/u00900-Devanagari.el, utf-2000/u00980-Bengali.el,
+       utf-2000/u00A00-Gurmukhi.el, utf-2000/u00A80-Gujarati.el,
+       utf-2000/u00B00-Oriya.el, utf-2000/u00B80-Tamil.el,
+       utf-2000/u00C00-Telugu.el, utf-2000/u00C80-Kannada.el,
+       utf-2000/u00D00-Malayalam.el, utf-2000/u00D80-Sinhala.el,
+       utf-2000/u00E00-Thai.el, utf-2000/u00E80-Lao.el,
+       utf-2000/u00F00-Tibetan.el, utf-2000/u01000-Myanmar.el: New files.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `ucs-bmp' and `arabic-iso8859-6'.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Add "u00400-Cyrillic.el",
+       "u00530-Armenian.el", "u00590-Hebrew.el", "u00600-Arabic.el",
+       "u00700-Syriac.el" and "u00780-Thaana.el" in UTF-2000.
+
+       * utf-2000/u00400-Cyrillic.el, utf-2000/u00530-Armenian.el,
+       utf-2000/u00590-Hebrew.el, utf-2000/u00600-Arabic.el,
+       utf-2000/u00700-Syriac.el, utf-2000/u00780-Thaana.el: New files.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * utf-2000/u00370-Greek.el (FULLWIDTH GREEK SMALL LETTER BETA):
+       Fix typo.
+
+       * utf-2000/u00300-Combining-Diacritical-Marks.el: Reformatted.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * utf-2000/u002B0-Spacing-Modifier-Letters.el,
+       utf-2000/u00250-IPA-Extensions.el: Reformatted.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * utf-2000/char-db-util.el (insert-char-data): Fix format of
+       `iso-10646-comment'; swap order of `->lowercase' and
+       `->titlecase'.
+
+       * utf-2000/u00180-Latin-Extended-B.el: Merge `latin-viscii'
+       code-points.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * utf-2000/char-db-util.el (char-attribute-name<): New function.
+       (insert-char-data): Use `char-attribute-name<' to sort; change
+       order of `iso-10646-comment'.
+       (char-db-update-comment): Use mapping-table for `latin-viscii-*'.
+
+       * utf-2000/u00100-Latin-Extended-A.el,
+       utf-2000/u000A0-Latin-1-Supplement.el: Merge `latin-viscii'
+       code-points.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * utf-2000/char-db-util.el (insert-char-data): Change order.
+       (insert-char-range-data): Insert variants.
+       (char-db-update-comment): Fix problem with ascii and
+       non-ISO-2022-sets; don't insert control-characters.
+
+       * utf-2000/u00020-Basic-Latin.el: Merge `latin-viscii'
+       code-points.
+
+1999-11-12  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * startup.el (normal-top-level): Load autoload file for UTF-2000
+       in UTF-2000.
+
+       * utf-2000/auto-autoloads.el: New file.
+
+       * utf-2000/char-db-util.el: New file.
+
+1999-11-11  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * utf-2000/u00020-Basic-Latin.el (SPACE): Add `(ipa #x7F)'.
+
+1999-11-11  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * dumped-lisp.el (preloaded-file-list): Add "mule-conf" in Mule;
+       delete "ccs-iso8859-*.el"; add "u00000-C0.el",
+       "u00020-Basic-Latin.el", "u00080-C1.el",
+       "u000A0-Latin-1-Supplement.el", "u00100-Latin-Extended-A.el",
+       "u00180-Latin-Extended-B.el", "u00250-IPA-Extensions.el",
+       "u002B0-Spacing-Modifier-Letters.el",
+       "u00300-Combining-Diacritical-Marks.el" and "u00370-Greek.el" in
+       UTF-2000.
+
+       * utf-2000/ccs-iso8859-2.el, utf-2000/ccs-iso8859-3.el,
+       utf-2000/ccs-iso8859-4.el, utf-2000/ccs-iso8859-9.el: Delete.
+
+       * utf-2000/u00000-C0.el, utf-2000/u00020-Basic-Latin.el,
+       utf-2000/u00080-C1.el, utf-2000/u000A0-Latin-1-Supplement.el,
+       utf-2000/u00180-Latin-Extended-B.el,
+       utf-2000/u00100-Latin-Extended-A.el,
+       utf-2000/u00250-IPA-Extensions.el,
+       utf-2000/u002B0-Spacing-Modifier-Letters.el,
+       utf-2000/u00300-Combining-Diacritical-Marks.el,
+       utf-2000/u00370-Greek.el: New files.
+
+1999-11-10  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `japanese-jisx0212' and `ipa' in UTF-2000; use `latin-viscii-*'
+       instead of `vietnamese-viscii-*'.
+
+1999-11-09  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/mule-conf.el: New file.
+
+       * mule/misc-lang.el: Move definition of charset `ipa' to
+       mule/mule-conf.el.
+
+1999-10-10  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `latin-viscii'; prefer it for characters used in Vietnamese.
+
+       * utf-2000/ccs-viscii.el: Add mapping-table for `latin-viscii'.
+
+1999-10-08   Daiki Ueno  <ueno@ueda.info.waseda.ac.jp>
+
+       * bytecomp.el (byte-compile-insert-header): Fix regexp.
+
+1999-10-07  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * utf-2000/ccs-viscii.el: Rename `vietnamese-viscii-*' to
+       `latin-viscii-*'.
+
+1999-10-07  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/viet-chars.el (latin-viscii-lower): Renamed from charset
+       `vietnamese-viscii-lower'.
+       (latin-viscii-upper): Renamed from charset
+       `vietnamese-viscii-upper'.
+       (vietnamese-viscii-lower): New alias for charset
+       `latin-viscii-lower'.
+       (vietnamese-viscii-upper): New alias for charset
+       `latin-viscii-upper'.
+
+1999-10-05  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list):
+       Comment out `hiragana-jisx0208' and `katakana-jisx0208'.
+
+1999-10-04  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * utf-2000/ccs-iso8859-2.el, utf-2000/ccs-iso8859-3.el,
+       utf-2000/ccs-iso8859-4.el, utf-2000/ccs-iso8859-9.el,
+       utf-2000/ccs-jisx0201-latin.el, utf-2000/ccs-viscii.el,
+       utf-2000/ccs-tcvn5712.el, utf-2000/ccs-jisx0208-1983.el: Moved
+       from lisp/mule.
+
+       * mule/ccs-jisx0208-1983.el, mule/ccs-tcvn5712.el,
+       mule/ccs-viscii.el, mule/ccs-iso8859-9.el,
+       mule/ccs-jisx0201-latin.el, mule/ccs-iso8859-2.el,
+       mule/ccs-iso8859-3.el, mule/ccs-iso8859-4.el: Moved to
+       lisp/utf-2000.
+
+1999-10-03  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/ccs-tcvn5712.el: New file.
+
+1999-10-03  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Add "ccs-jisx0208-1983.el"
+       in UTF-2000.
+
+1999-10-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `japanese-jisx0208'.
+
+1999-10-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * dumped-lisp.el (preloaded-file-list): Add
+       "ccs-jisx0201-latin.el", "ccs-iso8859-2.el", "ccs-iso8859-3.el",
+       "ccs-iso8859-4.el", "ccs-iso8859-9.el" and "ccs-viscii.el" in
+       UTF-2000.
+
+       * mule/ccs-iso8859-2.el, mule/ccs-iso8859-3.el,
+       mule/ccs-iso8859-4.el, mule/ccs-iso8859-9.el,
+       mule/ccs-jisx0201-latin.el, mule/ccs-jisx0208-1983.el,
+       mule/ccs-viscii.el: New files.
+
+       * bytecomp.el (byte-compile-insert-header): Don't use `raw-text'
+       if \uXXXX is found.
+
+1999-09-30  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `hiragana-jisx0208' and `katakana-jisx0208'.
+
+1999-09-21  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/chinese.el (chinese-cns11643-3): Define it even if
+       `utf-2000' is provided.
+       (chinese-cns11643-4): Likewise.
+       (chinese-cns11643-5): Likewise.
+       (chinese-cns11643-6): Likewise.
+       (chinese-cns11643-7): Likewise.
+
+1999-09-14  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       thai-tis620 and hebrew-iso8859-8; namely all BMP are covered.
+
+1999-09-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list): Add
+       `cyrillic-iso8859-5' and `greek-iso8859-7'.
+
+1999-09-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule/mule-charset.el (default-coded-charset-priority-list):
+       Setup in UTF-2000.
+
+1999-09-09  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/viet-chars.el: Don't define charset
+       `vietnamese-viscii-lower' and `vietnamese-viscii-upper' because
+       they are defined as builtin charsets.
+
+1999-08-31  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * version.el (emacs-version): Add more space just before UTF-2000
+       version string.
+
+1999-08-29  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * version.el ([constant] emacs-version): Don't add a space in the
+       preceding place of `xemacs-betaname' because it is duplicated.
+       (emacs-version): Add UTF-2000 version if `utf-2000' is provided.
+
+       * startup.el (splash-frame-body): Add ETL.
+
+1999-08-28  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/chinese.el (chinese-cns11643-3): Don't define if `utf-2000'
+       is provided because it is defined as builtin charset.
+       (chinese-cns11643-4): Likewise.
+       (chinese-cns11643-5): Likewise.
+       (chinese-cns11643-6): Likewise.
+       (chinese-cns11643-7): Likewise.
+
+1999-08-24  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/mule-cmds.el (reset-language-environment): Fix problem when
+       coding-system `iso-10646-ucs-4' is not defined.
+
+1999-06-17  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * bytecomp.el (byte-compile-insert-header): Use utf-8 as
+       coding-system if `utf-2000' is provided.
+
+1999-06-15  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/mule-coding.el: Add `utf-8' to coding-priority-list if
+       `utf-2000' is provided.
+
+1999-06-15  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * dumped-lisp.el (preloaded-file-list): Don't load vietnamese.el
+       if utf-2000 is provided temporally.
+
+1999-06-10  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule/vietnamese.el (leading-code-private-11): Deleted [defined
+       as builtin variable].
+
+1999-06-04  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * files.el (insert-file-contents-literally): Treat file as binary;
+       call file-name-handlers. [sync with Emacs 20.3.10]
+
 1999-12-14  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.24 is released.
index 727ba8a..50416c2 100644 (file)
@@ -1751,24 +1751,69 @@ With argument, insert value in current buffer after the form."
   ;; Emacsen.
   (when (featurep 'mule)
     (defvar buffer-file-coding-system)
-    (if (save-excursion
-         (set-buffer byte-compile-inbuffer)
+    (let (ces)
+      (save-excursion
+       (set-buffer byte-compile-inbuffer)
+       (goto-char (point-min))
+       ;; mrb- There must be a better way than skip-chars-forward
+       (skip-chars-forward (concat (char-to-string 0) "-"
+                                   (char-to-string 255)))
+       (if (eq (point) (point-max))
+           (setq ces 'raw-text)
+         (goto-char (point-min))
+         (while (< (point)(point-max))
+           (cond ((eq (char-after) ?\;)
+                  (delete-region (point)(point-at-eol))
+                  (if (eq (char-after) ?\n)
+                      (delete-char 1)
+                    (forward-char))
+                  )
+                 ((eq (char-after) ?\?)
+                  (forward-char 2)
+                  )
+                 ((eq (char-after) ?\n)
+                  (forward-char)
+                  )
+                 ((eq (char-after) ?\")
+                  (forward-char)
+                  (while (and (< (point)(point-max))
+                              (not (when (eq (char-after) ?\")
+                                     (forward-char)
+                                     t)))
+                    (if (eq (char-after) ?\\)
+                        (forward-char 2)
+                      (forward-char)))
+                  )
+                 (t
+                  (forward-char))))
          (goto-char (point-min))
-         ;; mrb- There must be a better way than skip-chars-forward
          (skip-chars-forward (concat (char-to-string 0) "-"
                                      (char-to-string 255)))
-         (eq (point) (point-max)))
-       (setq buffer-file-coding-system 'raw-text)
-      (insert "(require 'mule)\n;;;###coding system: escape-quoted\n")
-      (setq buffer-file-coding-system 'escape-quoted)
-      ;; #### Lazy loading not yet implemented for MULE files
-      ;; mrb - Fix this someday.
-      (save-excursion
-       (set-buffer byte-compile-inbuffer)
-       (setq byte-compile-dynamic nil
-             byte-compile-dynamic-docstrings nil))
-      ;;(external-debugging-output (prin1-to-string (buffer-local-variables))))
-      ))
+         (setq ces
+               (if (eq (point) (point-max))
+                   (if (and (featurep 'utf-2000)
+                            (re-search-backward "\\\\u[0-9A-Fa-f]+" nil t))
+                       'utf-8-unix
+                     'raw-text)))))
+      (if (eq ces 'raw-text)
+         (setq buffer-file-coding-system 'raw-text)
+       (cond ((eq ces 'utf-8-unix)
+              (insert "(require 'mule)\n;;;###coding system: utf-8-unix\n")
+              (setq buffer-file-coding-system 'utf-8-unix)
+              )
+             (t
+              (insert "(require 'mule)\n;;;###coding system: escape-quoted\n")
+              (setq buffer-file-coding-system 'escape-quoted)
+              ))
+       ;; #### Lazy loading not yet implemented for MULE files
+       ;; mrb - Fix this someday.
+       (save-excursion
+         (set-buffer byte-compile-inbuffer)
+         (setq byte-compile-dynamic nil
+               byte-compile-dynamic-docstrings nil))
+        ;; (external-debugging-output
+        ;;  (prin1-to-string (buffer-local-variables)))
+       )))
   )
 
 
index b3468db..1dc1123 100644 (file)
        (when-feature scrollbar "scrollbar")
        (when-feature menubar "menubar")
        (when-feature dialog "dialog")
+       (when-feature mule "mule-conf")
+       (when-feature utf-2000 "ccs-jisx0201-latin.el")
+       (when-feature utf-2000 "ccs-jisx0208-1983.el")
+       (when-feature utf-2000 "u00000-C0")
+       (when-feature utf-2000 "u00020-Basic-Latin")
+       (when-feature utf-2000 "u00080-C1")
+       (when-feature utf-2000 "u000A0-Latin-1-Supplement")
+       (when-feature utf-2000 "u00100-Latin-Extended-A")
+       (when-feature utf-2000 "u00180-Latin-Extended-B")
+       (when-feature utf-2000 "u00250-IPA-Extensions")
+       (when-feature utf-2000 "u002B0-Spacing-Modifier-Letters")
+       (when-feature utf-2000 "u00300-Combining-Diacritical-Marks")
+       (when-feature utf-2000 "u00370-Greek")
+       (when-feature utf-2000 "u00400-Cyrillic")
+       (when-feature utf-2000 "u00530-Armenian")
+       (when-feature utf-2000 "u00590-Hebrew")
+       (when-feature utf-2000 "u00600-Arabic")
+       (when-feature utf-2000 "u00700-Syriac")
+       (when-feature utf-2000 "u00780-Thaana")
+       (when-feature utf-2000 "u00900-Devanagari")
+       (when-feature utf-2000 "u00980-Bengali")
+       (when-feature utf-2000 "u00A00-Gurmukhi")
+       (when-feature utf-2000 "u00A80-Gujarati")
+       (when-feature utf-2000 "u00B00-Oriya")
+       (when-feature utf-2000 "u00B80-Tamil")
+       (when-feature utf-2000 "u00C00-Telugu")
+       (when-feature utf-2000 "u00C80-Kannada")
+       (when-feature utf-2000 "u00D00-Malayalam")
+       (when-feature utf-2000 "u00D80-Sinhala")
+       (when-feature utf-2000 "u00E00-Thai")
+       (when-feature utf-2000 "u00E80-Lao")
+       (when-feature utf-2000 "u00F00-Tibetan")
+       (when-feature utf-2000 "u01000-Myanmar")
+       (when-feature utf-2000 "u010A0-Georgian")
+       (when-feature utf-2000 "u01100-Hangul-Jamo")
+       (when-feature utf-2000 "u01200-Ethiopic")
+       (when-feature utf-2000 "u013A0-Cherokee")
+       (when-feature utf-2000 "u01400-Canadian")
+       (when-feature utf-2000 "u01680-Ogham")
+       (when-feature utf-2000 "u016A0-Runic")
+       (when-feature utf-2000 "u01780-Khmer")
+       (when-feature utf-2000 "u01800-Mongolian")
+       (when-feature utf-2000 "u01E00-Latin-Extended-Additional")
+       (when-feature utf-2000 "u01F00-Greek-Extended")
+       (when-feature utf-2000 "u02000-General-Punctuation")
+       (when-feature utf-2000 "u02070-Superscripts")
+       (when-feature utf-2000 "u02080-Subscripts")
+       (when-feature utf-2000 "u020A0-Currency-Symbols")
+       (when-feature utf-2000
+                     "u020D0-Combining-Diacritical-Marks-for-Symbols")
+       (when-feature utf-2000 "u02100-Letterlike-Symbols")
+       (when-feature utf-2000 "u02150-Number-Forms")
+       (when-feature utf-2000 "u02190-Arrows")
+       (when-feature utf-2000 "u02200-Mathematical-Operators")
+       (when-feature utf-2000 "u02300-Miscellaneous-Technical")
+       (when-feature utf-2000 "u02400-Control-Pictures")
+       (when-feature utf-2000 "u02440-OCR")
+       (when-feature utf-2000 "u02460-Enclosed-Alphanumerics")
+       (when-feature utf-2000 "u02500-Box-Drawing")
+       (when-feature utf-2000 "u02580-Block-Elements")
+       (when-feature utf-2000 "u025A0-Geometric-Shapes")
+       (when-feature utf-2000 "u02600-Miscellaneous-Symbols")
+       (when-feature utf-2000 "u02700-Dingbats")
+       (when-feature utf-2000 "u02800-Braille-Patterns")
+       (when-feature utf-2000 "u02E00-CJK-Radical-Supplement")
+       (when-feature utf-2000 "u02F00-Kangxi-Radicals")
+       (when-feature utf-2000 "u02FF0-Ideographic-Description-Characters")
+       (when-feature utf-2000 "u03000-CJK-Symbols-and-Punctuation")
+       (when-feature utf-2000 "u03040-Hiragana")
+       (when-feature utf-2000 "u030A0-Katakana")
+       (when-feature utf-2000 "u03100-Bopomofo")
+       (when-feature utf-2000 "u03130-Hangul-Compatibility-Jamo")
+       (when-feature utf-2000 "u03190-Kanbun")
+       (when-feature utf-2000 "u031A0-Extended-Bopomofo")
+       (when-feature utf-2000 "u03200-Enclosed-CJK-Letters-and-Months")
+       (when-feature utf-2000 "u03300-CJK-Compatibility")
        (when-feature mule "mule-charset")
        (when-feature file-coding "coding")
        (when-feature mule "mule-coding")
        (when-feature mule "thai-xtis-chars")
        (when-feature mule "mule/thai-xtis") ; overloaded in leim/quail
        (when-feature mule "viet-chars")
-       (when-feature mule "vietnamese")
+       (when-feature (and mule (not utf-2000)) "vietnamese")
 
        ;; Specialized language support
        (when-feature (and mule CANNA) "canna-leim")
index e3760a7..f5d25be 100644 (file)
@@ -864,14 +864,17 @@ If there is no such live buffer, return nil."
          found))))
 
 (defun insert-file-contents-literally (filename &optional visit beg end replace)
-  "Like `insert-file-contents', q.v., but only reads in the file.
+  "Like `insert-file-contents', q.v., but only reads in the file literally.
 A buffer may be modified in several ways after reading into the buffer due
-to advanced Emacs features, such as file-name-handlers, format decoding,
-find-file-hooks, etc.
-  This function ensures that none of these modifications will take place."
-  (let ((file-name-handler-alist nil)
-       (format-alist nil)
+to advanced Emacs features, such as format decoding, character code
+conversion,find-file-hooks, automatic uncompression, etc.
+
+This function ensures that none of these modifications will take place."
+  (let ((format-alist nil)
        (after-insert-file-functions nil)
+       (coding-system-for-read 'binary)
+       (coding-system-for-write 'binary)
+       (jka-compr-compression-info-list nil)
        (find-buffer-file-type-function
         (if (fboundp 'find-buffer-file-type)
             (symbol-function 'find-buffer-file-type)
index aff138f..a48a520 100644 (file)
       (make-charset
        name (concat "CNS 11643 Plane " plane " (Chinese traditional)")
        `(registry 
-         ,(concat "CNS11643[.-]\\(.*[.-]\\)?" plane "$")
-         dimension 2
-         chars 94
-         final ,final
-         graphic 0))
+        ,(concat "CNS11643[.-]\\(.*[.-]\\)?" plane "$")
+        dimension 2
+        chars 94
+        final ,final
+        graphic 0))
       (modify-syntax-entry   name "w")
       (modify-category-entry name ?t)
       ))
index 9c31637..b5b15cf 100644 (file)
 
 ;;; Code:
 
-;; Ethiopic
-(make-charset 'ethiopic "Ethiopic"
-             '(registry "Ethio"
-               dimension 2
-               chars 94
-               final ?3
-               graphic 0
-               ))
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; ETHIOPIC
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
index 0898366..cc8bc03 100644 (file)
                               shift_jis iso-2022-jp-2)
 ;;           (input-method . "japanese")
              (features japan-util)
-             (sample-text . "Japanese (\e$BF|K\8l\e(B)   \e$B$3$s$K$A$O\e(B, \e)IºÝÆÁÊ")\e-A
+             (sample-text . "Japanese (\e$BF|K\8l\e(B)   \e$B$3$s$K$A$O\e(B, \e(I:]FAJ\e(B")
              (documentation . t)))
 
 ;;; japanese.el ends here
index b0f9ff3..481691d 100644 (file)
 
 ;;; Code:
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; IPA (International Phonetic Alphabet)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(make-charset 'ipa "International Phonetic Alphabet"
-             '(registry "MuleIPA"
-               dimension 1
-               chars 96
-               final ?0
-               graphic 1
-               ))              ; for XEmacs
-
 (defun setup-ipa-environment ()
   "Setup multilingual environment (MULE) for IPA."
   (interactive)
index 7758dec..c056eb4 100644 (file)
@@ -3,6 +3,8 @@
 ;; Copyright (C) 1992 Free Software Foundation, Inc.
 ;; Copyright (C) 1995 Amdahl Corporation.
 ;; Copyright (C) 1996 Sun Microsystems.
+;; Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+;; Licensed to the Free Software Foundation.
 
 ;; Author: Unknown
 ;; Keywords: i18n, mule, internal
@@ -249,4 +251,46 @@ DESCRIPTION (string) is the description string of the charset."
 (defalias 'charset-plist 'object-plist)
 (defalias 'set-charset-plist 'setplist)
 
+
+;;; @ Coded character set
+;;;
+
+(when (featurep 'utf-2000)
+  (setq default-coded-charset-priority-list
+       '(ascii
+          ;; latin-iso646-irv
+         control-1
+         latin-iso8859-1
+         latin-iso8859-2
+         latin-iso8859-3
+         latin-iso8859-4
+         latin-iso8859-9
+         latin-jisx0201
+         cyrillic-iso8859-5
+         greek-iso8859-7
+         thai-tis620
+          ;; hiragana-jisx0208
+          ;; katakana-jisx0208
+         japanese-jisx0208
+         japanese-jisx0212
+         chinese-cns11643-1
+         chinese-cns11643-2
+         chinese-cns11643-3
+         chinese-cns11643-4
+         chinese-cns11643-5
+         chinese-cns11643-6
+         chinese-cns11643-7
+         korean-ksc5601
+         chinese-gb2312
+         hebrew-iso8859-8
+         latin-viscii
+         latin-viscii-lower
+         latin-viscii-upper
+         ipa
+         lao
+         ethiopic-ucs
+         ethiopic
+         ucs-bmp
+         arabic-iso8859-6)))
+
 ;;; mule-charset.el ends here
index b0bd9f1..ea10c61 100644 (file)
@@ -1086,19 +1086,34 @@ The default status is as follows:
   (set-coding-category-system 'shift-jis       'shift_jis)
   (set-coding-category-system 'big5            'big5)
   (cond ((eq (coding-system-type (coding-category-system 'utf-8)) 'utf-8)
-        (set-coding-category-system 'ucs-4 'iso-10646-ucs-4)
         (set-coding-category-system 'utf-8 'utf-8)
-        (set-coding-priority-list
-         '(iso-8-1
-           iso-8-2
-           iso-7
-           iso-lock-shift
-           iso-8-designate
-           utf-8
-           ucs-4
-           no-conversion
-           shift-jis
-           big5))
+        (cond ((eq (coding-system-type (coding-category-system 'ucs-4))
+                   'iso-10646-ucs-4)
+               (set-coding-category-system 'ucs-4 'iso-10646-ucs-4)
+               (set-coding-priority-list
+                '(iso-8-1
+                  iso-8-2
+                  iso-7
+                  iso-lock-shift
+                  iso-8-designate
+                  utf-8
+                  ucs-4
+                  no-conversion
+                  shift-jis
+                  big5))
+               )
+              (t
+               (set-coding-priority-list
+                '(iso-8-1
+                  iso-8-2
+                  iso-7
+                  iso-lock-shift
+                  iso-8-designate
+                  utf-8
+                  no-conversion
+                  shift-jis
+                  big5))
+               ))
         )
        (t
         (set-coding-priority-list
index 3880c18..a308f1c 100644 (file)
 ;; so that the remaining Lisp files can contain extended characters.
 ;; (They will be in ISO-7 format)
 
-(set-coding-priority-list '(iso-8-2 iso-8-designate iso-8-1
-                           iso-7 iso-lock-shift no-conversion))
+(if (featurep 'utf-2000)
+    (set-coding-priority-list '(iso-8-2 iso-8-designate iso-8-1
+                               iso-7 iso-lock-shift utf-8 no-conversion))
+  (set-coding-priority-list '(iso-8-2 iso-8-designate iso-8-1
+                             iso-7 iso-lock-shift no-conversion)))
 
 (set-coding-category-system 'iso-7 'iso-2022-7)
 (set-coding-category-system 'iso-8-designate 'ctext)
diff --git a/lisp/mule/mule-conf.el b/lisp/mule/mule-conf.el
new file mode 100644 (file)
index 0000000..8dad2dd
--- /dev/null
@@ -0,0 +1,54 @@
+;;; mule-conf.el --- configure multilingual environment
+
+;; Copyright (C) 1995,1999 Electrotechnical Laboratory, JAPAN.
+;; Licensed to the Free Software Foundation.
+;; Copyright (C) 1997,1999 MORIOKA Tomohiko
+
+;; Keywords: mule, multilingual, character set, coding system
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs 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 General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+;; Lao script.
+;; ISO10646's 0x0E80..0x0EDF are mapped to 0x20..0x7F.
+(make-charset 'lao "Lao script"
+             '(registry "MuleLao-1"
+               dimension 1
+               chars 94
+               final ?1
+               graphic 1))
+
+;; IPA (International Phonetic Alphabet)
+(make-charset 'ipa "International Phonetic Alphabet"
+             '(registry "MuleIPA"
+               dimension 1
+               chars 96
+               final ?0
+               graphic 1))
+
+;; Ethiopic
+(make-charset 'ethiopic "Ethiopic"
+             '(registry "Ethio"
+               dimension 2
+               chars 94
+               final ?3
+               graphic 0
+               ))
+
+;;; mule-conf.el ends here
index 0df00f9..3f935a7 100644 (file)
 ;; read in before the code that creates those sets is evaluated.
 
 ;; Vietnamese VISCII with two tables.
-(make-charset 'vietnamese-viscii-lower "VISCII lower (Vietnamese)"
-             '(registry "VISCII1.1"
-               dimension 1
-               chars 96
-               final ?1
-               graphic 1
-               ))
-
-(make-charset 'vietnamese-viscii-upper "VISCII upper (Vietnamese)"
-             '(registry "VISCII1.1"
-               dimension 1
-               chars 96
-               final ?2
-               graphic 1
-               ))
+(unless (featurep 'utf-2000)
+  (make-charset 'latin-viscii-lower "VISCII lower (Vietnamese)"
+               '(registry "VISCII1.1"
+                 dimension 1
+                 chars 96
+                 final ?1
+                 graphic 1
+                 ))
+
+  (make-charset 'latin-viscii-upper "VISCII upper (Vietnamese)"
+               '(registry "VISCII1.1"
+                 dimension 1
+                 chars 96
+                 final ?2
+                 graphic 1
+                 ))
+  )
+
+(define-charset-alias 'vietnamese-viscii-lower 'latin-viscii-lower)
+(define-charset-alias 'vietnamese-viscii-upper 'latin-viscii-upper)
 
 (modify-syntax-entry 'vietnamese-viscii-lower "w")
 (modify-syntax-entry 'vietnamese-viscii-upper "w")
index 5a9dd33..00235eb 100644 (file)
@@ -122,8 +122,6 @@ Both tables are indexed by the position code of Vietnamese characters.")
 ;; where LEADING-CODE-EXTENDED-11 for Vietnamese is
 ;; `vietnamese-viscii-lower' or `vietnamese-viscii-upper'.
 
-(defvar leading-code-private-11 #x9E)
-
 (define-ccl-program ccl-encode-viscii
   `(1
      ((read r0)
index ec39fc4..68ce03a 100644 (file)
@@ -409,10 +409,15 @@ Type ^H^H^H (Control-h Control-h Control-h) to get more help options.\n")
                             debug-paths))
       (startup-setup-paths-warning))
 
-    (if (and (not inhibit-autoloads)
-            lisp-directory)
-       (load (expand-file-name (file-name-sans-extension autoload-file-name)
-                               lisp-directory) nil t))
+    (when (and (not inhibit-autoloads)
+              lisp-directory)
+      (load (expand-file-name (file-name-sans-extension autoload-file-name)
+                             lisp-directory) nil t)
+      (if (featurep 'utf-2000)
+         (load (expand-file-name
+                (file-name-sans-extension autoload-file-name)
+                (expand-file-name "utf-2000" lisp-directory))
+               nil t)))
     
     (if (not inhibit-autoloads)
        (progn
@@ -959,11 +964,12 @@ XEmacs, by either running the command `xemacs-mule', or by using the X resource
      "\n--\n"
      (face italic "\
 Copyright (C) 1985-1999 Free Software Foundation, Inc.
+Copyright (C) 1995-1999 Electrotechnical Laboratory, JAPAN.
 Copyright (C) 1990-1994 Lucid, Inc.
 Copyright (C) 1993-1997 Sun Microsystems, Inc. All Rights Reserved.
 Copyright (C) 1994-1996 Board of Trustees, University of Illinois
 Copyright (C) 1995-1996 Ben Wing\n"))
-    
+
     ((face (blue bold underline) "\nInformation, on-line help:\n\n")
      "XEmacs comes with plenty of documentation...\n\n"
      ,@(if (string-match "beta" emacs-version)
diff --git a/lisp/utf-2000/auto-autoloads.el b/lisp/utf-2000/auto-autoloads.el
new file mode 100644 (file)
index 0000000..39489f2
--- /dev/null
@@ -0,0 +1,12 @@
+;;; DO NOT MODIFY THIS FILE
+(if (featurep 'utf-2000-autoloads) (error "Already loaded"))
+
+(provide 'utf-2000-autoloads)
+\f
+;;;### (autoloads (what-char-definition char-db-update-comment) "char-db-util" "utf-2000/char-db-util.el")
+
+(autoload 'char-db-update-comment "char-db-util" nil t nil)
+
+(autoload 'what-char-definition "char-db-util" nil t nil)
+
+;;;***
diff --git a/lisp/utf-2000/ccs-jisx0201-latin.el b/lisp/utf-2000/ccs-jisx0201-latin.el
new file mode 100644 (file)
index 0000000..01de436
--- /dev/null
@@ -0,0 +1,126 @@
+;;; ccs-jisx0201-latin.el --- Mapping table for JIS X 0201-Latin.
+
+;; Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+;; Licensed to the Free Software Foundation.
+
+;; Author: MORIOKA Tomohiko <tomo@m17n.org>
+;; Keywords: coded character set
+
+;; This file is part of UTF-2000.
+
+;; UTF-2000 is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; UTF-2000 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
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with UTF-2000; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(set-charset-mapping-table
+ 'latin-jisx0201
+ [?\u0021      ; 0x21  EXCLAMATION MARK
+  ?\u0022      ; 0x22  QUOTATION MARK
+  ?\u0023      ; 0x23  NUMBER SIGN
+  ?\u0024      ; 0x24  DOLLAR SIGN
+  ?\u0025      ; 0x25  PERCENT SIGN
+  ?\u0026      ; 0x26  AMPERSAND
+  ?\u0027      ; 0x27  APOSTROPHE
+  ?\u0028      ; 0x28  LEFT PARENTHESIS
+  ?\u0029      ; 0x29  RIGHT PARENTHESIS
+  ?\u002A      ; 0x2A  ASTERISK
+  ?\u002B      ; 0x2B  PLUS SIGN
+  ?\u002C      ; 0x2C  COMMA
+  ?\u002D      ; 0x2D  HYPHEN-MINUS
+  ?\u002E      ; 0x2E  FULL STOP
+  ?\u002F      ; 0x2F  SOLIDUS
+  ?\u0030      ; 0x30  DIGIT ZERO
+  ?\u0031      ; 0x31  DIGIT ONE
+  ?\u0032      ; 0x32  DIGIT TWO
+  ?\u0033      ; 0x33  DIGIT THREE
+  ?\u0034      ; 0x34  DIGIT FOUR
+  ?\u0035      ; 0x35  DIGIT FIVE
+  ?\u0036      ; 0x36  DIGIT SIX
+  ?\u0037      ; 0x37  DIGIT SEVEN
+  ?\u0038      ; 0x38  DIGIT EIGHT
+  ?\u0039      ; 0x39  DIGIT NINE
+  ?\u003A      ; 0x3A  COLON
+  ?\u003B      ; 0x3B  SEMICOLON
+  ?\u003C      ; 0x3C  LESS-THAN SIGN
+  ?\u003D      ; 0x3D  EQUALS SIGN
+  ?\u003E      ; 0x3E  GREATER-THAN SIGN
+  ?\u003F      ; 0x3F  QUESTION MARK
+  ?\u0040      ; 0x40  COMMERCIAL AT
+  ?\u0041      ; 0x41  LATIN CAPITAL LETTER A
+  ?\u0042      ; 0x42  LATIN CAPITAL LETTER B
+  ?\u0043      ; 0x43  LATIN CAPITAL LETTER C
+  ?\u0044      ; 0x44  LATIN CAPITAL LETTER D
+  ?\u0045      ; 0x45  LATIN CAPITAL LETTER E
+  ?\u0046      ; 0x46  LATIN CAPITAL LETTER F
+  ?\u0047      ; 0x47  LATIN CAPITAL LETTER G
+  ?\u0048      ; 0x48  LATIN CAPITAL LETTER H
+  ?\u0049      ; 0x49  LATIN CAPITAL LETTER I
+  ?\u004A      ; 0x4A  LATIN CAPITAL LETTER J
+  ?\u004B      ; 0x4B  LATIN CAPITAL LETTER K
+  ?\u004C      ; 0x4C  LATIN CAPITAL LETTER L
+  ?\u004D      ; 0x4D  LATIN CAPITAL LETTER M
+  ?\u004E      ; 0x4E  LATIN CAPITAL LETTER N
+  ?\u004F      ; 0x4F  LATIN CAPITAL LETTER O
+  ?\u0050      ; 0x50  LATIN CAPITAL LETTER P
+  ?\u0051      ; 0x51  LATIN CAPITAL LETTER Q
+  ?\u0052      ; 0x52  LATIN CAPITAL LETTER R
+  ?\u0053      ; 0x53  LATIN CAPITAL LETTER S
+  ?\u0054      ; 0x54  LATIN CAPITAL LETTER T
+  ?\u0055      ; 0x55  LATIN CAPITAL LETTER U
+  ?\u0056      ; 0x56  LATIN CAPITAL LETTER V
+  ?\u0057      ; 0x57  LATIN CAPITAL LETTER W
+  ?\u0058      ; 0x58  LATIN CAPITAL LETTER X
+  ?\u0059      ; 0x59  LATIN CAPITAL LETTER Y
+  ?\u005A      ; 0x5A  LATIN CAPITAL LETTER Z
+  ?\u005B      ; 0x5B  LEFT SQUARE BRACKET
+  ?\u00A5      ; 0x5C  YEN SIGN
+  ?\u005D      ; 0x5D  RIGHT SQUARE BRACKET
+  ?\u005E      ; 0x5E  CIRCUMFLEX ACCENT
+  ?\u005F      ; 0x5F  LOW LINE
+  ?\u0060      ; 0x60  GRAVE ACCENT
+  ?\u0061      ; 0x61  LATIN SMALL LETTER A
+  ?\u0062      ; 0x62  LATIN SMALL LETTER B
+  ?\u0063      ; 0x63  LATIN SMALL LETTER C
+  ?\u0064      ; 0x64  LATIN SMALL LETTER D
+  ?\u0065      ; 0x65  LATIN SMALL LETTER E
+  ?\u0066      ; 0x66  LATIN SMALL LETTER F
+  ?\u0067      ; 0x67  LATIN SMALL LETTER G
+  ?\u0068      ; 0x68  LATIN SMALL LETTER H
+  ?\u0069      ; 0x69  LATIN SMALL LETTER I
+  ?\u006A      ; 0x6A  LATIN SMALL LETTER J
+  ?\u006B      ; 0x6B  LATIN SMALL LETTER K
+  ?\u006C      ; 0x6C  LATIN SMALL LETTER L
+  ?\u006D      ; 0x6D  LATIN SMALL LETTER M
+  ?\u006E      ; 0x6E  LATIN SMALL LETTER N
+  ?\u006F      ; 0x6F  LATIN SMALL LETTER O
+  ?\u0070      ; 0x70  LATIN SMALL LETTER P
+  ?\u0071      ; 0x71  LATIN SMALL LETTER Q
+  ?\u0072      ; 0x72  LATIN SMALL LETTER R
+  ?\u0073      ; 0x73  LATIN SMALL LETTER S
+  ?\u0074      ; 0x74  LATIN SMALL LETTER T
+  ?\u0075      ; 0x75  LATIN SMALL LETTER U
+  ?\u0076      ; 0x76  LATIN SMALL LETTER V
+  ?\u0077      ; 0x77  LATIN SMALL LETTER W
+  ?\u0078      ; 0x78  LATIN SMALL LETTER X
+  ?\u0079      ; 0x79  LATIN SMALL LETTER Y
+  ?\u007A      ; 0x7A  LATIN SMALL LETTER Z
+  ?\u007B      ; 0x7B  LEFT CURLY BRACKET
+  ?\u007C      ; 0x7C  VERTICAL LINE
+  ?\u007D      ; 0x7D  RIGHT CURLY BRACKET
+  ?\u203E      ; 0x7E  OVERLINE
+  ])
+
+;;; ccs-jisx0201-latin.el ends here
diff --git a/lisp/utf-2000/ccs-jisx0208-1983.el b/lisp/utf-2000/ccs-jisx0208-1983.el
new file mode 100644 (file)
index 0000000..4e3f5ed
--- /dev/null
@@ -0,0 +1,7354 @@
+;;; ccs-jisx0208-1983.el --- Mapping table for JIS X 0208:1983.
+
+;; Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+;; Licensed to the Free Software Foundation.
+
+;; Author: MORIOKA Tomohiko <tomo@m17n.org>
+;; Keywords: coded character set
+
+;; This file is part of UTF-2000.
+
+;; UTF-2000 is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; UTF-2000 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
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with UTF-2000; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(set-charset-mapping-table
+ 'japanese-jisx0208
+ [[?\u3000     ; 2121 (01-01)
+   ?\u3001     ; 2122 (01-02)
+   ?\u3002     ; 2123 (01-03)
+   ?\uFF0C     ; 2124 (01-04)
+   ?\uFF0E     ; 2125 (01-05)
+   ?\u30FB     ; 2126 (01-06)
+   ?\uFF1A     ; 2127 (01-07)
+   ?\uFF1B     ; 2128 (01-08)
+   ?\uFF1F     ; 2129 (01-09)
+   ?\uFF01     ; 212A (01-10)
+   ?\u309B     ; 212B (01-11)
+   ?\u309C     ; 212C (01-12)
+   ?\u00B4     ; 212D (01-13)
+   ?\uFF40     ; 212E (01-14)
+   ?\u00A8     ; 212F (01-15)
+   ?\uFF3E     ; 2130 (01-16)
+   ?\u203E     ; 2131 (01-17)
+   ?\uFF3F     ; 2132 (01-18)
+   ?\u30FD     ; 2133 (01-19)
+   ?\u30FE     ; 2134 (01-20)
+   ?\u309D     ; 2135 (01-21)
+   ?\u309E     ; 2136 (01-22)
+   ?\u3003     ; 2137 (01-23)
+   ?\u4EDD     ; 2138 (01-24)
+   ?\u3005     ; 2139 (01-25)
+   ?\u3006     ; 213A (01-26)
+   ?\u3007     ; 213B (01-27)
+   ?\u30FC     ; 213C (01-28)
+   ?\u2014     ; 213D (01-29)
+   ?\u2010     ; 213E (01-30)
+   ?\uFF0F     ; 213F (01-31)
+   ?\uFF3C     ; 2140 (01-32)
+   ?\u301C     ; 2141 (01-33)
+   ?\u2016     ; 2142 (01-34)
+   ?\uFF5C     ; 2143 (01-35)
+   ?\u2026     ; 2144 (01-36)
+   ?\u2025     ; 2145 (01-37)
+   ?\u2018     ; 2146 (01-38)
+   ?\u2019     ; 2147 (01-39)
+   ?\u201C     ; 2148 (01-40)
+   ?\u201D     ; 2149 (01-41)
+   ?\uFF08     ; 214A (01-42)
+   ?\uFF09     ; 214B (01-43)
+   ?\u3014     ; 214C (01-44)
+   ?\u3015     ; 214D (01-45)
+   ?\uFF3B     ; 214E (01-46)
+   ?\uFF3D     ; 214F (01-47)
+   ?\uFF5B     ; 2150 (01-48)
+   ?\uFF5D     ; 2151 (01-49)
+   ?\u3008     ; 2152 (01-50)
+   ?\u3009     ; 2153 (01-51)
+   ?\u300A     ; 2154 (01-52)
+   ?\u300B     ; 2155 (01-53)
+   ?\u300C     ; 2156 (01-54)
+   ?\u300D     ; 2157 (01-55)
+   ?\u300E     ; 2158 (01-56)
+   ?\u300F     ; 2159 (01-57)
+   ?\u3010     ; 215A (01-58)
+   ?\u3011     ; 215B (01-59)
+   ?\uFF0B     ; 215C (01-60)
+   ?\u2212     ; 215D (01-61)
+   ?\u00B1     ; 215E (01-62)
+   ?\u00D7     ; 215F (01-63)
+   ?\u00F7     ; 2160 (01-64)
+   ?\uFF1D     ; 2161 (01-65)
+   ?\u2260     ; 2162 (01-66)
+   ?\uFF1C     ; 2163 (01-67)
+   ?\uFF1E     ; 2164 (01-68)
+   ?\u2266     ; 2165 (01-69)
+   ?\u2267     ; 2166 (01-70)
+   ?\u221E     ; 2167 (01-71)
+   ?\u2234     ; 2168 (01-72)
+   ?\u2642     ; 2169 (01-73)
+   ?\u2640     ; 216A (01-74)
+   ?\u00B0     ; 216B (01-75)
+   ?\u2032     ; 216C (01-76)
+   ?\u2033     ; 216D (01-77)
+   ?\u2103     ; 216E (01-78)
+   ?\uFFE5     ; 216F (01-79)
+   ?\uFF04     ; 2170 (01-80)
+   ?\uFFE0     ; 2171 (01-81)
+   ?\uFFE1     ; 2172 (01-82)
+   ?\uFF05     ; 2173 (01-83)
+   ?\uFF03     ; 2174 (01-84)
+   ?\uFF06     ; 2175 (01-85)
+   ?\uFF0A     ; 2176 (01-86)
+   ?\uFF20     ; 2177 (01-87)
+   ?\u00A7     ; 2178 (01-88)
+   ?\u2606     ; 2179 (01-89)
+   ?\u2605     ; 217A (01-90)
+   ?\u25CB     ; 217B (01-91)
+   ?\u25CF     ; 217C (01-92)
+   ?\u25CE     ; 217D (01-93)
+   ?\u25C7     ; 217E (01-94)
+   ]
+  [?\u25C6     ; 2221 (02-01)
+   ?\u25A1     ; 2222 (02-02)
+   ?\u25A0     ; 2223 (02-03)
+   ?\u25B3     ; 2224 (02-04)
+   ?\u25B2     ; 2225 (02-05)
+   ?\u25BD     ; 2226 (02-06)
+   ?\u25BC     ; 2227 (02-07)
+   ?\u203B     ; 2228 (02-08)
+   ?\u3012     ; 2229 (02-09)
+   ?\u2192     ; 222A (02-10)
+   ?\u2190     ; 222B (02-11)
+   ?\u2191     ; 222C (02-12)
+   ?\u2193     ; 222D (02-13)
+   ?\u3013     ; 222E (02-14)
+   nil         ; 222F (02-15)
+   nil         ; 2230 (02-16)
+   nil         ; 2231 (02-17)
+   nil         ; 2232 (02-18)
+   nil         ; 2233 (02-19)
+   nil         ; 2234 (02-20)
+   nil         ; 2235 (02-21)
+   nil         ; 2236 (02-22)
+   nil         ; 2237 (02-23)
+   nil         ; 2238 (02-24)
+   nil         ; 2239 (02-25)
+   ?\u2208     ; 223A (02-26)
+   ?\u220B     ; 223B (02-27)
+   ?\u2286     ; 223C (02-28)
+   ?\u2287     ; 223D (02-29)
+   ?\u2282     ; 223E (02-30)
+   ?\u2283     ; 223F (02-31)
+   ?\u222A     ; 2240 (02-32)
+   ?\u2229     ; 2241 (02-33)
+   nil         ; 2242 (02-34)
+   nil         ; 2243 (02-35)
+   nil         ; 2244 (02-36)
+   nil         ; 2245 (02-37)
+   nil         ; 2246 (02-38)
+   nil         ; 2247 (02-39)
+   nil         ; 2248 (02-40)
+   nil         ; 2249 (02-41)
+   ?\u2227     ; 224A (02-42)
+   ?\u2228     ; 224B (02-43)
+   ?\uFFE2     ; 224C (02-44)
+   ?\u21D2     ; 224D (02-45)
+   ?\u21D4     ; 224E (02-46)
+   ?\u2200     ; 224F (02-47)
+   ?\u2203     ; 2250 (02-48)
+   nil         ; 2251 (02-49)
+   nil         ; 2252 (02-50)
+   nil         ; 2253 (02-51)
+   nil         ; 2254 (02-52)
+   nil         ; 2255 (02-53)
+   nil         ; 2256 (02-54)
+   nil         ; 2257 (02-55)
+   nil         ; 2258 (02-56)
+   nil         ; 2259 (02-57)
+   nil         ; 225A (02-58)
+   nil         ; 225B (02-59)
+   ?\u2220     ; 225C (02-60)
+   ?\u22A5     ; 225D (02-61)
+   ?\u2312     ; 225E (02-62)
+   ?\u2202     ; 225F (02-63)
+   ?\u2207     ; 2260 (02-64)
+   ?\u2261     ; 2261 (02-65)
+   ?\u2252     ; 2262 (02-66)
+   ?\u226A     ; 2263 (02-67)
+   ?\u226B     ; 2264 (02-68)
+   ?\u221A     ; 2265 (02-69)
+   ?\u223D     ; 2266 (02-70)
+   ?\u221D     ; 2267 (02-71)
+   ?\u2235     ; 2268 (02-72)
+   ?\u222B     ; 2269 (02-73)
+   ?\u222C     ; 226A (02-74)
+   nil         ; 226B (02-75)
+   nil         ; 226C (02-76)
+   nil         ; 226D (02-77)
+   nil         ; 226E (02-78)
+   nil         ; 226F (02-79)
+   nil         ; 2270 (02-80)
+   nil         ; 2271 (02-81)
+   ?\u212B     ; 2272 (02-82)
+   ?\u2030     ; 2273 (02-83)
+   ?\u266F     ; 2274 (02-84)
+   ?\u266D     ; 2275 (02-85)
+   ?\u266A     ; 2276 (02-86)
+   ?\u2020     ; 2277 (02-87)
+   ?\u2021     ; 2278 (02-88)
+   ?\u00B6     ; 2279 (02-89)
+   nil         ; 227A (02-90)
+   nil         ; 227B (02-91)
+   nil         ; 227C (02-92)
+   nil         ; 227D (02-93)
+   ?\u25EF     ; 227E (02-94)
+   ]
+  [nil         ; 2321 (03-01)
+   nil         ; 2322 (03-02)
+   nil         ; 2323 (03-03)
+   nil         ; 2324 (03-04)
+   nil         ; 2325 (03-05)
+   nil         ; 2326 (03-06)
+   nil         ; 2327 (03-07)
+   nil         ; 2328 (03-08)
+   nil         ; 2329 (03-09)
+   nil         ; 232A (03-10)
+   nil         ; 232B (03-11)
+   nil         ; 232C (03-12)
+   nil         ; 232D (03-13)
+   nil         ; 232E (03-14)
+   nil         ; 232F (03-15)
+   ?\uFF10     ; 2330 (03-16)
+   ?\uFF11     ; 2331 (03-17)
+   ?\uFF12     ; 2332 (03-18)
+   ?\uFF13     ; 2333 (03-19)
+   ?\uFF14     ; 2334 (03-20)
+   ?\uFF15     ; 2335 (03-21)
+   ?\uFF16     ; 2336 (03-22)
+   ?\uFF17     ; 2337 (03-23)
+   ?\uFF18     ; 2338 (03-24)
+   ?\uFF19     ; 2339 (03-25)
+   nil         ; 233A (03-26)
+   nil         ; 233B (03-27)
+   nil         ; 233C (03-28)
+   nil         ; 233D (03-29)
+   nil         ; 233E (03-30)
+   nil         ; 233F (03-31)
+   nil         ; 2340 (03-32)
+   ?\uFF21     ; 2341 (03-33)
+   ?\uFF22     ; 2342 (03-34)
+   ?\uFF23     ; 2343 (03-35)
+   ?\uFF24     ; 2344 (03-36)
+   ?\uFF25     ; 2345 (03-37)
+   ?\uFF26     ; 2346 (03-38)
+   ?\uFF27     ; 2347 (03-39)
+   ?\uFF28     ; 2348 (03-40)
+   ?\uFF29     ; 2349 (03-41)
+   ?\uFF2A     ; 234A (03-42)
+   ?\uFF2B     ; 234B (03-43)
+   ?\uFF2C     ; 234C (03-44)
+   ?\uFF2D     ; 234D (03-45)
+   ?\uFF2E     ; 234E (03-46)
+   ?\uFF2F     ; 234F (03-47)
+   ?\uFF30     ; 2350 (03-48)
+   ?\uFF31     ; 2351 (03-49)
+   ?\uFF32     ; 2352 (03-50)
+   ?\uFF33     ; 2353 (03-51)
+   ?\uFF34     ; 2354 (03-52)
+   ?\uFF35     ; 2355 (03-53)
+   ?\uFF36     ; 2356 (03-54)
+   ?\uFF37     ; 2357 (03-55)
+   ?\uFF38     ; 2358 (03-56)
+   ?\uFF39     ; 2359 (03-57)
+   ?\uFF3A     ; 235A (03-58)
+   nil         ; 235B (03-59)
+   nil         ; 235C (03-60)
+   nil         ; 235D (03-61)
+   nil         ; 235E (03-62)
+   nil         ; 235F (03-63)
+   nil         ; 2360 (03-64)
+   ?\uFF41     ; 2361 (03-65)
+   ?\uFF42     ; 2362 (03-66)
+   ?\uFF43     ; 2363 (03-67)
+   ?\uFF44     ; 2364 (03-68)
+   ?\uFF45     ; 2365 (03-69)
+   ?\uFF46     ; 2366 (03-70)
+   ?\uFF47     ; 2367 (03-71)
+   ?\uFF48     ; 2368 (03-72)
+   ?\uFF49     ; 2369 (03-73)
+   ?\uFF4A     ; 236A (03-74)
+   ?\uFF4B     ; 236B (03-75)
+   ?\uFF4C     ; 236C (03-76)
+   ?\uFF4D     ; 236D (03-77)
+   ?\uFF4E     ; 236E (03-78)
+   ?\uFF4F     ; 236F (03-79)
+   ?\uFF50     ; 2370 (03-80)
+   ?\uFF51     ; 2371 (03-81)
+   ?\uFF52     ; 2372 (03-82)
+   ?\uFF53     ; 2373 (03-83)
+   ?\uFF54     ; 2374 (03-84)
+   ?\uFF55     ; 2375 (03-85)
+   ?\uFF56     ; 2376 (03-86)
+   ?\uFF57     ; 2377 (03-87)
+   ?\uFF58     ; 2378 (03-88)
+   ?\uFF59     ; 2379 (03-89)
+   ?\uFF5A     ; 237A (03-90)
+   nil         ; 237B (03-91)
+   nil         ; 237C (03-92)
+   nil         ; 237D (03-93)
+   nil         ; 237E (03-94)
+   ]
+  [?\u3041     ; 2421 (04-01)
+   ?\u3042     ; 2422 (04-02)
+   ?\u3043     ; 2423 (04-03)
+   ?\u3044     ; 2424 (04-04)
+   ?\u3045     ; 2425 (04-05)
+   ?\u3046     ; 2426 (04-06)
+   ?\u3047     ; 2427 (04-07)
+   ?\u3048     ; 2428 (04-08)
+   ?\u3049     ; 2429 (04-09)
+   ?\u304A     ; 242A (04-10)
+   ?\u304B     ; 242B (04-11)
+   ?\u304C     ; 242C (04-12)
+   ?\u304D     ; 242D (04-13)
+   ?\u304E     ; 242E (04-14)
+   ?\u304F     ; 242F (04-15)
+   ?\u3050     ; 2430 (04-16)
+   ?\u3051     ; 2431 (04-17)
+   ?\u3052     ; 2432 (04-18)
+   ?\u3053     ; 2433 (04-19)
+   ?\u3054     ; 2434 (04-20)
+   ?\u3055     ; 2435 (04-21)
+   ?\u3056     ; 2436 (04-22)
+   ?\u3057     ; 2437 (04-23)
+   ?\u3058     ; 2438 (04-24)
+   ?\u3059     ; 2439 (04-25)
+   ?\u305A     ; 243A (04-26)
+   ?\u305B     ; 243B (04-27)
+   ?\u305C     ; 243C (04-28)
+   ?\u305D     ; 243D (04-29)
+   ?\u305E     ; 243E (04-30)
+   ?\u305F     ; 243F (04-31)
+   ?\u3060     ; 2440 (04-32)
+   ?\u3061     ; 2441 (04-33)
+   ?\u3062     ; 2442 (04-34)
+   ?\u3063     ; 2443 (04-35)
+   ?\u3064     ; 2444 (04-36)
+   ?\u3065     ; 2445 (04-37)
+   ?\u3066     ; 2446 (04-38)
+   ?\u3067     ; 2447 (04-39)
+   ?\u3068     ; 2448 (04-40)
+   ?\u3069     ; 2449 (04-41)
+   ?\u306A     ; 244A (04-42)
+   ?\u306B     ; 244B (04-43)
+   ?\u306C     ; 244C (04-44)
+   ?\u306D     ; 244D (04-45)
+   ?\u306E     ; 244E (04-46)
+   ?\u306F     ; 244F (04-47)
+   ?\u3070     ; 2450 (04-48)
+   ?\u3071     ; 2451 (04-49)
+   ?\u3072     ; 2452 (04-50)
+   ?\u3073     ; 2453 (04-51)
+   ?\u3074     ; 2454 (04-52)
+   ?\u3075     ; 2455 (04-53)
+   ?\u3076     ; 2456 (04-54)
+   ?\u3077     ; 2457 (04-55)
+   ?\u3078     ; 2458 (04-56)
+   ?\u3079     ; 2459 (04-57)
+   ?\u307A     ; 245A (04-58)
+   ?\u307B     ; 245B (04-59)
+   ?\u307C     ; 245C (04-60)
+   ?\u307D     ; 245D (04-61)
+   ?\u307E     ; 245E (04-62)
+   ?\u307F     ; 245F (04-63)
+   ?\u3080     ; 2460 (04-64)
+   ?\u3081     ; 2461 (04-65)
+   ?\u3082     ; 2462 (04-66)
+   ?\u3083     ; 2463 (04-67)
+   ?\u3084     ; 2464 (04-68)
+   ?\u3085     ; 2465 (04-69)
+   ?\u3086     ; 2466 (04-70)
+   ?\u3087     ; 2467 (04-71)
+   ?\u3088     ; 2468 (04-72)
+   ?\u3089     ; 2469 (04-73)
+   ?\u308A     ; 246A (04-74)
+   ?\u308B     ; 246B (04-75)
+   ?\u308C     ; 246C (04-76)
+   ?\u308D     ; 246D (04-77)
+   ?\u308E     ; 246E (04-78)
+   ?\u308F     ; 246F (04-79)
+   ?\u3090     ; 2470 (04-80)
+   ?\u3091     ; 2471 (04-81)
+   ?\u3092     ; 2472 (04-82)
+   ?\u3093     ; 2473 (04-83)
+   nil         ; 2474 (04-84)
+   nil         ; 2475 (04-85)
+   nil         ; 2476 (04-86)
+   nil         ; 2477 (04-87)
+   nil         ; 2478 (04-88)
+   nil         ; 2479 (04-89)
+   nil         ; 247A (04-90)
+   nil         ; 247B (04-91)
+   nil         ; 247C (04-92)
+   nil         ; 247D (04-93)
+   nil         ; 247E (04-94)
+   ]
+  [?\u30A1     ; 2521 (05-01)
+   ?\u30A2     ; 2522 (05-02)
+   ?\u30A3     ; 2523 (05-03)
+   ?\u30A4     ; 2524 (05-04)
+   ?\u30A5     ; 2525 (05-05)
+   ?\u30A6     ; 2526 (05-06)
+   ?\u30A7     ; 2527 (05-07)
+   ?\u30A8     ; 2528 (05-08)
+   ?\u30A9     ; 2529 (05-09)
+   ?\u30AA     ; 252A (05-10)
+   ?\u30AB     ; 252B (05-11)
+   ?\u30AC     ; 252C (05-12)
+   ?\u30AD     ; 252D (05-13)
+   ?\u30AE     ; 252E (05-14)
+   ?\u30AF     ; 252F (05-15)
+   ?\u30B0     ; 2530 (05-16)
+   ?\u30B1     ; 2531 (05-17)
+   ?\u30B2     ; 2532 (05-18)
+   ?\u30B3     ; 2533 (05-19)
+   ?\u30B4     ; 2534 (05-20)
+   ?\u30B5     ; 2535 (05-21)
+   ?\u30B6     ; 2536 (05-22)
+   ?\u30B7     ; 2537 (05-23)
+   ?\u30B8     ; 2538 (05-24)
+   ?\u30B9     ; 2539 (05-25)
+   ?\u30BA     ; 253A (05-26)
+   ?\u30BB     ; 253B (05-27)
+   ?\u30BC     ; 253C (05-28)
+   ?\u30BD     ; 253D (05-29)
+   ?\u30BE     ; 253E (05-30)
+   ?\u30BF     ; 253F (05-31)
+   ?\u30C0     ; 2540 (05-32)
+   ?\u30C1     ; 2541 (05-33)
+   ?\u30C2     ; 2542 (05-34)
+   ?\u30C3     ; 2543 (05-35)
+   ?\u30C4     ; 2544 (05-36)
+   ?\u30C5     ; 2545 (05-37)
+   ?\u30C6     ; 2546 (05-38)
+   ?\u30C7     ; 2547 (05-39)
+   ?\u30C8     ; 2548 (05-40)
+   ?\u30C9     ; 2549 (05-41)
+   ?\u30CA     ; 254A (05-42)
+   ?\u30CB     ; 254B (05-43)
+   ?\u30CC     ; 254C (05-44)
+   ?\u30CD     ; 254D (05-45)
+   ?\u30CE     ; 254E (05-46)
+   ?\u30CF     ; 254F (05-47)
+   ?\u30D0     ; 2550 (05-48)
+   ?\u30D1     ; 2551 (05-49)
+   ?\u30D2     ; 2552 (05-50)
+   ?\u30D3     ; 2553 (05-51)
+   ?\u30D4     ; 2554 (05-52)
+   ?\u30D5     ; 2555 (05-53)
+   ?\u30D6     ; 2556 (05-54)
+   ?\u30D7     ; 2557 (05-55)
+   ?\u30D8     ; 2558 (05-56)
+   ?\u30D9     ; 2559 (05-57)
+   ?\u30DA     ; 255A (05-58)
+   ?\u30DB     ; 255B (05-59)
+   ?\u30DC     ; 255C (05-60)
+   ?\u30DD     ; 255D (05-61)
+   ?\u30DE     ; 255E (05-62)
+   ?\u30DF     ; 255F (05-63)
+   ?\u30E0     ; 2560 (05-64)
+   ?\u30E1     ; 2561 (05-65)
+   ?\u30E2     ; 2562 (05-66)
+   ?\u30E3     ; 2563 (05-67)
+   ?\u30E4     ; 2564 (05-68)
+   ?\u30E5     ; 2565 (05-69)
+   ?\u30E6     ; 2566 (05-70)
+   ?\u30E7     ; 2567 (05-71)
+   ?\u30E8     ; 2568 (05-72)
+   ?\u30E9     ; 2569 (05-73)
+   ?\u30EA     ; 256A (05-74)
+   ?\u30EB     ; 256B (05-75)
+   ?\u30EC     ; 256C (05-76)
+   ?\u30ED     ; 256D (05-77)
+   ?\u30EE     ; 256E (05-78)
+   ?\u30EF     ; 256F (05-79)
+   ?\u30F0     ; 2570 (05-80)
+   ?\u30F1     ; 2571 (05-81)
+   ?\u30F2     ; 2572 (05-82)
+   ?\u30F3     ; 2573 (05-83)
+   ?\u30F4     ; 2574 (05-84)
+   ?\u30F5     ; 2575 (05-85)
+   ?\u30F6     ; 2576 (05-86)
+   nil         ; 2577 (05-87)
+   nil         ; 2578 (05-88)
+   nil         ; 2579 (05-89)
+   nil         ; 257A (05-90)
+   nil         ; 257B (05-91)
+   nil         ; 257C (05-92)
+   nil         ; 257D (05-93)
+   nil         ; 257E (05-94)
+   ]
+  [?\u0391     ; 2621 (06-01)
+   ?\u0392     ; 2622 (06-02)
+   ?\u0393     ; 2623 (06-03)
+   ?\u0394     ; 2624 (06-04)
+   ?\u0395     ; 2625 (06-05)
+   ?\u0396     ; 2626 (06-06)
+   ?\u0397     ; 2627 (06-07)
+   ?\u0398     ; 2628 (06-08)
+   ?\u0399     ; 2629 (06-09)
+   ?\u039A     ; 262A (06-10)
+   ?\u039B     ; 262B (06-11)
+   ?\u039C     ; 262C (06-12)
+   ?\u039D     ; 262D (06-13)
+   ?\u039E     ; 262E (06-14)
+   ?\u039F     ; 262F (06-15)
+   ?\u03A0     ; 2630 (06-16)
+   ?\u03A1     ; 2631 (06-17)
+   ?\u03A3     ; 2632 (06-18)
+   ?\u03A4     ; 2633 (06-19)
+   ?\u03A5     ; 2634 (06-20)
+   ?\u03A6     ; 2635 (06-21)
+   ?\u03A7     ; 2636 (06-22)
+   ?\u03A8     ; 2637 (06-23)
+   ?\u03A9     ; 2638 (06-24)
+   nil         ; 2639 (06-25)
+   nil         ; 263A (06-26)
+   nil         ; 263B (06-27)
+   nil         ; 263C (06-28)
+   nil         ; 263D (06-29)
+   nil         ; 263E (06-30)
+   nil         ; 263F (06-31)
+   nil         ; 2640 (06-32)
+   ?\u03B1     ; 2641 (06-33)
+   ?\u03B2     ; 2642 (06-34)
+   ?\u03B3     ; 2643 (06-35)
+   ?\u03B4     ; 2644 (06-36)
+   ?\u03B5     ; 2645 (06-37)
+   ?\u03B6     ; 2646 (06-38)
+   ?\u03B7     ; 2647 (06-39)
+   ?\u03B8     ; 2648 (06-40)
+   ?\u03B9     ; 2649 (06-41)
+   ?\u03BA     ; 264A (06-42)
+   ?\u03BB     ; 264B (06-43)
+   ?\u03BC     ; 264C (06-44)
+   ?\u03BD     ; 264D (06-45)
+   ?\u03BE     ; 264E (06-46)
+   ?\u03BF     ; 264F (06-47)
+   ?\u03C0     ; 2650 (06-48)
+   ?\u03C1     ; 2651 (06-49)
+   ?\u03C3     ; 2652 (06-50)
+   ?\u03C4     ; 2653 (06-51)
+   ?\u03C5     ; 2654 (06-52)
+   ?\u03C6     ; 2655 (06-53)
+   ?\u03C7     ; 2656 (06-54)
+   ?\u03C8     ; 2657 (06-55)
+   ?\u03C9     ; 2658 (06-56)
+   nil         ; 2659 (06-57)
+   nil         ; 265A (06-58)
+   nil         ; 265B (06-59)
+   nil         ; 265C (06-60)
+   nil         ; 265D (06-61)
+   nil         ; 265E (06-62)
+   nil         ; 265F (06-63)
+   nil         ; 2660 (06-64)
+   nil         ; 2661 (06-65)
+   nil         ; 2662 (06-66)
+   nil         ; 2663 (06-67)
+   nil         ; 2664 (06-68)
+   nil         ; 2665 (06-69)
+   nil         ; 2666 (06-70)
+   nil         ; 2667 (06-71)
+   nil         ; 2668 (06-72)
+   nil         ; 2669 (06-73)
+   nil         ; 266A (06-74)
+   nil         ; 266B (06-75)
+   nil         ; 266C (06-76)
+   nil         ; 266D (06-77)
+   nil         ; 266E (06-78)
+   nil         ; 266F (06-79)
+   nil         ; 2670 (06-80)
+   nil         ; 2671 (06-81)
+   nil         ; 2672 (06-82)
+   nil         ; 2673 (06-83)
+   nil         ; 2674 (06-84)
+   nil         ; 2675 (06-85)
+   nil         ; 2676 (06-86)
+   nil         ; 2677 (06-87)
+   nil         ; 2678 (06-88)
+   nil         ; 2679 (06-89)
+   nil         ; 267A (06-90)
+   nil         ; 267B (06-91)
+   nil         ; 267C (06-92)
+   nil         ; 267D (06-93)
+   nil         ; 267E (06-94)
+   ]
+  [?\u0410     ; 2721 (07-01)
+   ?\u0411     ; 2722 (07-02)
+   ?\u0412     ; 2723 (07-03)
+   ?\u0413     ; 2724 (07-04)
+   ?\u0414     ; 2725 (07-05)
+   ?\u0415     ; 2726 (07-06)
+   ?\u0401     ; 2727 (07-07)
+   ?\u0416     ; 2728 (07-08)
+   ?\u0417     ; 2729 (07-09)
+   ?\u0418     ; 272A (07-10)
+   ?\u0419     ; 272B (07-11)
+   ?\u041A     ; 272C (07-12)
+   ?\u041B     ; 272D (07-13)
+   ?\u041C     ; 272E (07-14)
+   ?\u041D     ; 272F (07-15)
+   ?\u041E     ; 2730 (07-16)
+   ?\u041F     ; 2731 (07-17)
+   ?\u0420     ; 2732 (07-18)
+   ?\u0421     ; 2733 (07-19)
+   ?\u0422     ; 2734 (07-20)
+   ?\u0423     ; 2735 (07-21)
+   ?\u0424     ; 2736 (07-22)
+   ?\u0425     ; 2737 (07-23)
+   ?\u0426     ; 2738 (07-24)
+   ?\u0427     ; 2739 (07-25)
+   ?\u0428     ; 273A (07-26)
+   ?\u0429     ; 273B (07-27)
+   ?\u042A     ; 273C (07-28)
+   ?\u042B     ; 273D (07-29)
+   ?\u042C     ; 273E (07-30)
+   ?\u042D     ; 273F (07-31)
+   ?\u042E     ; 2740 (07-32)
+   ?\u042F     ; 2741 (07-33)
+   nil         ; 2742 (07-34)
+   nil         ; 2743 (07-35)
+   nil         ; 2744 (07-36)
+   nil         ; 2745 (07-37)
+   nil         ; 2746 (07-38)
+   nil         ; 2747 (07-39)
+   nil         ; 2748 (07-40)
+   nil         ; 2749 (07-41)
+   nil         ; 274A (07-42)
+   nil         ; 274B (07-43)
+   nil         ; 274C (07-44)
+   nil         ; 274D (07-45)
+   nil         ; 274E (07-46)
+   nil         ; 274F (07-47)
+   nil         ; 2750 (07-48)
+   ?\u0430     ; 2751 (07-49)
+   ?\u0431     ; 2752 (07-50)
+   ?\u0432     ; 2753 (07-51)
+   ?\u0433     ; 2754 (07-52)
+   ?\u0434     ; 2755 (07-53)
+   ?\u0435     ; 2756 (07-54)
+   ?\u0451     ; 2757 (07-55)
+   ?\u0436     ; 2758 (07-56)
+   ?\u0437     ; 2759 (07-57)
+   ?\u0438     ; 275A (07-58)
+   ?\u0439     ; 275B (07-59)
+   ?\u043A     ; 275C (07-60)
+   ?\u043B     ; 275D (07-61)
+   ?\u043C     ; 275E (07-62)
+   ?\u043D     ; 275F (07-63)
+   ?\u043E     ; 2760 (07-64)
+   ?\u043F     ; 2761 (07-65)
+   ?\u0440     ; 2762 (07-66)
+   ?\u0441     ; 2763 (07-67)
+   ?\u0442     ; 2764 (07-68)
+   ?\u0443     ; 2765 (07-69)
+   ?\u0444     ; 2766 (07-70)
+   ?\u0445     ; 2767 (07-71)
+   ?\u0446     ; 2768 (07-72)
+   ?\u0447     ; 2769 (07-73)
+   ?\u0448     ; 276A (07-74)
+   ?\u0449     ; 276B (07-75)
+   ?\u044A     ; 276C (07-76)
+   ?\u044B     ; 276D (07-77)
+   ?\u044C     ; 276E (07-78)
+   ?\u044D     ; 276F (07-79)
+   ?\u044E     ; 2770 (07-80)
+   ?\u044F     ; 2771 (07-81)
+   nil         ; 2772 (07-82)
+   nil         ; 2773 (07-83)
+   nil         ; 2774 (07-84)
+   nil         ; 2775 (07-85)
+   nil         ; 2776 (07-86)
+   nil         ; 2777 (07-87)
+   nil         ; 2778 (07-88)
+   nil         ; 2779 (07-89)
+   nil         ; 277A (07-90)
+   nil         ; 277B (07-91)
+   nil         ; 277C (07-92)
+   nil         ; 277D (07-93)
+   nil         ; 277E (07-94)
+   ]
+  [?\u2500     ; 2821 (08-01)
+   ?\u2502     ; 2822 (08-02)
+   ?\u250C     ; 2823 (08-03)
+   ?\u2510     ; 2824 (08-04)
+   ?\u2518     ; 2825 (08-05)
+   ?\u2514     ; 2826 (08-06)
+   ?\u251C     ; 2827 (08-07)
+   ?\u252C     ; 2828 (08-08)
+   ?\u2524     ; 2829 (08-09)
+   ?\u2534     ; 282A (08-10)
+   ?\u253C     ; 282B (08-11)
+   ?\u2501     ; 282C (08-12)
+   ?\u2503     ; 282D (08-13)
+   ?\u250F     ; 282E (08-14)
+   ?\u2513     ; 282F (08-15)
+   ?\u251B     ; 2830 (08-16)
+   ?\u2517     ; 2831 (08-17)
+   ?\u2523     ; 2832 (08-18)
+   ?\u2533     ; 2833 (08-19)
+   ?\u252B     ; 2834 (08-20)
+   ?\u253B     ; 2835 (08-21)
+   ?\u254B     ; 2836 (08-22)
+   ?\u2520     ; 2837 (08-23)
+   ?\u252F     ; 2838 (08-24)
+   ?\u2528     ; 2839 (08-25)
+   ?\u2537     ; 283A (08-26)
+   ?\u253F     ; 283B (08-27)
+   ?\u251D     ; 283C (08-28)
+   ?\u2530     ; 283D (08-29)
+   ?\u2525     ; 283E (08-30)
+   ?\u2538     ; 283F (08-31)
+   ?\u2542     ; 2840 (08-32)
+   nil         ; 2841 (08-33)
+   nil         ; 2842 (08-34)
+   nil         ; 2843 (08-35)
+   nil         ; 2844 (08-36)
+   nil         ; 2845 (08-37)
+   nil         ; 2846 (08-38)
+   nil         ; 2847 (08-39)
+   nil         ; 2848 (08-40)
+   nil         ; 2849 (08-41)
+   nil         ; 284A (08-42)
+   nil         ; 284B (08-43)
+   nil         ; 284C (08-44)
+   nil         ; 284D (08-45)
+   nil         ; 284E (08-46)
+   nil         ; 284F (08-47)
+   nil         ; 2850 (08-48)
+   nil         ; 2851 (08-49)
+   nil         ; 2852 (08-50)
+   nil         ; 2853 (08-51)
+   nil         ; 2854 (08-52)
+   nil         ; 2855 (08-53)
+   nil         ; 2856 (08-54)
+   nil         ; 2857 (08-55)
+   nil         ; 2858 (08-56)
+   nil         ; 2859 (08-57)
+   nil         ; 285A (08-58)
+   nil         ; 285B (08-59)
+   nil         ; 285C (08-60)
+   nil         ; 285D (08-61)
+   nil         ; 285E (08-62)
+   nil         ; 285F (08-63)
+   nil         ; 2860 (08-64)
+   nil         ; 2861 (08-65)
+   nil         ; 2862 (08-66)
+   nil         ; 2863 (08-67)
+   nil         ; 2864 (08-68)
+   nil         ; 2865 (08-69)
+   nil         ; 2866 (08-70)
+   nil         ; 2867 (08-71)
+   nil         ; 2868 (08-72)
+   nil         ; 2869 (08-73)
+   nil         ; 286A (08-74)
+   nil         ; 286B (08-75)
+   nil         ; 286C (08-76)
+   nil         ; 286D (08-77)
+   nil         ; 286E (08-78)
+   nil         ; 286F (08-79)
+   nil         ; 2870 (08-80)
+   nil         ; 2871 (08-81)
+   nil         ; 2872 (08-82)
+   nil         ; 2873 (08-83)
+   nil         ; 2874 (08-84)
+   nil         ; 2875 (08-85)
+   nil         ; 2876 (08-86)
+   nil         ; 2877 (08-87)
+   nil         ; 2878 (08-88)
+   nil         ; 2879 (08-89)
+   nil         ; 287A (08-90)
+   nil         ; 287B (08-91)
+   nil         ; 287C (08-92)
+   nil         ; 287D (08-93)
+   nil         ; 287E (08-94)
+   ]
+  nil          ; 2921-297E (09)
+  nil          ; 2A21-2A7E (10)
+  nil          ; 2B21-2B7E (11)
+  nil          ; 2C21-2C7E (12)
+  nil          ; 2D21-2D7E (13)
+  nil          ; 2E21-2E7E (14)
+  nil          ; 2F21-2F7E (15)
+  [?\u4E9C     ; 3021 (16-01)
+   ?\u5516     ; 3022 (16-02)
+   ?\u5A03     ; 3023 (16-03)
+   ?\u963F     ; 3024 (16-04)
+   ?\u54C0     ; 3025 (16-05)
+   ?\u611B     ; 3026 (16-06)
+   ?\u6328     ; 3027 (16-07)
+   ?\u59F6     ; 3028 (16-08)
+   ?\u9022     ; 3029 (16-09)
+   ?\u8475     ; 302A (16-10)
+   ?\u831C     ; 302B (16-11)
+   ?\u7A50     ; 302C (16-12)
+   ?\u60AA     ; 302D (16-13)
+   ?\u63E1     ; 302E (16-14)
+   ?\u6E25     ; 302F (16-15)
+   ?\u65ED     ; 3030 (16-16)
+   ?\u8466     ; 3031 (16-17)
+   ?\u82A6     ; 3032 (16-18)
+   ?\u9BF5     ; 3033 (16-19)
+   ?\u6893     ; 3034 (16-20)
+   ?\u5727     ; 3035 (16-21)
+   ?\u65A1     ; 3036 (16-22)
+   ?\u6271     ; 3037 (16-23)
+   ?\u5B9B     ; 3038 (16-24)
+   ?\u59D0     ; 3039 (16-25)
+   ?\u867B     ; 303A (16-26)
+   ?\u98F4     ; 303B (16-27)
+   ?\u7D62     ; 303C (16-28)
+   ?\u7DBE     ; 303D (16-29)
+   ?\u9B8E     ; 303E (16-30)
+   ?\u6216     ; 303F (16-31)
+   ?\u7C9F     ; 3040 (16-32)
+   ?\u88B7     ; 3041 (16-33)
+   ?\u5B89     ; 3042 (16-34)
+   ?\u5EB5     ; 3043 (16-35)
+   ?\u6309     ; 3044 (16-36)
+   ?\u6697     ; 3045 (16-37)
+   ?\u6848     ; 3046 (16-38)
+   ?\u95C7     ; 3047 (16-39)
+   ?\u978D     ; 3048 (16-40)
+   ?\u674F     ; 3049 (16-41)
+   ?\u4EE5     ; 304A (16-42)
+   ?\u4F0A     ; 304B (16-43)
+   ?\u4F4D     ; 304C (16-44)
+   ?\u4F9D     ; 304D (16-45)
+   ?\u5049     ; 304E (16-46)
+   ?\u56F2     ; 304F (16-47)
+   ?\u5937     ; 3050 (16-48)
+   ?\u59D4     ; 3051 (16-49)
+   ?\u5A01     ; 3052 (16-50)
+   ?\u5C09     ; 3053 (16-51)
+   ?\u60DF     ; 3054 (16-52)
+   ?\u610F     ; 3055 (16-53)
+   ?\u6170     ; 3056 (16-54)
+   ?\u6613     ; 3057 (16-55)
+   ?\u6905     ; 3058 (16-56)
+   ?\u70BA     ; 3059 (16-57)
+   ?\u754F     ; 305A (16-58)
+   ?\u7570     ; 305B (16-59)
+   ?\u79FB     ; 305C (16-60)
+   ?\u7DAD     ; 305D (16-61)
+   ?\u7DEF     ; 305E (16-62)
+   ?\u80C3     ; 305F (16-63)
+   ?\u840E     ; 3060 (16-64)
+   ?\u8863     ; 3061 (16-65)
+   ?\u8B02     ; 3062 (16-66)
+   ?\u9055     ; 3063 (16-67)
+   ?\u907A     ; 3064 (16-68)
+   ?\u533B     ; 3065 (16-69)
+   ?\u4E95     ; 3066 (16-70)
+   ?\u4EA5     ; 3067 (16-71)
+   ?\u57DF     ; 3068 (16-72)
+   ?\u80B2     ; 3069 (16-73)
+   ?\u90C1     ; 306A (16-74)
+   ?\u78EF     ; 306B (16-75)
+   ?\u4E00     ; 306C (16-76)
+   ?\u58F1     ; 306D (16-77)
+   ?\u6EA2     ; 306E (16-78)
+   ?\u9038     ; 306F (16-79)
+   ?\u7A32     ; 3070 (16-80)
+   ?\u8328     ; 3071 (16-81)
+   ?\u828B     ; 3072 (16-82)
+   ?\u9C2F     ; 3073 (16-83)
+   ?\u5141     ; 3074 (16-84)
+   ?\u5370     ; 3075 (16-85)
+   ?\u54BD     ; 3076 (16-86)
+   ?\u54E1     ; 3077 (16-87)
+   ?\u56E0     ; 3078 (16-88)
+   ?\u59FB     ; 3079 (16-89)
+   ?\u5F15     ; 307A (16-90)
+   ?\u98F2     ; 307B (16-91)
+   ?\u6DEB     ; 307C (16-92)
+   ?\u80E4     ; 307D (16-93)
+   ?\u852D     ; 307E (16-94)
+   ]
+  [?\u9662     ; 3121 (17-01)
+   ?\u9670     ; 3122 (17-02)
+   ?\u96A0     ; 3123 (17-03)
+   ?\u97FB     ; 3124 (17-04)
+   ?\u540B     ; 3125 (17-05)
+   ?\u53F3     ; 3126 (17-06)
+   ?\u5B87     ; 3127 (17-07)
+   ?\u70CF     ; 3128 (17-08)
+   ?\u7FBD     ; 3129 (17-09)
+   ?\u8FC2     ; 312A (17-10)
+   ?\u96E8     ; 312B (17-11)
+   ?\u536F     ; 312C (17-12)
+   ?\u9D5C     ; 312D (17-13)
+   ?\u7ABA     ; 312E (17-14)
+   ?\u4E11     ; 312F (17-15)
+   ?\u7893     ; 3130 (17-16)
+   ?\u81FC     ; 3131 (17-17)
+   ?\u6E26     ; 3132 (17-18)
+   ?\u5618     ; 3133 (17-19)
+   ?\u5504     ; 3134 (17-20)
+   ?\u6B1D     ; 3135 (17-21)
+   ?\u851A     ; 3136 (17-22)
+   ?\u9C3B     ; 3137 (17-23)
+   ?\u59E5     ; 3138 (17-24)
+   ?\u53A9     ; 3139 (17-25)
+   ?\u6D66     ; 313A (17-26)
+   ?\u74DC     ; 313B (17-27)
+   ?\u958F     ; 313C (17-28)
+   ?\u5642     ; 313D (17-29)
+   ?\u4E91     ; 313E (17-30)
+   ?\u904B     ; 313F (17-31)
+   ?\u96F2     ; 3140 (17-32)
+   ?\u834F     ; 3141 (17-33)
+   ?\u990C     ; 3142 (17-34)
+   ?\u53E1     ; 3143 (17-35)
+   ?\u55B6     ; 3144 (17-36)
+   ?\u5B30     ; 3145 (17-37)
+   ?\u5F71     ; 3146 (17-38)
+   ?\u6620     ; 3147 (17-39)
+   ?\u66F3     ; 3148 (17-40)
+   ?\u6804     ; 3149 (17-41)
+   ?\u6C38     ; 314A (17-42)
+   ?\u6CF3     ; 314B (17-43)
+   ?\u6D29     ; 314C (17-44)
+   ?\u745B     ; 314D (17-45)
+   ?\u76C8     ; 314E (17-46)
+   ?\u7A4E     ; 314F (17-47)
+   ?\u9834     ; 3150 (17-48)
+   ?\u82F1     ; 3151 (17-49)
+   ?\u885B     ; 3152 (17-50)
+   ?\u8A60     ; 3153 (17-51)
+   ?\u92ED     ; 3154 (17-52)
+   ?\u6DB2     ; 3155 (17-53)
+   ?\u75AB     ; 3156 (17-54)
+   ?\u76CA     ; 3157 (17-55)
+   ?\u99C5     ; 3158 (17-56)
+   ?\u60A6     ; 3159 (17-57)
+   ?\u8B01     ; 315A (17-58)
+   ?\u8D8A     ; 315B (17-59)
+   ?\u95B2     ; 315C (17-60)
+   ?\u698E     ; 315D (17-61)
+   ?\u53AD     ; 315E (17-62)
+   ?\u5186     ; 315F (17-63)
+   ?\u5712     ; 3160 (17-64)
+   ?\u5830     ; 3161 (17-65)
+   ?\u5944     ; 3162 (17-66)
+   ?\u5BB4     ; 3163 (17-67)
+   ?\u5EF6     ; 3164 (17-68)
+   ?\u6028     ; 3165 (17-69)
+   ?\u63A9     ; 3166 (17-70)
+   ?\u63F4     ; 3167 (17-71)
+   ?\u6CBF     ; 3168 (17-72)
+   ?\u6F14     ; 3169 (17-73)
+   ?\u708E     ; 316A (17-74)
+   ?\u7114     ; 316B (17-75)
+   ?\u7159     ; 316C (17-76)
+   ?\u71D5     ; 316D (17-77)
+   ?\u733F     ; 316E (17-78)
+   ?\u7E01     ; 316F (17-79)
+   ?\u8276     ; 3170 (17-80)
+   ?\u82D1     ; 3171 (17-81)
+   ?\u8597     ; 3172 (17-82)
+   ?\u9060     ; 3173 (17-83)
+   ?\u925B     ; 3174 (17-84)
+   ?\u9D1B     ; 3175 (17-85)
+   ?\u5869     ; 3176 (17-86)
+   ?\u65BC     ; 3177 (17-87)
+   ?\u6C5A     ; 3178 (17-88)
+   ?\u7525     ; 3179 (17-89)
+   ?\u51F9     ; 317A (17-90)
+   ?\u592E     ; 317B (17-91)
+   ?\u5965     ; 317C (17-92)
+   ?\u5F80     ; 317D (17-93)
+   ?\u5FDC     ; 317E (17-94)
+   ]
+  [?\u62BC     ; 3221 (18-01)
+   ?\u65FA     ; 3222 (18-02)
+   ?\u6A2A     ; 3223 (18-03)
+   ?\u6B27     ; 3224 (18-04)
+   ?\u6BB4     ; 3225 (18-05)
+   ?\u738B     ; 3226 (18-06)
+   ?\u7FC1     ; 3227 (18-07)
+   ?\u8956     ; 3228 (18-08)
+   ?\u9D2C     ; 3229 (18-09)
+   ?\u9D0E     ; 322A (18-10)
+   ?\u9EC4     ; 322B (18-11)
+   ?\u5CA1     ; 322C (18-12)
+   ?\u6C96     ; 322D (18-13)
+   ?\u837B     ; 322E (18-14)
+   ?\u5104     ; 322F (18-15)
+   ?\u5C4B     ; 3230 (18-16)
+   ?\u61B6     ; 3231 (18-17)
+   ?\u81C6     ; 3232 (18-18)
+   ?\u6876     ; 3233 (18-19)
+   ?\u7261     ; 3234 (18-20)
+   ?\u4E59     ; 3235 (18-21)
+   ?\u4FFA     ; 3236 (18-22)
+   ?\u5378     ; 3237 (18-23)
+   ?\u6069     ; 3238 (18-24)
+   ?\u6E29     ; 3239 (18-25)
+   ?\u7A4F     ; 323A (18-26)
+   ?\u97F3     ; 323B (18-27)
+   ?\u4E0B     ; 323C (18-28)
+   ?\u5316     ; 323D (18-29)
+   ?\u4EEE     ; 323E (18-30)
+   ?\u4F55     ; 323F (18-31)
+   ?\u4F3D     ; 3240 (18-32)
+   ?\u4FA1     ; 3241 (18-33)
+   ?\u4F73     ; 3242 (18-34)
+   ?\u52A0     ; 3243 (18-35)
+   ?\u53EF     ; 3244 (18-36)
+   ?\u5609     ; 3245 (18-37)
+   ?\u590F     ; 3246 (18-38)
+   ?\u5AC1     ; 3247 (18-39)
+   ?\u5BB6     ; 3248 (18-40)
+   ?\u5BE1     ; 3249 (18-41)
+   ?\u79D1     ; 324A (18-42)
+   ?\u6687     ; 324B (18-43)
+   ?\u679C     ; 324C (18-44)
+   ?\u67B6     ; 324D (18-45)
+   ?\u6B4C     ; 324E (18-46)
+   ?\u6CB3     ; 324F (18-47)
+   ?\u706B     ; 3250 (18-48)
+   ?\u73C2     ; 3251 (18-49)
+   ?\u798D     ; 3252 (18-50)
+   ?\u79BE     ; 3253 (18-51)
+   ?\u7A3C     ; 3254 (18-52)
+   ?\u7B87     ; 3255 (18-53)
+   ?\u82B1     ; 3256 (18-54)
+   ?\u82DB     ; 3257 (18-55)
+   ?\u8304     ; 3258 (18-56)
+   ?\u8377     ; 3259 (18-57)
+   ?\u83EF     ; 325A (18-58)
+   ?\u83D3     ; 325B (18-59)
+   ?\u8766     ; 325C (18-60)
+   ?\u8AB2     ; 325D (18-61)
+   ?\u5629     ; 325E (18-62)
+   ?\u8CA8     ; 325F (18-63)
+   ?\u8FE6     ; 3260 (18-64)
+   ?\u904E     ; 3261 (18-65)
+   ?\u971E     ; 3262 (18-66)
+   ?\u868A     ; 3263 (18-67)
+   ?\u4FC4     ; 3264 (18-68)
+   ?\u5CE8     ; 3265 (18-69)
+   ?\u6211     ; 3266 (18-70)
+   ?\u7259     ; 3267 (18-71)
+   ?\u753B     ; 3268 (18-72)
+   ?\u81E5     ; 3269 (18-73)
+   ?\u82BD     ; 326A (18-74)
+   ?\u86FE     ; 326B (18-75)
+   ?\u8CC0     ; 326C (18-76)
+   ?\u96C5     ; 326D (18-77)
+   ?\u9913     ; 326E (18-78)
+   ?\u99D5     ; 326F (18-79)
+   ?\u4ECB     ; 3270 (18-80)
+   ?\u4F1A     ; 3271 (18-81)
+   ?\u89E3     ; 3272 (18-82)
+   ?\u56DE     ; 3273 (18-83)
+   ?\u584A     ; 3274 (18-84)
+   ?\u58CA     ; 3275 (18-85)
+   ?\u5EFB     ; 3276 (18-86)
+   ?\u5FEB     ; 3277 (18-87)
+   ?\u602A     ; 3278 (18-88)
+   ?\u6094     ; 3279 (18-89)
+   ?\u6062     ; 327A (18-90)
+   ?\u61D0     ; 327B (18-91)
+   ?\u6212     ; 327C (18-92)
+   ?\u62D0     ; 327D (18-93)
+   ?\u6539     ; 327E (18-94)
+   ]
+  [?\u9B41     ; 3321 (19-01)
+   ?\u6666     ; 3322 (19-02)
+   ?\u68B0     ; 3323 (19-03)
+   ?\u6D77     ; 3324 (19-04)
+   ?\u7070     ; 3325 (19-05)
+   ?\u754C     ; 3326 (19-06)
+   ?\u7686     ; 3327 (19-07)
+   ?\u7D75     ; 3328 (19-08)
+   ?\u82A5     ; 3329 (19-09)
+   ?\u87F9     ; 332A (19-10)
+   ?\u958B     ; 332B (19-11)
+   ?\u968E     ; 332C (19-12)
+   ?\u8C9D     ; 332D (19-13)
+   ?\u51F1     ; 332E (19-14)
+   ?\u52BE     ; 332F (19-15)
+   ?\u5916     ; 3330 (19-16)
+   ?\u54B3     ; 3331 (19-17)
+   ?\u5BB3     ; 3332 (19-18)
+   ?\u5D16     ; 3333 (19-19)
+   ?\u6168     ; 3334 (19-20)
+   ?\u6982     ; 3335 (19-21)
+   ?\u6DAF     ; 3336 (19-22)
+   ?\u788D     ; 3337 (19-23)
+   ?\u84CB     ; 3338 (19-24)
+   ?\u8857     ; 3339 (19-25)
+   ?\u8A72     ; 333A (19-26)
+   ?\u93A7     ; 333B (19-27)
+   ?\u9AB8     ; 333C (19-28)
+   ?\u6D6C     ; 333D (19-29)
+   ?\u99A8     ; 333E (19-30)
+   ?\u86D9     ; 333F (19-31)
+   ?\u57A3     ; 3340 (19-32)
+   ?\u67FF     ; 3341 (19-33)
+   ?\u86CE     ; 3342 (19-34)
+   ?\u920E     ; 3343 (19-35)
+   ?\u5283     ; 3344 (19-36)
+   ?\u5687     ; 3345 (19-37)
+   ?\u5404     ; 3346 (19-38)
+   ?\u5ED3     ; 3347 (19-39)
+   ?\u62E1     ; 3348 (19-40)
+   ?\u64B9     ; 3349 (19-41)
+   ?\u683C     ; 334A (19-42)
+   ?\u6838     ; 334B (19-43)
+   ?\u6BBB     ; 334C (19-44)
+   ?\u7372     ; 334D (19-45)
+   ?\u78BA     ; 334E (19-46)
+   ?\u7A6B     ; 334F (19-47)
+   ?\u899A     ; 3350 (19-48)
+   ?\u89D2     ; 3351 (19-49)
+   ?\u8D6B     ; 3352 (19-50)
+   ?\u8F03     ; 3353 (19-51)
+   ?\u90ED     ; 3354 (19-52)
+   ?\u95A3     ; 3355 (19-53)
+   ?\u9694     ; 3356 (19-54)
+   ?\u9769     ; 3357 (19-55)
+   ?\u5B66     ; 3358 (19-56)
+   ?\u5CB3     ; 3359 (19-57)
+   ?\u697D     ; 335A (19-58)
+   ?\u984D     ; 335B (19-59)
+   ?\u984E     ; 335C (19-60)
+   ?\u639B     ; 335D (19-61)
+   ?\u7B20     ; 335E (19-62)
+   ?\u6A2B     ; 335F (19-63)
+   ?\u6A7F     ; 3360 (19-64)
+   ?\u68B6     ; 3361 (19-65)
+   ?\u9C0D     ; 3362 (19-66)
+   ?\u6F5F     ; 3363 (19-67)
+   ?\u5272     ; 3364 (19-68)
+   ?\u559D     ; 3365 (19-69)
+   ?\u6070     ; 3366 (19-70)
+   ?\u62EC     ; 3367 (19-71)
+   ?\u6D3B     ; 3368 (19-72)
+   ?\u6E07     ; 3369 (19-73)
+   ?\u6ED1     ; 336A (19-74)
+   ?\u845B     ; 336B (19-75)
+   ?\u8910     ; 336C (19-76)
+   ?\u8F44     ; 336D (19-77)
+   ?\u4E14     ; 336E (19-78)
+   ?\u9C39     ; 336F (19-79)
+   ?\u53F6     ; 3370 (19-80)
+   ?\u691B     ; 3371 (19-81)
+   ?\u6A3A     ; 3372 (19-82)
+   ?\u9784     ; 3373 (19-83)
+   ?\u682A     ; 3374 (19-84)
+   ?\u515C     ; 3375 (19-85)
+   ?\u7AC3     ; 3376 (19-86)
+   ?\u84B2     ; 3377 (19-87)
+   ?\u91DC     ; 3378 (19-88)
+   ?\u938C     ; 3379 (19-89)
+   ?\u565B     ; 337A (19-90)
+   ?\u9D28     ; 337B (19-91)
+   ?\u6822     ; 337C (19-92)
+   ?\u8305     ; 337D (19-93)
+   ?\u8431     ; 337E (19-94)
+   ]
+  [?\u7CA5     ; 3421 (20-01)
+   ?\u5208     ; 3422 (20-02)
+   ?\u82C5     ; 3423 (20-03)
+   ?\u74E6     ; 3424 (20-04)
+   ?\u4E7E     ; 3425 (20-05)
+   ?\u4F83     ; 3426 (20-06)
+   ?\u51A0     ; 3427 (20-07)
+   ?\u5BD2     ; 3428 (20-08)
+   ?\u520A     ; 3429 (20-09)
+   ?\u52D8     ; 342A (20-10)
+   ?\u52E7     ; 342B (20-11)
+   ?\u5DFB     ; 342C (20-12)
+   ?\u559A     ; 342D (20-13)
+   ?\u582A     ; 342E (20-14)
+   ?\u59E6     ; 342F (20-15)
+   ?\u5B8C     ; 3430 (20-16)
+   ?\u5B98     ; 3431 (20-17)
+   ?\u5BDB     ; 3432 (20-18)
+   ?\u5E72     ; 3433 (20-19)
+   ?\u5E79     ; 3434 (20-20)
+   ?\u60A3     ; 3435 (20-21)
+   ?\u611F     ; 3436 (20-22)
+   ?\u6163     ; 3437 (20-23)
+   ?\u61BE     ; 3438 (20-24)
+   ?\u63DB     ; 3439 (20-25)
+   ?\u6562     ; 343A (20-26)
+   ?\u67D1     ; 343B (20-27)
+   ?\u6853     ; 343C (20-28)
+   ?\u68FA     ; 343D (20-29)
+   ?\u6B3E     ; 343E (20-30)
+   ?\u6B53     ; 343F (20-31)
+   ?\u6C57     ; 3440 (20-32)
+   ?\u6F22     ; 3441 (20-33)
+   ?\u6F97     ; 3442 (20-34)
+   ?\u6F45     ; 3443 (20-35)
+   ?\u74B0     ; 3444 (20-36)
+   ?\u7518     ; 3445 (20-37)
+   ?\u76E3     ; 3446 (20-38)
+   ?\u770B     ; 3447 (20-39)
+   ?\u7AFF     ; 3448 (20-40)
+   ?\u7BA1     ; 3449 (20-41)
+   ?\u7C21     ; 344A (20-42)
+   ?\u7DE9     ; 344B (20-43)
+   ?\u7F36     ; 344C (20-44)
+   ?\u7FF0     ; 344D (20-45)
+   ?\u809D     ; 344E (20-46)
+   ?\u8266     ; 344F (20-47)
+   ?\u839E     ; 3450 (20-48)
+   ?\u89B3     ; 3451 (20-49)
+   ?\u8ACC     ; 3452 (20-50)
+   ?\u8CAB     ; 3453 (20-51)
+   ?\u9084     ; 3454 (20-52)
+   ?\u9451     ; 3455 (20-53)
+   ?\u9593     ; 3456 (20-54)
+   ?\u9591     ; 3457 (20-55)
+   ?\u95A2     ; 3458 (20-56)
+   ?\u9665     ; 3459 (20-57)
+   ?\u97D3     ; 345A (20-58)
+   ?\u9928     ; 345B (20-59)
+   ?\u8218     ; 345C (20-60)
+   ?\u4E38     ; 345D (20-61)
+   ?\u542B     ; 345E (20-62)
+   ?\u5CB8     ; 345F (20-63)
+   ?\u5DCC     ; 3460 (20-64)
+   ?\u73A9     ; 3461 (20-65)
+   ?\u764C     ; 3462 (20-66)
+   ?\u773C     ; 3463 (20-67)
+   ?\u5CA9     ; 3464 (20-68)
+   ?\u7FEB     ; 3465 (20-69)
+   ?\u8D0B     ; 3466 (20-70)
+   ?\u96C1     ; 3467 (20-71)
+   ?\u9811     ; 3468 (20-72)
+   ?\u9854     ; 3469 (20-73)
+   ?\u9858     ; 346A (20-74)
+   ?\u4F01     ; 346B (20-75)
+   ?\u4F0E     ; 346C (20-76)
+   ?\u5371     ; 346D (20-77)
+   ?\u559C     ; 346E (20-78)
+   ?\u5668     ; 346F (20-79)
+   ?\u57FA     ; 3470 (20-80)
+   ?\u5947     ; 3471 (20-81)
+   ?\u5B09     ; 3472 (20-82)
+   ?\u5BC4     ; 3473 (20-83)
+   ?\u5C90     ; 3474 (20-84)
+   ?\u5E0C     ; 3475 (20-85)
+   ?\u5E7E     ; 3476 (20-86)
+   ?\u5FCC     ; 3477 (20-87)
+   ?\u63EE     ; 3478 (20-88)
+   ?\u673A     ; 3479 (20-89)
+   ?\u65D7     ; 347A (20-90)
+   ?\u65E2     ; 347B (20-91)
+   ?\u671F     ; 347C (20-92)
+   ?\u68CB     ; 347D (20-93)
+   ?\u68C4     ; 347E (20-94)
+   ]
+  [?\u6A5F     ; 3521 (21-01)
+   ?\u5E30     ; 3522 (21-02)
+   ?\u6BC5     ; 3523 (21-03)
+   ?\u6C17     ; 3524 (21-04)
+   ?\u6C7D     ; 3525 (21-05)
+   ?\u757F     ; 3526 (21-06)
+   ?\u7948     ; 3527 (21-07)
+   ?\u5B63     ; 3528 (21-08)
+   ?\u7A00     ; 3529 (21-09)
+   ?\u7D00     ; 352A (21-10)
+   ?\u5FBD     ; 352B (21-11)
+   ?\u898F     ; 352C (21-12)
+   ?\u8A18     ; 352D (21-13)
+   ?\u8CB4     ; 352E (21-14)
+   ?\u8D77     ; 352F (21-15)
+   ?\u8ECC     ; 3530 (21-16)
+   ?\u8F1D     ; 3531 (21-17)
+   ?\u98E2     ; 3532 (21-18)
+   ?\u9A0E     ; 3533 (21-19)
+   ?\u9B3C     ; 3534 (21-20)
+   ?\u4E80     ; 3535 (21-21)
+   ?\u507D     ; 3536 (21-22)
+   ?\u5100     ; 3537 (21-23)
+   ?\u5993     ; 3538 (21-24)
+   ?\u5B9C     ; 3539 (21-25)
+   ?\u622F     ; 353A (21-26)
+   ?\u6280     ; 353B (21-27)
+   ?\u64EC     ; 353C (21-28)
+   ?\u6B3A     ; 353D (21-29)
+   ?\u72A0     ; 353E (21-30)
+   ?\u7591     ; 353F (21-31)
+   ?\u7947     ; 3540 (21-32)
+   ?\u7FA9     ; 3541 (21-33)
+   ?\u87FB     ; 3542 (21-34)
+   ?\u8ABC     ; 3543 (21-35)
+   ?\u8B70     ; 3544 (21-36)
+   ?\u63AC     ; 3545 (21-37)
+   ?\u83CA     ; 3546 (21-38)
+   ?\u97A0     ; 3547 (21-39)
+   ?\u5409     ; 3548 (21-40)
+   ?\u5403     ; 3549 (21-41)
+   ?\u55AB     ; 354A (21-42)
+   ?\u6854     ; 354B (21-43)
+   ?\u6A58     ; 354C (21-44)
+   ?\u8A70     ; 354D (21-45)
+   ?\u7827     ; 354E (21-46)
+   ?\u6775     ; 354F (21-47)
+   ?\u9ECD     ; 3550 (21-48)
+   ?\u5374     ; 3551 (21-49)
+   ?\u5BA2     ; 3552 (21-50)
+   ?\u811A     ; 3553 (21-51)
+   ?\u8650     ; 3554 (21-52)
+   ?\u9006     ; 3555 (21-53)
+   ?\u4E18     ; 3556 (21-54)
+   ?\u4E45     ; 3557 (21-55)
+   ?\u4EC7     ; 3558 (21-56)
+   ?\u4F11     ; 3559 (21-57)
+   ?\u53CA     ; 355A (21-58)
+   ?\u5438     ; 355B (21-59)
+   ?\u5BAE     ; 355C (21-60)
+   ?\u5F13     ; 355D (21-61)
+   ?\u6025     ; 355E (21-62)
+   ?\u6551     ; 355F (21-63)
+   ?\u673D     ; 3560 (21-64)
+   ?\u6C42     ; 3561 (21-65)
+   ?\u6C72     ; 3562 (21-66)
+   ?\u6CE3     ; 3563 (21-67)
+   ?\u7078     ; 3564 (21-68)
+   ?\u7403     ; 3565 (21-69)
+   ?\u7A76     ; 3566 (21-70)
+   ?\u7AAE     ; 3567 (21-71)
+   ?\u7B08     ; 3568 (21-72)
+   ?\u7D1A     ; 3569 (21-73)
+   ?\u7CFE     ; 356A (21-74)
+   ?\u7D66     ; 356B (21-75)
+   ?\u65E7     ; 356C (21-76)
+   ?\u725B     ; 356D (21-77)
+   ?\u53BB     ; 356E (21-78)
+   ?\u5C45     ; 356F (21-79)
+   ?\u5DE8     ; 3570 (21-80)
+   ?\u62D2     ; 3571 (21-81)
+   ?\u62E0     ; 3572 (21-82)
+   ?\u6319     ; 3573 (21-83)
+   ?\u6E20     ; 3574 (21-84)
+   ?\u865A     ; 3575 (21-85)
+   ?\u8A31     ; 3576 (21-86)
+   ?\u8DDD     ; 3577 (21-87)
+   ?\u92F8     ; 3578 (21-88)
+   ?\u6F01     ; 3579 (21-89)
+   ?\u79A6     ; 357A (21-90)
+   ?\u9B5A     ; 357B (21-91)
+   ?\u4EA8     ; 357C (21-92)
+   ?\u4EAB     ; 357D (21-93)
+   ?\u4EAC     ; 357E (21-94)
+   ]
+  [?\u4F9B     ; 3621 (22-01)
+   ?\u4FA0     ; 3622 (22-02)
+   ?\u50D1     ; 3623 (22-03)
+   ?\u5147     ; 3624 (22-04)
+   ?\u7AF6     ; 3625 (22-05)
+   ?\u5171     ; 3626 (22-06)
+   ?\u51F6     ; 3627 (22-07)
+   ?\u5354     ; 3628 (22-08)
+   ?\u5321     ; 3629 (22-09)
+   ?\u537F     ; 362A (22-10)
+   ?\u53EB     ; 362B (22-11)
+   ?\u55AC     ; 362C (22-12)
+   ?\u5883     ; 362D (22-13)
+   ?\u5CE1     ; 362E (22-14)
+   ?\u5F37     ; 362F (22-15)
+   ?\u5F4A     ; 3630 (22-16)
+   ?\u602F     ; 3631 (22-17)
+   ?\u6050     ; 3632 (22-18)
+   ?\u606D     ; 3633 (22-19)
+   ?\u631F     ; 3634 (22-20)
+   ?\u6559     ; 3635 (22-21)
+   ?\u6A4B     ; 3636 (22-22)
+   ?\u6CC1     ; 3637 (22-23)
+   ?\u72C2     ; 3638 (22-24)
+   ?\u72ED     ; 3639 (22-25)
+   ?\u77EF     ; 363A (22-26)
+   ?\u80F8     ; 363B (22-27)
+   ?\u8105     ; 363C (22-28)
+   ?\u8208     ; 363D (22-29)
+   ?\u854E     ; 363E (22-30)
+   ?\u90F7     ; 363F (22-31)
+   ?\u93E1     ; 3640 (22-32)
+   ?\u97FF     ; 3641 (22-33)
+   ?\u9957     ; 3642 (22-34)
+   ?\u9A5A     ; 3643 (22-35)
+   ?\u4EF0     ; 3644 (22-36)
+   ?\u51DD     ; 3645 (22-37)
+   ?\u5C2D     ; 3646 (22-38)
+   ?\u6681     ; 3647 (22-39)
+   ?\u696D     ; 3648 (22-40)
+   ?\u5C40     ; 3649 (22-41)
+   ?\u66F2     ; 364A (22-42)
+   ?\u6975     ; 364B (22-43)
+   ?\u7389     ; 364C (22-44)
+   ?\u6850     ; 364D (22-45)
+   ?\u7C81     ; 364E (22-46)
+   ?\u50C5     ; 364F (22-47)
+   ?\u52E4     ; 3650 (22-48)
+   ?\u5747     ; 3651 (22-49)
+   ?\u5DFE     ; 3652 (22-50)
+   ?\u9326     ; 3653 (22-51)
+   ?\u65A4     ; 3654 (22-52)
+   ?\u6B23     ; 3655 (22-53)
+   ?\u6B3D     ; 3656 (22-54)
+   ?\u7434     ; 3657 (22-55)
+   ?\u7981     ; 3658 (22-56)
+   ?\u79BD     ; 3659 (22-57)
+   ?\u7B4B     ; 365A (22-58)
+   ?\u7DCA     ; 365B (22-59)
+   ?\u82B9     ; 365C (22-60)
+   ?\u83CC     ; 365D (22-61)
+   ?\u887F     ; 365E (22-62)
+   ?\u895F     ; 365F (22-63)
+   ?\u8B39     ; 3660 (22-64)
+   ?\u8FD1     ; 3661 (22-65)
+   ?\u91D1     ; 3662 (22-66)
+   ?\u541F     ; 3663 (22-67)
+   ?\u9280     ; 3664 (22-68)
+   ?\u4E5D     ; 3665 (22-69)
+   ?\u5036     ; 3666 (22-70)
+   ?\u53E5     ; 3667 (22-71)
+   ?\u533A     ; 3668 (22-72)
+   ?\u72D7     ; 3669 (22-73)
+   ?\u7396     ; 366A (22-74)
+   ?\u77E9     ; 366B (22-75)
+   ?\u82E6     ; 366C (22-76)
+   ?\u8EAF     ; 366D (22-77)
+   ?\u99C6     ; 366E (22-78)
+   ?\u99C8     ; 366F (22-79)
+   ?\u99D2     ; 3670 (22-80)
+   ?\u5177     ; 3671 (22-81)
+   ?\u611A     ; 3672 (22-82)
+   ?\u865E     ; 3673 (22-83)
+   ?\u55B0     ; 3674 (22-84)
+   ?\u7A7A     ; 3675 (22-85)
+   ?\u5076     ; 3676 (22-86)
+   ?\u5BD3     ; 3677 (22-87)
+   ?\u9047     ; 3678 (22-88)
+   ?\u9685     ; 3679 (22-89)
+   ?\u4E32     ; 367A (22-90)
+   ?\u6ADB     ; 367B (22-91)
+   ?\u91E7     ; 367C (22-92)
+   ?\u5C51     ; 367D (22-93)
+   ?\u5C48     ; 367E (22-94)
+   ]
+  [?\u6398     ; 3721 (23-01)
+   ?\u7A9F     ; 3722 (23-02)
+   ?\u6C93     ; 3723 (23-03)
+   ?\u9774     ; 3724 (23-04)
+   ?\u8F61     ; 3725 (23-05)
+   ?\u7AAA     ; 3726 (23-06)
+   ?\u718A     ; 3727 (23-07)
+   ?\u9688     ; 3728 (23-08)
+   ?\u7C82     ; 3729 (23-09)
+   ?\u6817     ; 372A (23-10)
+   ?\u7E70     ; 372B (23-11)
+   ?\u6851     ; 372C (23-12)
+   ?\u936C     ; 372D (23-13)
+   ?\u52F2     ; 372E (23-14)
+   ?\u541B     ; 372F (23-15)
+   ?\u85AB     ; 3730 (23-16)
+   ?\u8A13     ; 3731 (23-17)
+   ?\u7FA4     ; 3732 (23-18)
+   ?\u8ECD     ; 3733 (23-19)
+   ?\u90E1     ; 3734 (23-20)
+   ?\u5366     ; 3735 (23-21)
+   ?\u8888     ; 3736 (23-22)
+   ?\u7941     ; 3737 (23-23)
+   ?\u4FC2     ; 3738 (23-24)
+   ?\u50BE     ; 3739 (23-25)
+   ?\u5211     ; 373A (23-26)
+   ?\u5144     ; 373B (23-27)
+   ?\u5553     ; 373C (23-28)
+   ?\u572D     ; 373D (23-29)
+   ?\u73EA     ; 373E (23-30)
+   ?\u578B     ; 373F (23-31)
+   ?\u5951     ; 3740 (23-32)
+   ?\u5F62     ; 3741 (23-33)
+   ?\u5F84     ; 3742 (23-34)
+   ?\u6075     ; 3743 (23-35)
+   ?\u6176     ; 3744 (23-36)
+   ?\u6167     ; 3745 (23-37)
+   ?\u61A9     ; 3746 (23-38)
+   ?\u63B2     ; 3747 (23-39)
+   ?\u643A     ; 3748 (23-40)
+   ?\u656C     ; 3749 (23-41)
+   ?\u666F     ; 374A (23-42)
+   ?\u6842     ; 374B (23-43)
+   ?\u6E13     ; 374C (23-44)
+   ?\u7566     ; 374D (23-45)
+   ?\u7A3D     ; 374E (23-46)
+   ?\u7CFB     ; 374F (23-47)
+   ?\u7D4C     ; 3750 (23-48)
+   ?\u7D99     ; 3751 (23-49)
+   ?\u7E4B     ; 3752 (23-50)
+   ?\u7F6B     ; 3753 (23-51)
+   ?\u830E     ; 3754 (23-52)
+   ?\u834A     ; 3755 (23-53)
+   ?\u86CD     ; 3756 (23-54)
+   ?\u8A08     ; 3757 (23-55)
+   ?\u8A63     ; 3758 (23-56)
+   ?\u8B66     ; 3759 (23-57)
+   ?\u8EFD     ; 375A (23-58)
+   ?\u981A     ; 375B (23-59)
+   ?\u9D8F     ; 375C (23-60)
+   ?\u82B8     ; 375D (23-61)
+   ?\u8FCE     ; 375E (23-62)
+   ?\u9BE8     ; 375F (23-63)
+   ?\u5287     ; 3760 (23-64)
+   ?\u621F     ; 3761 (23-65)
+   ?\u6483     ; 3762 (23-66)
+   ?\u6FC0     ; 3763 (23-67)
+   ?\u9699     ; 3764 (23-68)
+   ?\u6841     ; 3765 (23-69)
+   ?\u5091     ; 3766 (23-70)
+   ?\u6B20     ; 3767 (23-71)
+   ?\u6C7A     ; 3768 (23-72)
+   ?\u6F54     ; 3769 (23-73)
+   ?\u7A74     ; 376A (23-74)
+   ?\u7D50     ; 376B (23-75)
+   ?\u8840     ; 376C (23-76)
+   ?\u8A23     ; 376D (23-77)
+   ?\u6708     ; 376E (23-78)
+   ?\u4EF6     ; 376F (23-79)
+   ?\u5039     ; 3770 (23-80)
+   ?\u5026     ; 3771 (23-81)
+   ?\u5065     ; 3772 (23-82)
+   ?\u517C     ; 3773 (23-83)
+   ?\u5238     ; 3774 (23-84)
+   ?\u5263     ; 3775 (23-85)
+   ?\u55A7     ; 3776 (23-86)
+   ?\u570F     ; 3777 (23-87)
+   ?\u5805     ; 3778 (23-88)
+   ?\u5ACC     ; 3779 (23-89)
+   ?\u5EFA     ; 377A (23-90)
+   ?\u61B2     ; 377B (23-91)
+   ?\u61F8     ; 377C (23-92)
+   ?\u62F3     ; 377D (23-93)
+   ?\u6372     ; 377E (23-94)
+   ]
+  [?\u691C     ; 3821 (24-01)
+   ?\u6A29     ; 3822 (24-02)
+   ?\u727D     ; 3823 (24-03)
+   ?\u72AC     ; 3824 (24-04)
+   ?\u732E     ; 3825 (24-05)
+   ?\u7814     ; 3826 (24-06)
+   ?\u786F     ; 3827 (24-07)
+   ?\u7D79     ; 3828 (24-08)
+   ?\u770C     ; 3829 (24-09)
+   ?\u80A9     ; 382A (24-10)
+   ?\u898B     ; 382B (24-11)
+   ?\u8B19     ; 382C (24-12)
+   ?\u8CE2     ; 382D (24-13)
+   ?\u8ED2     ; 382E (24-14)
+   ?\u9063     ; 382F (24-15)
+   ?\u9375     ; 3830 (24-16)
+   ?\u967A     ; 3831 (24-17)
+   ?\u9855     ; 3832 (24-18)
+   ?\u9A13     ; 3833 (24-19)
+   ?\u9E78     ; 3834 (24-20)
+   ?\u5143     ; 3835 (24-21)
+   ?\u539F     ; 3836 (24-22)
+   ?\u53B3     ; 3837 (24-23)
+   ?\u5E7B     ; 3838 (24-24)
+   ?\u5F26     ; 3839 (24-25)
+   ?\u6E1B     ; 383A (24-26)
+   ?\u6E90     ; 383B (24-27)
+   ?\u7384     ; 383C (24-28)
+   ?\u73FE     ; 383D (24-29)
+   ?\u7D43     ; 383E (24-30)
+   ?\u8237     ; 383F (24-31)
+   ?\u8A00     ; 3840 (24-32)
+   ?\u8AFA     ; 3841 (24-33)
+   ?\u9650     ; 3842 (24-34)
+   ?\u4E4E     ; 3843 (24-35)
+   ?\u500B     ; 3844 (24-36)
+   ?\u53E4     ; 3845 (24-37)
+   ?\u547C     ; 3846 (24-38)
+   ?\u56FA     ; 3847 (24-39)
+   ?\u59D1     ; 3848 (24-40)
+   ?\u5B64     ; 3849 (24-41)
+   ?\u5DF1     ; 384A (24-42)
+   ?\u5EAB     ; 384B (24-43)
+   ?\u5F27     ; 384C (24-44)
+   ?\u6238     ; 384D (24-45)
+   ?\u6545     ; 384E (24-46)
+   ?\u67AF     ; 384F (24-47)
+   ?\u6E56     ; 3850 (24-48)
+   ?\u72D0     ; 3851 (24-49)
+   ?\u7CCA     ; 3852 (24-50)
+   ?\u88B4     ; 3853 (24-51)
+   ?\u80A1     ; 3854 (24-52)
+   ?\u80E1     ; 3855 (24-53)
+   ?\u83F0     ; 3856 (24-54)
+   ?\u864E     ; 3857 (24-55)
+   ?\u8A87     ; 3858 (24-56)
+   ?\u8DE8     ; 3859 (24-57)
+   ?\u9237     ; 385A (24-58)
+   ?\u96C7     ; 385B (24-59)
+   ?\u9867     ; 385C (24-60)
+   ?\u9F13     ; 385D (24-61)
+   ?\u4E94     ; 385E (24-62)
+   ?\u4E92     ; 385F (24-63)
+   ?\u4F0D     ; 3860 (24-64)
+   ?\u5348     ; 3861 (24-65)
+   ?\u5449     ; 3862 (24-66)
+   ?\u543E     ; 3863 (24-67)
+   ?\u5A2F     ; 3864 (24-68)
+   ?\u5F8C     ; 3865 (24-69)
+   ?\u5FA1     ; 3866 (24-70)
+   ?\u609F     ; 3867 (24-71)
+   ?\u68A7     ; 3868 (24-72)
+   ?\u6A8E     ; 3869 (24-73)
+   ?\u745A     ; 386A (24-74)
+   ?\u7881     ; 386B (24-75)
+   ?\u8A9E     ; 386C (24-76)
+   ?\u8AA4     ; 386D (24-77)
+   ?\u8B77     ; 386E (24-78)
+   ?\u9190     ; 386F (24-79)
+   ?\u4E5E     ; 3870 (24-80)
+   ?\u9BC9     ; 3871 (24-81)
+   ?\u4EA4     ; 3872 (24-82)
+   ?\u4F7C     ; 3873 (24-83)
+   ?\u4FAF     ; 3874 (24-84)
+   ?\u5019     ; 3875 (24-85)
+   ?\u5016     ; 3876 (24-86)
+   ?\u5149     ; 3877 (24-87)
+   ?\u516C     ; 3878 (24-88)
+   ?\u529F     ; 3879 (24-89)
+   ?\u52B9     ; 387A (24-90)
+   ?\u52FE     ; 387B (24-91)
+   ?\u539A     ; 387C (24-92)
+   ?\u53E3     ; 387D (24-93)
+   ?\u5411     ; 387E (24-94)
+   ]
+  [?\u540E     ; 3921 (25-01)
+   ?\u5589     ; 3922 (25-02)
+   ?\u5751     ; 3923 (25-03)
+   ?\u57A2     ; 3924 (25-04)
+   ?\u597D     ; 3925 (25-05)
+   ?\u5B54     ; 3926 (25-06)
+   ?\u5B5D     ; 3927 (25-07)
+   ?\u5B8F     ; 3928 (25-08)
+   ?\u5DE5     ; 3929 (25-09)
+   ?\u5DE7     ; 392A (25-10)
+   ?\u5DF7     ; 392B (25-11)
+   ?\u5E78     ; 392C (25-12)
+   ?\u5E83     ; 392D (25-13)
+   ?\u5E9A     ; 392E (25-14)
+   ?\u5EB7     ; 392F (25-15)
+   ?\u5F18     ; 3930 (25-16)
+   ?\u6052     ; 3931 (25-17)
+   ?\u614C     ; 3932 (25-18)
+   ?\u6297     ; 3933 (25-19)
+   ?\u62D8     ; 3934 (25-20)
+   ?\u63A7     ; 3935 (25-21)
+   ?\u653B     ; 3936 (25-22)
+   ?\u6602     ; 3937 (25-23)
+   ?\u6643     ; 3938 (25-24)
+   ?\u66F4     ; 3939 (25-25)
+   ?\u676D     ; 393A (25-26)
+   ?\u6821     ; 393B (25-27)
+   ?\u6897     ; 393C (25-28)
+   ?\u69CB     ; 393D (25-29)
+   ?\u6C5F     ; 393E (25-30)
+   ?\u6D2A     ; 393F (25-31)
+   ?\u6D69     ; 3940 (25-32)
+   ?\u6E2F     ; 3941 (25-33)
+   ?\u6E9D     ; 3942 (25-34)
+   ?\u7532     ; 3943 (25-35)
+   ?\u7687     ; 3944 (25-36)
+   ?\u786C     ; 3945 (25-37)
+   ?\u7A3F     ; 3946 (25-38)
+   ?\u7CE0     ; 3947 (25-39)
+   ?\u7D05     ; 3948 (25-40)
+   ?\u7D18     ; 3949 (25-41)
+   ?\u7D5E     ; 394A (25-42)
+   ?\u7DB1     ; 394B (25-43)
+   ?\u8015     ; 394C (25-44)
+   ?\u8003     ; 394D (25-45)
+   ?\u80AF     ; 394E (25-46)
+   ?\u80B1     ; 394F (25-47)
+   ?\u8154     ; 3950 (25-48)
+   ?\u818F     ; 3951 (25-49)
+   ?\u822A     ; 3952 (25-50)
+   ?\u8352     ; 3953 (25-51)
+   ?\u884C     ; 3954 (25-52)
+   ?\u8861     ; 3955 (25-53)
+   ?\u8B1B     ; 3956 (25-54)
+   ?\u8CA2     ; 3957 (25-55)
+   ?\u8CFC     ; 3958 (25-56)
+   ?\u90CA     ; 3959 (25-57)
+   ?\u9175     ; 395A (25-58)
+   ?\u9271     ; 395B (25-59)
+   ?\u783F     ; 395C (25-60)
+   ?\u92FC     ; 395D (25-61)
+   ?\u95A4     ; 395E (25-62)
+   ?\u964D     ; 395F (25-63)
+   ?\u9805     ; 3960 (25-64)
+   ?\u9999     ; 3961 (25-65)
+   ?\u9AD8     ; 3962 (25-66)
+   ?\u9D3B     ; 3963 (25-67)
+   ?\u525B     ; 3964 (25-68)
+   ?\u52AB     ; 3965 (25-69)
+   ?\u53F7     ; 3966 (25-70)
+   ?\u5408     ; 3967 (25-71)
+   ?\u58D5     ; 3968 (25-72)
+   ?\u62F7     ; 3969 (25-73)
+   ?\u6FE0     ; 396A (25-74)
+   ?\u8C6A     ; 396B (25-75)
+   ?\u8F5F     ; 396C (25-76)
+   ?\u9EB9     ; 396D (25-77)
+   ?\u514B     ; 396E (25-78)
+   ?\u523B     ; 396F (25-79)
+   ?\u544A     ; 3970 (25-80)
+   ?\u56FD     ; 3971 (25-81)
+   ?\u7A40     ; 3972 (25-82)
+   ?\u9177     ; 3973 (25-83)
+   ?\u9D60     ; 3974 (25-84)
+   ?\u9ED2     ; 3975 (25-85)
+   ?\u7344     ; 3976 (25-86)
+   ?\u6F09     ; 3977 (25-87)
+   ?\u8170     ; 3978 (25-88)
+   ?\u7511     ; 3979 (25-89)
+   ?\u5FFD     ; 397A (25-90)
+   ?\u60DA     ; 397B (25-91)
+   ?\u9AA8     ; 397C (25-92)
+   ?\u72DB     ; 397D (25-93)
+   ?\u8FBC     ; 397E (25-94)
+   ]
+  [?\u6B64     ; 3A21 (26-01)
+   ?\u9803     ; 3A22 (26-02)
+   ?\u4ECA     ; 3A23 (26-03)
+   ?\u56F0     ; 3A24 (26-04)
+   ?\u5764     ; 3A25 (26-05)
+   ?\u58BE     ; 3A26 (26-06)
+   ?\u5A5A     ; 3A27 (26-07)
+   ?\u6068     ; 3A28 (26-08)
+   ?\u61C7     ; 3A29 (26-09)
+   ?\u660F     ; 3A2A (26-10)
+   ?\u6606     ; 3A2B (26-11)
+   ?\u6839     ; 3A2C (26-12)
+   ?\u68B1     ; 3A2D (26-13)
+   ?\u6DF7     ; 3A2E (26-14)
+   ?\u75D5     ; 3A2F (26-15)
+   ?\u7D3A     ; 3A30 (26-16)
+   ?\u826E     ; 3A31 (26-17)
+   ?\u9B42     ; 3A32 (26-18)
+   ?\u4E9B     ; 3A33 (26-19)
+   ?\u4F50     ; 3A34 (26-20)
+   ?\u53C9     ; 3A35 (26-21)
+   ?\u5506     ; 3A36 (26-22)
+   ?\u5D6F     ; 3A37 (26-23)
+   ?\u5DE6     ; 3A38 (26-24)
+   ?\u5DEE     ; 3A39 (26-25)
+   ?\u67FB     ; 3A3A (26-26)
+   ?\u6C99     ; 3A3B (26-27)
+   ?\u7473     ; 3A3C (26-28)
+   ?\u7802     ; 3A3D (26-29)
+   ?\u8A50     ; 3A3E (26-30)
+   ?\u9396     ; 3A3F (26-31)
+   ?\u88DF     ; 3A40 (26-32)
+   ?\u5750     ; 3A41 (26-33)
+   ?\u5EA7     ; 3A42 (26-34)
+   ?\u632B     ; 3A43 (26-35)
+   ?\u50B5     ; 3A44 (26-36)
+   ?\u50AC     ; 3A45 (26-37)
+   ?\u518D     ; 3A46 (26-38)
+   ?\u6700     ; 3A47 (26-39)
+   ?\u54C9     ; 3A48 (26-40)
+   ?\u585E     ; 3A49 (26-41)
+   ?\u59BB     ; 3A4A (26-42)
+   ?\u5BB0     ; 3A4B (26-43)
+   ?\u5F69     ; 3A4C (26-44)
+   ?\u624D     ; 3A4D (26-45)
+   ?\u63A1     ; 3A4E (26-46)
+   ?\u683D     ; 3A4F (26-47)
+   ?\u6B73     ; 3A50 (26-48)
+   ?\u6E08     ; 3A51 (26-49)
+   ?\u707D     ; 3A52 (26-50)
+   ?\u91C7     ; 3A53 (26-51)
+   ?\u7280     ; 3A54 (26-52)
+   ?\u7815     ; 3A55 (26-53)
+   ?\u7826     ; 3A56 (26-54)
+   ?\u796D     ; 3A57 (26-55)
+   ?\u658E     ; 3A58 (26-56)
+   ?\u7D30     ; 3A59 (26-57)
+   ?\u83DC     ; 3A5A (26-58)
+   ?\u88C1     ; 3A5B (26-59)
+   ?\u8F09     ; 3A5C (26-60)
+   ?\u969B     ; 3A5D (26-61)
+   ?\u5264     ; 3A5E (26-62)
+   ?\u5728     ; 3A5F (26-63)
+   ?\u6750     ; 3A60 (26-64)
+   ?\u7F6A     ; 3A61 (26-65)
+   ?\u8CA1     ; 3A62 (26-66)
+   ?\u51B4     ; 3A63 (26-67)
+   ?\u5742     ; 3A64 (26-68)
+   ?\u962A     ; 3A65 (26-69)
+   ?\u583A     ; 3A66 (26-70)
+   ?\u698A     ; 3A67 (26-71)
+   ?\u80B4     ; 3A68 (26-72)
+   ?\u54B2     ; 3A69 (26-73)
+   ?\u5D0E     ; 3A6A (26-74)
+   ?\u57FC     ; 3A6B (26-75)
+   ?\u7895     ; 3A6C (26-76)
+   ?\u9DFA     ; 3A6D (26-77)
+   ?\u4F5C     ; 3A6E (26-78)
+   ?\u524A     ; 3A6F (26-79)
+   ?\u548B     ; 3A70 (26-80)
+   ?\u643E     ; 3A71 (26-81)
+   ?\u6628     ; 3A72 (26-82)
+   ?\u6714     ; 3A73 (26-83)
+   ?\u67F5     ; 3A74 (26-84)
+   ?\u7A84     ; 3A75 (26-85)
+   ?\u7B56     ; 3A76 (26-86)
+   ?\u7D22     ; 3A77 (26-87)
+   ?\u932F     ; 3A78 (26-88)
+   ?\u685C     ; 3A79 (26-89)
+   ?\u9BAD     ; 3A7A (26-90)
+   ?\u7B39     ; 3A7B (26-91)
+   ?\u5319     ; 3A7C (26-92)
+   ?\u518A     ; 3A7D (26-93)
+   ?\u5237     ; 3A7E (26-94)
+   ]
+  [?\u5BDF     ; 3B21 (27-01)
+   ?\u62F6     ; 3B22 (27-02)
+   ?\u64AE     ; 3B23 (27-03)
+   ?\u64E6     ; 3B24 (27-04)
+   ?\u672D     ; 3B25 (27-05)
+   ?\u6BBA     ; 3B26 (27-06)
+   ?\u85A9     ; 3B27 (27-07)
+   ?\u96D1     ; 3B28 (27-08)
+   ?\u7690     ; 3B29 (27-09)
+   ?\u9BD6     ; 3B2A (27-10)
+   ?\u634C     ; 3B2B (27-11)
+   ?\u9306     ; 3B2C (27-12)
+   ?\u9BAB     ; 3B2D (27-13)
+   ?\u76BF     ; 3B2E (27-14)
+   ?\u6652     ; 3B2F (27-15)
+   ?\u4E09     ; 3B30 (27-16)
+   ?\u5098     ; 3B31 (27-17)
+   ?\u53C2     ; 3B32 (27-18)
+   ?\u5C71     ; 3B33 (27-19)
+   ?\u60E8     ; 3B34 (27-20)
+   ?\u6492     ; 3B35 (27-21)
+   ?\u6563     ; 3B36 (27-22)
+   ?\u685F     ; 3B37 (27-23)
+   ?\u71E6     ; 3B38 (27-24)
+   ?\u73CA     ; 3B39 (27-25)
+   ?\u7523     ; 3B3A (27-26)
+   ?\u7B97     ; 3B3B (27-27)
+   ?\u7E82     ; 3B3C (27-28)
+   ?\u8695     ; 3B3D (27-29)
+   ?\u8B83     ; 3B3E (27-30)
+   ?\u8CDB     ; 3B3F (27-31)
+   ?\u9178     ; 3B40 (27-32)
+   ?\u9910     ; 3B41 (27-33)
+   ?\u65AC     ; 3B42 (27-34)
+   ?\u66AB     ; 3B43 (27-35)
+   ?\u6B8B     ; 3B44 (27-36)
+   ?\u4ED5     ; 3B45 (27-37)
+   ?\u4ED4     ; 3B46 (27-38)
+   ?\u4F3A     ; 3B47 (27-39)
+   ?\u4F7F     ; 3B48 (27-40)
+   ?\u523A     ; 3B49 (27-41)
+   ?\u53F8     ; 3B4A (27-42)
+   ?\u53F2     ; 3B4B (27-43)
+   ?\u55E3     ; 3B4C (27-44)
+   ?\u56DB     ; 3B4D (27-45)
+   ?\u58EB     ; 3B4E (27-46)
+   ?\u59CB     ; 3B4F (27-47)
+   ?\u59C9     ; 3B50 (27-48)
+   ?\u59FF     ; 3B51 (27-49)
+   ?\u5B50     ; 3B52 (27-50)
+   ?\u5C4D     ; 3B53 (27-51)
+   ?\u5E02     ; 3B54 (27-52)
+   ?\u5E2B     ; 3B55 (27-53)
+   ?\u5FD7     ; 3B56 (27-54)
+   ?\u601D     ; 3B57 (27-55)
+   ?\u6307     ; 3B58 (27-56)
+   ?\u652F     ; 3B59 (27-57)
+   ?\u5B5C     ; 3B5A (27-58)
+   ?\u65AF     ; 3B5B (27-59)
+   ?\u65BD     ; 3B5C (27-60)
+   ?\u65E8     ; 3B5D (27-61)
+   ?\u679D     ; 3B5E (27-62)
+   ?\u6B62     ; 3B5F (27-63)
+   ?\u6B7B     ; 3B60 (27-64)
+   ?\u6C0F     ; 3B61 (27-65)
+   ?\u7345     ; 3B62 (27-66)
+   ?\u7949     ; 3B63 (27-67)
+   ?\u79C1     ; 3B64 (27-68)
+   ?\u7CF8     ; 3B65 (27-69)
+   ?\u7D19     ; 3B66 (27-70)
+   ?\u7D2B     ; 3B67 (27-71)
+   ?\u80A2     ; 3B68 (27-72)
+   ?\u8102     ; 3B69 (27-73)
+   ?\u81F3     ; 3B6A (27-74)
+   ?\u8996     ; 3B6B (27-75)
+   ?\u8A5E     ; 3B6C (27-76)
+   ?\u8A69     ; 3B6D (27-77)
+   ?\u8A66     ; 3B6E (27-78)
+   ?\u8A8C     ; 3B6F (27-79)
+   ?\u8AEE     ; 3B70 (27-80)
+   ?\u8CC7     ; 3B71 (27-81)
+   ?\u8CDC     ; 3B72 (27-82)
+   ?\u96CC     ; 3B73 (27-83)
+   ?\u98FC     ; 3B74 (27-84)
+   ?\u6B6F     ; 3B75 (27-85)
+   ?\u4E8B     ; 3B76 (27-86)
+   ?\u4F3C     ; 3B77 (27-87)
+   ?\u4F8D     ; 3B78 (27-88)
+   ?\u5150     ; 3B79 (27-89)
+   ?\u5B57     ; 3B7A (27-90)
+   ?\u5BFA     ; 3B7B (27-91)
+   ?\u6148     ; 3B7C (27-92)
+   ?\u6301     ; 3B7D (27-93)
+   ?\u6642     ; 3B7E (27-94)
+   ]
+  [?\u6B21     ; 3C21 (28-01)
+   ?\u6ECB     ; 3C22 (28-02)
+   ?\u6CBB     ; 3C23 (28-03)
+   ?\u723E     ; 3C24 (28-04)
+   ?\u74BD     ; 3C25 (28-05)
+   ?\u75D4     ; 3C26 (28-06)
+   ?\u78C1     ; 3C27 (28-07)
+   ?\u793A     ; 3C28 (28-08)
+   ?\u800C     ; 3C29 (28-09)
+   ?\u8033     ; 3C2A (28-10)
+   ?\u81EA     ; 3C2B (28-11)
+   ?\u8494     ; 3C2C (28-12)
+   ?\u8F9E     ; 3C2D (28-13)
+   ?\u6C50     ; 3C2E (28-14)
+   ?\u9E7F     ; 3C2F (28-15)
+   ?\u5F0F     ; 3C30 (28-16)
+   ?\u8B58     ; 3C31 (28-17)
+   ?\u9D2B     ; 3C32 (28-18)
+   ?\u7AFA     ; 3C33 (28-19)
+   ?\u8EF8     ; 3C34 (28-20)
+   ?\u5B8D     ; 3C35 (28-21)
+   ?\u96EB     ; 3C36 (28-22)
+   ?\u4E03     ; 3C37 (28-23)
+   ?\u53F1     ; 3C38 (28-24)
+   ?\u57F7     ; 3C39 (28-25)
+   ?\u5931     ; 3C3A (28-26)
+   ?\u5AC9     ; 3C3B (28-27)
+   ?\u5BA4     ; 3C3C (28-28)
+   ?\u6089     ; 3C3D (28-29)
+   ?\u6E7F     ; 3C3E (28-30)
+   ?\u6F06     ; 3C3F (28-31)
+   ?\u75BE     ; 3C40 (28-32)
+   ?\u8CEA     ; 3C41 (28-33)
+   ?\u5B9F     ; 3C42 (28-34)
+   ?\u8500     ; 3C43 (28-35)
+   ?\u7BE0     ; 3C44 (28-36)
+   ?\u5072     ; 3C45 (28-37)
+   ?\u67F4     ; 3C46 (28-38)
+   ?\u829D     ; 3C47 (28-39)
+   ?\u5C61     ; 3C48 (28-40)
+   ?\u854A     ; 3C49 (28-41)
+   ?\u7E1E     ; 3C4A (28-42)
+   ?\u820E     ; 3C4B (28-43)
+   ?\u5199     ; 3C4C (28-44)
+   ?\u5C04     ; 3C4D (28-45)
+   ?\u6368     ; 3C4E (28-46)
+   ?\u8D66     ; 3C4F (28-47)
+   ?\u659C     ; 3C50 (28-48)
+   ?\u716E     ; 3C51 (28-49)
+   ?\u793E     ; 3C52 (28-50)
+   ?\u7D17     ; 3C53 (28-51)
+   ?\u8005     ; 3C54 (28-52)
+   ?\u8B1D     ; 3C55 (28-53)
+   ?\u8ECA     ; 3C56 (28-54)
+   ?\u906E     ; 3C57 (28-55)
+   ?\u86C7     ; 3C58 (28-56)
+   ?\u90AA     ; 3C59 (28-57)
+   ?\u501F     ; 3C5A (28-58)
+   ?\u52FA     ; 3C5B (28-59)
+   ?\u5C3A     ; 3C5C (28-60)
+   ?\u6753     ; 3C5D (28-61)
+   ?\u707C     ; 3C5E (28-62)
+   ?\u7235     ; 3C5F (28-63)
+   ?\u914C     ; 3C60 (28-64)
+   ?\u91C8     ; 3C61 (28-65)
+   ?\u932B     ; 3C62 (28-66)
+   ?\u82E5     ; 3C63 (28-67)
+   ?\u5BC2     ; 3C64 (28-68)
+   ?\u5F31     ; 3C65 (28-69)
+   ?\u60F9     ; 3C66 (28-70)
+   ?\u4E3B     ; 3C67 (28-71)
+   ?\u53D6     ; 3C68 (28-72)
+   ?\u5B88     ; 3C69 (28-73)
+   ?\u624B     ; 3C6A (28-74)
+   ?\u6731     ; 3C6B (28-75)
+   ?\u6B8A     ; 3C6C (28-76)
+   ?\u72E9     ; 3C6D (28-77)
+   ?\u73E0     ; 3C6E (28-78)
+   ?\u7A2E     ; 3C6F (28-79)
+   ?\u816B     ; 3C70 (28-80)
+   ?\u8DA3     ; 3C71 (28-81)
+   ?\u9152     ; 3C72 (28-82)
+   ?\u9996     ; 3C73 (28-83)
+   ?\u5112     ; 3C74 (28-84)
+   ?\u53D7     ; 3C75 (28-85)
+   ?\u546A     ; 3C76 (28-86)
+   ?\u5BFF     ; 3C77 (28-87)
+   ?\u6388     ; 3C78 (28-88)
+   ?\u6A39     ; 3C79 (28-89)
+   ?\u7DAC     ; 3C7A (28-90)
+   ?\u9700     ; 3C7B (28-91)
+   ?\u56DA     ; 3C7C (28-92)
+   ?\u53CE     ; 3C7D (28-93)
+   ?\u5468     ; 3C7E (28-94)
+   ]
+  [?\u5B97     ; 3D21 (29-01)
+   ?\u5C31     ; 3D22 (29-02)
+   ?\u5DDE     ; 3D23 (29-03)
+   ?\u4FEE     ; 3D24 (29-04)
+   ?\u6101     ; 3D25 (29-05)
+   ?\u62FE     ; 3D26 (29-06)
+   ?\u6D32     ; 3D27 (29-07)
+   ?\u79C0     ; 3D28 (29-08)
+   ?\u79CB     ; 3D29 (29-09)
+   ?\u7D42     ; 3D2A (29-10)
+   ?\u7E4D     ; 3D2B (29-11)
+   ?\u7FD2     ; 3D2C (29-12)
+   ?\u81ED     ; 3D2D (29-13)
+   ?\u821F     ; 3D2E (29-14)
+   ?\u8490     ; 3D2F (29-15)
+   ?\u8846     ; 3D30 (29-16)
+   ?\u8972     ; 3D31 (29-17)
+   ?\u8B90     ; 3D32 (29-18)
+   ?\u8E74     ; 3D33 (29-19)
+   ?\u8F2F     ; 3D34 (29-20)
+   ?\u9031     ; 3D35 (29-21)
+   ?\u914B     ; 3D36 (29-22)
+   ?\u916C     ; 3D37 (29-23)
+   ?\u96C6     ; 3D38 (29-24)
+   ?\u919C     ; 3D39 (29-25)
+   ?\u4EC0     ; 3D3A (29-26)
+   ?\u4F4F     ; 3D3B (29-27)
+   ?\u5145     ; 3D3C (29-28)
+   ?\u5341     ; 3D3D (29-29)
+   ?\u5F93     ; 3D3E (29-30)
+   ?\u620E     ; 3D3F (29-31)
+   ?\u67D4     ; 3D40 (29-32)
+   ?\u6C41     ; 3D41 (29-33)
+   ?\u6E0B     ; 3D42 (29-34)
+   ?\u7363     ; 3D43 (29-35)
+   ?\u7E26     ; 3D44 (29-36)
+   ?\u91CD     ; 3D45 (29-37)
+   ?\u9283     ; 3D46 (29-38)
+   ?\u53D4     ; 3D47 (29-39)
+   ?\u5919     ; 3D48 (29-40)
+   ?\u5BBF     ; 3D49 (29-41)
+   ?\u6DD1     ; 3D4A (29-42)
+   ?\u795D     ; 3D4B (29-43)
+   ?\u7E2E     ; 3D4C (29-44)
+   ?\u7C9B     ; 3D4D (29-45)
+   ?\u587E     ; 3D4E (29-46)
+   ?\u719F     ; 3D4F (29-47)
+   ?\u51FA     ; 3D50 (29-48)
+   ?\u8853     ; 3D51 (29-49)
+   ?\u8FF0     ; 3D52 (29-50)
+   ?\u4FCA     ; 3D53 (29-51)
+   ?\u5CFB     ; 3D54 (29-52)
+   ?\u6625     ; 3D55 (29-53)
+   ?\u77AC     ; 3D56 (29-54)
+   ?\u7AE3     ; 3D57 (29-55)
+   ?\u821C     ; 3D58 (29-56)
+   ?\u99FF     ; 3D59 (29-57)
+   ?\u51C6     ; 3D5A (29-58)
+   ?\u5FAA     ; 3D5B (29-59)
+   ?\u65EC     ; 3D5C (29-60)
+   ?\u696F     ; 3D5D (29-61)
+   ?\u6B89     ; 3D5E (29-62)
+   ?\u6DF3     ; 3D5F (29-63)
+   ?\u6E96     ; 3D60 (29-64)
+   ?\u6F64     ; 3D61 (29-65)
+   ?\u76FE     ; 3D62 (29-66)
+   ?\u7D14     ; 3D63 (29-67)
+   ?\u5DE1     ; 3D64 (29-68)
+   ?\u9075     ; 3D65 (29-69)
+   ?\u9187     ; 3D66 (29-70)
+   ?\u9806     ; 3D67 (29-71)
+   ?\u51E6     ; 3D68 (29-72)
+   ?\u521D     ; 3D69 (29-73)
+   ?\u6240     ; 3D6A (29-74)
+   ?\u6691     ; 3D6B (29-75)
+   ?\u66D9     ; 3D6C (29-76)
+   ?\u6E1A     ; 3D6D (29-77)
+   ?\u5EB6     ; 3D6E (29-78)
+   ?\u7DD2     ; 3D6F (29-79)
+   ?\u7F72     ; 3D70 (29-80)
+   ?\u66F8     ; 3D71 (29-81)
+   ?\u85AF     ; 3D72 (29-82)
+   ?\u85F7     ; 3D73 (29-83)
+   ?\u8AF8     ; 3D74 (29-84)
+   ?\u52A9     ; 3D75 (29-85)
+   ?\u53D9     ; 3D76 (29-86)
+   ?\u5973     ; 3D77 (29-87)
+   ?\u5E8F     ; 3D78 (29-88)
+   ?\u5F90     ; 3D79 (29-89)
+   ?\u6055     ; 3D7A (29-90)
+   ?\u92E4     ; 3D7B (29-91)
+   ?\u9664     ; 3D7C (29-92)
+   ?\u50B7     ; 3D7D (29-93)
+   ?\u511F     ; 3D7E (29-94)
+   ]
+  [?\u52DD     ; 3E21 (30-01)
+   ?\u5320     ; 3E22 (30-02)
+   ?\u5347     ; 3E23 (30-03)
+   ?\u53EC     ; 3E24 (30-04)
+   ?\u54E8     ; 3E25 (30-05)
+   ?\u5546     ; 3E26 (30-06)
+   ?\u5531     ; 3E27 (30-07)
+   ?\u5617     ; 3E28 (30-08)
+   ?\u5968     ; 3E29 (30-09)
+   ?\u59BE     ; 3E2A (30-10)
+   ?\u5A3C     ; 3E2B (30-11)
+   ?\u5BB5     ; 3E2C (30-12)
+   ?\u5C06     ; 3E2D (30-13)
+   ?\u5C0F     ; 3E2E (30-14)
+   ?\u5C11     ; 3E2F (30-15)
+   ?\u5C1A     ; 3E30 (30-16)
+   ?\u5E84     ; 3E31 (30-17)
+   ?\u5E8A     ; 3E32 (30-18)
+   ?\u5EE0     ; 3E33 (30-19)
+   ?\u5F70     ; 3E34 (30-20)
+   ?\u627F     ; 3E35 (30-21)
+   ?\u6284     ; 3E36 (30-22)
+   ?\u62DB     ; 3E37 (30-23)
+   ?\u638C     ; 3E38 (30-24)
+   ?\u6377     ; 3E39 (30-25)
+   ?\u6607     ; 3E3A (30-26)
+   ?\u660C     ; 3E3B (30-27)
+   ?\u662D     ; 3E3C (30-28)
+   ?\u6676     ; 3E3D (30-29)
+   ?\u677E     ; 3E3E (30-30)
+   ?\u68A2     ; 3E3F (30-31)
+   ?\u6A1F     ; 3E40 (30-32)
+   ?\u6A35     ; 3E41 (30-33)
+   ?\u6CBC     ; 3E42 (30-34)
+   ?\u6D88     ; 3E43 (30-35)
+   ?\u6E09     ; 3E44 (30-36)
+   ?\u6E58     ; 3E45 (30-37)
+   ?\u713C     ; 3E46 (30-38)
+   ?\u7126     ; 3E47 (30-39)
+   ?\u7167     ; 3E48 (30-40)
+   ?\u75C7     ; 3E49 (30-41)
+   ?\u7701     ; 3E4A (30-42)
+   ?\u785D     ; 3E4B (30-43)
+   ?\u7901     ; 3E4C (30-44)
+   ?\u7965     ; 3E4D (30-45)
+   ?\u79F0     ; 3E4E (30-46)
+   ?\u7AE0     ; 3E4F (30-47)
+   ?\u7B11     ; 3E50 (30-48)
+   ?\u7CA7     ; 3E51 (30-49)
+   ?\u7D39     ; 3E52 (30-50)
+   ?\u8096     ; 3E53 (30-51)
+   ?\u83D6     ; 3E54 (30-52)
+   ?\u848B     ; 3E55 (30-53)
+   ?\u8549     ; 3E56 (30-54)
+   ?\u885D     ; 3E57 (30-55)
+   ?\u88F3     ; 3E58 (30-56)
+   ?\u8A1F     ; 3E59 (30-57)
+   ?\u8A3C     ; 3E5A (30-58)
+   ?\u8A54     ; 3E5B (30-59)
+   ?\u8A73     ; 3E5C (30-60)
+   ?\u8C61     ; 3E5D (30-61)
+   ?\u8CDE     ; 3E5E (30-62)
+   ?\u91A4     ; 3E5F (30-63)
+   ?\u9266     ; 3E60 (30-64)
+   ?\u937E     ; 3E61 (30-65)
+   ?\u9418     ; 3E62 (30-66)
+   ?\u969C     ; 3E63 (30-67)
+   ?\u9798     ; 3E64 (30-68)
+   ?\u4E0A     ; 3E65 (30-69)
+   ?\u4E08     ; 3E66 (30-70)
+   ?\u4E1E     ; 3E67 (30-71)
+   ?\u4E57     ; 3E68 (30-72)
+   ?\u5197     ; 3E69 (30-73)
+   ?\u5270     ; 3E6A (30-74)
+   ?\u57CE     ; 3E6B (30-75)
+   ?\u5834     ; 3E6C (30-76)
+   ?\u58CC     ; 3E6D (30-77)
+   ?\u5B22     ; 3E6E (30-78)
+   ?\u5E38     ; 3E6F (30-79)
+   ?\u60C5     ; 3E70 (30-80)
+   ?\u64FE     ; 3E71 (30-81)
+   ?\u6761     ; 3E72 (30-82)
+   ?\u6756     ; 3E73 (30-83)
+   ?\u6D44     ; 3E74 (30-84)
+   ?\u72B6     ; 3E75 (30-85)
+   ?\u7573     ; 3E76 (30-86)
+   ?\u7A63     ; 3E77 (30-87)
+   ?\u84B8     ; 3E78 (30-88)
+   ?\u8B72     ; 3E79 (30-89)
+   ?\u91B8     ; 3E7A (30-90)
+   ?\u9320     ; 3E7B (30-91)
+   ?\u5631     ; 3E7C (30-92)
+   ?\u57F4     ; 3E7D (30-93)
+   ?\u98FE     ; 3E7E (30-94)
+   ]
+  [?\u62ED     ; 3F21 (31-01)
+   ?\u690D     ; 3F22 (31-02)
+   ?\u6B96     ; 3F23 (31-03)
+   ?\u71ED     ; 3F24 (31-04)
+   ?\u7E54     ; 3F25 (31-05)
+   ?\u8077     ; 3F26 (31-06)
+   ?\u8272     ; 3F27 (31-07)
+   ?\u89E6     ; 3F28 (31-08)
+   ?\u98DF     ; 3F29 (31-09)
+   ?\u8755     ; 3F2A (31-10)
+   ?\u8FB1     ; 3F2B (31-11)
+   ?\u5C3B     ; 3F2C (31-12)
+   ?\u4F38     ; 3F2D (31-13)
+   ?\u4FE1     ; 3F2E (31-14)
+   ?\u4FB5     ; 3F2F (31-15)
+   ?\u5507     ; 3F30 (31-16)
+   ?\u5A20     ; 3F31 (31-17)
+   ?\u5BDD     ; 3F32 (31-18)
+   ?\u5BE9     ; 3F33 (31-19)
+   ?\u5FC3     ; 3F34 (31-20)
+   ?\u614E     ; 3F35 (31-21)
+   ?\u632F     ; 3F36 (31-22)
+   ?\u65B0     ; 3F37 (31-23)
+   ?\u664B     ; 3F38 (31-24)
+   ?\u68EE     ; 3F39 (31-25)
+   ?\u699B     ; 3F3A (31-26)
+   ?\u6D78     ; 3F3B (31-27)
+   ?\u6DF1     ; 3F3C (31-28)
+   ?\u7533     ; 3F3D (31-29)
+   ?\u75B9     ; 3F3E (31-30)
+   ?\u771F     ; 3F3F (31-31)
+   ?\u795E     ; 3F40 (31-32)
+   ?\u79E6     ; 3F41 (31-33)
+   ?\u7D33     ; 3F42 (31-34)
+   ?\u81E3     ; 3F43 (31-35)
+   ?\u82AF     ; 3F44 (31-36)
+   ?\u85AA     ; 3F45 (31-37)
+   ?\u89AA     ; 3F46 (31-38)
+   ?\u8A3A     ; 3F47 (31-39)
+   ?\u8EAB     ; 3F48 (31-40)
+   ?\u8F9B     ; 3F49 (31-41)
+   ?\u9032     ; 3F4A (31-42)
+   ?\u91DD     ; 3F4B (31-43)
+   ?\u9707     ; 3F4C (31-44)
+   ?\u4EBA     ; 3F4D (31-45)
+   ?\u4EC1     ; 3F4E (31-46)
+   ?\u5203     ; 3F4F (31-47)
+   ?\u5875     ; 3F50 (31-48)
+   ?\u58EC     ; 3F51 (31-49)
+   ?\u5C0B     ; 3F52 (31-50)
+   ?\u751A     ; 3F53 (31-51)
+   ?\u5C3D     ; 3F54 (31-52)
+   ?\u814E     ; 3F55 (31-53)
+   ?\u8A0A     ; 3F56 (31-54)
+   ?\u8FC5     ; 3F57 (31-55)
+   ?\u9663     ; 3F58 (31-56)
+   ?\u976D     ; 3F59 (31-57)
+   ?\u7B25     ; 3F5A (31-58)
+   ?\u8ACF     ; 3F5B (31-59)
+   ?\u9808     ; 3F5C (31-60)
+   ?\u9162     ; 3F5D (31-61)
+   ?\u56F3     ; 3F5E (31-62)
+   ?\u53A8     ; 3F5F (31-63)
+   ?\u9017     ; 3F60 (31-64)
+   ?\u5439     ; 3F61 (31-65)
+   ?\u5782     ; 3F62 (31-66)
+   ?\u5E25     ; 3F63 (31-67)
+   ?\u63A8     ; 3F64 (31-68)
+   ?\u6C34     ; 3F65 (31-69)
+   ?\u708A     ; 3F66 (31-70)
+   ?\u7761     ; 3F67 (31-71)
+   ?\u7C8B     ; 3F68 (31-72)
+   ?\u7FE0     ; 3F69 (31-73)
+   ?\u8870     ; 3F6A (31-74)
+   ?\u9042     ; 3F6B (31-75)
+   ?\u9154     ; 3F6C (31-76)
+   ?\u9310     ; 3F6D (31-77)
+   ?\u9318     ; 3F6E (31-78)
+   ?\u968F     ; 3F6F (31-79)
+   ?\u745E     ; 3F70 (31-80)
+   ?\u9AC4     ; 3F71 (31-81)
+   ?\u5D07     ; 3F72 (31-82)
+   ?\u5D69     ; 3F73 (31-83)
+   ?\u6570     ; 3F74 (31-84)
+   ?\u67A2     ; 3F75 (31-85)
+   ?\u8DA8     ; 3F76 (31-86)
+   ?\u96DB     ; 3F77 (31-87)
+   ?\u636E     ; 3F78 (31-88)
+   ?\u6749     ; 3F79 (31-89)
+   ?\u6919     ; 3F7A (31-90)
+   ?\u83C5     ; 3F7B (31-91)
+   ?\u9817     ; 3F7C (31-92)
+   ?\u96C0     ; 3F7D (31-93)
+   ?\u88FE     ; 3F7E (31-94)
+   ]
+  [?\u6F84     ; 4021 (32-01)
+   ?\u647A     ; 4022 (32-02)
+   ?\u5BF8     ; 4023 (32-03)
+   ?\u4E16     ; 4024 (32-04)
+   ?\u702C     ; 4025 (32-05)
+   ?\u755D     ; 4026 (32-06)
+   ?\u662F     ; 4027 (32-07)
+   ?\u51C4     ; 4028 (32-08)
+   ?\u5236     ; 4029 (32-09)
+   ?\u52E2     ; 402A (32-10)
+   ?\u59D3     ; 402B (32-11)
+   ?\u5F81     ; 402C (32-12)
+   ?\u6027     ; 402D (32-13)
+   ?\u6210     ; 402E (32-14)
+   ?\u653F     ; 402F (32-15)
+   ?\u6574     ; 4030 (32-16)
+   ?\u661F     ; 4031 (32-17)
+   ?\u6674     ; 4032 (32-18)
+   ?\u68F2     ; 4033 (32-19)
+   ?\u6816     ; 4034 (32-20)
+   ?\u6B63     ; 4035 (32-21)
+   ?\u6E05     ; 4036 (32-22)
+   ?\u7272     ; 4037 (32-23)
+   ?\u751F     ; 4038 (32-24)
+   ?\u76DB     ; 4039 (32-25)
+   ?\u7CBE     ; 403A (32-26)
+   ?\u8056     ; 403B (32-27)
+   ?\u58F0     ; 403C (32-28)
+   ?\u88FD     ; 403D (32-29)
+   ?\u897F     ; 403E (32-30)
+   ?\u8AA0     ; 403F (32-31)
+   ?\u8A93     ; 4040 (32-32)
+   ?\u8ACB     ; 4041 (32-33)
+   ?\u901D     ; 4042 (32-34)
+   ?\u9192     ; 4043 (32-35)
+   ?\u9752     ; 4044 (32-36)
+   ?\u9759     ; 4045 (32-37)
+   ?\u6589     ; 4046 (32-38)
+   ?\u7A0E     ; 4047 (32-39)
+   ?\u8106     ; 4048 (32-40)
+   nil         ; 4049 (32-41) ?\u96BB
+   ?\u5E2D     ; 404A (32-42)
+   ?\u60DC     ; 404B (32-43)
+   ?\u621A     ; 404C (32-44)
+   ?\u65A5     ; 404D (32-45)
+   ?\u6614     ; 404E (32-46)
+   ?\u6790     ; 404F (32-47)
+   ?\u77F3     ; 4050 (32-48)
+   ?\u7A4D     ; 4051 (32-49)
+   ?\u7C4D     ; 4052 (32-50)
+   ?\u7E3E     ; 4053 (32-51)
+   ?\u810A     ; 4054 (32-52)
+   ?\u8CAC     ; 4055 (32-53)
+   ?\u8D64     ; 4056 (32-54)
+   ?\u8DE1     ; 4057 (32-55)
+   ?\u8E5F     ; 4058 (32-56)
+   ?\u78A9     ; 4059 (32-57)
+   ?\u5207     ; 405A (32-58)
+   ?\u62D9     ; 405B (32-59)
+   ?\u63A5     ; 405C (32-60)
+   ?\u6442     ; 405D (32-61)
+   ?\u6298     ; 405E (32-62)
+   ?\u8A2D     ; 405F (32-63)
+   ?\u7A83     ; 4060 (32-64)
+   ?\u7BC0     ; 4061 (32-65)
+   ?\u8AAC     ; 4062 (32-66)
+   ?\u96EA     ; 4063 (32-67)
+   ?\u7D76     ; 4064 (32-68)
+   ?\u820C     ; 4065 (32-69)
+   ?\u8749     ; 4066 (32-70)
+   ?\u4ED9     ; 4067 (32-71)
+   ?\u5148     ; 4068 (32-72)
+   ?\u5343     ; 4069 (32-73)
+   ?\u5360     ; 406A (32-74)
+   ?\u5BA3     ; 406B (32-75)
+   ?\u5C02     ; 406C (32-76)
+   ?\u5C16     ; 406D (32-77)
+   ?\u5DDD     ; 406E (32-78)
+   ?\u6226     ; 406F (32-79)
+   ?\u6247     ; 4070 (32-80)
+   ?\u64B0     ; 4071 (32-81)
+   ?\u6813     ; 4072 (32-82)
+   ?\u6834     ; 4073 (32-83)
+   ?\u6CC9     ; 4074 (32-84)
+   ?\u6D45     ; 4075 (32-85)
+   ?\u6D17     ; 4076 (32-86)
+   ?\u67D3     ; 4077 (32-87)
+   ?\u6F5C     ; 4078 (32-88)
+   ?\u714E     ; 4079 (32-89)
+   ?\u717D     ; 407A (32-90)
+   ?\u65CB     ; 407B (32-91)
+   ?\u7A7F     ; 407C (32-92)
+   ?\u7BAD     ; 407D (32-93)
+   ?\u7DDA     ; 407E (32-94)
+   ]
+  [?\u7E4A     ; 4121 (33-01)
+   ?\u7FA8     ; 4122 (33-02)
+   ?\u817A     ; 4123 (33-03)
+   ?\u821B     ; 4124 (33-04)
+   ?\u8239     ; 4125 (33-05)
+   ?\u85A6     ; 4126 (33-06)
+   ?\u8A6E     ; 4127 (33-07)
+   ?\u8CCE     ; 4128 (33-08)
+   ?\u8DF5     ; 4129 (33-09)
+   ?\u9078     ; 412A (33-10)
+   ?\u9077     ; 412B (33-11)
+   ?\u92AD     ; 412C (33-12)
+   ?\u9291     ; 412D (33-13)
+   ?\u9583     ; 412E (33-14)
+   ?\u9BAE     ; 412F (33-15)
+   ?\u524D     ; 4130 (33-16)
+   ?\u5584     ; 4131 (33-17)
+   ?\u6F38     ; 4132 (33-18)
+   ?\u7136     ; 4133 (33-19)
+   ?\u5168     ; 4134 (33-20)
+   ?\u7985     ; 4135 (33-21)
+   ?\u7E55     ; 4136 (33-22)
+   ?\u81B3     ; 4137 (33-23)
+   ?\u7CCE     ; 4138 (33-24)
+   ?\u564C     ; 4139 (33-25)
+   ?\u5851     ; 413A (33-26)
+   ?\u5CA8     ; 413B (33-27)
+   ?\u63AA     ; 413C (33-28)
+   ?\u66FE     ; 413D (33-29)
+   ?\u66FD     ; 413E (33-30)
+   ?\u695A     ; 413F (33-31)
+   ?\u72D9     ; 4140 (33-32)
+   ?\u758F     ; 4141 (33-33)
+   ?\u758E     ; 4142 (33-34)
+   ?\u790E     ; 4143 (33-35)
+   ?\u7956     ; 4144 (33-36)
+   ?\u79DF     ; 4145 (33-37)
+   ?\u7C97     ; 4146 (33-38)
+   ?\u7D20     ; 4147 (33-39)
+   ?\u7D44     ; 4148 (33-40)
+   ?\u8607     ; 4149 (33-41)
+   ?\u8A34     ; 414A (33-42)
+   ?\u963B     ; 414B (33-43)
+   ?\u9061     ; 414C (33-44)
+   ?\u9F20     ; 414D (33-45)
+   ?\u50E7     ; 414E (33-46)
+   ?\u5275     ; 414F (33-47)
+   ?\u53CC     ; 4150 (33-48)
+   ?\u53E2     ; 4151 (33-49)
+   ?\u5009     ; 4152 (33-50)
+   ?\u55AA     ; 4153 (33-51)
+   ?\u58EE     ; 4154 (33-52)
+   ?\u594F     ; 4155 (33-53)
+   ?\u723D     ; 4156 (33-54)
+   ?\u5B8B     ; 4157 (33-55)
+   ?\u5C64     ; 4158 (33-56)
+   ?\u531D     ; 4159 (33-57)
+   ?\u60E3     ; 415A (33-58)
+   ?\u60F3     ; 415B (33-59)
+   ?\u635C     ; 415C (33-60)
+   ?\u6383     ; 415D (33-61)
+   ?\u633F     ; 415E (33-62)
+   ?\u63BB     ; 415F (33-63)
+   ?\u64CD     ; 4160 (33-64)
+   ?\u65E9     ; 4161 (33-65)
+   ?\u66F9     ; 4162 (33-66)
+   ?\u5DE3     ; 4163 (33-67)
+   ?\u69CD     ; 4164 (33-68)
+   ?\u69FD     ; 4165 (33-69)
+   ?\u6F15     ; 4166 (33-70)
+   ?\u71E5     ; 4167 (33-71)
+   ?\u4E89     ; 4168 (33-72)
+   ?\u75E9     ; 4169 (33-73)
+   ?\u76F8     ; 416A (33-74)
+   ?\u7A93     ; 416B (33-75)
+   ?\u7CDF     ; 416C (33-76)
+   ?\u7DCF     ; 416D (33-77)
+   ?\u7D9C     ; 416E (33-78)
+   ?\u8061     ; 416F (33-79)
+   ?\u8349     ; 4170 (33-80)
+   ?\u8358     ; 4171 (33-81)
+   ?\u846C     ; 4172 (33-82)
+   ?\u84BC     ; 4173 (33-83)
+   ?\u85FB     ; 4174 (33-84)
+   ?\u88C5     ; 4175 (33-85)
+   ?\u8D70     ; 4176 (33-86)
+   ?\u9001     ; 4177 (33-87)
+   ?\u906D     ; 4178 (33-88)
+   ?\u9397     ; 4179 (33-89)
+   ?\u971C     ; 417A (33-90)
+   ?\u9A12     ; 417B (33-91)
+   ?\u50CF     ; 417C (33-92)
+   ?\u5897     ; 417D (33-93)
+   ?\u618E     ; 417E (33-94)
+   ]
+  [?\u81D3     ; 4221 (34-01)
+   ?\u8535     ; 4222 (34-02)
+   ?\u8D08     ; 4223 (34-03)
+   ?\u9020     ; 4224 (34-04)
+   ?\u4FC3     ; 4225 (34-05)
+   ?\u5074     ; 4226 (34-06)
+   ?\u5247     ; 4227 (34-07)
+   ?\u5373     ; 4228 (34-08)
+   ?\u606F     ; 4229 (34-09)
+   ?\u6349     ; 422A (34-10)
+   ?\u675F     ; 422B (34-11)
+   ?\u6E2C     ; 422C (34-12)
+   ?\u8DB3     ; 422D (34-13)
+   ?\u901F     ; 422E (34-14)
+   ?\u4FD7     ; 422F (34-15)
+   ?\u5C5E     ; 4230 (34-16)
+   ?\u8CCA     ; 4231 (34-17)
+   ?\u65CF     ; 4232 (34-18)
+   ?\u7D9A     ; 4233 (34-19)
+   ?\u5352     ; 4234 (34-20)
+   ?\u8896     ; 4235 (34-21)
+   ?\u5176     ; 4236 (34-22)
+   ?\u63C3     ; 4237 (34-23)
+   ?\u5B58     ; 4238 (34-24)
+   ?\u5B6B     ; 4239 (34-25)
+   ?\u5C0A     ; 423A (34-26)
+   ?\u640D     ; 423B (34-27)
+   ?\u6751     ; 423C (34-28)
+   ?\u905C     ; 423D (34-29)
+   ?\u4ED6     ; 423E (34-30)
+   ?\u591A     ; 423F (34-31)
+   ?\u592A     ; 4240 (34-32)
+   ?\u6C70     ; 4241 (34-33)
+   ?\u8A51     ; 4242 (34-34)
+   ?\u553E     ; 4243 (34-35)
+   ?\u5815     ; 4244 (34-36)
+   ?\u59A5     ; 4245 (34-37)
+   ?\u60F0     ; 4246 (34-38)
+   ?\u6253     ; 4247 (34-39)
+   ?\u67C1     ; 4248 (34-40)
+   ?\u8235     ; 4249 (34-41)
+   ?\u6955     ; 424A (34-42)
+   ?\u9640     ; 424B (34-43)
+   ?\u99C4     ; 424C (34-44)
+   ?\u9A28     ; 424D (34-45)
+   ?\u4F53     ; 424E (34-46)
+   ?\u5806     ; 424F (34-47)
+   ?\u5BFE     ; 4250 (34-48)
+   ?\u8010     ; 4251 (34-49)
+   ?\u5CB1     ; 4252 (34-50)
+   ?\u5E2F     ; 4253 (34-51)
+   ?\u5F85     ; 4254 (34-52)
+   ?\u6020     ; 4255 (34-53)
+   ?\u614B     ; 4256 (34-54)
+   ?\u6234     ; 4257 (34-55)
+   ?\u66FF     ; 4258 (34-56)
+   ?\u6CF0     ; 4259 (34-57)
+   ?\u6EDE     ; 425A (34-58)
+   ?\u80CE     ; 425B (34-59)
+   ?\u817F     ; 425C (34-60)
+   ?\u82D4     ; 425D (34-61)
+   ?\u888B     ; 425E (34-62)
+   ?\u8CB8     ; 425F (34-63)
+   ?\u9000     ; 4260 (34-64)
+   ?\u902E     ; 4261 (34-65)
+   ?\u968A     ; 4262 (34-66)
+   ?\u9EDB     ; 4263 (34-67)
+   ?\u9BDB     ; 4264 (34-68)
+   ?\u4EE3     ; 4265 (34-69)
+   ?\u53F0     ; 4266 (34-70)
+   ?\u5927     ; 4267 (34-71)
+   ?\u7B2C     ; 4268 (34-72)
+   ?\u918D     ; 4269 (34-73)
+   ?\u984C     ; 426A (34-74)
+   ?\u9DF9     ; 426B (34-75)
+   ?\u6EDD     ; 426C (34-76)
+   ?\u7027     ; 426D (34-77)
+   ?\u5353     ; 426E (34-78)
+   ?\u5544     ; 426F (34-79)
+   ?\u5B85     ; 4270 (34-80)
+   ?\u6258     ; 4271 (34-81)
+   ?\u629E     ; 4272 (34-82)
+   ?\u62D3     ; 4273 (34-83)
+   ?\u6CA2     ; 4274 (34-84)
+   ?\u6FEF     ; 4275 (34-85)
+   ?\u7422     ; 4276 (34-86)
+   ?\u8A17     ; 4277 (34-87)
+   ?\u9438     ; 4278 (34-88)
+   ?\u6FC1     ; 4279 (34-89)
+   ?\u8AFE     ; 427A (34-90)
+   ?\u8338     ; 427B (34-91)
+   ?\u51E7     ; 427C (34-92)
+   ?\u86F8     ; 427D (34-93)
+   ?\u53EA     ; 427E (34-94)
+   ]
+  [?\u53E9     ; 4321 (35-01)
+   ?\u4F46     ; 4322 (35-02)
+   ?\u9054     ; 4323 (35-03)
+   ?\u8FB0     ; 4324 (35-04)
+   ?\u596A     ; 4325 (35-05)
+   ?\u8131     ; 4326 (35-06)
+   ?\u5DFD     ; 4327 (35-07)
+   ?\u7AEA     ; 4328 (35-08)
+   ?\u8FBF     ; 4329 (35-09)
+   ?\u68DA     ; 432A (35-10)
+   ?\u8C37     ; 432B (35-11)
+   ?\u72F8     ; 432C (35-12)
+   ?\u9C48     ; 432D (35-13)
+   ?\u6A3D     ; 432E (35-14)
+   ?\u8AB0     ; 432F (35-15)
+   ?\u4E39     ; 4330 (35-16)
+   ?\u5358     ; 4331 (35-17)
+   ?\u5606     ; 4332 (35-18)
+   ?\u5766     ; 4333 (35-19)
+   ?\u62C5     ; 4334 (35-20)
+   ?\u63A2     ; 4335 (35-21)
+   ?\u65E6     ; 4336 (35-22)
+   ?\u6B4E     ; 4337 (35-23)
+   ?\u6DE1     ; 4338 (35-24)
+   ?\u6E5B     ; 4339 (35-25)
+   ?\u70AD     ; 433A (35-26)
+   ?\u77ED     ; 433B (35-27)
+   ?\u7AEF     ; 433C (35-28)
+   ?\u7BAA     ; 433D (35-29)
+   ?\u7DBB     ; 433E (35-30)
+   ?\u803D     ; 433F (35-31)
+   ?\u80C6     ; 4340 (35-32)
+   ?\u86CB     ; 4341 (35-33)
+   ?\u8A95     ; 4342 (35-34)
+   ?\u935B     ; 4343 (35-35)
+   ?\u56E3     ; 4344 (35-36)
+   ?\u58C7     ; 4345 (35-37)
+   ?\u5F3E     ; 4346 (35-38)
+   ?\u65AD     ; 4347 (35-39)
+   ?\u6696     ; 4348 (35-40)
+   ?\u6A80     ; 4349 (35-41)
+   ?\u6BB5     ; 434A (35-42)
+   ?\u7537     ; 434B (35-43)
+   ?\u8AC7     ; 434C (35-44)
+   ?\u5024     ; 434D (35-45)
+   ?\u77E5     ; 434E (35-46)
+   ?\u5730     ; 434F (35-47)
+   ?\u5F1B     ; 4350 (35-48)
+   ?\u6065     ; 4351 (35-49)
+   ?\u667A     ; 4352 (35-50)
+   ?\u6C60     ; 4353 (35-51)
+   ?\u75F4     ; 4354 (35-52)
+   ?\u7A1A     ; 4355 (35-53)
+   ?\u7F6E     ; 4356 (35-54)
+   ?\u81F4     ; 4357 (35-55)
+   ?\u8718     ; 4358 (35-56)
+   ?\u9045     ; 4359 (35-57)
+   ?\u99B3     ; 435A (35-58)
+   ?\u7BC9     ; 435B (35-59)
+   ?\u755C     ; 435C (35-60)
+   ?\u7AF9     ; 435D (35-61)
+   ?\u7B51     ; 435E (35-62)
+   ?\u84C4     ; 435F (35-63)
+   ?\u9010     ; 4360 (35-64)
+   ?\u79E9     ; 4361 (35-65)
+   ?\u7A92     ; 4362 (35-66)
+   ?\u8336     ; 4363 (35-67)
+   ?\u5AE1     ; 4364 (35-68)
+   ?\u7740     ; 4365 (35-69)
+   ?\u4E2D     ; 4366 (35-70)
+   ?\u4EF2     ; 4367 (35-71)
+   ?\u5B99     ; 4368 (35-72)
+   ?\u5FE0     ; 4369 (35-73)
+   ?\u62BD     ; 436A (35-74)
+   ?\u663C     ; 436B (35-75)
+   ?\u67F1     ; 436C (35-76)
+   ?\u6CE8     ; 436D (35-77)
+   ?\u866B     ; 436E (35-78)
+   ?\u8877     ; 436F (35-79)
+   ?\u8A3B     ; 4370 (35-80)
+   ?\u914E     ; 4371 (35-81)
+   ?\u92F3     ; 4372 (35-82)
+   ?\u99D0     ; 4373 (35-83)
+   ?\u6A17     ; 4374 (35-84)
+   ?\u7026     ; 4375 (35-85)
+   ?\u732A     ; 4376 (35-86)
+   ?\u82E7     ; 4377 (35-87)
+   ?\u8457     ; 4378 (35-88)
+   ?\u8CAF     ; 4379 (35-89)
+   ?\u4E01     ; 437A (35-90)
+   ?\u5146     ; 437B (35-91)
+   ?\u51CB     ; 437C (35-92)
+   ?\u558B     ; 437D (35-93)
+   ?\u5BF5     ; 437E (35-94)
+   ]
+  [?\u5E16     ; 4421 (36-01)
+   ?\u5E33     ; 4422 (36-02)
+   ?\u5E81     ; 4423 (36-03)
+   ?\u5F14     ; 4424 (36-04)
+   ?\u5F35     ; 4425 (36-05)
+   ?\u5F6B     ; 4426 (36-06)
+   ?\u5FB4     ; 4427 (36-07)
+   ?\u61F2     ; 4428 (36-08)
+   ?\u6311     ; 4429 (36-09)
+   ?\u66A2     ; 442A (36-10)
+   ?\u671D     ; 442B (36-11)
+   ?\u6F6E     ; 442C (36-12)
+   ?\u7252     ; 442D (36-13)
+   ?\u753A     ; 442E (36-14)
+   ?\u773A     ; 442F (36-15)
+   ?\u8074     ; 4430 (36-16)
+   ?\u8139     ; 4431 (36-17)
+   ?\u8178     ; 4432 (36-18)
+   ?\u8776     ; 4433 (36-19)
+   ?\u8ABF     ; 4434 (36-20)
+   ?\u8ADC     ; 4435 (36-21)
+   ?\u8D85     ; 4436 (36-22)
+   ?\u8DF3     ; 4437 (36-23)
+   ?\u929A     ; 4438 (36-24)
+   ?\u9577     ; 4439 (36-25)
+   ?\u9802     ; 443A (36-26)
+   ?\u9CE5     ; 443B (36-27)
+   ?\u52C5     ; 443C (36-28)
+   ?\u6357     ; 443D (36-29)
+   ?\u76F4     ; 443E (36-30)
+   ?\u6715     ; 443F (36-31)
+   ?\u6C88     ; 4440 (36-32)
+   ?\u73CD     ; 4441 (36-33)
+   ?\u8CC3     ; 4442 (36-34)
+   ?\u93AE     ; 4443 (36-35)
+   ?\u9673     ; 4444 (36-36)
+   ?\u6D25     ; 4445 (36-37)
+   ?\u589C     ; 4446 (36-38)
+   ?\u690E     ; 4447 (36-39)
+   ?\u69CC     ; 4448 (36-40)
+   ?\u8FFD     ; 4449 (36-41)
+   ?\u939A     ; 444A (36-42)
+   ?\u75DB     ; 444B (36-43)
+   ?\u901A     ; 444C (36-44)
+   ?\u585A     ; 444D (36-45)
+   ?\u6802     ; 444E (36-46)
+   ?\u63B4     ; 444F (36-47)
+   ?\u69FB     ; 4450 (36-48)
+   ?\u4F43     ; 4451 (36-49)
+   ?\u6F2C     ; 4452 (36-50)
+   ?\u67D8     ; 4453 (36-51)
+   ?\u8FBB     ; 4454 (36-52)
+   ?\u8526     ; 4455 (36-53)
+   ?\u7DB4     ; 4456 (36-54)
+   ?\u9354     ; 4457 (36-55)
+   ?\u693F     ; 4458 (36-56)
+   ?\u6F70     ; 4459 (36-57)
+   ?\u576A     ; 445A (36-58)
+   ?\u58F7     ; 445B (36-59)
+   ?\u5B2C     ; 445C (36-60)
+   ?\u7D2C     ; 445D (36-61)
+   ?\u722A     ; 445E (36-62)
+   ?\u540A     ; 445F (36-63)
+   ?\u91E3     ; 4460 (36-64)
+   ?\u9DB4     ; 4461 (36-65)
+   ?\u4EAD     ; 4462 (36-66)
+   ?\u4F4E     ; 4463 (36-67)
+   ?\u505C     ; 4464 (36-68)
+   ?\u5075     ; 4465 (36-69)
+   ?\u5243     ; 4466 (36-70)
+   ?\u8C9E     ; 4467 (36-71)
+   ?\u5448     ; 4468 (36-72)
+   ?\u5824     ; 4469 (36-73)
+   ?\u5B9A     ; 446A (36-74)
+   ?\u5E1D     ; 446B (36-75)
+   ?\u5E95     ; 446C (36-76)
+   ?\u5EAD     ; 446D (36-77)
+   ?\u5EF7     ; 446E (36-78)
+   ?\u5F1F     ; 446F (36-79)
+   ?\u608C     ; 4470 (36-80)
+   ?\u62B5     ; 4471 (36-81)
+   ?\u633A     ; 4472 (36-82)
+   ?\u63D0     ; 4473 (36-83)
+   ?\u68AF     ; 4474 (36-84)
+   ?\u6C40     ; 4475 (36-85)
+   ?\u7887     ; 4476 (36-86)
+   ?\u798E     ; 4477 (36-87)
+   ?\u7A0B     ; 4478 (36-88)
+   ?\u7DE0     ; 4479 (36-89)
+   ?\u8247     ; 447A (36-90)
+   ?\u8A02     ; 447B (36-91)
+   ?\u8AE6     ; 447C (36-92)
+   ?\u8E44     ; 447D (36-93)
+   ?\u9013     ; 447E (36-94)
+   ]
+  [?\u90B8     ; 4521 (37-01)
+   ?\u912D     ; 4522 (37-02)
+   ?\u91D8     ; 4523 (37-03)
+   ?\u9F0E     ; 4524 (37-04)
+   ?\u6CE5     ; 4525 (37-05)
+   ?\u6458     ; 4526 (37-06)
+   ?\u64E2     ; 4527 (37-07)
+   ?\u6575     ; 4528 (37-08)
+   ?\u6EF4     ; 4529 (37-09)
+   ?\u7684     ; 452A (37-10)
+   ?\u7B1B     ; 452B (37-11)
+   ?\u9069     ; 452C (37-12)
+   ?\u93D1     ; 452D (37-13)
+   ?\u6EBA     ; 452E (37-14)
+   ?\u54F2     ; 452F (37-15)
+   ?\u5FB9     ; 4530 (37-16)
+   ?\u64A4     ; 4531 (37-17)
+   ?\u8F4D     ; 4532 (37-18)
+   ?\u8FED     ; 4533 (37-19)
+   ?\u9244     ; 4534 (37-20)
+   ?\u5178     ; 4535 (37-21)
+   ?\u586B     ; 4536 (37-22)
+   ?\u5929     ; 4537 (37-23)
+   ?\u5C55     ; 4538 (37-24)
+   ?\u5E97     ; 4539 (37-25)
+   ?\u6DFB     ; 453A (37-26)
+   ?\u7E8F     ; 453B (37-27)
+   ?\u751C     ; 453C (37-28)
+   ?\u8CBC     ; 453D (37-29)
+   ?\u8EE2     ; 453E (37-30)
+   ?\u985B     ; 453F (37-31)
+   ?\u70B9     ; 4540 (37-32)
+   ?\u4F1D     ; 4541 (37-33)
+   ?\u6BBF     ; 4542 (37-34)
+   ?\u6FB1     ; 4543 (37-35)
+   ?\u7530     ; 4544 (37-36)
+   ?\u96FB     ; 4545 (37-37)
+   ?\u514E     ; 4546 (37-38)
+   ?\u5410     ; 4547 (37-39)
+   ?\u5835     ; 4548 (37-40)
+   ?\u5857     ; 4549 (37-41)
+   ?\u59AC     ; 454A (37-42)
+   ?\u5C60     ; 454B (37-43)
+   ?\u5F92     ; 454C (37-44)
+   ?\u6597     ; 454D (37-45)
+   ?\u675C     ; 454E (37-46)
+   ?\u6E21     ; 454F (37-47)
+   ?\u767B     ; 4550 (37-48)
+   ?\u83DF     ; 4551 (37-49)
+   ?\u8CED     ; 4552 (37-50)
+   ?\u9014     ; 4553 (37-51)
+   ?\u90FD     ; 4554 (37-52)
+   ?\u934D     ; 4555 (37-53)
+   ?\u7825     ; 4556 (37-54)
+   ?\u783A     ; 4557 (37-55)
+   ?\u52AA     ; 4558 (37-56)
+   ?\u5EA6     ; 4559 (37-57)
+   ?\u571F     ; 455A (37-58)
+   ?\u5974     ; 455B (37-59)
+   ?\u6012     ; 455C (37-60)
+   ?\u5012     ; 455D (37-61)
+   ?\u515A     ; 455E (37-62)
+   ?\u51AC     ; 455F (37-63)
+   ?\u51CD     ; 4560 (37-64)
+   ?\u5200     ; 4561 (37-65)
+   ?\u5510     ; 4562 (37-66)
+   ?\u5854     ; 4563 (37-67)
+   ?\u5858     ; 4564 (37-68)
+   ?\u5957     ; 4565 (37-69)
+   ?\u5B95     ; 4566 (37-70)
+   ?\u5CF6     ; 4567 (37-71)
+   ?\u5D8B     ; 4568 (37-72)
+   ?\u60BC     ; 4569 (37-73)
+   ?\u6295     ; 456A (37-74)
+   ?\u642D     ; 456B (37-75)
+   ?\u6771     ; 456C (37-76)
+   ?\u6843     ; 456D (37-77)
+   ?\u68BC     ; 456E (37-78)
+   ?\u68DF     ; 456F (37-79)
+   ?\u76D7     ; 4570 (37-80)
+   ?\u6DD8     ; 4571 (37-81)
+   ?\u6E6F     ; 4572 (37-82)
+   ?\u6D9B     ; 4573 (37-83)
+   ?\u706F     ; 4574 (37-84)
+   ?\u71C8     ; 4575 (37-85)
+   ?\u5F53     ; 4576 (37-86)
+   ?\u75D8     ; 4577 (37-87)
+   ?\u7977     ; 4578 (37-88)
+   ?\u7B49     ; 4579 (37-89)
+   ?\u7B54     ; 457A (37-90)
+   ?\u7B52     ; 457B (37-91)
+   ?\u7CD6     ; 457C (37-92)
+   ?\u7D71     ; 457D (37-93)
+   ?\u5230     ; 457E (37-94)
+   ]
+  [?\u8463     ; 4621 (38-01)
+   ?\u8569     ; 4622 (38-02)
+   ?\u85E4     ; 4623 (38-03)
+   ?\u8A0E     ; 4624 (38-04)
+   ?\u8B04     ; 4625 (38-05)
+   ?\u8C46     ; 4626 (38-06)
+   ?\u8E0F     ; 4627 (38-07)
+   ?\u9003     ; 4628 (38-08)
+   ?\u900F     ; 4629 (38-09)
+   ?\u9419     ; 462A (38-10)
+   ?\u9676     ; 462B (38-11)
+   ?\u982D     ; 462C (38-12)
+   ?\u9A30     ; 462D (38-13)
+   ?\u95D8     ; 462E (38-14)
+   ?\u50CD     ; 462F (38-15)
+   ?\u52D5     ; 4630 (38-16)
+   ?\u540C     ; 4631 (38-17)
+   ?\u5802     ; 4632 (38-18)
+   ?\u5C0E     ; 4633 (38-19)
+   ?\u61A7     ; 4634 (38-20)
+   ?\u649E     ; 4635 (38-21)
+   ?\u6D1E     ; 4636 (38-22)
+   ?\u77B3     ; 4637 (38-23)
+   ?\u7AE5     ; 4638 (38-24)
+   ?\u80F4     ; 4639 (38-25)
+   ?\u8404     ; 463A (38-26)
+   ?\u9053     ; 463B (38-27)
+   ?\u9285     ; 463C (38-28)
+   ?\u5CE0     ; 463D (38-29)
+   ?\u9D07     ; 463E (38-30)
+   ?\u533F     ; 463F (38-31)
+   ?\u5F97     ; 4640 (38-32)
+   ?\u5FB3     ; 4641 (38-33)
+   ?\u6D9C     ; 4642 (38-34)
+   ?\u7279     ; 4643 (38-35)
+   ?\u7763     ; 4644 (38-36)
+   ?\u79BF     ; 4645 (38-37)
+   ?\u7BE4     ; 4646 (38-38)
+   ?\u6BD2     ; 4647 (38-39)
+   ?\u72EC     ; 4648 (38-40)
+   ?\u8AAD     ; 4649 (38-41)
+   ?\u6803     ; 464A (38-42)
+   ?\u6A61     ; 464B (38-43)
+   ?\u51F8     ; 464C (38-44)
+   ?\u7A81     ; 464D (38-45)
+   ?\u6934     ; 464E (38-46)
+   ?\u5C4A     ; 464F (38-47)
+   ?\u9CF6     ; 4650 (38-48)
+   ?\u82EB     ; 4651 (38-49)
+   ?\u5BC5     ; 4652 (38-50)
+   ?\u9149     ; 4653 (38-51)
+   ?\u701E     ; 4654 (38-52)
+   ?\u5678     ; 4655 (38-53)
+   ?\u5C6F     ; 4656 (38-54)
+   ?\u60C7     ; 4657 (38-55)
+   ?\u6566     ; 4658 (38-56)
+   ?\u6C8C     ; 4659 (38-57)
+   ?\u8C5A     ; 465A (38-58)
+   ?\u9041     ; 465B (38-59)
+   ?\u9813     ; 465C (38-60)
+   ?\u5451     ; 465D (38-61)
+   ?\u66C7     ; 465E (38-62)
+   ?\u920D     ; 465F (38-63)
+   ?\u5948     ; 4660 (38-64)
+   ?\u90A3     ; 4661 (38-65)
+   ?\u5185     ; 4662 (38-66)
+   ?\u4E4D     ; 4663 (38-67)
+   ?\u51EA     ; 4664 (38-68)
+   ?\u8599     ; 4665 (38-69)
+   ?\u8B0E     ; 4666 (38-70)
+   ?\u7058     ; 4667 (38-71)
+   ?\u637A     ; 4668 (38-72)
+   ?\u934B     ; 4669 (38-73)
+   ?\u6962     ; 466A (38-74)
+   ?\u99B4     ; 466B (38-75)
+   ?\u7E04     ; 466C (38-76)
+   ?\u7577     ; 466D (38-77)
+   ?\u5357     ; 466E (38-78)
+   ?\u6960     ; 466F (38-79)
+   ?\u8EDF     ; 4670 (38-80)
+   ?\u96E3     ; 4671 (38-81)
+   ?\u6C5D     ; 4672 (38-82)
+   ?\u4E8C     ; 4673 (38-83)
+   ?\u5C3C     ; 4674 (38-84)
+   ?\u5F10     ; 4675 (38-85)
+   ?\u8FE9     ; 4676 (38-86)
+   ?\u5302     ; 4677 (38-87)
+   ?\u8CD1     ; 4678 (38-88)
+   ?\u8089     ; 4679 (38-89)
+   ?\u8679     ; 467A (38-90)
+   ?\u5EFF     ; 467B (38-91)
+   ?\u65E5     ; 467C (38-92)
+   ?\u4E73     ; 467D (38-93)
+   ?\u5165     ; 467E (38-94)
+   ]
+  [?\u5982     ; 4721 (39-01)
+   ?\u5C3F     ; 4722 (39-02)
+   ?\u97EE     ; 4723 (39-03)
+   ?\u4EFB     ; 4724 (39-04)
+   ?\u598A     ; 4725 (39-05)
+   ?\u5FCD     ; 4726 (39-06)
+   ?\u8A8D     ; 4727 (39-07)
+   ?\u6FE1     ; 4728 (39-08)
+   ?\u79B0     ; 4729 (39-09)
+   ?\u7962     ; 472A (39-10)
+   ?\u5BE7     ; 472B (39-11)
+   ?\u8471     ; 472C (39-12)
+   ?\u732B     ; 472D (39-13)
+   ?\u71B1     ; 472E (39-14)
+   ?\u5E74     ; 472F (39-15)
+   ?\u5FF5     ; 4730 (39-16)
+   ?\u637B     ; 4731 (39-17)
+   ?\u649A     ; 4732 (39-18)
+   ?\u71C3     ; 4733 (39-19)
+   ?\u7C98     ; 4734 (39-20)
+   ?\u4E43     ; 4735 (39-21)
+   ?\u5EFC     ; 4736 (39-22)
+   ?\u4E4B     ; 4737 (39-23)
+   ?\u57DC     ; 4738 (39-24)
+   ?\u56A2     ; 4739 (39-25)
+   ?\u60A9     ; 473A (39-26)
+   ?\u6FC3     ; 473B (39-27)
+   ?\u7D0D     ; 473C (39-28)
+   ?\u80FD     ; 473D (39-29)
+   ?\u8133     ; 473E (39-30)
+   ?\u81BF     ; 473F (39-31)
+   ?\u8FB2     ; 4740 (39-32)
+   ?\u8997     ; 4741 (39-33)
+   ?\u86A4     ; 4742 (39-34)
+   ?\u5DF4     ; 4743 (39-35)
+   ?\u628A     ; 4744 (39-36)
+   ?\u64AD     ; 4745 (39-37)
+   ?\u8987     ; 4746 (39-38)
+   ?\u6777     ; 4747 (39-39)
+   ?\u6CE2     ; 4748 (39-40)
+   ?\u6D3E     ; 4749 (39-41)
+   ?\u7436     ; 474A (39-42)
+   ?\u7834     ; 474B (39-43)
+   ?\u5A46     ; 474C (39-44)
+   ?\u7F75     ; 474D (39-45)
+   ?\u82AD     ; 474E (39-46)
+   ?\u99AC     ; 474F (39-47)
+   ?\u4FF3     ; 4750 (39-48)
+   ?\u5EC3     ; 4751 (39-49)
+   ?\u62DD     ; 4752 (39-50)
+   ?\u6392     ; 4753 (39-51)
+   ?\u6557     ; 4754 (39-52)
+   ?\u676F     ; 4755 (39-53)
+   ?\u76C3     ; 4756 (39-54)
+   ?\u724C     ; 4757 (39-55)
+   ?\u80CC     ; 4758 (39-56)
+   ?\u80BA     ; 4759 (39-57)
+   ?\u8F29     ; 475A (39-58)
+   ?\u914D     ; 475B (39-59)
+   ?\u500D     ; 475C (39-60)
+   ?\u57F9     ; 475D (39-61)
+   ?\u5A92     ; 475E (39-62)
+   ?\u6885     ; 475F (39-63)
+   ?\u6973     ; 4760 (39-64)
+   ?\u7164     ; 4761 (39-65)
+   ?\u72FD     ; 4762 (39-66)
+   ?\u8CB7     ; 4763 (39-67)
+   ?\u58F2     ; 4764 (39-68)
+   ?\u8CE0     ; 4765 (39-69)
+   ?\u966A     ; 4766 (39-70)
+   ?\u9019     ; 4767 (39-71)
+   ?\u877F     ; 4768 (39-72)
+   ?\u79E4     ; 4769 (39-73)
+   ?\u77E7     ; 476A (39-74)
+   ?\u8429     ; 476B (39-75)
+   ?\u4F2F     ; 476C (39-76)
+   ?\u5265     ; 476D (39-77)
+   ?\u535A     ; 476E (39-78)
+   ?\u62CD     ; 476F (39-79)
+   ?\u67CF     ; 4770 (39-80)
+   ?\u6CCA     ; 4771 (39-81)
+   ?\u767D     ; 4772 (39-82)
+   ?\u7B94     ; 4773 (39-83)
+   ?\u7C95     ; 4774 (39-84)
+   ?\u8236     ; 4775 (39-85)
+   ?\u8584     ; 4776 (39-86)
+   ?\u8FEB     ; 4777 (39-87)
+   ?\u66DD     ; 4778 (39-88)
+   ?\u6F20     ; 4779 (39-89)
+   ?\u7206     ; 477A (39-90)
+   ?\u7E1B     ; 477B (39-91)
+   ?\u83AB     ; 477C (39-92)
+   ?\u99C1     ; 477D (39-93)
+   ?\u9EA6     ; 477E (39-94)
+   ]
+  [?\u51FD     ; 4821 (40-01)
+   ?\u7BB1     ; 4822 (40-02)
+   ?\u7872     ; 4823 (40-03)
+   ?\u7BB8     ; 4824 (40-04)
+   ?\u8087     ; 4825 (40-05)
+   ?\u7B48     ; 4826 (40-06)
+   ?\u6AE8     ; 4827 (40-07)
+   ?\u5E61     ; 4828 (40-08)
+   ?\u808C     ; 4829 (40-09)
+   ?\u7551     ; 482A (40-10)
+   ?\u7560     ; 482B (40-11)
+   ?\u516B     ; 482C (40-12)
+   ?\u9262     ; 482D (40-13)
+   ?\u6E8C     ; 482E (40-14)
+   ?\u767A     ; 482F (40-15)
+   ?\u9197     ; 4830 (40-16)
+   ?\u9AEA     ; 4831 (40-17)
+   ?\u4F10     ; 4832 (40-18)
+   ?\u7F70     ; 4833 (40-19)
+   ?\u629C     ; 4834 (40-20)
+   ?\u7B4F     ; 4835 (40-21)
+   ?\u95A5     ; 4836 (40-22)
+   ?\u9CE9     ; 4837 (40-23)
+   ?\u567A     ; 4838 (40-24)
+   ?\u5859     ; 4839 (40-25)
+   ?\u86E4     ; 483A (40-26)
+   ?\u96BC     ; 483B (40-27)
+   ?\u4F34     ; 483C (40-28)
+   ?\u5224     ; 483D (40-29)
+   ?\u534A     ; 483E (40-30)
+   nil         ; 483F (40-31) ?\u53CD
+   nil         ; 4840 (40-32) ?\u53DB
+   ?\u5E06     ; 4841 (40-33)
+   ?\u642C     ; 4842 (40-34)
+   ?\u6591     ; 4843 (40-35)
+   ?\u677F     ; 4844 (40-36)
+   ?\u6C3E     ; 4845 (40-37)
+   ?\u6C4E     ; 4846 (40-38)
+   ?\u7248     ; 4847 (40-39)
+   ?\u72AF     ; 4848 (40-40)
+   ?\u73ED     ; 4849 (40-41)
+   ?\u7554     ; 484A (40-42)
+   ?\u7E41     ; 484B (40-43)
+   ?\u822C     ; 484C (40-44)
+   ?\u85E9     ; 484D (40-45)
+   ?\u8CA9     ; 484E (40-46)
+   ?\u7BC4     ; 484F (40-47)
+   ?\u91C6     ; 4850 (40-48)
+   ?\u7169     ; 4851 (40-49)
+   ?\u9812     ; 4852 (40-50)
+   ?\u98EF     ; 4853 (40-51)
+   ?\u633D     ; 4854 (40-52)
+   ?\u6669     ; 4855 (40-53)
+   ?\u756A     ; 4856 (40-54)
+   ?\u76E4     ; 4857 (40-55)
+   ?\u78D0     ; 4858 (40-56)
+   ?\u8543     ; 4859 (40-57)
+   ?\u86EE     ; 485A (40-58)
+   ?\u532A     ; 485B (40-59)
+   ?\u5351     ; 485C (40-60)
+   ?\u5426     ; 485D (40-61)
+   ?\u5983     ; 485E (40-62)
+   ?\u5E87     ; 485F (40-63)
+   ?\u5F7C     ; 4860 (40-64)
+   ?\u60B2     ; 4861 (40-65)
+   ?\u6249     ; 4862 (40-66)
+   ?\u6279     ; 4863 (40-67)
+   ?\u62AB     ; 4864 (40-68)
+   ?\u6590     ; 4865 (40-69)
+   ?\u6BD4     ; 4866 (40-70)
+   ?\u6CCC     ; 4867 (40-71)
+   ?\u75B2     ; 4868 (40-72)
+   ?\u76AE     ; 4869 (40-73)
+   ?\u7891     ; 486A (40-74)
+   ?\u79D8     ; 486B (40-75)
+   ?\u7DCB     ; 486C (40-76)
+   ?\u7F77     ; 486D (40-77)
+   ?\u80A5     ; 486E (40-78)
+   ?\u88AB     ; 486F (40-79)
+   ?\u8AB9     ; 4870 (40-80)
+   ?\u8CBB     ; 4871 (40-81)
+   ?\u907F     ; 4872 (40-82)
+   ?\u975E     ; 4873 (40-83)
+   ?\u98DB     ; 4874 (40-84)
+   ?\u6A0B     ; 4875 (40-85)
+   ?\u7C38     ; 4876 (40-86)
+   ?\u5099     ; 4877 (40-87)
+   ?\u5C3E     ; 4878 (40-88)
+   ?\u5FAE     ; 4879 (40-89)
+   ?\u6787     ; 487A (40-90)
+   ?\u6BD8     ; 487B (40-91)
+   ?\u7435     ; 487C (40-92)
+   ?\u7709     ; 487D (40-93)
+   ?\u7F8E     ; 487E (40-94)
+   ]
+  [?\u9F3B     ; 4921 (41-01)
+   ?\u67CA     ; 4922 (41-02)
+   ?\u7A17     ; 4923 (41-03)
+   ?\u5339     ; 4924 (41-04)
+   ?\u758B     ; 4925 (41-05)
+   ?\u9AED     ; 4926 (41-06)
+   ?\u5F66     ; 4927 (41-07)
+   ?\u819D     ; 4928 (41-08)
+   ?\u83F1     ; 4929 (41-09)
+   ?\u8098     ; 492A (41-10)
+   ?\u5F3C     ; 492B (41-11)
+   ?\u5FC5     ; 492C (41-12)
+   ?\u7562     ; 492D (41-13)
+   ?\u7B46     ; 492E (41-14)
+   ?\u903C     ; 492F (41-15)
+   ?\u6867     ; 4930 (41-16)
+   ?\u59EB     ; 4931 (41-17)
+   ?\u5A9B     ; 4932 (41-18)
+   ?\u7D10     ; 4933 (41-19)
+   ?\u767E     ; 4934 (41-20)
+   ?\u8B2C     ; 4935 (41-21)
+   ?\u4FF5     ; 4936 (41-22)
+   ?\u5F6A     ; 4937 (41-23)
+   ?\u6A19     ; 4938 (41-24)
+   ?\u6C37     ; 4939 (41-25)
+   ?\u6F02     ; 493A (41-26)
+   ?\u74E2     ; 493B (41-27)
+   ?\u7968     ; 493C (41-28)
+   ?\u8868     ; 493D (41-29)
+   ?\u8A55     ; 493E (41-30)
+   ?\u8C79     ; 493F (41-31)
+   ?\u5EDF     ; 4940 (41-32)
+   ?\u63CF     ; 4941 (41-33)
+   ?\u75C5     ; 4942 (41-34)
+   ?\u79D2     ; 4943 (41-35)
+   ?\u82D7     ; 4944 (41-36)
+   ?\u9328     ; 4945 (41-37)
+   ?\u92F2     ; 4946 (41-38)
+   ?\u849C     ; 4947 (41-39)
+   ?\u86ED     ; 4948 (41-40)
+   ?\u9C2D     ; 4949 (41-41)
+   ?\u54C1     ; 494A (41-42)
+   ?\u5F6C     ; 494B (41-43)
+   ?\u658C     ; 494C (41-44)
+   ?\u6D5C     ; 494D (41-45)
+   ?\u7015     ; 494E (41-46)
+   ?\u8CA7     ; 494F (41-47)
+   ?\u8CD3     ; 4950 (41-48)
+   ?\u983B     ; 4951 (41-49)
+   ?\u654F     ; 4952 (41-50)
+   ?\u74F6     ; 4953 (41-51)
+   ?\u4E0D     ; 4954 (41-52)
+   ?\u4ED8     ; 4955 (41-53)
+   ?\u57E0     ; 4956 (41-54)
+   ?\u592B     ; 4957 (41-55)
+   ?\u5A66     ; 4958 (41-56)
+   ?\u5BCC     ; 4959 (41-57)
+   ?\u51A8     ; 495A (41-58)
+   ?\u5E03     ; 495B (41-59)
+   ?\u5E9C     ; 495C (41-60)
+   ?\u6016     ; 495D (41-61)
+   ?\u6276     ; 495E (41-62)
+   ?\u6577     ; 495F (41-63)
+   ?\u65A7     ; 4960 (41-64)
+   ?\u666E     ; 4961 (41-65)
+   ?\u6D6E     ; 4962 (41-66)
+   ?\u7236     ; 4963 (41-67)
+   ?\u7B26     ; 4964 (41-68)
+   ?\u8150     ; 4965 (41-69)
+   ?\u819A     ; 4966 (41-70)
+   ?\u8299     ; 4967 (41-71)
+   ?\u8B5C     ; 4968 (41-72)
+   ?\u8CA0     ; 4969 (41-73)
+   ?\u8CE6     ; 496A (41-74)
+   ?\u8D74     ; 496B (41-75)
+   ?\u961C     ; 496C (41-76)
+   ?\u9644     ; 496D (41-77)
+   ?\u4FAE     ; 496E (41-78)
+   ?\u64AB     ; 496F (41-79)
+   ?\u6B66     ; 4970 (41-80)
+   ?\u821E     ; 4971 (41-81)
+   ?\u8461     ; 4972 (41-82)
+   ?\u856A     ; 4973 (41-83)
+   ?\u90E8     ; 4974 (41-84)
+   ?\u5C01     ; 4975 (41-85)
+   ?\u6953     ; 4976 (41-86)
+   ?\u98A8     ; 4977 (41-87)
+   ?\u847A     ; 4978 (41-88)
+   ?\u8557     ; 4979 (41-89)
+   ?\u4F0F     ; 497A (41-90)
+   ?\u526F     ; 497B (41-91)
+   ?\u5FA9     ; 497C (41-92)
+   ?\u5E45     ; 497D (41-93)
+   ?\u670D     ; 497E (41-94)
+   ]
+  [?\u798F     ; 4A21 (42-01)
+   ?\u8179     ; 4A22 (42-02)
+   ?\u8907     ; 4A23 (42-03)
+   ?\u8986     ; 4A24 (42-04)
+   ?\u6DF5     ; 4A25 (42-05)
+   ?\u5F17     ; 4A26 (42-06)
+   ?\u6255     ; 4A27 (42-07)
+   ?\u6CB8     ; 4A28 (42-08)
+   ?\u4ECF     ; 4A29 (42-09)
+   ?\u7269     ; 4A2A (42-10)
+   ?\u9B92     ; 4A2B (42-11)
+   ?\u5206     ; 4A2C (42-12)
+   ?\u543B     ; 4A2D (42-13)
+   ?\u5674     ; 4A2E (42-14)
+   ?\u58B3     ; 4A2F (42-15)
+   ?\u61A4     ; 4A30 (42-16)
+   ?\u626E     ; 4A31 (42-17)
+   ?\u711A     ; 4A32 (42-18)
+   ?\u596E     ; 4A33 (42-19)
+   ?\u7C89     ; 4A34 (42-20)
+   ?\u7CDE     ; 4A35 (42-21)
+   ?\u7D1B     ; 4A36 (42-22)
+   ?\u96F0     ; 4A37 (42-23)
+   ?\u6587     ; 4A38 (42-24)
+   ?\u805E     ; 4A39 (42-25)
+   ?\u4E19     ; 4A3A (42-26)
+   ?\u4F75     ; 4A3B (42-27)
+   ?\u5175     ; 4A3C (42-28)
+   ?\u5840     ; 4A3D (42-29)
+   ?\u5E63     ; 4A3E (42-30)
+   ?\u5E73     ; 4A3F (42-31)
+   ?\u5F0A     ; 4A40 (42-32)
+   ?\u67C4     ; 4A41 (42-33)
+   ?\u4E26     ; 4A42 (42-34)
+   ?\u853D     ; 4A43 (42-35)
+   ?\u9589     ; 4A44 (42-36)
+   ?\u965B     ; 4A45 (42-37)
+   ?\u7C73     ; 4A46 (42-38)
+   ?\u9801     ; 4A47 (42-39)
+   ?\u50FB     ; 4A48 (42-40)
+   ?\u58C1     ; 4A49 (42-41)
+   ?\u7656     ; 4A4A (42-42)
+   ?\u78A7     ; 4A4B (42-43)
+   ?\u5225     ; 4A4C (42-44)
+   ?\u77A5     ; 4A4D (42-45)
+   ?\u8511     ; 4A4E (42-46)
+   ?\u7B86     ; 4A4F (42-47)
+   ?\u504F     ; 4A50 (42-48)
+   ?\u5909     ; 4A51 (42-49)
+   ?\u7247     ; 4A52 (42-50)
+   ?\u7BC7     ; 4A53 (42-51)
+   ?\u7DE8     ; 4A54 (42-52)
+   ?\u8FBA     ; 4A55 (42-53)
+   ?\u8FD4     ; 4A56 (42-54)
+   ?\u904D     ; 4A57 (42-55)
+   ?\u4FBF     ; 4A58 (42-56)
+   ?\u52C9     ; 4A59 (42-57)
+   ?\u5A29     ; 4A5A (42-58)
+   ?\u5F01     ; 4A5B (42-59)
+   ?\u97AD     ; 4A5C (42-60)
+   ?\u4FDD     ; 4A5D (42-61)
+   ?\u8217     ; 4A5E (42-62)
+   ?\u92EA     ; 4A5F (42-63)
+   ?\u5703     ; 4A60 (42-64)
+   ?\u6355     ; 4A61 (42-65)
+   ?\u6B69     ; 4A62 (42-66)
+   ?\u752B     ; 4A63 (42-67)
+   ?\u88DC     ; 4A64 (42-68)
+   ?\u8F14     ; 4A65 (42-69)
+   ?\u7A42     ; 4A66 (42-70)
+   ?\u52DF     ; 4A67 (42-71)
+   ?\u5893     ; 4A68 (42-72)
+   ?\u6155     ; 4A69 (42-73)
+   ?\u620A     ; 4A6A (42-74)
+   ?\u66AE     ; 4A6B (42-75)
+   ?\u6BCD     ; 4A6C (42-76)
+   ?\u7C3F     ; 4A6D (42-77)
+   ?\u83E9     ; 4A6E (42-78)
+   ?\u5023     ; 4A6F (42-79)
+   ?\u4FF8     ; 4A70 (42-80)
+   ?\u5305     ; 4A71 (42-81)
+   ?\u5446     ; 4A72 (42-82)
+   ?\u5831     ; 4A73 (42-83)
+   ?\u5949     ; 4A74 (42-84)
+   ?\u5B9D     ; 4A75 (42-85)
+   ?\u5CF0     ; 4A76 (42-86)
+   ?\u5CEF     ; 4A77 (42-87)
+   ?\u5D29     ; 4A78 (42-88)
+   ?\u5E96     ; 4A79 (42-89)
+   ?\u62B1     ; 4A7A (42-90)
+   ?\u6367     ; 4A7B (42-91)
+   ?\u653E     ; 4A7C (42-92)
+   ?\u65B9     ; 4A7D (42-93)
+   ?\u670B     ; 4A7E (42-94)
+   ]
+  [?\u6CD5     ; 4B21 (43-01)
+   ?\u6CE1     ; 4B22 (43-02)
+   ?\u70F9     ; 4B23 (43-03)
+   ?\u7832     ; 4B24 (43-04)
+   ?\u7E2B     ; 4B25 (43-05)
+   ?\u80DE     ; 4B26 (43-06)
+   ?\u82B3     ; 4B27 (43-07)
+   ?\u840C     ; 4B28 (43-08)
+   ?\u84EC     ; 4B29 (43-09)
+   ?\u8702     ; 4B2A (43-10)
+   ?\u8912     ; 4B2B (43-11)
+   ?\u8A2A     ; 4B2C (43-12)
+   ?\u8C4A     ; 4B2D (43-13)
+   ?\u90A6     ; 4B2E (43-14)
+   ?\u92D2     ; 4B2F (43-15)
+   ?\u98FD     ; 4B30 (43-16)
+   ?\u9CF3     ; 4B31 (43-17)
+   ?\u9D6C     ; 4B32 (43-18)
+   ?\u4E4F     ; 4B33 (43-19)
+   ?\u4EA1     ; 4B34 (43-20)
+   ?\u508D     ; 4B35 (43-21)
+   ?\u5256     ; 4B36 (43-22)
+   ?\u574A     ; 4B37 (43-23)
+   ?\u59A8     ; 4B38 (43-24)
+   ?\u5E3D     ; 4B39 (43-25)
+   ?\u5FD8     ; 4B3A (43-26)
+   ?\u5FD9     ; 4B3B (43-27)
+   ?\u623F     ; 4B3C (43-28)
+   ?\u66B4     ; 4B3D (43-29)
+   ?\u671B     ; 4B3E (43-30)
+   ?\u67D0     ; 4B3F (43-31)
+   ?\u68D2     ; 4B40 (43-32)
+   ?\u5192     ; 4B41 (43-33)
+   ?\u7D21     ; 4B42 (43-34)
+   ?\u80AA     ; 4B43 (43-35)
+   ?\u81A8     ; 4B44 (43-36)
+   ?\u8B00     ; 4B45 (43-37)
+   ?\u8C8C     ; 4B46 (43-38)
+   ?\u8CBF     ; 4B47 (43-39)
+   ?\u927E     ; 4B48 (43-40)
+   ?\u9632     ; 4B49 (43-41)
+   ?\u5420     ; 4B4A (43-42)
+   ?\u982C     ; 4B4B (43-43)
+   ?\u5317     ; 4B4C (43-44)
+   ?\u50D5     ; 4B4D (43-45)
+   ?\u535C     ; 4B4E (43-46)
+   ?\u58A8     ; 4B4F (43-47)
+   ?\u64B2     ; 4B50 (43-48)
+   ?\u6734     ; 4B51 (43-49)
+   ?\u7267     ; 4B52 (43-50)
+   ?\u7766     ; 4B53 (43-51)
+   ?\u7A46     ; 4B54 (43-52)
+   ?\u91E6     ; 4B55 (43-53)
+   ?\u52C3     ; 4B56 (43-54)
+   ?\u6CA1     ; 4B57 (43-55)
+   ?\u6B86     ; 4B58 (43-56)
+   ?\u5800     ; 4B59 (43-57)
+   ?\u5E4C     ; 4B5A (43-58)
+   ?\u5954     ; 4B5B (43-59)
+   ?\u672C     ; 4B5C (43-60)
+   ?\u7FFB     ; 4B5D (43-61)
+   ?\u51E1     ; 4B5E (43-62)
+   ?\u76C6     ; 4B5F (43-63)
+   ?\u6469     ; 4B60 (43-64)
+   ?\u78E8     ; 4B61 (43-65)
+   ?\u9B54     ; 4B62 (43-66)
+   ?\u9EBB     ; 4B63 (43-67)
+   ?\u57CB     ; 4B64 (43-68)
+   ?\u59B9     ; 4B65 (43-69)
+   ?\u6627     ; 4B66 (43-70)
+   ?\u679A     ; 4B67 (43-71)
+   ?\u6BCE     ; 4B68 (43-72)
+   ?\u54E9     ; 4B69 (43-73)
+   ?\u69D9     ; 4B6A (43-74)
+   ?\u5E55     ; 4B6B (43-75)
+   ?\u819C     ; 4B6C (43-76)
+   ?\u6795     ; 4B6D (43-77)
+   ?\u9BAA     ; 4B6E (43-78)
+   ?\u67FE     ; 4B6F (43-79)
+   ?\u9C52     ; 4B70 (43-80)
+   ?\u685D     ; 4B71 (43-81)
+   ?\u4EA6     ; 4B72 (43-82)
+   ?\u4FE3     ; 4B73 (43-83)
+   ?\u53C8     ; 4B74 (43-84)
+   ?\u62B9     ; 4B75 (43-85)
+   ?\u672B     ; 4B76 (43-86)
+   ?\u6CAB     ; 4B77 (43-87)
+   ?\u8FC4     ; 4B78 (43-88)
+   ?\u4FAD     ; 4B79 (43-89)
+   ?\u7E6D     ; 4B7A (43-90)
+   ?\u9EBF     ; 4B7B (43-91)
+   ?\u4E07     ; 4B7C (43-92)
+   ?\u6162     ; 4B7D (43-93)
+   ?\u6E80     ; 4B7E (43-94)
+   ]
+  [?\u6F2B     ; 4C21 (44-01)
+   ?\u8513     ; 4C22 (44-02)
+   ?\u5473     ; 4C23 (44-03)
+   ?\u672A     ; 4C24 (44-04)
+   ?\u9B45     ; 4C25 (44-05)
+   ?\u5DF3     ; 4C26 (44-06)
+   ?\u7B95     ; 4C27 (44-07)
+   ?\u5CAC     ; 4C28 (44-08)
+   ?\u5BC6     ; 4C29 (44-09)
+   ?\u871C     ; 4C2A (44-10)
+   ?\u6E4A     ; 4C2B (44-11)
+   ?\u84D1     ; 4C2C (44-12)
+   ?\u7A14     ; 4C2D (44-13)
+   ?\u8108     ; 4C2E (44-14)
+   ?\u5999     ; 4C2F (44-15)
+   ?\u7C8D     ; 4C30 (44-16)
+   ?\u6C11     ; 4C31 (44-17)
+   ?\u7720     ; 4C32 (44-18)
+   ?\u52D9     ; 4C33 (44-19)
+   ?\u5922     ; 4C34 (44-20)
+   ?\u7121     ; 4C35 (44-21)
+   ?\u725F     ; 4C36 (44-22)
+   ?\u77DB     ; 4C37 (44-23)
+   ?\u9727     ; 4C38 (44-24)
+   ?\u9D61     ; 4C39 (44-25)
+   ?\u690B     ; 4C3A (44-26)
+   ?\u5A7F     ; 4C3B (44-27)
+   ?\u5A18     ; 4C3C (44-28)
+   ?\u51A5     ; 4C3D (44-29)
+   ?\u540D     ; 4C3E (44-30)
+   ?\u547D     ; 4C3F (44-31)
+   ?\u660E     ; 4C40 (44-32)
+   ?\u76DF     ; 4C41 (44-33)
+   ?\u8FF7     ; 4C42 (44-34)
+   ?\u9298     ; 4C43 (44-35)
+   ?\u9CF4     ; 4C44 (44-36)
+   ?\u59EA     ; 4C45 (44-37)
+   ?\u725D     ; 4C46 (44-38)
+   ?\u6EC5     ; 4C47 (44-39)
+   ?\u514D     ; 4C48 (44-40)
+   ?\u68C9     ; 4C49 (44-41)
+   ?\u7DBF     ; 4C4A (44-42)
+   ?\u7DEC     ; 4C4B (44-43)
+   ?\u9762     ; 4C4C (44-44)
+   ?\u9EBA     ; 4C4D (44-45)
+   ?\u6478     ; 4C4E (44-46)
+   ?\u6A21     ; 4C4F (44-47)
+   ?\u8302     ; 4C50 (44-48)
+   ?\u5984     ; 4C51 (44-49)
+   ?\u5B5F     ; 4C52 (44-50)
+   ?\u6BDB     ; 4C53 (44-51)
+   ?\u731B     ; 4C54 (44-52)
+   ?\u76F2     ; 4C55 (44-53)
+   ?\u7DB2     ; 4C56 (44-54)
+   ?\u8017     ; 4C57 (44-55)
+   ?\u8499     ; 4C58 (44-56)
+   ?\u5132     ; 4C59 (44-57)
+   ?\u6728     ; 4C5A (44-58)
+   ?\u9ED9     ; 4C5B (44-59)
+   ?\u76EE     ; 4C5C (44-60)
+   ?\u6762     ; 4C5D (44-61)
+   ?\u52FF     ; 4C5E (44-62)
+   ?\u9905     ; 4C5F (44-63)
+   ?\u5C24     ; 4C60 (44-64)
+   ?\u623B     ; 4C61 (44-65)
+   ?\u7C7E     ; 4C62 (44-66)
+   ?\u8CB0     ; 4C63 (44-67)
+   ?\u554F     ; 4C64 (44-68)
+   ?\u60B6     ; 4C65 (44-69)
+   ?\u7D0B     ; 4C66 (44-70)
+   ?\u9580     ; 4C67 (44-71)
+   ?\u5301     ; 4C68 (44-72)
+   ?\u4E5F     ; 4C69 (44-73)
+   ?\u51B6     ; 4C6A (44-74)
+   ?\u591C     ; 4C6B (44-75)
+   ?\u723A     ; 4C6C (44-76)
+   ?\u8036     ; 4C6D (44-77)
+   ?\u91CE     ; 4C6E (44-78)
+   ?\u5F25     ; 4C6F (44-79)
+   ?\u77E2     ; 4C70 (44-80)
+   ?\u5384     ; 4C71 (44-81)
+   ?\u5F79     ; 4C72 (44-82)
+   ?\u7D04     ; 4C73 (44-83)
+   ?\u85AC     ; 4C74 (44-84)
+   ?\u8A33     ; 4C75 (44-85)
+   ?\u8E8D     ; 4C76 (44-86)
+   ?\u9756     ; 4C77 (44-87)
+   ?\u67F3     ; 4C78 (44-88)
+   ?\u85AE     ; 4C79 (44-89)
+   ?\u9453     ; 4C7A (44-90)
+   ?\u6109     ; 4C7B (44-91)
+   ?\u6108     ; 4C7C (44-92)
+   ?\u6CB9     ; 4C7D (44-93)
+   ?\u7652     ; 4C7E (44-94)
+   ]
+  [?\u8AED     ; 4D21 (45-01)
+   ?\u8F38     ; 4D22 (45-02)
+   ?\u552F     ; 4D23 (45-03)
+   ?\u4F51     ; 4D24 (45-04)
+   ?\u512A     ; 4D25 (45-05)
+   ?\u52C7     ; 4D26 (45-06)
+   ?\u53CB     ; 4D27 (45-07)
+   ?\u5BA5     ; 4D28 (45-08)
+   ?\u5E7D     ; 4D29 (45-09)
+   ?\u60A0     ; 4D2A (45-10)
+   ?\u6182     ; 4D2B (45-11)
+   ?\u63D6     ; 4D2C (45-12)
+   ?\u6709     ; 4D2D (45-13)
+   ?\u67DA     ; 4D2E (45-14)
+   ?\u6E67     ; 4D2F (45-15)
+   ?\u6D8C     ; 4D30 (45-16)
+   ?\u7336     ; 4D31 (45-17)
+   ?\u7337     ; 4D32 (45-18)
+   ?\u7531     ; 4D33 (45-19)
+   ?\u7950     ; 4D34 (45-20)
+   ?\u88D5     ; 4D35 (45-21)
+   ?\u8A98     ; 4D36 (45-22)
+   ?\u904A     ; 4D37 (45-23)
+   ?\u9091     ; 4D38 (45-24)
+   ?\u90F5     ; 4D39 (45-25)
+   ?\u96C4     ; 4D3A (45-26)
+   ?\u878D     ; 4D3B (45-27)
+   ?\u5915     ; 4D3C (45-28)
+   ?\u4E88     ; 4D3D (45-29)
+   ?\u4F59     ; 4D3E (45-30)
+   nil         ; 4D3F (45-31) ?\u4E0E
+   ?\u8A89     ; 4D40 (45-32)
+   ?\u8F3F     ; 4D41 (45-33)
+   ?\u9810     ; 4D42 (45-34)
+   ?\u50AD     ; 4D43 (45-35)
+   ?\u5E7C     ; 4D44 (45-36)
+   ?\u5996     ; 4D45 (45-37)
+   ?\u5BB9     ; 4D46 (45-38)
+   ?\u5EB8     ; 4D47 (45-39)
+   ?\u63DA     ; 4D48 (45-40)
+   ?\u63FA     ; 4D49 (45-41)
+   ?\u64C1     ; 4D4A (45-42)
+   ?\u66DC     ; 4D4B (45-43)
+   ?\u694A     ; 4D4C (45-44)
+   ?\u69D8     ; 4D4D (45-45)
+   ?\u6D0B     ; 4D4E (45-46)
+   ?\u6EB6     ; 4D4F (45-47)
+   ?\u7194     ; 4D50 (45-48)
+   ?\u7528     ; 4D51 (45-49)
+   ?\u7AAF     ; 4D52 (45-50)
+   ?\u7F8A     ; 4D53 (45-51)
+   ?\u8000     ; 4D54 (45-52)
+   ?\u8449     ; 4D55 (45-53)
+   ?\u84C9     ; 4D56 (45-54)
+   ?\u8981     ; 4D57 (45-55)
+   ?\u8B21     ; 4D58 (45-56)
+   ?\u8E0A     ; 4D59 (45-57)
+   ?\u9065     ; 4D5A (45-58)
+   ?\u967D     ; 4D5B (45-59)
+   ?\u990A     ; 4D5C (45-60)
+   ?\u617E     ; 4D5D (45-61)
+   ?\u6291     ; 4D5E (45-62)
+   ?\u6B32     ; 4D5F (45-63)
+   ?\u6C83     ; 4D60 (45-64)
+   ?\u6D74     ; 4D61 (45-65)
+   ?\u7FCC     ; 4D62 (45-66)
+   ?\u7FFC     ; 4D63 (45-67)
+   ?\u6DC0     ; 4D64 (45-68)
+   ?\u7F85     ; 4D65 (45-69)
+   ?\u87BA     ; 4D66 (45-70)
+   ?\u88F8     ; 4D67 (45-71)
+   ?\u6765     ; 4D68 (45-72)
+   ?\u83B1     ; 4D69 (45-73)
+   ?\u983C     ; 4D6A (45-74)
+   ?\u96F7     ; 4D6B (45-75)
+   ?\u6D1B     ; 4D6C (45-76)
+   ?\u7D61     ; 4D6D (45-77)
+   ?\u843D     ; 4D6E (45-78)
+   ?\u916A     ; 4D6F (45-79)
+   ?\u4E71     ; 4D70 (45-80)
+   ?\u5375     ; 4D71 (45-81)
+   ?\u5D50     ; 4D72 (45-82)
+   ?\u6B04     ; 4D73 (45-83)
+   ?\u6FEB     ; 4D74 (45-84)
+   ?\u85CD     ; 4D75 (45-85)
+   ?\u862D     ; 4D76 (45-86)
+   ?\u89A7     ; 4D77 (45-87)
+   ?\u5229     ; 4D78 (45-88)
+   ?\u540F     ; 4D79 (45-89)
+   ?\u5C65     ; 4D7A (45-90)
+   ?\u674E     ; 4D7B (45-91)
+   ?\u68A8     ; 4D7C (45-92)
+   ?\u7406     ; 4D7D (45-93)
+   ?\u7483     ; 4D7E (45-94)
+   ]
+  [?\u75E2     ; 4E21 (46-01)
+   ?\u88CF     ; 4E22 (46-02)
+   ?\u88E1     ; 4E23 (46-03)
+   ?\u91CC     ; 4E24 (46-04)
+   ?\u96E2     ; 4E25 (46-05)
+   ?\u9678     ; 4E26 (46-06)
+   ?\u5F8B     ; 4E27 (46-07)
+   ?\u7387     ; 4E28 (46-08)
+   ?\u7ACB     ; 4E29 (46-09)
+   ?\u844E     ; 4E2A (46-10)
+   ?\u63A0     ; 4E2B (46-11)
+   ?\u7565     ; 4E2C (46-12)
+   ?\u5289     ; 4E2D (46-13)
+   ?\u6D41     ; 4E2E (46-14)
+   ?\u6E9C     ; 4E2F (46-15)
+   ?\u7409     ; 4E30 (46-16)
+   ?\u7559     ; 4E31 (46-17)
+   ?\u786B     ; 4E32 (46-18)
+   ?\u7C92     ; 4E33 (46-19)
+   ?\u9686     ; 4E34 (46-20)
+   ?\u7ADC     ; 4E35 (46-21)
+   ?\u9F8D     ; 4E36 (46-22)
+   ?\u4FB6     ; 4E37 (46-23)
+   ?\u616E     ; 4E38 (46-24)
+   ?\u65C5     ; 4E39 (46-25)
+   ?\u865C     ; 4E3A (46-26)
+   ?\u4E86     ; 4E3B (46-27)
+   ?\u4EAE     ; 4E3C (46-28)
+   ?\u50DA     ; 4E3D (46-29)
+   ?\u4E21     ; 4E3E (46-30)
+   ?\u51CC     ; 4E3F (46-31)
+   ?\u5BEE     ; 4E40 (46-32)
+   ?\u6599     ; 4E41 (46-33)
+   ?\u6881     ; 4E42 (46-34)
+   ?\u6DBC     ; 4E43 (46-35)
+   ?\u731F     ; 4E44 (46-36)
+   ?\u7642     ; 4E45 (46-37)
+   ?\u77AD     ; 4E46 (46-38)
+   ?\u7A1C     ; 4E47 (46-39)
+   ?\u7CE7     ; 4E48 (46-40)
+   ?\u826F     ; 4E49 (46-41)
+   ?\u8AD2     ; 4E4A (46-42)
+   ?\u907C     ; 4E4B (46-43)
+   ?\u91CF     ; 4E4C (46-44)
+   ?\u9675     ; 4E4D (46-45)
+   ?\u9818     ; 4E4E (46-46)
+   ?\u529B     ; 4E4F (46-47)
+   ?\u7DD1     ; 4E50 (46-48)
+   ?\u502B     ; 4E51 (46-49)
+   ?\u5398     ; 4E52 (46-50)
+   ?\u6797     ; 4E53 (46-51)
+   ?\u6DCB     ; 4E54 (46-52)
+   ?\u71D0     ; 4E55 (46-53)
+   ?\u7433     ; 4E56 (46-54)
+   ?\u81E8     ; 4E57 (46-55)
+   ?\u8F2A     ; 4E58 (46-56)
+   ?\u96A3     ; 4E59 (46-57)
+   ?\u9C57     ; 4E5A (46-58)
+   ?\u9E9F     ; 4E5B (46-59)
+   ?\u7460     ; 4E5C (46-60)
+   ?\u5841     ; 4E5D (46-61)
+   ?\u6D99     ; 4E5E (46-62)
+   ?\u7D2F     ; 4E5F (46-63)
+   ?\u985E     ; 4E60 (46-64)
+   ?\u4EE4     ; 4E61 (46-65)
+   ?\u4F36     ; 4E62 (46-66)
+   ?\u4F8B     ; 4E63 (46-67)
+   ?\u51B7     ; 4E64 (46-68)
+   ?\u52B1     ; 4E65 (46-69)
+   ?\u5DBA     ; 4E66 (46-70)
+   ?\u601C     ; 4E67 (46-71)
+   ?\u73B2     ; 4E68 (46-72)
+   ?\u793C     ; 4E69 (46-73)
+   ?\u82D3     ; 4E6A (46-74)
+   ?\u9234     ; 4E6B (46-75)
+   ?\u96B7     ; 4E6C (46-76)
+   ?\u96F6     ; 4E6D (46-77)
+   ?\u970A     ; 4E6E (46-78)
+   ?\u9E97     ; 4E6F (46-79)
+   ?\u9F62     ; 4E70 (46-80)
+   ?\u66A6     ; 4E71 (46-81)
+   ?\u6B74     ; 4E72 (46-82)
+   ?\u5217     ; 4E73 (46-83)
+   ?\u52A3     ; 4E74 (46-84)
+   ?\u70C8     ; 4E75 (46-85)
+   ?\u88C2     ; 4E76 (46-86)
+   ?\u5EC9     ; 4E77 (46-87)
+   ?\u604B     ; 4E78 (46-88)
+   ?\u6190     ; 4E79 (46-89)
+   ?\u6F23     ; 4E7A (46-90)
+   ?\u7149     ; 4E7B (46-91)
+   ?\u7C3E     ; 4E7C (46-92)
+   ?\u7DF4     ; 4E7D (46-93)
+   ?\u806F     ; 4E7E (46-94)
+   ]
+  [?\u84EE     ; 4F21 (47-01)
+   ?\u9023     ; 4F22 (47-02)
+   ?\u932C     ; 4F23 (47-03)
+   ?\u5442     ; 4F24 (47-04)
+   ?\u9B6F     ; 4F25 (47-05)
+   ?\u6AD3     ; 4F26 (47-06)
+   ?\u7089     ; 4F27 (47-07)
+   ?\u8CC2     ; 4F28 (47-08)
+   ?\u8DEF     ; 4F29 (47-09)
+   ?\u9732     ; 4F2A (47-10)
+   ?\u52B4     ; 4F2B (47-11)
+   ?\u5A41     ; 4F2C (47-12)
+   ?\u5ECA     ; 4F2D (47-13)
+   ?\u5F04     ; 4F2E (47-14)
+   ?\u6717     ; 4F2F (47-15)
+   ?\u697C     ; 4F30 (47-16)
+   ?\u6994     ; 4F31 (47-17)
+   ?\u6D6A     ; 4F32 (47-18)
+   ?\u6F0F     ; 4F33 (47-19)
+   ?\u7262     ; 4F34 (47-20)
+   ?\u72FC     ; 4F35 (47-21)
+   ?\u7BED     ; 4F36 (47-22)
+   ?\u8001     ; 4F37 (47-23)
+   ?\u807E     ; 4F38 (47-24)
+   ?\u874B     ; 4F39 (47-25)
+   ?\u90CE     ; 4F3A (47-26)
+   ?\u516D     ; 4F3B (47-27)
+   ?\u9E93     ; 4F3C (47-28)
+   ?\u7984     ; 4F3D (47-29)
+   ?\u808B     ; 4F3E (47-30)
+   ?\u9332     ; 4F3F (47-31)
+   ?\u8AD6     ; 4F40 (47-32)
+   ?\u502D     ; 4F41 (47-33)
+   ?\u548C     ; 4F42 (47-34)
+   ?\u8A71     ; 4F43 (47-35)
+   ?\u6B6A     ; 4F44 (47-36)
+   ?\u8CC4     ; 4F45 (47-37)
+   ?\u8107     ; 4F46 (47-38)
+   ?\u60D1     ; 4F47 (47-39)
+   ?\u67A0     ; 4F48 (47-40)
+   ?\u9DF2     ; 4F49 (47-41)
+   ?\u4E99     ; 4F4A (47-42)
+   ?\u4E98     ; 4F4B (47-43)
+   ?\u9C10     ; 4F4C (47-44)
+   ?\u8A6B     ; 4F4D (47-45)
+   ?\u85C1     ; 4F4E (47-46)
+   ?\u8568     ; 4F4F (47-47)
+   ?\u6900     ; 4F50 (47-48)
+   ?\u6E7E     ; 4F51 (47-49)
+   ?\u7897     ; 4F52 (47-50)
+   ?\u8155     ; 4F53 (47-51)
+   nil         ; 4F54 (47-52)
+   nil         ; 4F55 (47-53)
+   nil         ; 4F56 (47-54)
+   nil         ; 4F57 (47-55)
+   nil         ; 4F58 (47-56)
+   nil         ; 4F59 (47-57)
+   nil         ; 4F5A (47-58)
+   nil         ; 4F5B (47-59)
+   nil         ; 4F5C (47-60)
+   nil         ; 4F5D (47-61)
+   nil         ; 4F5E (47-62)
+   nil         ; 4F5F (47-63)
+   nil         ; 4F60 (47-64)
+   nil         ; 4F61 (47-65)
+   nil         ; 4F62 (47-66)
+   nil         ; 4F63 (47-67)
+   nil         ; 4F64 (47-68)
+   nil         ; 4F65 (47-69)
+   nil         ; 4F66 (47-70)
+   nil         ; 4F67 (47-71)
+   nil         ; 4F68 (47-72)
+   nil         ; 4F69 (47-73)
+   nil         ; 4F6A (47-74)
+   nil         ; 4F6B (47-75)
+   nil         ; 4F6C (47-76)
+   nil         ; 4F6D (47-77)
+   nil         ; 4F6E (47-78)
+   nil         ; 4F6F (47-79)
+   nil         ; 4F70 (47-80)
+   nil         ; 4F71 (47-81)
+   nil         ; 4F72 (47-82)
+   nil         ; 4F73 (47-83)
+   nil         ; 4F74 (47-84)
+   nil         ; 4F75 (47-85)
+   nil         ; 4F76 (47-86)
+   nil         ; 4F77 (47-87)
+   nil         ; 4F78 (47-88)
+   nil         ; 4F79 (47-89)
+   nil         ; 4F7A (47-90)
+   nil         ; 4F7B (47-91)
+   nil         ; 4F7C (47-92)
+   nil         ; 4F7D (47-93)
+   nil         ; 4F7E (47-94)
+   ]
+  [?\u5F0C     ; 5021 (48-01)
+   ?\u4E10     ; 5022 (48-02)
+   ?\u4E15     ; 5023 (48-03)
+   ?\u4E2A     ; 5024 (48-04)
+   ?\u4E31     ; 5025 (48-05)
+   ?\u4E36     ; 5026 (48-06)
+   ?\u4E3C     ; 5027 (48-07)
+   ?\u4E3F     ; 5028 (48-08)
+   ?\u4E42     ; 5029 (48-09)
+   ?\u4E56     ; 502A (48-10)
+   ?\u4E58     ; 502B (48-11)
+   ?\u4E82     ; 502C (48-12)
+   ?\u4E85     ; 502D (48-13)
+   ?\u8C6B     ; 502E (48-14)
+   ?\u4E8A     ; 502F (48-15)
+   ?\u8212     ; 5030 (48-16)
+   ?\u5F0D     ; 5031 (48-17)
+   ?\u4E8E     ; 5032 (48-18)
+   ?\u4E9E     ; 5033 (48-19)
+   ?\u4E9F     ; 5034 (48-20)
+   ?\u4EA0     ; 5035 (48-21)
+   ?\u4EA2     ; 5036 (48-22)
+   ?\u4EB0     ; 5037 (48-23)
+   ?\u4EB3     ; 5038 (48-24)
+   ?\u4EB6     ; 5039 (48-25)
+   ?\u4ECE     ; 503A (48-26)
+   ?\u4ECD     ; 503B (48-27)
+   ?\u4EC4     ; 503C (48-28)
+   ?\u4EC6     ; 503D (48-29)
+   ?\u4EC2     ; 503E (48-30)
+   ?\u4ED7     ; 503F (48-31)
+   ?\u4EDE     ; 5040 (48-32)
+   ?\u4EED     ; 5041 (48-33)
+   ?\u4EDF     ; 5042 (48-34)
+   ?\u4EF7     ; 5043 (48-35)
+   ?\u4F09     ; 5044 (48-36)
+   ?\u4F5A     ; 5045 (48-37)
+   ?\u4F30     ; 5046 (48-38)
+   ?\u4F5B     ; 5047 (48-39)
+   ?\u4F5D     ; 5048 (48-40)
+   ?\u4F57     ; 5049 (48-41)
+   ?\u4F47     ; 504A (48-42)
+   ?\u4F76     ; 504B (48-43)
+   ?\u4F88     ; 504C (48-44)
+   ?\u4F8F     ; 504D (48-45)
+   ?\u4F98     ; 504E (48-46)
+   ?\u4F7B     ; 504F (48-47)
+   ?\u4F69     ; 5050 (48-48)
+   ?\u4F70     ; 5051 (48-49)
+   ?\u4F91     ; 5052 (48-50)
+   ?\u4F6F     ; 5053 (48-51)
+   ?\u4F86     ; 5054 (48-52)
+   ?\u4F96     ; 5055 (48-53)
+   ?\u5118     ; 5056 (48-54)
+   ?\u4FD4     ; 5057 (48-55)
+   ?\u4FDF     ; 5058 (48-56)
+   ?\u4FCE     ; 5059 (48-57)
+   ?\u4FD8     ; 505A (48-58)
+   ?\u4FDB     ; 505B (48-59)
+   ?\u4FD1     ; 505C (48-60)
+   ?\u4FDA     ; 505D (48-61)
+   ?\u4FD0     ; 505E (48-62)
+   ?\u4FE4     ; 505F (48-63)
+   ?\u4FE5     ; 5060 (48-64)
+   ?\u501A     ; 5061 (48-65)
+   ?\u5028     ; 5062 (48-66)
+   ?\u5014     ; 5063 (48-67)
+   ?\u502A     ; 5064 (48-68)
+   ?\u5025     ; 5065 (48-69)
+   ?\u5005     ; 5066 (48-70)
+   ?\u4F1C     ; 5067 (48-71)
+   ?\u4FF6     ; 5068 (48-72)
+   ?\u5021     ; 5069 (48-73)
+   ?\u5029     ; 506A (48-74)
+   ?\u502C     ; 506B (48-75)
+   ?\u4FFE     ; 506C (48-76)
+   ?\u4FEF     ; 506D (48-77)
+   ?\u5011     ; 506E (48-78)
+   ?\u5006     ; 506F (48-79)
+   ?\u5043     ; 5070 (48-80)
+   ?\u5047     ; 5071 (48-81)
+   ?\u6703     ; 5072 (48-82)
+   ?\u5055     ; 5073 (48-83)
+   ?\u5050     ; 5074 (48-84)
+   ?\u5048     ; 5075 (48-85)
+   ?\u505A     ; 5076 (48-86)
+   ?\u5056     ; 5077 (48-87)
+   ?\u506C     ; 5078 (48-88)
+   ?\u5078     ; 5079 (48-89)
+   ?\u5080     ; 507A (48-90)
+   ?\u509A     ; 507B (48-91)
+   ?\u5085     ; 507C (48-92)
+   ?\u50B4     ; 507D (48-93)
+   ?\u50B2     ; 507E (48-94)
+   ]
+  [?\u50C9     ; 5121 (49-01)
+   ?\u50CA     ; 5122 (49-02)
+   ?\u50B3     ; 5123 (49-03)
+   ?\u50C2     ; 5124 (49-04)
+   ?\u50D6     ; 5125 (49-05)
+   ?\u50DE     ; 5126 (49-06)
+   ?\u50E5     ; 5127 (49-07)
+   ?\u50ED     ; 5128 (49-08)
+   ?\u50E3     ; 5129 (49-09)
+   ?\u50EE     ; 512A (49-10)
+   ?\u50F9     ; 512B (49-11)
+   ?\u50F5     ; 512C (49-12)
+   ?\u5109     ; 512D (49-13)
+   ?\u5101     ; 512E (49-14)
+   ?\u5102     ; 512F (49-15)
+   ?\u5116     ; 5130 (49-16)
+   ?\u5115     ; 5131 (49-17)
+   ?\u5114     ; 5132 (49-18)
+   ?\u511A     ; 5133 (49-19)
+   ?\u5121     ; 5134 (49-20)
+   ?\u513A     ; 5135 (49-21)
+   ?\u5137     ; 5136 (49-22)
+   ?\u513C     ; 5137 (49-23)
+   ?\u513B     ; 5138 (49-24)
+   ?\u513F     ; 5139 (49-25)
+   ?\u5140     ; 513A (49-26)
+   ?\u5152     ; 513B (49-27)
+   ?\u514C     ; 513C (49-28)
+   ?\u5154     ; 513D (49-29)
+   ?\u5162     ; 513E (49-30)
+   ?\u7AF8     ; 513F (49-31)
+   ?\u5169     ; 5140 (49-32)
+   ?\u516A     ; 5141 (49-33)
+   ?\u516E     ; 5142 (49-34)
+   ?\u5180     ; 5143 (49-35)
+   ?\u5182     ; 5144 (49-36)
+   ?\u56D8     ; 5145 (49-37)
+   ?\u518C     ; 5146 (49-38)
+   ?\u5189     ; 5147 (49-39)
+   ?\u518F     ; 5148 (49-40)
+   ?\u5191     ; 5149 (49-41)
+   ?\u5193     ; 514A (49-42)
+   ?\u5195     ; 514B (49-43)
+   ?\u5196     ; 514C (49-44)
+   ?\u51A4     ; 514D (49-45)
+   ?\u51A6     ; 514E (49-46)
+   ?\u51A2     ; 514F (49-47)
+   ?\u51A9     ; 5150 (49-48)
+   ?\u51AA     ; 5151 (49-49)
+   ?\u51AB     ; 5152 (49-50)
+   ?\u51B3     ; 5153 (49-51)
+   ?\u51B1     ; 5154 (49-52)
+   ?\u51B2     ; 5155 (49-53)
+   ?\u51B0     ; 5156 (49-54)
+   ?\u51B5     ; 5157 (49-55)
+   ?\u51BD     ; 5158 (49-56)
+   ?\u51C5     ; 5159 (49-57)
+   ?\u51C9     ; 515A (49-58)
+   ?\u51DB     ; 515B (49-59)
+   ?\u51E0     ; 515C (49-60)
+   ?\u8655     ; 515D (49-61)
+   ?\u51E9     ; 515E (49-62)
+   ?\u51ED     ; 515F (49-63)
+   ?\u51F0     ; 5160 (49-64)
+   ?\u51F5     ; 5161 (49-65)
+   ?\u51FE     ; 5162 (49-66)
+   ?\u5204     ; 5163 (49-67)
+   ?\u520B     ; 5164 (49-68)
+   ?\u5214     ; 5165 (49-69)
+   ?\u520E     ; 5166 (49-70)
+   ?\u5227     ; 5167 (49-71)
+   ?\u522A     ; 5168 (49-72)
+   ?\u522E     ; 5169 (49-73)
+   ?\u5233     ; 516A (49-74)
+   ?\u5239     ; 516B (49-75)
+   ?\u524F     ; 516C (49-76)
+   ?\u5244     ; 516D (49-77)
+   ?\u524B     ; 516E (49-78)
+   ?\u524C     ; 516F (49-79)
+   ?\u525E     ; 5170 (49-80)
+   ?\u5254     ; 5171 (49-81)
+   ?\u526A     ; 5172 (49-82)
+   ?\u5274     ; 5173 (49-83)
+   ?\u5269     ; 5174 (49-84)
+   ?\u5273     ; 5175 (49-85)
+   ?\u527F     ; 5176 (49-86)
+   ?\u527D     ; 5177 (49-87)
+   ?\u528D     ; 5178 (49-88)
+   ?\u5294     ; 5179 (49-89)
+   ?\u5292     ; 517A (49-90)
+   ?\u5271     ; 517B (49-91)
+   ?\u5288     ; 517C (49-92)
+   ?\u5291     ; 517D (49-93)
+   ?\u8FA8     ; 517E (49-94)
+   ]
+  [?\u8FA7     ; 5221 (50-01)
+   ?\u52AC     ; 5222 (50-02)
+   ?\u52AD     ; 5223 (50-03)
+   ?\u52BC     ; 5224 (50-04)
+   ?\u52B5     ; 5225 (50-05)
+   ?\u52C1     ; 5226 (50-06)
+   ?\u52CD     ; 5227 (50-07)
+   ?\u52D7     ; 5228 (50-08)
+   ?\u52DE     ; 5229 (50-09)
+   ?\u52E3     ; 522A (50-10)
+   ?\u52E6     ; 522B (50-11)
+   ?\u98ED     ; 522C (50-12)
+   ?\u52E0     ; 522D (50-13)
+   ?\u52F3     ; 522E (50-14)
+   ?\u52F5     ; 522F (50-15)
+   ?\u52F8     ; 5230 (50-16)
+   ?\u52F9     ; 5231 (50-17)
+   ?\u5306     ; 5232 (50-18)
+   ?\u5308     ; 5233 (50-19)
+   ?\u7538     ; 5234 (50-20)
+   ?\u530D     ; 5235 (50-21)
+   ?\u5310     ; 5236 (50-22)
+   ?\u530F     ; 5237 (50-23)
+   ?\u5315     ; 5238 (50-24)
+   ?\u531A     ; 5239 (50-25)
+   ?\u5323     ; 523A (50-26)
+   ?\u532F     ; 523B (50-27)
+   ?\u5331     ; 523C (50-28)
+   ?\u5333     ; 523D (50-29)
+   ?\u5338     ; 523E (50-30)
+   ?\u5340     ; 523F (50-31)
+   ?\u5346     ; 5240 (50-32)
+   ?\u5345     ; 5241 (50-33)
+   ?\u4E17     ; 5242 (50-34)
+   ?\u5349     ; 5243 (50-35)
+   ?\u534D     ; 5244 (50-36)
+   ?\u51D6     ; 5245 (50-37)
+   ?\u535E     ; 5246 (50-38)
+   ?\u5369     ; 5247 (50-39)
+   ?\u536E     ; 5248 (50-40)
+   ?\u5918     ; 5249 (50-41)
+   ?\u537B     ; 524A (50-42)
+   ?\u5377     ; 524B (50-43)
+   ?\u5382     ; 524C (50-44)
+   ?\u5396     ; 524D (50-45)
+   ?\u53A0     ; 524E (50-46)
+   ?\u53A6     ; 524F (50-47)
+   ?\u53A5     ; 5250 (50-48)
+   ?\u53AE     ; 5251 (50-49)
+   ?\u53B0     ; 5252 (50-50)
+   ?\u53B6     ; 5253 (50-51)
+   ?\u53C3     ; 5254 (50-52)
+   ?\u7C12     ; 5255 (50-53)
+   nil         ; 5256 (50-54)
+   ?\u53DF     ; 5257 (50-55)
+   ?\u66FC     ; 5258 (50-56)
+   ?\u71EE     ; 5259 (50-57)
+   ?\u53EE     ; 525A (50-58)
+   ?\u53E8     ; 525B (50-59)
+   ?\u53ED     ; 525C (50-60)
+   ?\u53FA     ; 525D (50-61)
+   ?\u5401     ; 525E (50-62)
+   ?\u543D     ; 525F (50-63)
+   ?\u5440     ; 5260 (50-64)
+   ?\u542C     ; 5261 (50-65)
+   ?\u542D     ; 5262 (50-66)
+   ?\u543C     ; 5263 (50-67)
+   ?\u542E     ; 5264 (50-68)
+   ?\u5436     ; 5265 (50-69)
+   ?\u5429     ; 5266 (50-70)
+   ?\u541D     ; 5267 (50-71)
+   ?\u544E     ; 5268 (50-72)
+   ?\u548F     ; 5269 (50-73)
+   ?\u5475     ; 526A (50-74)
+   ?\u548E     ; 526B (50-75)
+   ?\u545F     ; 526C (50-76)
+   ?\u5471     ; 526D (50-77)
+   ?\u5477     ; 526E (50-78)
+   ?\u5470     ; 526F (50-79)
+   ?\u5492     ; 5270 (50-80)
+   ?\u547B     ; 5271 (50-81)
+   ?\u5480     ; 5272 (50-82)
+   ?\u5476     ; 5273 (50-83)
+   ?\u5484     ; 5274 (50-84)
+   ?\u5490     ; 5275 (50-85)
+   ?\u5486     ; 5276 (50-86)
+   ?\u54C7     ; 5277 (50-87)
+   ?\u54A2     ; 5278 (50-88)
+   ?\u54B8     ; 5279 (50-89)
+   ?\u54A5     ; 527A (50-90)
+   ?\u54AC     ; 527B (50-91)
+   ?\u54C4     ; 527C (50-92)
+   ?\u54C8     ; 527D (50-93)
+   ?\u54A8     ; 527E (50-94)
+   ]
+  [?\u54AB     ; 5321 (51-01)
+   ?\u54C2     ; 5322 (51-02)
+   ?\u54A4     ; 5323 (51-03)
+   ?\u54BE     ; 5324 (51-04)
+   ?\u54BC     ; 5325 (51-05)
+   ?\u54D8     ; 5326 (51-06)
+   ?\u54E5     ; 5327 (51-07)
+   ?\u54E6     ; 5328 (51-08)
+   ?\u550F     ; 5329 (51-09)
+   ?\u5514     ; 532A (51-10)
+   ?\u54FD     ; 532B (51-11)
+   ?\u54EE     ; 532C (51-12)
+   ?\u54ED     ; 532D (51-13)
+   ?\u54FA     ; 532E (51-14)
+   ?\u54E2     ; 532F (51-15)
+   ?\u5539     ; 5330 (51-16)
+   ?\u5540     ; 5331 (51-17)
+   ?\u5563     ; 5332 (51-18)
+   ?\u554C     ; 5333 (51-19)
+   ?\u552E     ; 5334 (51-20)
+   ?\u555C     ; 5335 (51-21)
+   ?\u5545     ; 5336 (51-22)
+   ?\u5556     ; 5337 (51-23)
+   ?\u5557     ; 5338 (51-24)
+   ?\u5538     ; 5339 (51-25)
+   ?\u5533     ; 533A (51-26)
+   ?\u555D     ; 533B (51-27)
+   ?\u5599     ; 533C (51-28)
+   ?\u5580     ; 533D (51-29)
+   ?\u54AF     ; 533E (51-30)
+   ?\u558A     ; 533F (51-31)
+   ?\u559F     ; 5340 (51-32)
+   ?\u557B     ; 5341 (51-33)
+   ?\u557E     ; 5342 (51-34)
+   ?\u5598     ; 5343 (51-35)
+   ?\u559E     ; 5344 (51-36)
+   ?\u55AE     ; 5345 (51-37)
+   ?\u557C     ; 5346 (51-38)
+   ?\u5583     ; 5347 (51-39)
+   ?\u55A9     ; 5348 (51-40)
+   ?\u5587     ; 5349 (51-41)
+   ?\u55A8     ; 534A (51-42)
+   ?\u55DA     ; 534B (51-43)
+   ?\u55C5     ; 534C (51-44)
+   ?\u55DF     ; 534D (51-45)
+   ?\u55C4     ; 534E (51-46)
+   ?\u55DC     ; 534F (51-47)
+   ?\u55E4     ; 5350 (51-48)
+   ?\u55D4     ; 5351 (51-49)
+   ?\u5614     ; 5352 (51-50)
+   ?\u55F7     ; 5353 (51-51)
+   ?\u5616     ; 5354 (51-52)
+   ?\u55FE     ; 5355 (51-53)
+   ?\u55FD     ; 5356 (51-54)
+   ?\u561B     ; 5357 (51-55)
+   ?\u55F9     ; 5358 (51-56)
+   ?\u564E     ; 5359 (51-57)
+   ?\u5650     ; 535A (51-58)
+   ?\u71DF     ; 535B (51-59)
+   ?\u5634     ; 535C (51-60)
+   ?\u5636     ; 535D (51-61)
+   ?\u5632     ; 535E (51-62)
+   ?\u5638     ; 535F (51-63)
+   ?\u566B     ; 5360 (51-64)
+   ?\u5664     ; 5361 (51-65)
+   ?\u562F     ; 5362 (51-66)
+   ?\u566C     ; 5363 (51-67)
+   ?\u566A     ; 5364 (51-68)
+   ?\u5686     ; 5365 (51-69)
+   ?\u5680     ; 5366 (51-70)
+   ?\u568A     ; 5367 (51-71)
+   ?\u56A0     ; 5368 (51-72)
+   ?\u5694     ; 5369 (51-73)
+   ?\u568F     ; 536A (51-74)
+   ?\u56A5     ; 536B (51-75)
+   ?\u56AE     ; 536C (51-76)
+   ?\u56B6     ; 536D (51-77)
+   ?\u56B4     ; 536E (51-78)
+   ?\u56C2     ; 536F (51-79)
+   ?\u56BC     ; 5370 (51-80)
+   ?\u56C1     ; 5371 (51-81)
+   ?\u56C3     ; 5372 (51-82)
+   ?\u56C0     ; 5373 (51-83)
+   ?\u56C8     ; 5374 (51-84)
+   ?\u56CE     ; 5375 (51-85)
+   ?\u56D1     ; 5376 (51-86)
+   ?\u56D3     ; 5377 (51-87)
+   ?\u56D7     ; 5378 (51-88)
+   ?\u56EE     ; 5379 (51-89)
+   ?\u56F9     ; 537A (51-90)
+   ?\u5700     ; 537B (51-91)
+   ?\u56FF     ; 537C (51-92)
+   ?\u5704     ; 537D (51-93)
+   ?\u5709     ; 537E (51-94)
+   ]
+  [?\u5708     ; 5421 (52-01)
+   ?\u570B     ; 5422 (52-02)
+   ?\u570D     ; 5423 (52-03)
+   ?\u5713     ; 5424 (52-04)
+   ?\u5718     ; 5425 (52-05)
+   ?\u5716     ; 5426 (52-06)
+   ?\u55C7     ; 5427 (52-07)
+   ?\u571C     ; 5428 (52-08)
+   ?\u5726     ; 5429 (52-09)
+   ?\u5737     ; 542A (52-10)
+   ?\u5738     ; 542B (52-11)
+   ?\u574E     ; 542C (52-12)
+   ?\u573B     ; 542D (52-13)
+   ?\u5740     ; 542E (52-14)
+   ?\u574F     ; 542F (52-15)
+   ?\u5769     ; 5430 (52-16)
+   ?\u57C0     ; 5431 (52-17)
+   ?\u5788     ; 5432 (52-18)
+   ?\u5761     ; 5433 (52-19)
+   ?\u577F     ; 5434 (52-20)
+   ?\u5789     ; 5435 (52-21)
+   ?\u5793     ; 5436 (52-22)
+   ?\u57A0     ; 5437 (52-23)
+   ?\u57B3     ; 5438 (52-24)
+   ?\u57A4     ; 5439 (52-25)
+   ?\u57AA     ; 543A (52-26)
+   ?\u57B0     ; 543B (52-27)
+   ?\u57C3     ; 543C (52-28)
+   ?\u57C6     ; 543D (52-29)
+   ?\u57D4     ; 543E (52-30)
+   ?\u57D2     ; 543F (52-31)
+   ?\u57D3     ; 5440 (52-32)
+   ?\u580A     ; 5441 (52-33)
+   ?\u57D6     ; 5442 (52-34)
+   ?\u57E3     ; 5443 (52-35)
+   ?\u580B     ; 5444 (52-36)
+   ?\u5819     ; 5445 (52-37)
+   ?\u581D     ; 5446 (52-38)
+   ?\u5872     ; 5447 (52-39)
+   ?\u5821     ; 5448 (52-40)
+   ?\u5862     ; 5449 (52-41)
+   ?\u584B     ; 544A (52-42)
+   ?\u5870     ; 544B (52-43)
+   ?\u6BC0     ; 544C (52-44)
+   ?\u5852     ; 544D (52-45)
+   ?\u583D     ; 544E (52-46)
+   ?\u5879     ; 544F (52-47)
+   ?\u5885     ; 5450 (52-48)
+   ?\u58B9     ; 5451 (52-49)
+   ?\u589F     ; 5452 (52-50)
+   ?\u58AB     ; 5453 (52-51)
+   ?\u58BA     ; 5454 (52-52)
+   ?\u58DE     ; 5455 (52-53)
+   ?\u58BB     ; 5456 (52-54)
+   ?\u58B8     ; 5457 (52-55)
+   ?\u58AE     ; 5458 (52-56)
+   ?\u58C5     ; 5459 (52-57)
+   ?\u58D3     ; 545A (52-58)
+   ?\u58D1     ; 545B (52-59)
+   ?\u58D7     ; 545C (52-60)
+   ?\u58D9     ; 545D (52-61)
+   ?\u58D8     ; 545E (52-62)
+   ?\u58E5     ; 545F (52-63)
+   ?\u58DC     ; 5460 (52-64)
+   ?\u58E4     ; 5461 (52-65)
+   ?\u58DF     ; 5462 (52-66)
+   ?\u58EF     ; 5463 (52-67)
+   ?\u58FA     ; 5464 (52-68)
+   ?\u58F9     ; 5465 (52-69)
+   ?\u58FB     ; 5466 (52-70)
+   ?\u58FC     ; 5467 (52-71)
+   ?\u58FD     ; 5468 (52-72)
+   ?\u5902     ; 5469 (52-73)
+   ?\u590A     ; 546A (52-74)
+   ?\u5910     ; 546B (52-75)
+   ?\u591B     ; 546C (52-76)
+   ?\u68A6     ; 546D (52-77)
+   ?\u5925     ; 546E (52-78)
+   ?\u592C     ; 546F (52-79)
+   ?\u592D     ; 5470 (52-80)
+   ?\u5932     ; 5471 (52-81)
+   ?\u5938     ; 5472 (52-82)
+   ?\u593E     ; 5473 (52-83)
+   ?\u7AD2     ; 5474 (52-84)
+   ?\u5955     ; 5475 (52-85)
+   ?\u5950     ; 5476 (52-86)
+   ?\u594E     ; 5477 (52-87)
+   ?\u595A     ; 5478 (52-88)
+   ?\u5958     ; 5479 (52-89)
+   ?\u5962     ; 547A (52-90)
+   ?\u5960     ; 547B (52-91)
+   ?\u5967     ; 547C (52-92)
+   ?\u596C     ; 547D (52-93)
+   ?\u5969     ; 547E (52-94)
+   ]
+  [?\u5978     ; 5521 (53-01)
+   ?\u5981     ; 5522 (53-02)
+   ?\u599D     ; 5523 (53-03)
+   ?\u4F5E     ; 5524 (53-04)
+   ?\u4FAB     ; 5525 (53-05)
+   ?\u59A3     ; 5526 (53-06)
+   ?\u59B2     ; 5527 (53-07)
+   ?\u59C6     ; 5528 (53-08)
+   ?\u59E8     ; 5529 (53-09)
+   ?\u59DC     ; 552A (53-10)
+   ?\u598D     ; 552B (53-11)
+   ?\u59D9     ; 552C (53-12)
+   ?\u59DA     ; 552D (53-13)
+   ?\u5A25     ; 552E (53-14)
+   ?\u5A1F     ; 552F (53-15)
+   ?\u5A11     ; 5530 (53-16)
+   ?\u5A1C     ; 5531 (53-17)
+   ?\u5A09     ; 5532 (53-18)
+   ?\u5A1A     ; 5533 (53-19)
+   ?\u5A40     ; 5534 (53-20)
+   ?\u5A6C     ; 5535 (53-21)
+   ?\u5A49     ; 5536 (53-22)
+   ?\u5A35     ; 5537 (53-23)
+   ?\u5A36     ; 5538 (53-24)
+   ?\u5A62     ; 5539 (53-25)
+   ?\u5A6A     ; 553A (53-26)
+   ?\u5A9A     ; 553B (53-27)
+   ?\u5ABC     ; 553C (53-28)
+   ?\u5ABE     ; 553D (53-29)
+   ?\u5ACB     ; 553E (53-30)
+   ?\u5AC2     ; 553F (53-31)
+   ?\u5ABD     ; 5540 (53-32)
+   ?\u5AE3     ; 5541 (53-33)
+   ?\u5AD7     ; 5542 (53-34)
+   ?\u5AE6     ; 5543 (53-35)
+   ?\u5AE9     ; 5544 (53-36)
+   ?\u5AD6     ; 5545 (53-37)
+   ?\u5AFA     ; 5546 (53-38)
+   ?\u5AFB     ; 5547 (53-39)
+   ?\u5B0C     ; 5548 (53-40)
+   ?\u5B0B     ; 5549 (53-41)
+   ?\u5B16     ; 554A (53-42)
+   ?\u5B32     ; 554B (53-43)
+   ?\u5AD0     ; 554C (53-44)
+   ?\u5B2A     ; 554D (53-45)
+   ?\u5B36     ; 554E (53-46)
+   ?\u5B3E     ; 554F (53-47)
+   ?\u5B43     ; 5550 (53-48)
+   ?\u5B45     ; 5551 (53-49)
+   ?\u5B40     ; 5552 (53-50)
+   ?\u5B51     ; 5553 (53-51)
+   ?\u5B55     ; 5554 (53-52)
+   ?\u5B5A     ; 5555 (53-53)
+   ?\u5B5B     ; 5556 (53-54)
+   ?\u5B65     ; 5557 (53-55)
+   ?\u5B69     ; 5558 (53-56)
+   ?\u5B70     ; 5559 (53-57)
+   ?\u5B73     ; 555A (53-58)
+   ?\u5B75     ; 555B (53-59)
+   ?\u5B78     ; 555C (53-60)
+   ?\u6588     ; 555D (53-61)
+   ?\u5B7A     ; 555E (53-62)
+   ?\u5B80     ; 555F (53-63)
+   ?\u5B83     ; 5560 (53-64)
+   ?\u5BA6     ; 5561 (53-65)
+   ?\u5BB8     ; 5562 (53-66)
+   ?\u5BC3     ; 5563 (53-67)
+   ?\u5BC7     ; 5564 (53-68)
+   ?\u5BC9     ; 5565 (53-69)
+   ?\u5BD4     ; 5566 (53-70)
+   ?\u5BD0     ; 5567 (53-71)
+   ?\u5BE4     ; 5568 (53-72)
+   ?\u5BE6     ; 5569 (53-73)
+   ?\u5BE2     ; 556A (53-74)
+   ?\u5BDE     ; 556B (53-75)
+   ?\u5BE5     ; 556C (53-76)
+   ?\u5BEB     ; 556D (53-77)
+   ?\u5BF0     ; 556E (53-78)
+   ?\u5BF6     ; 556F (53-79)
+   ?\u5BF3     ; 5570 (53-80)
+   ?\u5C05     ; 5571 (53-81)
+   ?\u5C07     ; 5572 (53-82)
+   ?\u5C08     ; 5573 (53-83)
+   ?\u5C0D     ; 5574 (53-84)
+   ?\u5C13     ; 5575 (53-85)
+   ?\u5C20     ; 5576 (53-86)
+   ?\u5C22     ; 5577 (53-87)
+   ?\u5C28     ; 5578 (53-88)
+   ?\u5C38     ; 5579 (53-89)
+   ?\u5C39     ; 557A (53-90)
+   ?\u5C41     ; 557B (53-91)
+   ?\u5C46     ; 557C (53-92)
+   ?\u5C4E     ; 557D (53-93)
+   ?\u5C53     ; 557E (53-94)
+   ]
+  [?\u5C50     ; 5621 (54-01)
+   ?\u5C4F     ; 5622 (54-02)
+   ?\u5B71     ; 5623 (54-03)
+   ?\u5C6C     ; 5624 (54-04)
+   ?\u5C6E     ; 5625 (54-05)
+   ?\u4E62     ; 5626 (54-06)
+   ?\u5C76     ; 5627 (54-07)
+   ?\u5C79     ; 5628 (54-08)
+   ?\u5C8C     ; 5629 (54-09)
+   ?\u5C91     ; 562A (54-10)
+   ?\u5C94     ; 562B (54-11)
+   ?\u599B     ; 562C (54-12)
+   ?\u5CAB     ; 562D (54-13)
+   ?\u5CBB     ; 562E (54-14)
+   ?\u5CB6     ; 562F (54-15)
+   ?\u5CBC     ; 5630 (54-16)
+   ?\u5CB7     ; 5631 (54-17)
+   ?\u5CC5     ; 5632 (54-18)
+   ?\u5CBE     ; 5633 (54-19)
+   ?\u5CC7     ; 5634 (54-20)
+   ?\u5CD9     ; 5635 (54-21)
+   ?\u5CE9     ; 5636 (54-22)
+   ?\u5CFD     ; 5637 (54-23)
+   ?\u5CFA     ; 5638 (54-24)
+   ?\u5CED     ; 5639 (54-25)
+   ?\u5D8C     ; 563A (54-26)
+   ?\u5CEA     ; 563B (54-27)
+   ?\u5D0B     ; 563C (54-28)
+   ?\u5D15     ; 563D (54-29)
+   ?\u5D17     ; 563E (54-30)
+   ?\u5D5C     ; 563F (54-31)
+   ?\u5D1F     ; 5640 (54-32)
+   ?\u5D1B     ; 5641 (54-33)
+   ?\u5D11     ; 5642 (54-34)
+   ?\u5D14     ; 5643 (54-35)
+   ?\u5D22     ; 5644 (54-36)
+   ?\u5D1A     ; 5645 (54-37)
+   ?\u5D19     ; 5646 (54-38)
+   ?\u5D18     ; 5647 (54-39)
+   ?\u5D4C     ; 5648 (54-40)
+   ?\u5D52     ; 5649 (54-41)
+   ?\u5D4E     ; 564A (54-42)
+   ?\u5D4B     ; 564B (54-43)
+   ?\u5D6C     ; 564C (54-44)
+   ?\u5D73     ; 564D (54-45)
+   ?\u5D76     ; 564E (54-46)
+   ?\u5D87     ; 564F (54-47)
+   ?\u5D84     ; 5650 (54-48)
+   ?\u5D82     ; 5651 (54-49)
+   ?\u5DA2     ; 5652 (54-50)
+   ?\u5D9D     ; 5653 (54-51)
+   ?\u5DAC     ; 5654 (54-52)
+   ?\u5DAE     ; 5655 (54-53)
+   ?\u5DBD     ; 5656 (54-54)
+   ?\u5D90     ; 5657 (54-55)
+   ?\u5DB7     ; 5658 (54-56)
+   ?\u5DBC     ; 5659 (54-57)
+   ?\u5DC9     ; 565A (54-58)
+   ?\u5DCD     ; 565B (54-59)
+   ?\u5DD3     ; 565C (54-60)
+   ?\u5DD2     ; 565D (54-61)
+   ?\u5DD6     ; 565E (54-62)
+   ?\u5DDB     ; 565F (54-63)
+   ?\u5DEB     ; 5660 (54-64)
+   ?\u5DF2     ; 5661 (54-65)
+   ?\u5DF5     ; 5662 (54-66)
+   ?\u5E0B     ; 5663 (54-67)
+   ?\u5E1A     ; 5664 (54-68)
+   ?\u5E19     ; 5665 (54-69)
+   ?\u5E11     ; 5666 (54-70)
+   ?\u5E1B     ; 5667 (54-71)
+   ?\u5E36     ; 5668 (54-72)
+   ?\u5E37     ; 5669 (54-73)
+   ?\u5E44     ; 566A (54-74)
+   ?\u5E43     ; 566B (54-75)
+   ?\u5E40     ; 566C (54-76)
+   ?\u5E4E     ; 566D (54-77)
+   ?\u5E57     ; 566E (54-78)
+   ?\u5E54     ; 566F (54-79)
+   ?\u5E5F     ; 5670 (54-80)
+   ?\u5E62     ; 5671 (54-81)
+   ?\u5E64     ; 5672 (54-82)
+   ?\u5E47     ; 5673 (54-83)
+   ?\u5E75     ; 5674 (54-84)
+   ?\u5E76     ; 5675 (54-85)
+   ?\u5E7A     ; 5676 (54-86)
+   ?\u9EBC     ; 5677 (54-87)
+   ?\u5E7F     ; 5678 (54-88)
+   ?\u5EA0     ; 5679 (54-89)
+   ?\u5EC1     ; 567A (54-90)
+   ?\u5EC2     ; 567B (54-91)
+   ?\u5EC8     ; 567C (54-92)
+   ?\u5ED0     ; 567D (54-93)
+   ?\u5ECF     ; 567E (54-94)
+   ]
+  [?\u5ED6     ; 5721 (55-01)
+   ?\u5EE3     ; 5722 (55-02)
+   ?\u5EDD     ; 5723 (55-03)
+   ?\u5EDA     ; 5724 (55-04)
+   ?\u5EDB     ; 5725 (55-05)
+   ?\u5EE2     ; 5726 (55-06)
+   ?\u5EE1     ; 5727 (55-07)
+   ?\u5EE8     ; 5728 (55-08)
+   ?\u5EE9     ; 5729 (55-09)
+   ?\u5EEC     ; 572A (55-10)
+   ?\u5EF1     ; 572B (55-11)
+   ?\u5EF3     ; 572C (55-12)
+   ?\u5EF0     ; 572D (55-13)
+   ?\u5EF4     ; 572E (55-14)
+   ?\u5EF8     ; 572F (55-15)
+   ?\u5EFE     ; 5730 (55-16)
+   ?\u5F03     ; 5731 (55-17)
+   ?\u5F09     ; 5732 (55-18)
+   ?\u5F5D     ; 5733 (55-19)
+   ?\u5F5C     ; 5734 (55-20)
+   ?\u5F0B     ; 5735 (55-21)
+   ?\u5F11     ; 5736 (55-22)
+   ?\u5F16     ; 5737 (55-23)
+   ?\u5F29     ; 5738 (55-24)
+   ?\u5F2D     ; 5739 (55-25)
+   ?\u5F38     ; 573A (55-26)
+   ?\u5F41     ; 573B (55-27)
+   ?\u5F48     ; 573C (55-28)
+   ?\u5F4C     ; 573D (55-29)
+   ?\u5F4E     ; 573E (55-30)
+   ?\u5F2F     ; 573F (55-31)
+   ?\u5F51     ; 5740 (55-32)
+   ?\u5F56     ; 5741 (55-33)
+   ?\u5F57     ; 5742 (55-34)
+   ?\u5F59     ; 5743 (55-35)
+   ?\u5F61     ; 5744 (55-36)
+   ?\u5F6D     ; 5745 (55-37)
+   ?\u5F73     ; 5746 (55-38)
+   ?\u5F77     ; 5747 (55-39)
+   ?\u5F83     ; 5748 (55-40)
+   ?\u5F82     ; 5749 (55-41)
+   ?\u5F7F     ; 574A (55-42)
+   ?\u5F8A     ; 574B (55-43)
+   ?\u5F88     ; 574C (55-44)
+   ?\u5F91     ; 574D (55-45)
+   ?\u5F87     ; 574E (55-46)
+   ?\u5F9E     ; 574F (55-47)
+   ?\u5F99     ; 5750 (55-48)
+   ?\u5F98     ; 5751 (55-49)
+   ?\u5FA0     ; 5752 (55-50)
+   ?\u5FA8     ; 5753 (55-51)
+   ?\u5FAD     ; 5754 (55-52)
+   ?\u5FBC     ; 5755 (55-53)
+   ?\u5FD6     ; 5756 (55-54)
+   ?\u5FFB     ; 5757 (55-55)
+   ?\u5FE4     ; 5758 (55-56)
+   ?\u5FF8     ; 5759 (55-57)
+   ?\u5FF1     ; 575A (55-58)
+   ?\u5FDD     ; 575B (55-59)
+   ?\u60B3     ; 575C (55-60)
+   ?\u5FFF     ; 575D (55-61)
+   ?\u6021     ; 575E (55-62)
+   ?\u6060     ; 575F (55-63)
+   ?\u6019     ; 5760 (55-64)
+   ?\u6010     ; 5761 (55-65)
+   ?\u6029     ; 5762 (55-66)
+   ?\u600E     ; 5763 (55-67)
+   ?\u6031     ; 5764 (55-68)
+   ?\u601B     ; 5765 (55-69)
+   ?\u6015     ; 5766 (55-70)
+   ?\u602B     ; 5767 (55-71)
+   ?\u6026     ; 5768 (55-72)
+   ?\u600F     ; 5769 (55-73)
+   ?\u603A     ; 576A (55-74)
+   ?\u605A     ; 576B (55-75)
+   ?\u6041     ; 576C (55-76)
+   ?\u606A     ; 576D (55-77)
+   ?\u6077     ; 576E (55-78)
+   ?\u605F     ; 576F (55-79)
+   ?\u604A     ; 5770 (55-80)
+   ?\u6046     ; 5771 (55-81)
+   ?\u604D     ; 5772 (55-82)
+   ?\u6063     ; 5773 (55-83)
+   ?\u6043     ; 5774 (55-84)
+   ?\u6064     ; 5775 (55-85)
+   ?\u6042     ; 5776 (55-86)
+   ?\u606C     ; 5777 (55-87)
+   ?\u606B     ; 5778 (55-88)
+   ?\u6059     ; 5779 (55-89)
+   ?\u6081     ; 577A (55-90)
+   ?\u608D     ; 577B (55-91)
+   ?\u60E7     ; 577C (55-92)
+   ?\u6083     ; 577D (55-93)
+   ?\u609A     ; 577E (55-94)
+   ]
+  [?\u6084     ; 5821 (56-01)
+   ?\u609B     ; 5822 (56-02)
+   ?\u6096     ; 5823 (56-03)
+   ?\u6097     ; 5824 (56-04)
+   ?\u6092     ; 5825 (56-05)
+   ?\u60A7     ; 5826 (56-06)
+   ?\u608B     ; 5827 (56-07)
+   ?\u60E1     ; 5828 (56-08)
+   ?\u60B8     ; 5829 (56-09)
+   ?\u60E0     ; 582A (56-10)
+   ?\u60D3     ; 582B (56-11)
+   ?\u60B4     ; 582C (56-12)
+   ?\u5FF0     ; 582D (56-13)
+   ?\u60BD     ; 582E (56-14)
+   ?\u60C6     ; 582F (56-15)
+   ?\u60B5     ; 5830 (56-16)
+   ?\u60D8     ; 5831 (56-17)
+   ?\u614D     ; 5832 (56-18)
+   ?\u6115     ; 5833 (56-19)
+   ?\u6106     ; 5834 (56-20)
+   ?\u60F6     ; 5835 (56-21)
+   ?\u60F7     ; 5836 (56-22)
+   ?\u6100     ; 5837 (56-23)
+   ?\u60F4     ; 5838 (56-24)
+   ?\u60FA     ; 5839 (56-25)
+   ?\u6103     ; 583A (56-26)
+   ?\u6121     ; 583B (56-27)
+   ?\u60FB     ; 583C (56-28)
+   ?\u60F1     ; 583D (56-29)
+   ?\u610D     ; 583E (56-30)
+   ?\u610E     ; 583F (56-31)
+   ?\u6147     ; 5840 (56-32)
+   ?\u613E     ; 5841 (56-33)
+   ?\u6128     ; 5842 (56-34)
+   ?\u6127     ; 5843 (56-35)
+   ?\u614A     ; 5844 (56-36)
+   ?\u613F     ; 5845 (56-37)
+   ?\u613C     ; 5846 (56-38)
+   ?\u612C     ; 5847 (56-39)
+   ?\u6134     ; 5848 (56-40)
+   ?\u613D     ; 5849 (56-41)
+   ?\u6142     ; 584A (56-42)
+   ?\u6144     ; 584B (56-43)
+   ?\u6173     ; 584C (56-44)
+   ?\u6177     ; 584D (56-45)
+   ?\u6158     ; 584E (56-46)
+   ?\u6159     ; 584F (56-47)
+   ?\u615A     ; 5850 (56-48)
+   ?\u616B     ; 5851 (56-49)
+   ?\u6174     ; 5852 (56-50)
+   ?\u616F     ; 5853 (56-51)
+   ?\u6165     ; 5854 (56-52)
+   ?\u6171     ; 5855 (56-53)
+   ?\u615F     ; 5856 (56-54)
+   ?\u615D     ; 5857 (56-55)
+   ?\u6153     ; 5858 (56-56)
+   ?\u6175     ; 5859 (56-57)
+   ?\u6199     ; 585A (56-58)
+   ?\u6196     ; 585B (56-59)
+   ?\u6187     ; 585C (56-60)
+   ?\u61AC     ; 585D (56-61)
+   ?\u6194     ; 585E (56-62)
+   ?\u619A     ; 585F (56-63)
+   ?\u618A     ; 5860 (56-64)
+   ?\u6191     ; 5861 (56-65)
+   ?\u61AB     ; 5862 (56-66)
+   ?\u61AE     ; 5863 (56-67)
+   ?\u61CC     ; 5864 (56-68)
+   ?\u61CA     ; 5865 (56-69)
+   ?\u61C9     ; 5866 (56-70)
+   ?\u61F7     ; 5867 (56-71)
+   ?\u61C8     ; 5868 (56-72)
+   ?\u61C3     ; 5869 (56-73)
+   ?\u61C6     ; 586A (56-74)
+   ?\u61BA     ; 586B (56-75)
+   ?\u61CB     ; 586C (56-76)
+   ?\u7F79     ; 586D (56-77)
+   ?\u61CD     ; 586E (56-78)
+   ?\u61E6     ; 586F (56-79)
+   ?\u61E3     ; 5870 (56-80)
+   ?\u61F6     ; 5871 (56-81)
+   ?\u61FA     ; 5872 (56-82)
+   ?\u61F4     ; 5873 (56-83)
+   ?\u61FF     ; 5874 (56-84)
+   ?\u61FD     ; 5875 (56-85)
+   ?\u61FC     ; 5876 (56-86)
+   ?\u61FE     ; 5877 (56-87)
+   ?\u6200     ; 5878 (56-88)
+   ?\u6208     ; 5879 (56-89)
+   ?\u6209     ; 587A (56-90)
+   ?\u620D     ; 587B (56-91)
+   ?\u620C     ; 587C (56-92)
+   ?\u6214     ; 587D (56-93)
+   ?\u621B     ; 587E (56-94)
+   ]
+  [?\u621E     ; 5921 (57-01)
+   ?\u6221     ; 5922 (57-02)
+   ?\u622A     ; 5923 (57-03)
+   ?\u622E     ; 5924 (57-04)
+   ?\u6230     ; 5925 (57-05)
+   ?\u6232     ; 5926 (57-06)
+   ?\u6233     ; 5927 (57-07)
+   ?\u6241     ; 5928 (57-08)
+   ?\u624E     ; 5929 (57-09)
+   ?\u625E     ; 592A (57-10)
+   ?\u6263     ; 592B (57-11)
+   ?\u625B     ; 592C (57-12)
+   ?\u6260     ; 592D (57-13)
+   ?\u6268     ; 592E (57-14)
+   ?\u627C     ; 592F (57-15)
+   ?\u6282     ; 5930 (57-16)
+   ?\u6289     ; 5931 (57-17)
+   ?\u627E     ; 5932 (57-18)
+   ?\u6292     ; 5933 (57-19)
+   ?\u6293     ; 5934 (57-20)
+   ?\u6296     ; 5935 (57-21)
+   ?\u62D4     ; 5936 (57-22)
+   ?\u6283     ; 5937 (57-23)
+   ?\u6294     ; 5938 (57-24)
+   ?\u62D7     ; 5939 (57-25)
+   ?\u62D1     ; 593A (57-26)
+   ?\u62BB     ; 593B (57-27)
+   ?\u62CF     ; 593C (57-28)
+   ?\u62FF     ; 593D (57-29)
+   ?\u62C6     ; 593E (57-30)
+   ?\u64D4     ; 593F (57-31)
+   ?\u62C8     ; 5940 (57-32)
+   ?\u62DC     ; 5941 (57-33)
+   ?\u62CC     ; 5942 (57-34)
+   ?\u62CA     ; 5943 (57-35)
+   ?\u62C2     ; 5944 (57-36)
+   ?\u62C7     ; 5945 (57-37)
+   ?\u629B     ; 5946 (57-38)
+   ?\u62C9     ; 5947 (57-39)
+   ?\u630C     ; 5948 (57-40)
+   ?\u62EE     ; 5949 (57-41)
+   ?\u62F1     ; 594A (57-42)
+   ?\u6327     ; 594B (57-43)
+   ?\u6302     ; 594C (57-44)
+   ?\u6308     ; 594D (57-45)
+   ?\u62EF     ; 594E (57-46)
+   ?\u62F5     ; 594F (57-47)
+   ?\u6350     ; 5950 (57-48)
+   ?\u633E     ; 5951 (57-49)
+   ?\u634D     ; 5952 (57-50)
+   ?\u641C     ; 5953 (57-51)
+   ?\u634F     ; 5954 (57-52)
+   ?\u6396     ; 5955 (57-53)
+   ?\u638E     ; 5956 (57-54)
+   ?\u6380     ; 5957 (57-55)
+   ?\u63AB     ; 5958 (57-56)
+   ?\u6376     ; 5959 (57-57)
+   ?\u63A3     ; 595A (57-58)
+   ?\u638F     ; 595B (57-59)
+   ?\u6389     ; 595C (57-60)
+   ?\u639F     ; 595D (57-61)
+   ?\u63B5     ; 595E (57-62)
+   ?\u636B     ; 595F (57-63)
+   ?\u6369     ; 5960 (57-64)
+   ?\u63BE     ; 5961 (57-65)
+   ?\u63E9     ; 5962 (57-66)
+   ?\u63C0     ; 5963 (57-67)
+   ?\u63C6     ; 5964 (57-68)
+   ?\u63E3     ; 5965 (57-69)
+   ?\u63C9     ; 5966 (57-70)
+   ?\u63D2     ; 5967 (57-71)
+   ?\u63F6     ; 5968 (57-72)
+   ?\u63C4     ; 5969 (57-73)
+   ?\u6416     ; 596A (57-74)
+   ?\u6434     ; 596B (57-75)
+   ?\u6406     ; 596C (57-76)
+   ?\u6413     ; 596D (57-77)
+   ?\u6426     ; 596E (57-78)
+   ?\u6436     ; 596F (57-79)
+   ?\u651D     ; 5970 (57-80)
+   ?\u6417     ; 5971 (57-81)
+   ?\u6428     ; 5972 (57-82)
+   ?\u640F     ; 5973 (57-83)
+   ?\u6467     ; 5974 (57-84)
+   ?\u646F     ; 5975 (57-85)
+   ?\u6476     ; 5976 (57-86)
+   ?\u644E     ; 5977 (57-87)
+   ?\u652A     ; 5978 (57-88)
+   ?\u6495     ; 5979 (57-89)
+   ?\u6493     ; 597A (57-90)
+   ?\u64A5     ; 597B (57-91)
+   ?\u64A9     ; 597C (57-92)
+   ?\u6488     ; 597D (57-93)
+   ?\u64BC     ; 597E (57-94)
+   ]
+  [?\u64DA     ; 5A21 (58-01)
+   ?\u64D2     ; 5A22 (58-02)
+   ?\u64C5     ; 5A23 (58-03)
+   ?\u64C7     ; 5A24 (58-04)
+   ?\u64BB     ; 5A25 (58-05)
+   ?\u64D8     ; 5A26 (58-06)
+   ?\u64C2     ; 5A27 (58-07)
+   ?\u64F1     ; 5A28 (58-08)
+   ?\u64E7     ; 5A29 (58-09)
+   ?\u8209     ; 5A2A (58-10)
+   ?\u64E0     ; 5A2B (58-11)
+   ?\u64E1     ; 5A2C (58-12)
+   ?\u62AC     ; 5A2D (58-13)
+   ?\u64E3     ; 5A2E (58-14)
+   ?\u64EF     ; 5A2F (58-15)
+   ?\u652C     ; 5A30 (58-16)
+   ?\u64F6     ; 5A31 (58-17)
+   ?\u64F4     ; 5A32 (58-18)
+   ?\u64F2     ; 5A33 (58-19)
+   ?\u64FA     ; 5A34 (58-20)
+   ?\u6500     ; 5A35 (58-21)
+   ?\u64FD     ; 5A36 (58-22)
+   ?\u6518     ; 5A37 (58-23)
+   ?\u651C     ; 5A38 (58-24)
+   ?\u6505     ; 5A39 (58-25)
+   ?\u6524     ; 5A3A (58-26)
+   ?\u6523     ; 5A3B (58-27)
+   ?\u652B     ; 5A3C (58-28)
+   ?\u6534     ; 5A3D (58-29)
+   ?\u6535     ; 5A3E (58-30)
+   ?\u6537     ; 5A3F (58-31)
+   ?\u6536     ; 5A40 (58-32)
+   ?\u6538     ; 5A41 (58-33)
+   ?\u754B     ; 5A42 (58-34)
+   ?\u6548     ; 5A43 (58-35)
+   ?\u6556     ; 5A44 (58-36)
+   ?\u6555     ; 5A45 (58-37)
+   ?\u654D     ; 5A46 (58-38)
+   ?\u6558     ; 5A47 (58-39)
+   ?\u655E     ; 5A48 (58-40)
+   ?\u655D     ; 5A49 (58-41)
+   ?\u6572     ; 5A4A (58-42)
+   ?\u6578     ; 5A4B (58-43)
+   ?\u6582     ; 5A4C (58-44)
+   ?\u6583     ; 5A4D (58-45)
+   ?\u8B8A     ; 5A4E (58-46)
+   ?\u659B     ; 5A4F (58-47)
+   ?\u659F     ; 5A50 (58-48)
+   ?\u65AB     ; 5A51 (58-49)
+   ?\u65B7     ; 5A52 (58-50)
+   ?\u65C3     ; 5A53 (58-51)
+   ?\u65C6     ; 5A54 (58-52)
+   ?\u65C1     ; 5A55 (58-53)
+   ?\u65C4     ; 5A56 (58-54)
+   ?\u65CC     ; 5A57 (58-55)
+   ?\u65D2     ; 5A58 (58-56)
+   ?\u65DB     ; 5A59 (58-57)
+   ?\u65D9     ; 5A5A (58-58)
+   ?\u65E0     ; 5A5B (58-59)
+   ?\u65E1     ; 5A5C (58-60)
+   ?\u65F1     ; 5A5D (58-61)
+   ?\u6772     ; 5A5E (58-62)
+   ?\u660A     ; 5A5F (58-63)
+   ?\u6603     ; 5A60 (58-64)
+   ?\u65FB     ; 5A61 (58-65)
+   ?\u6773     ; 5A62 (58-66)
+   ?\u6635     ; 5A63 (58-67)
+   ?\u6636     ; 5A64 (58-68)
+   ?\u6634     ; 5A65 (58-69)
+   ?\u661C     ; 5A66 (58-70)
+   ?\u664F     ; 5A67 (58-71)
+   ?\u6644     ; 5A68 (58-72)
+   ?\u6649     ; 5A69 (58-73)
+   ?\u6641     ; 5A6A (58-74)
+   ?\u665E     ; 5A6B (58-75)
+   ?\u665D     ; 5A6C (58-76)
+   ?\u6664     ; 5A6D (58-77)
+   ?\u6667     ; 5A6E (58-78)
+   ?\u6668     ; 5A6F (58-79)
+   ?\u665F     ; 5A70 (58-80)
+   ?\u6662     ; 5A71 (58-81)
+   ?\u6670     ; 5A72 (58-82)
+   ?\u6683     ; 5A73 (58-83)
+   ?\u6688     ; 5A74 (58-84)
+   ?\u668E     ; 5A75 (58-85)
+   ?\u6689     ; 5A76 (58-86)
+   ?\u6684     ; 5A77 (58-87)
+   ?\u6698     ; 5A78 (58-88)
+   ?\u669D     ; 5A79 (58-89)
+   ?\u66C1     ; 5A7A (58-90)
+   ?\u66B9     ; 5A7B (58-91)
+   ?\u66C9     ; 5A7C (58-92)
+   ?\u66BE     ; 5A7D (58-93)
+   ?\u66BC     ; 5A7E (58-94)
+   ]
+  [?\u66C4     ; 5B21 (59-01)
+   ?\u66B8     ; 5B22 (59-02)
+   ?\u66D6     ; 5B23 (59-03)
+   ?\u66DA     ; 5B24 (59-04)
+   ?\u66E0     ; 5B25 (59-05)
+   ?\u663F     ; 5B26 (59-06)
+   ?\u66E6     ; 5B27 (59-07)
+   ?\u66E9     ; 5B28 (59-08)
+   ?\u66F0     ; 5B29 (59-09)
+   ?\u66F5     ; 5B2A (59-10)
+   ?\u66F7     ; 5B2B (59-11)
+   ?\u670F     ; 5B2C (59-12)
+   ?\u6716     ; 5B2D (59-13)
+   ?\u671E     ; 5B2E (59-14)
+   ?\u6726     ; 5B2F (59-15)
+   ?\u6727     ; 5B30 (59-16)
+   ?\u9738     ; 5B31 (59-17)
+   ?\u672E     ; 5B32 (59-18)
+   ?\u673F     ; 5B33 (59-19)
+   ?\u6736     ; 5B34 (59-20)
+   ?\u6741     ; 5B35 (59-21)
+   ?\u6738     ; 5B36 (59-22)
+   ?\u6737     ; 5B37 (59-23)
+   ?\u6746     ; 5B38 (59-24)
+   ?\u675E     ; 5B39 (59-25)
+   ?\u6760     ; 5B3A (59-26)
+   ?\u6759     ; 5B3B (59-27)
+   ?\u6763     ; 5B3C (59-28)
+   ?\u6764     ; 5B3D (59-29)
+   ?\u6789     ; 5B3E (59-30)
+   ?\u6770     ; 5B3F (59-31)
+   ?\u67A9     ; 5B40 (59-32)
+   ?\u677C     ; 5B41 (59-33)
+   ?\u676A     ; 5B42 (59-34)
+   ?\u678C     ; 5B43 (59-35)
+   ?\u678B     ; 5B44 (59-36)
+   ?\u67A6     ; 5B45 (59-37)
+   ?\u67A1     ; 5B46 (59-38)
+   ?\u6785     ; 5B47 (59-39)
+   ?\u67B7     ; 5B48 (59-40)
+   ?\u67EF     ; 5B49 (59-41)
+   ?\u67B4     ; 5B4A (59-42)
+   ?\u67EC     ; 5B4B (59-43)
+   ?\u67B3     ; 5B4C (59-44)
+   ?\u67E9     ; 5B4D (59-45)
+   ?\u67B8     ; 5B4E (59-46)
+   ?\u67E4     ; 5B4F (59-47)
+   ?\u67DE     ; 5B50 (59-48)
+   ?\u67DD     ; 5B51 (59-49)
+   ?\u67E2     ; 5B52 (59-50)
+   ?\u67EE     ; 5B53 (59-51)
+   ?\u67B9     ; 5B54 (59-52)
+   ?\u67CE     ; 5B55 (59-53)
+   ?\u67C6     ; 5B56 (59-54)
+   ?\u67E7     ; 5B57 (59-55)
+   ?\u6A9C     ; 5B58 (59-56)
+   ?\u681E     ; 5B59 (59-57)
+   ?\u6846     ; 5B5A (59-58)
+   ?\u6829     ; 5B5B (59-59)
+   ?\u6840     ; 5B5C (59-60)
+   ?\u684D     ; 5B5D (59-61)
+   ?\u6832     ; 5B5E (59-62)
+   ?\u684E     ; 5B5F (59-63)
+   ?\u68B3     ; 5B60 (59-64)
+   ?\u682B     ; 5B61 (59-65)
+   ?\u6859     ; 5B62 (59-66)
+   ?\u6863     ; 5B63 (59-67)
+   ?\u6877     ; 5B64 (59-68)
+   ?\u687F     ; 5B65 (59-69)
+   ?\u689F     ; 5B66 (59-70)
+   ?\u688F     ; 5B67 (59-71)
+   ?\u68AD     ; 5B68 (59-72)
+   ?\u6894     ; 5B69 (59-73)
+   ?\u689D     ; 5B6A (59-74)
+   ?\u689B     ; 5B6B (59-75)
+   ?\u6883     ; 5B6C (59-76)
+   ?\u6AAE     ; 5B6D (59-77)
+   ?\u68B9     ; 5B6E (59-78)
+   ?\u6874     ; 5B6F (59-79)
+   ?\u68B5     ; 5B70 (59-80)
+   ?\u68A0     ; 5B71 (59-81)
+   ?\u68BA     ; 5B72 (59-82)
+   ?\u690F     ; 5B73 (59-83)
+   ?\u688D     ; 5B74 (59-84)
+   ?\u687E     ; 5B75 (59-85)
+   ?\u6901     ; 5B76 (59-86)
+   ?\u68CA     ; 5B77 (59-87)
+   ?\u6908     ; 5B78 (59-88)
+   ?\u68D8     ; 5B79 (59-89)
+   ?\u6922     ; 5B7A (59-90)
+   ?\u6926     ; 5B7B (59-91)
+   ?\u68E1     ; 5B7C (59-92)
+   ?\u690C     ; 5B7D (59-93)
+   ?\u68CD     ; 5B7E (59-94)
+   ]
+  [?\u68D4     ; 5C21 (60-01)
+   ?\u68E7     ; 5C22 (60-02)
+   ?\u68D5     ; 5C23 (60-03)
+   ?\u6936     ; 5C24 (60-04)
+   ?\u6912     ; 5C25 (60-05)
+   ?\u6904     ; 5C26 (60-06)
+   ?\u68D7     ; 5C27 (60-07)
+   ?\u68E3     ; 5C28 (60-08)
+   ?\u6925     ; 5C29 (60-09)
+   ?\u68F9     ; 5C2A (60-10)
+   ?\u68E0     ; 5C2B (60-11)
+   ?\u68EF     ; 5C2C (60-12)
+   ?\u6928     ; 5C2D (60-13)
+   ?\u692A     ; 5C2E (60-14)
+   ?\u691A     ; 5C2F (60-15)
+   ?\u6923     ; 5C30 (60-16)
+   ?\u6921     ; 5C31 (60-17)
+   ?\u68C6     ; 5C32 (60-18)
+   ?\u6979     ; 5C33 (60-19)
+   ?\u6977     ; 5C34 (60-20)
+   ?\u695C     ; 5C35 (60-21)
+   ?\u6978     ; 5C36 (60-22)
+   ?\u696B     ; 5C37 (60-23)
+   ?\u6954     ; 5C38 (60-24)
+   ?\u697E     ; 5C39 (60-25)
+   ?\u696E     ; 5C3A (60-26)
+   ?\u6939     ; 5C3B (60-27)
+   ?\u6974     ; 5C3C (60-28)
+   ?\u693D     ; 5C3D (60-29)
+   ?\u6959     ; 5C3E (60-30)
+   ?\u6930     ; 5C3F (60-31)
+   ?\u6961     ; 5C40 (60-32)
+   ?\u695E     ; 5C41 (60-33)
+   ?\u695D     ; 5C42 (60-34)
+   ?\u6981     ; 5C43 (60-35)
+   ?\u696A     ; 5C44 (60-36)
+   ?\u69B2     ; 5C45 (60-37)
+   ?\u69AE     ; 5C46 (60-38)
+   ?\u69D0     ; 5C47 (60-39)
+   ?\u69BF     ; 5C48 (60-40)
+   ?\u69C1     ; 5C49 (60-41)
+   ?\u69D3     ; 5C4A (60-42)
+   ?\u69BE     ; 5C4B (60-43)
+   ?\u69CE     ; 5C4C (60-44)
+   ?\u5BE8     ; 5C4D (60-45)
+   ?\u69CA     ; 5C4E (60-46)
+   ?\u69DD     ; 5C4F (60-47)
+   ?\u69BB     ; 5C50 (60-48)
+   ?\u69C3     ; 5C51 (60-49)
+   ?\u69A7     ; 5C52 (60-50)
+   ?\u6A2E     ; 5C53 (60-51)
+   ?\u6991     ; 5C54 (60-52)
+   ?\u69A0     ; 5C55 (60-53)
+   ?\u699C     ; 5C56 (60-54)
+   ?\u6995     ; 5C57 (60-55)
+   ?\u69B4     ; 5C58 (60-56)
+   ?\u69DE     ; 5C59 (60-57)
+   ?\u69E8     ; 5C5A (60-58)
+   ?\u6A02     ; 5C5B (60-59)
+   ?\u6A1B     ; 5C5C (60-60)
+   ?\u69FF     ; 5C5D (60-61)
+   ?\u6B0A     ; 5C5E (60-62)
+   ?\u69F9     ; 5C5F (60-63)
+   ?\u69F2     ; 5C60 (60-64)
+   ?\u69E7     ; 5C61 (60-65)
+   ?\u6A05     ; 5C62 (60-66)
+   ?\u69B1     ; 5C63 (60-67)
+   ?\u6A1E     ; 5C64 (60-68)
+   ?\u69ED     ; 5C65 (60-69)
+   ?\u6A14     ; 5C66 (60-70)
+   ?\u69EB     ; 5C67 (60-71)
+   ?\u6A0A     ; 5C68 (60-72)
+   ?\u6A12     ; 5C69 (60-73)
+   ?\u6AC1     ; 5C6A (60-74)
+   ?\u6A23     ; 5C6B (60-75)
+   ?\u6A13     ; 5C6C (60-76)
+   ?\u6A44     ; 5C6D (60-77)
+   ?\u6A0C     ; 5C6E (60-78)
+   ?\u6A72     ; 5C6F (60-79)
+   ?\u6A36     ; 5C70 (60-80)
+   ?\u6A78     ; 5C71 (60-81)
+   ?\u6A47     ; 5C72 (60-82)
+   ?\u6A62     ; 5C73 (60-83)
+   ?\u6A59     ; 5C74 (60-84)
+   ?\u6A66     ; 5C75 (60-85)
+   ?\u6A48     ; 5C76 (60-86)
+   ?\u6A38     ; 5C77 (60-87)
+   ?\u6A22     ; 5C78 (60-88)
+   ?\u6A90     ; 5C79 (60-89)
+   ?\u6A8D     ; 5C7A (60-90)
+   ?\u6AA0     ; 5C7B (60-91)
+   ?\u6A84     ; 5C7C (60-92)
+   ?\u6AA2     ; 5C7D (60-93)
+   ?\u6AA3     ; 5C7E (60-94)
+   ]
+  [?\u6A97     ; 5D21 (61-01)
+   ?\u8617     ; 5D22 (61-02)
+   ?\u6ABB     ; 5D23 (61-03)
+   ?\u6AC3     ; 5D24 (61-04)
+   ?\u6AC2     ; 5D25 (61-05)
+   ?\u6AB8     ; 5D26 (61-06)
+   ?\u6AB3     ; 5D27 (61-07)
+   ?\u6AAC     ; 5D28 (61-08)
+   ?\u6ADE     ; 5D29 (61-09)
+   ?\u6AD1     ; 5D2A (61-10)
+   ?\u6ADF     ; 5D2B (61-11)
+   ?\u6AAA     ; 5D2C (61-12)
+   ?\u6ADA     ; 5D2D (61-13)
+   ?\u6AEA     ; 5D2E (61-14)
+   ?\u6AFB     ; 5D2F (61-15)
+   ?\u6B05     ; 5D30 (61-16)
+   ?\u8616     ; 5D31 (61-17)
+   ?\u6AFA     ; 5D32 (61-18)
+   ?\u6B12     ; 5D33 (61-19)
+   ?\u6B16     ; 5D34 (61-20)
+   ?\u9B31     ; 5D35 (61-21)
+   ?\u6B1F     ; 5D36 (61-22)
+   ?\u6B38     ; 5D37 (61-23)
+   ?\u6B37     ; 5D38 (61-24)
+   ?\u76DC     ; 5D39 (61-25)
+   ?\u6B39     ; 5D3A (61-26)
+   ?\u98EE     ; 5D3B (61-27)
+   ?\u6B47     ; 5D3C (61-28)
+   ?\u6B43     ; 5D3D (61-29)
+   ?\u6B49     ; 5D3E (61-30)
+   ?\u6B50     ; 5D3F (61-31)
+   ?\u6B59     ; 5D40 (61-32)
+   ?\u6B54     ; 5D41 (61-33)
+   ?\u6B5B     ; 5D42 (61-34)
+   ?\u6B5F     ; 5D43 (61-35)
+   ?\u6B61     ; 5D44 (61-36)
+   ?\u6B78     ; 5D45 (61-37)
+   ?\u6B79     ; 5D46 (61-38)
+   ?\u6B7F     ; 5D47 (61-39)
+   ?\u6B80     ; 5D48 (61-40)
+   ?\u6B84     ; 5D49 (61-41)
+   ?\u6B83     ; 5D4A (61-42)
+   ?\u6B8D     ; 5D4B (61-43)
+   ?\u6B98     ; 5D4C (61-44)
+   ?\u6B95     ; 5D4D (61-45)
+   ?\u6B9E     ; 5D4E (61-46)
+   ?\u6BA4     ; 5D4F (61-47)
+   ?\u6BAA     ; 5D50 (61-48)
+   ?\u6BAB     ; 5D51 (61-49)
+   ?\u6BAF     ; 5D52 (61-50)
+   ?\u6BB2     ; 5D53 (61-51)
+   ?\u6BB1     ; 5D54 (61-52)
+   ?\u6BB3     ; 5D55 (61-53)
+   ?\u6BB7     ; 5D56 (61-54)
+   ?\u6BBC     ; 5D57 (61-55)
+   ?\u6BC6     ; 5D58 (61-56)
+   ?\u6BCB     ; 5D59 (61-57)
+   ?\u6BD3     ; 5D5A (61-58)
+   ?\u6BDF     ; 5D5B (61-59)
+   ?\u6BEC     ; 5D5C (61-60)
+   ?\u6BEB     ; 5D5D (61-61)
+   ?\u6BF3     ; 5D5E (61-62)
+   ?\u6BEF     ; 5D5F (61-63)
+   ?\u9EBE     ; 5D60 (61-64)
+   ?\u6C08     ; 5D61 (61-65)
+   ?\u6C13     ; 5D62 (61-66)
+   ?\u6C14     ; 5D63 (61-67)
+   ?\u6C1B     ; 5D64 (61-68)
+   ?\u6C24     ; 5D65 (61-69)
+   ?\u6C23     ; 5D66 (61-70)
+   ?\u6C5E     ; 5D67 (61-71)
+   ?\u6C55     ; 5D68 (61-72)
+   ?\u6C62     ; 5D69 (61-73)
+   ?\u6C6A     ; 5D6A (61-74)
+   ?\u6C82     ; 5D6B (61-75)
+   ?\u6C8D     ; 5D6C (61-76)
+   ?\u6C9A     ; 5D6D (61-77)
+   ?\u6C81     ; 5D6E (61-78)
+   ?\u6C9B     ; 5D6F (61-79)
+   ?\u6C7E     ; 5D70 (61-80)
+   ?\u6C68     ; 5D71 (61-81)
+   ?\u6C73     ; 5D72 (61-82)
+   ?\u6C92     ; 5D73 (61-83)
+   ?\u6C90     ; 5D74 (61-84)
+   ?\u6CC4     ; 5D75 (61-85)
+   ?\u6CF1     ; 5D76 (61-86)
+   ?\u6CD3     ; 5D77 (61-87)
+   ?\u6CBD     ; 5D78 (61-88)
+   ?\u6CD7     ; 5D79 (61-89)
+   ?\u6CC5     ; 5D7A (61-90)
+   ?\u6CDD     ; 5D7B (61-91)
+   ?\u6CAE     ; 5D7C (61-92)
+   ?\u6CB1     ; 5D7D (61-93)
+   ?\u6CBE     ; 5D7E (61-94)
+   ]
+  [?\u6CBA     ; 5E21 (62-01)
+   ?\u6CDB     ; 5E22 (62-02)
+   ?\u6CEF     ; 5E23 (62-03)
+   ?\u6CD9     ; 5E24 (62-04)
+   ?\u6CEA     ; 5E25 (62-05)
+   ?\u6D1F     ; 5E26 (62-06)
+   ?\u884D     ; 5E27 (62-07)
+   ?\u6D36     ; 5E28 (62-08)
+   ?\u6D2B     ; 5E29 (62-09)
+   ?\u6D3D     ; 5E2A (62-10)
+   ?\u6D38     ; 5E2B (62-11)
+   ?\u6D19     ; 5E2C (62-12)
+   ?\u6D35     ; 5E2D (62-13)
+   ?\u6D33     ; 5E2E (62-14)
+   ?\u6D12     ; 5E2F (62-15)
+   ?\u6D0C     ; 5E30 (62-16)
+   ?\u6D63     ; 5E31 (62-17)
+   ?\u6D93     ; 5E32 (62-18)
+   ?\u6D64     ; 5E33 (62-19)
+   ?\u6D5A     ; 5E34 (62-20)
+   ?\u6D79     ; 5E35 (62-21)
+   ?\u6D59     ; 5E36 (62-22)
+   ?\u6D8E     ; 5E37 (62-23)
+   ?\u6D95     ; 5E38 (62-24)
+   ?\u6FE4     ; 5E39 (62-25)
+   ?\u6D85     ; 5E3A (62-26)
+   ?\u6DF9     ; 5E3B (62-27)
+   ?\u6E15     ; 5E3C (62-28)
+   ?\u6E0A     ; 5E3D (62-29)
+   ?\u6DB5     ; 5E3E (62-30)
+   ?\u6DC7     ; 5E3F (62-31)
+   ?\u6DE6     ; 5E40 (62-32)
+   ?\u6DB8     ; 5E41 (62-33)
+   ?\u6DC6     ; 5E42 (62-34)
+   ?\u6DEC     ; 5E43 (62-35)
+   ?\u6DDE     ; 5E44 (62-36)
+   ?\u6DCC     ; 5E45 (62-37)
+   ?\u6DE8     ; 5E46 (62-38)
+   ?\u6DD2     ; 5E47 (62-39)
+   ?\u6DC5     ; 5E48 (62-40)
+   ?\u6DFA     ; 5E49 (62-41)
+   ?\u6DD9     ; 5E4A (62-42)
+   ?\u6DE4     ; 5E4B (62-43)
+   ?\u6DD5     ; 5E4C (62-44)
+   ?\u6DEA     ; 5E4D (62-45)
+   ?\u6DEE     ; 5E4E (62-46)
+   ?\u6E2D     ; 5E4F (62-47)
+   ?\u6E6E     ; 5E50 (62-48)
+   ?\u6E2E     ; 5E51 (62-49)
+   ?\u6E19     ; 5E52 (62-50)
+   ?\u6E72     ; 5E53 (62-51)
+   ?\u6E5F     ; 5E54 (62-52)
+   ?\u6E3E     ; 5E55 (62-53)
+   ?\u6E23     ; 5E56 (62-54)
+   ?\u6E6B     ; 5E57 (62-55)
+   ?\u6E2B     ; 5E58 (62-56)
+   ?\u6E76     ; 5E59 (62-57)
+   ?\u6E4D     ; 5E5A (62-58)
+   ?\u6E1F     ; 5E5B (62-59)
+   ?\u6E43     ; 5E5C (62-60)
+   ?\u6E3A     ; 5E5D (62-61)
+   ?\u6E4E     ; 5E5E (62-62)
+   ?\u6E24     ; 5E5F (62-63)
+   ?\u6EFF     ; 5E60 (62-64)
+   ?\u6E1D     ; 5E61 (62-65)
+   ?\u6E38     ; 5E62 (62-66)
+   ?\u6E82     ; 5E63 (62-67)
+   ?\u6EAA     ; 5E64 (62-68)
+   ?\u6E98     ; 5E65 (62-69)
+   ?\u6EC9     ; 5E66 (62-70)
+   ?\u6EB7     ; 5E67 (62-71)
+   ?\u6ED3     ; 5E68 (62-72)
+   ?\u6EBD     ; 5E69 (62-73)
+   ?\u6EAF     ; 5E6A (62-74)
+   ?\u6EC4     ; 5E6B (62-75)
+   ?\u6EB2     ; 5E6C (62-76)
+   ?\u6ED4     ; 5E6D (62-77)
+   ?\u6ED5     ; 5E6E (62-78)
+   ?\u6E8F     ; 5E6F (62-79)
+   ?\u6EA5     ; 5E70 (62-80)
+   ?\u6EC2     ; 5E71 (62-81)
+   ?\u6E9F     ; 5E72 (62-82)
+   ?\u6F41     ; 5E73 (62-83)
+   ?\u6F11     ; 5E74 (62-84)
+   ?\u704C     ; 5E75 (62-85)
+   ?\u6EEC     ; 5E76 (62-86)
+   ?\u6EF8     ; 5E77 (62-87)
+   ?\u6EFE     ; 5E78 (62-88)
+   ?\u6F3F     ; 5E79 (62-89)
+   ?\u6EF2     ; 5E7A (62-90)
+   ?\u6F31     ; 5E7B (62-91)
+   ?\u6EEF     ; 5E7C (62-92)
+   ?\u6F32     ; 5E7D (62-93)
+   ?\u6ECC     ; 5E7E (62-94)
+   ]
+  [?\u6F3E     ; 5F21 (63-01)
+   ?\u6F13     ; 5F22 (63-02)
+   ?\u6EF7     ; 5F23 (63-03)
+   ?\u6F86     ; 5F24 (63-04)
+   ?\u6F7A     ; 5F25 (63-05)
+   ?\u6F78     ; 5F26 (63-06)
+   ?\u6F81     ; 5F27 (63-07)
+   ?\u6F80     ; 5F28 (63-08)
+   ?\u6F6F     ; 5F29 (63-09)
+   ?\u6F5B     ; 5F2A (63-10)
+   ?\u6FF3     ; 5F2B (63-11)
+   ?\u6F6D     ; 5F2C (63-12)
+   ?\u6F82     ; 5F2D (63-13)
+   ?\u6F7C     ; 5F2E (63-14)
+   ?\u6F58     ; 5F2F (63-15)
+   ?\u6F8E     ; 5F30 (63-16)
+   ?\u6F91     ; 5F31 (63-17)
+   ?\u6FC2     ; 5F32 (63-18)
+   ?\u6F66     ; 5F33 (63-19)
+   ?\u6FB3     ; 5F34 (63-20)
+   ?\u6FA3     ; 5F35 (63-21)
+   ?\u6FA1     ; 5F36 (63-22)
+   ?\u6FA4     ; 5F37 (63-23)
+   ?\u6FB9     ; 5F38 (63-24)
+   ?\u6FC6     ; 5F39 (63-25)
+   ?\u6FAA     ; 5F3A (63-26)
+   ?\u6FDF     ; 5F3B (63-27)
+   ?\u6FD5     ; 5F3C (63-28)
+   ?\u6FEC     ; 5F3D (63-29)
+   ?\u6FD4     ; 5F3E (63-30)
+   ?\u6FD8     ; 5F3F (63-31)
+   ?\u6FF1     ; 5F40 (63-32)
+   ?\u6FEE     ; 5F41 (63-33)
+   ?\u6FDB     ; 5F42 (63-34)
+   ?\u7009     ; 5F43 (63-35)
+   ?\u700B     ; 5F44 (63-36)
+   ?\u6FFA     ; 5F45 (63-37)
+   ?\u7011     ; 5F46 (63-38)
+   ?\u7001     ; 5F47 (63-39)
+   ?\u700F     ; 5F48 (63-40)
+   ?\u6FFE     ; 5F49 (63-41)
+   ?\u701B     ; 5F4A (63-42)
+   ?\u701A     ; 5F4B (63-43)
+   ?\u6F74     ; 5F4C (63-44)
+   ?\u701D     ; 5F4D (63-45)
+   ?\u7018     ; 5F4E (63-46)
+   ?\u701F     ; 5F4F (63-47)
+   ?\u7030     ; 5F50 (63-48)
+   ?\u703E     ; 5F51 (63-49)
+   ?\u7032     ; 5F52 (63-50)
+   ?\u7051     ; 5F53 (63-51)
+   ?\u7063     ; 5F54 (63-52)
+   ?\u7099     ; 5F55 (63-53)
+   ?\u7092     ; 5F56 (63-54)
+   ?\u70AF     ; 5F57 (63-55)
+   ?\u70F1     ; 5F58 (63-56)
+   ?\u70AC     ; 5F59 (63-57)
+   ?\u70B8     ; 5F5A (63-58)
+   ?\u70B3     ; 5F5B (63-59)
+   ?\u70AE     ; 5F5C (63-60)
+   ?\u70DF     ; 5F5D (63-61)
+   ?\u70CB     ; 5F5E (63-62)
+   ?\u70DD     ; 5F5F (63-63)
+   ?\u70D9     ; 5F60 (63-64)
+   ?\u7109     ; 5F61 (63-65)
+   ?\u70FD     ; 5F62 (63-66)
+   ?\u711C     ; 5F63 (63-67)
+   ?\u7119     ; 5F64 (63-68)
+   ?\u7165     ; 5F65 (63-69)
+   ?\u7155     ; 5F66 (63-70)
+   ?\u7188     ; 5F67 (63-71)
+   ?\u7166     ; 5F68 (63-72)
+   ?\u7162     ; 5F69 (63-73)
+   ?\u714C     ; 5F6A (63-74)
+   ?\u7156     ; 5F6B (63-75)
+   ?\u716C     ; 5F6C (63-76)
+   ?\u718F     ; 5F6D (63-77)
+   ?\u71FB     ; 5F6E (63-78)
+   ?\u7184     ; 5F6F (63-79)
+   ?\u7195     ; 5F70 (63-80)
+   ?\u71A8     ; 5F71 (63-81)
+   ?\u71AC     ; 5F72 (63-82)
+   ?\u71D7     ; 5F73 (63-83)
+   ?\u71B9     ; 5F74 (63-84)
+   ?\u71BE     ; 5F75 (63-85)
+   ?\u71D2     ; 5F76 (63-86)
+   ?\u71C9     ; 5F77 (63-87)
+   ?\u71D4     ; 5F78 (63-88)
+   ?\u71CE     ; 5F79 (63-89)
+   ?\u71E0     ; 5F7A (63-90)
+   ?\u71EC     ; 5F7B (63-91)
+   ?\u71E7     ; 5F7C (63-92)
+   ?\u71F5     ; 5F7D (63-93)
+   ?\u71FC     ; 5F7E (63-94)
+   ]
+  [?\u71F9     ; 6021 (64-01)
+   ?\u71FF     ; 6022 (64-02)
+   ?\u720D     ; 6023 (64-03)
+   ?\u7210     ; 6024 (64-04)
+   ?\u721B     ; 6025 (64-05)
+   ?\u7228     ; 6026 (64-06)
+   ?\u722D     ; 6027 (64-07)
+   ?\u722C     ; 6028 (64-08)
+   ?\u7230     ; 6029 (64-09)
+   ?\u7232     ; 602A (64-10)
+   ?\u723B     ; 602B (64-11)
+   ?\u723C     ; 602C (64-12)
+   ?\u723F     ; 602D (64-13)
+   ?\u7240     ; 602E (64-14)
+   ?\u7246     ; 602F (64-15)
+   ?\u724B     ; 6030 (64-16)
+   ?\u7258     ; 6031 (64-17)
+   ?\u7274     ; 6032 (64-18)
+   ?\u727E     ; 6033 (64-19)
+   ?\u7282     ; 6034 (64-20)
+   ?\u7281     ; 6035 (64-21)
+   ?\u7287     ; 6036 (64-22)
+   ?\u7292     ; 6037 (64-23)
+   ?\u7296     ; 6038 (64-24)
+   ?\u72A2     ; 6039 (64-25)
+   ?\u72A7     ; 603A (64-26)
+   ?\u72B9     ; 603B (64-27)
+   ?\u72B2     ; 603C (64-28)
+   ?\u72C3     ; 603D (64-29)
+   ?\u72C6     ; 603E (64-30)
+   ?\u72C4     ; 603F (64-31)
+   ?\u72CE     ; 6040 (64-32)
+   ?\u72D2     ; 6041 (64-33)
+   ?\u72E2     ; 6042 (64-34)
+   ?\u72E0     ; 6043 (64-35)
+   ?\u72E1     ; 6044 (64-36)
+   ?\u72F9     ; 6045 (64-37)
+   ?\u72F7     ; 6046 (64-38)
+   ?\u500F     ; 6047 (64-39)
+   ?\u7317     ; 6048 (64-40)
+   ?\u730A     ; 6049 (64-41)
+   ?\u731C     ; 604A (64-42)
+   ?\u7316     ; 604B (64-43)
+   ?\u731D     ; 604C (64-44)
+   ?\u7334     ; 604D (64-45)
+   ?\u732F     ; 604E (64-46)
+   ?\u7329     ; 604F (64-47)
+   ?\u7325     ; 6050 (64-48)
+   ?\u733E     ; 6051 (64-49)
+   ?\u734E     ; 6052 (64-50)
+   ?\u734F     ; 6053 (64-51)
+   ?\u9ED8     ; 6054 (64-52)
+   ?\u7357     ; 6055 (64-53)
+   ?\u736A     ; 6056 (64-54)
+   ?\u7368     ; 6057 (64-55)
+   ?\u7370     ; 6058 (64-56)
+   ?\u7378     ; 6059 (64-57)
+   ?\u7375     ; 605A (64-58)
+   ?\u737B     ; 605B (64-59)
+   ?\u737A     ; 605C (64-60)
+   ?\u73C8     ; 605D (64-61)
+   ?\u73B3     ; 605E (64-62)
+   ?\u73CE     ; 605F (64-63)
+   ?\u73BB     ; 6060 (64-64)
+   ?\u73C0     ; 6061 (64-65)
+   ?\u73E5     ; 6062 (64-66)
+   ?\u73EE     ; 6063 (64-67)
+   ?\u73DE     ; 6064 (64-68)
+   ?\u74A2     ; 6065 (64-69)
+   ?\u7405     ; 6066 (64-70)
+   ?\u746F     ; 6067 (64-71)
+   ?\u7425     ; 6068 (64-72)
+   ?\u73F8     ; 6069 (64-73)
+   ?\u7432     ; 606A (64-74)
+   ?\u743A     ; 606B (64-75)
+   ?\u7455     ; 606C (64-76)
+   ?\u743F     ; 606D (64-77)
+   ?\u745F     ; 606E (64-78)
+   ?\u7459     ; 606F (64-79)
+   ?\u7441     ; 6070 (64-80)
+   ?\u745C     ; 6071 (64-81)
+   ?\u7469     ; 6072 (64-82)
+   ?\u7470     ; 6073 (64-83)
+   ?\u7463     ; 6074 (64-84)
+   ?\u746A     ; 6075 (64-85)
+   ?\u7476     ; 6076 (64-86)
+   ?\u747E     ; 6077 (64-87)
+   ?\u748B     ; 6078 (64-88)
+   ?\u749E     ; 6079 (64-89)
+   ?\u74A7     ; 607A (64-90)
+   ?\u74CA     ; 607B (64-91)
+   ?\u74CF     ; 607C (64-92)
+   ?\u74D4     ; 607D (64-93)
+   ?\u73F1     ; 607E (64-94)
+   ]
+  [?\u74E0     ; 6121 (65-01)
+   ?\u74E3     ; 6122 (65-02)
+   ?\u74E7     ; 6123 (65-03)
+   ?\u74E9     ; 6124 (65-04)
+   ?\u74EE     ; 6125 (65-05)
+   ?\u74F2     ; 6126 (65-06)
+   ?\u74F0     ; 6127 (65-07)
+   ?\u74F1     ; 6128 (65-08)
+   ?\u74F8     ; 6129 (65-09)
+   ?\u74F7     ; 612A (65-10)
+   ?\u7504     ; 612B (65-11)
+   ?\u7503     ; 612C (65-12)
+   ?\u7505     ; 612D (65-13)
+   ?\u750C     ; 612E (65-14)
+   ?\u750E     ; 612F (65-15)
+   ?\u750D     ; 6130 (65-16)
+   ?\u7515     ; 6131 (65-17)
+   ?\u7513     ; 6132 (65-18)
+   ?\u751E     ; 6133 (65-19)
+   ?\u7526     ; 6134 (65-20)
+   ?\u752C     ; 6135 (65-21)
+   ?\u753C     ; 6136 (65-22)
+   ?\u7544     ; 6137 (65-23)
+   ?\u754D     ; 6138 (65-24)
+   ?\u754A     ; 6139 (65-25)
+   ?\u7549     ; 613A (65-26)
+   ?\u755B     ; 613B (65-27)
+   ?\u7546     ; 613C (65-28)
+   ?\u755A     ; 613D (65-29)
+   ?\u7569     ; 613E (65-30)
+   ?\u7564     ; 613F (65-31)
+   ?\u7567     ; 6140 (65-32)
+   ?\u756B     ; 6141 (65-33)
+   ?\u756D     ; 6142 (65-34)
+   ?\u7578     ; 6143 (65-35)
+   ?\u7576     ; 6144 (65-36)
+   ?\u7586     ; 6145 (65-37)
+   ?\u7587     ; 6146 (65-38)
+   ?\u7574     ; 6147 (65-39)
+   ?\u758A     ; 6148 (65-40)
+   ?\u7589     ; 6149 (65-41)
+   ?\u7582     ; 614A (65-42)
+   ?\u7594     ; 614B (65-43)
+   ?\u759A     ; 614C (65-44)
+   ?\u759D     ; 614D (65-45)
+   ?\u75A5     ; 614E (65-46)
+   ?\u75A3     ; 614F (65-47)
+   ?\u75C2     ; 6150 (65-48)
+   ?\u75B3     ; 6151 (65-49)
+   ?\u75C3     ; 6152 (65-50)
+   ?\u75B5     ; 6153 (65-51)
+   ?\u75BD     ; 6154 (65-52)
+   ?\u75B8     ; 6155 (65-53)
+   ?\u75BC     ; 6156 (65-54)
+   ?\u75B1     ; 6157 (65-55)
+   ?\u75CD     ; 6158 (65-56)
+   ?\u75CA     ; 6159 (65-57)
+   ?\u75D2     ; 615A (65-58)
+   ?\u75D9     ; 615B (65-59)
+   ?\u75E3     ; 615C (65-60)
+   ?\u75DE     ; 615D (65-61)
+   ?\u75FE     ; 615E (65-62)
+   ?\u75FF     ; 615F (65-63)
+   ?\u75FC     ; 6160 (65-64)
+   ?\u7601     ; 6161 (65-65)
+   ?\u75F0     ; 6162 (65-66)
+   ?\u75FA     ; 6163 (65-67)
+   ?\u75F2     ; 6164 (65-68)
+   ?\u75F3     ; 6165 (65-69)
+   ?\u760B     ; 6166 (65-70)
+   ?\u760D     ; 6167 (65-71)
+   ?\u7609     ; 6168 (65-72)
+   ?\u761F     ; 6169 (65-73)
+   ?\u7627     ; 616A (65-74)
+   ?\u7620     ; 616B (65-75)
+   ?\u7621     ; 616C (65-76)
+   ?\u7622     ; 616D (65-77)
+   ?\u7624     ; 616E (65-78)
+   ?\u7634     ; 616F (65-79)
+   ?\u7630     ; 6170 (65-80)
+   ?\u763B     ; 6171 (65-81)
+   ?\u7647     ; 6172 (65-82)
+   ?\u7648     ; 6173 (65-83)
+   ?\u7646     ; 6174 (65-84)
+   ?\u765C     ; 6175 (65-85)
+   ?\u7658     ; 6176 (65-86)
+   ?\u7661     ; 6177 (65-87)
+   ?\u7662     ; 6178 (65-88)
+   ?\u7668     ; 6179 (65-89)
+   ?\u7669     ; 617A (65-90)
+   ?\u766A     ; 617B (65-91)
+   ?\u7667     ; 617C (65-92)
+   ?\u766C     ; 617D (65-93)
+   ?\u7670     ; 617E (65-94)
+   ]
+  [?\u7672     ; 6221 (66-01)
+   ?\u7676     ; 6222 (66-02)
+   ?\u7678     ; 6223 (66-03)
+   ?\u767C     ; 6224 (66-04)
+   ?\u7680     ; 6225 (66-05)
+   ?\u7683     ; 6226 (66-06)
+   ?\u7688     ; 6227 (66-07)
+   ?\u768B     ; 6228 (66-08)
+   ?\u768E     ; 6229 (66-09)
+   ?\u7696     ; 622A (66-10)
+   ?\u7693     ; 622B (66-11)
+   ?\u7699     ; 622C (66-12)
+   ?\u769A     ; 622D (66-13)
+   ?\u76B0     ; 622E (66-14)
+   ?\u76B4     ; 622F (66-15)
+   ?\u76B8     ; 6230 (66-16)
+   ?\u76B9     ; 6231 (66-17)
+   ?\u76BA     ; 6232 (66-18)
+   ?\u76C2     ; 6233 (66-19)
+   ?\u76CD     ; 6234 (66-20)
+   ?\u76D6     ; 6235 (66-21)
+   ?\u76D2     ; 6236 (66-22)
+   ?\u76DE     ; 6237 (66-23)
+   ?\u76E1     ; 6238 (66-24)
+   ?\u76E5     ; 6239 (66-25)
+   ?\u76E7     ; 623A (66-26)
+   ?\u76EA     ; 623B (66-27)
+   ?\u862F     ; 623C (66-28)
+   ?\u76FB     ; 623D (66-29)
+   ?\u7708     ; 623E (66-30)
+   ?\u7707     ; 623F (66-31)
+   ?\u7704     ; 6240 (66-32)
+   ?\u7729     ; 6241 (66-33)
+   ?\u7724     ; 6242 (66-34)
+   ?\u771E     ; 6243 (66-35)
+   ?\u7725     ; 6244 (66-36)
+   ?\u7726     ; 6245 (66-37)
+   ?\u771B     ; 6246 (66-38)
+   ?\u7737     ; 6247 (66-39)
+   ?\u7738     ; 6248 (66-40)
+   ?\u7747     ; 6249 (66-41)
+   ?\u775A     ; 624A (66-42)
+   ?\u7768     ; 624B (66-43)
+   ?\u776B     ; 624C (66-44)
+   ?\u775B     ; 624D (66-45)
+   ?\u7765     ; 624E (66-46)
+   ?\u777F     ; 624F (66-47)
+   ?\u777E     ; 6250 (66-48)
+   ?\u7779     ; 6251 (66-49)
+   ?\u778E     ; 6252 (66-50)
+   ?\u778B     ; 6253 (66-51)
+   ?\u7791     ; 6254 (66-52)
+   ?\u77A0     ; 6255 (66-53)
+   ?\u779E     ; 6256 (66-54)
+   ?\u77B0     ; 6257 (66-55)
+   ?\u77B6     ; 6258 (66-56)
+   ?\u77B9     ; 6259 (66-57)
+   ?\u77BF     ; 625A (66-58)
+   ?\u77BC     ; 625B (66-59)
+   ?\u77BD     ; 625C (66-60)
+   ?\u77BB     ; 625D (66-61)
+   ?\u77C7     ; 625E (66-62)
+   ?\u77CD     ; 625F (66-63)
+   ?\u77D7     ; 6260 (66-64)
+   ?\u77DA     ; 6261 (66-65)
+   ?\u77DC     ; 6262 (66-66)
+   ?\u77E3     ; 6263 (66-67)
+   ?\u77EE     ; 6264 (66-68)
+   ?\u77FC     ; 6265 (66-69)
+   ?\u780C     ; 6266 (66-70)
+   ?\u7812     ; 6267 (66-71)
+   ?\u7926     ; 6268 (66-72)
+   ?\u7820     ; 6269 (66-73)
+   ?\u792A     ; 626A (66-74)
+   ?\u7845     ; 626B (66-75)
+   ?\u788E     ; 626C (66-76)
+   ?\u7874     ; 626D (66-77)
+   ?\u7886     ; 626E (66-78)
+   ?\u787C     ; 626F (66-79)
+   ?\u789A     ; 6270 (66-80)
+   ?\u788C     ; 6271 (66-81)
+   ?\u78A3     ; 6272 (66-82)
+   ?\u78B5     ; 6273 (66-83)
+   ?\u78AA     ; 6274 (66-84)
+   ?\u78AF     ; 6275 (66-85)
+   ?\u78D1     ; 6276 (66-86)
+   ?\u78C6     ; 6277 (66-87)
+   ?\u78CB     ; 6278 (66-88)
+   ?\u78D4     ; 6279 (66-89)
+   ?\u78BE     ; 627A (66-90)
+   ?\u78BC     ; 627B (66-91)
+   ?\u78C5     ; 627C (66-92)
+   ?\u78CA     ; 627D (66-93)
+   ?\u78EC     ; 627E (66-94)
+   ]
+  [?\u78E7     ; 6321 (67-01)
+   ?\u78DA     ; 6322 (67-02)
+   ?\u78FD     ; 6323 (67-03)
+   ?\u78F4     ; 6324 (67-04)
+   ?\u7907     ; 6325 (67-05)
+   ?\u7912     ; 6326 (67-06)
+   ?\u7911     ; 6327 (67-07)
+   ?\u7919     ; 6328 (67-08)
+   ?\u792C     ; 6329 (67-09)
+   ?\u792B     ; 632A (67-10)
+   ?\u7940     ; 632B (67-11)
+   ?\u7960     ; 632C (67-12)
+   ?\u7957     ; 632D (67-13)
+   ?\u795F     ; 632E (67-14)
+   ?\u795A     ; 632F (67-15)
+   ?\u7955     ; 6330 (67-16)
+   ?\u7953     ; 6331 (67-17)
+   ?\u797A     ; 6332 (67-18)
+   ?\u797F     ; 6333 (67-19)
+   ?\u798A     ; 6334 (67-20)
+   ?\u799D     ; 6335 (67-21)
+   ?\u79A7     ; 6336 (67-22)
+   ?\u9F4B     ; 6337 (67-23)
+   ?\u79AA     ; 6338 (67-24)
+   ?\u79AE     ; 6339 (67-25)
+   ?\u79B3     ; 633A (67-26)
+   ?\u79B9     ; 633B (67-27)
+   ?\u79BA     ; 633C (67-28)
+   ?\u79C9     ; 633D (67-29)
+   ?\u79D5     ; 633E (67-30)
+   ?\u79E7     ; 633F (67-31)
+   ?\u79EC     ; 6340 (67-32)
+   ?\u79E1     ; 6341 (67-33)
+   ?\u79E3     ; 6342 (67-34)
+   ?\u7A08     ; 6343 (67-35)
+   ?\u7A0D     ; 6344 (67-36)
+   ?\u7A18     ; 6345 (67-37)
+   ?\u7A19     ; 6346 (67-38)
+   ?\u7A20     ; 6347 (67-39)
+   ?\u7A1F     ; 6348 (67-40)
+   ?\u7980     ; 6349 (67-41)
+   ?\u7A31     ; 634A (67-42)
+   ?\u7A3B     ; 634B (67-43)
+   ?\u7A3E     ; 634C (67-44)
+   ?\u7A37     ; 634D (67-45)
+   ?\u7A43     ; 634E (67-46)
+   ?\u7A57     ; 634F (67-47)
+   ?\u7A49     ; 6350 (67-48)
+   ?\u7A61     ; 6351 (67-49)
+   ?\u7A62     ; 6352 (67-50)
+   ?\u7A69     ; 6353 (67-51)
+   ?\u9F9D     ; 6354 (67-52)
+   ?\u7A70     ; 6355 (67-53)
+   ?\u7A79     ; 6356 (67-54)
+   ?\u7A7D     ; 6357 (67-55)
+   ?\u7A88     ; 6358 (67-56)
+   ?\u7A97     ; 6359 (67-57)
+   ?\u7A95     ; 635A (67-58)
+   ?\u7A98     ; 635B (67-59)
+   ?\u7A96     ; 635C (67-60)
+   ?\u7AA9     ; 635D (67-61)
+   ?\u7AC8     ; 635E (67-62)
+   ?\u7AB0     ; 635F (67-63)
+   ?\u7AB6     ; 6360 (67-64)
+   ?\u7AC5     ; 6361 (67-65)
+   ?\u7AC4     ; 6362 (67-66)
+   ?\u7ABF     ; 6363 (67-67)
+   ?\u9083     ; 6364 (67-68)
+   ?\u7AC7     ; 6365 (67-69)
+   ?\u7ACA     ; 6366 (67-70)
+   ?\u7ACD     ; 6367 (67-71)
+   ?\u7ACF     ; 6368 (67-72)
+   ?\u7AD5     ; 6369 (67-73)
+   ?\u7AD3     ; 636A (67-74)
+   ?\u7AD9     ; 636B (67-75)
+   ?\u7ADA     ; 636C (67-76)
+   ?\u7ADD     ; 636D (67-77)
+   ?\u7AE1     ; 636E (67-78)
+   ?\u7AE2     ; 636F (67-79)
+   ?\u7AE6     ; 6370 (67-80)
+   ?\u7AED     ; 6371 (67-81)
+   ?\u7AF0     ; 6372 (67-82)
+   ?\u7B02     ; 6373 (67-83)
+   ?\u7B0F     ; 6374 (67-84)
+   ?\u7B0A     ; 6375 (67-85)
+   ?\u7B06     ; 6376 (67-86)
+   ?\u7B33     ; 6377 (67-87)
+   ?\u7B18     ; 6378 (67-88)
+   ?\u7B19     ; 6379 (67-89)
+   ?\u7B1E     ; 637A (67-90)
+   ?\u7B35     ; 637B (67-91)
+   ?\u7B28     ; 637C (67-92)
+   ?\u7B36     ; 637D (67-93)
+   ?\u7B50     ; 637E (67-94)
+   ]
+  [?\u7B7A     ; 6421 (68-01)
+   ?\u7B04     ; 6422 (68-02)
+   ?\u7B4D     ; 6423 (68-03)
+   ?\u7B0B     ; 6424 (68-04)
+   ?\u7B4C     ; 6425 (68-05)
+   ?\u7B45     ; 6426 (68-06)
+   ?\u7B75     ; 6427 (68-07)
+   ?\u7B65     ; 6428 (68-08)
+   ?\u7B74     ; 6429 (68-09)
+   ?\u7B67     ; 642A (68-10)
+   ?\u7B70     ; 642B (68-11)
+   ?\u7B71     ; 642C (68-12)
+   ?\u7B6C     ; 642D (68-13)
+   ?\u7B6E     ; 642E (68-14)
+   ?\u7B9D     ; 642F (68-15)
+   ?\u7B98     ; 6430 (68-16)
+   ?\u7B9F     ; 6431 (68-17)
+   ?\u7B8D     ; 6432 (68-18)
+   ?\u7B9C     ; 6433 (68-19)
+   ?\u7B9A     ; 6434 (68-20)
+   ?\u7B8B     ; 6435 (68-21)
+   ?\u7B92     ; 6436 (68-22)
+   ?\u7B8F     ; 6437 (68-23)
+   ?\u7B5D     ; 6438 (68-24)
+   ?\u7B99     ; 6439 (68-25)
+   ?\u7BCB     ; 643A (68-26)
+   ?\u7BC1     ; 643B (68-27)
+   ?\u7BCC     ; 643C (68-28)
+   ?\u7BCF     ; 643D (68-29)
+   ?\u7BB4     ; 643E (68-30)
+   ?\u7BC6     ; 643F (68-31)
+   ?\u7BDD     ; 6440 (68-32)
+   ?\u7BE9     ; 6441 (68-33)
+   ?\u7C11     ; 6442 (68-34)
+   ?\u7C14     ; 6443 (68-35)
+   ?\u7BE6     ; 6444 (68-36)
+   ?\u7BE5     ; 6445 (68-37)
+   ?\u7C60     ; 6446 (68-38)
+   ?\u7C00     ; 6447 (68-39)
+   ?\u7C07     ; 6448 (68-40)
+   ?\u7C13     ; 6449 (68-41)
+   ?\u7BF3     ; 644A (68-42)
+   ?\u7BF7     ; 644B (68-43)
+   ?\u7C17     ; 644C (68-44)
+   ?\u7C0D     ; 644D (68-45)
+   ?\u7BF6     ; 644E (68-46)
+   ?\u7C23     ; 644F (68-47)
+   ?\u7C27     ; 6450 (68-48)
+   ?\u7C2A     ; 6451 (68-49)
+   ?\u7C1F     ; 6452 (68-50)
+   ?\u7C37     ; 6453 (68-51)
+   ?\u7C2B     ; 6454 (68-52)
+   ?\u7C3D     ; 6455 (68-53)
+   ?\u7C4C     ; 6456 (68-54)
+   ?\u7C43     ; 6457 (68-55)
+   ?\u7C54     ; 6458 (68-56)
+   ?\u7C4F     ; 6459 (68-57)
+   ?\u7C40     ; 645A (68-58)
+   ?\u7C50     ; 645B (68-59)
+   ?\u7C58     ; 645C (68-60)
+   ?\u7C5F     ; 645D (68-61)
+   ?\u7C64     ; 645E (68-62)
+   ?\u7C56     ; 645F (68-63)
+   ?\u7C65     ; 6460 (68-64)
+   ?\u7C6C     ; 6461 (68-65)
+   ?\u7C75     ; 6462 (68-66)
+   ?\u7C83     ; 6463 (68-67)
+   ?\u7C90     ; 6464 (68-68)
+   ?\u7CA4     ; 6465 (68-69)
+   ?\u7CAD     ; 6466 (68-70)
+   ?\u7CA2     ; 6467 (68-71)
+   ?\u7CAB     ; 6468 (68-72)
+   ?\u7CA1     ; 6469 (68-73)
+   ?\u7CA8     ; 646A (68-74)
+   ?\u7CB3     ; 646B (68-75)
+   ?\u7CB2     ; 646C (68-76)
+   ?\u7CB1     ; 646D (68-77)
+   ?\u7CAE     ; 646E (68-78)
+   ?\u7CB9     ; 646F (68-79)
+   ?\u7CBD     ; 6470 (68-80)
+   ?\u7CC0     ; 6471 (68-81)
+   ?\u7CC5     ; 6472 (68-82)
+   ?\u7CC2     ; 6473 (68-83)
+   ?\u7CD8     ; 6474 (68-84)
+   ?\u7CD2     ; 6475 (68-85)
+   ?\u7CDC     ; 6476 (68-86)
+   ?\u7CE2     ; 6477 (68-87)
+   ?\u9B3B     ; 6478 (68-88)
+   ?\u7CEF     ; 6479 (68-89)
+   ?\u7CF2     ; 647A (68-90)
+   ?\u7CF4     ; 647B (68-91)
+   ?\u7CF6     ; 647C (68-92)
+   ?\u7CFA     ; 647D (68-93)
+   ?\u7D06     ; 647E (68-94)
+   ]
+  [?\u7D02     ; 6521 (69-01)
+   ?\u7D1C     ; 6522 (69-02)
+   ?\u7D15     ; 6523 (69-03)
+   ?\u7D0A     ; 6524 (69-04)
+   ?\u7D45     ; 6525 (69-05)
+   ?\u7D4B     ; 6526 (69-06)
+   ?\u7D2E     ; 6527 (69-07)
+   ?\u7D32     ; 6528 (69-08)
+   ?\u7D3F     ; 6529 (69-09)
+   ?\u7D35     ; 652A (69-10)
+   ?\u7D46     ; 652B (69-11)
+   ?\u7D73     ; 652C (69-12)
+   ?\u7D56     ; 652D (69-13)
+   ?\u7D4E     ; 652E (69-14)
+   ?\u7D72     ; 652F (69-15)
+   ?\u7D68     ; 6530 (69-16)
+   ?\u7D6E     ; 6531 (69-17)
+   ?\u7D4F     ; 6532 (69-18)
+   ?\u7D63     ; 6533 (69-19)
+   ?\u7D93     ; 6534 (69-20)
+   ?\u7D89     ; 6535 (69-21)
+   ?\u7D5B     ; 6536 (69-22)
+   ?\u7D8F     ; 6537 (69-23)
+   ?\u7D7D     ; 6538 (69-24)
+   ?\u7D9B     ; 6539 (69-25)
+   ?\u7DBA     ; 653A (69-26)
+   ?\u7DAE     ; 653B (69-27)
+   ?\u7DA3     ; 653C (69-28)
+   ?\u7DB5     ; 653D (69-29)
+   ?\u7DC7     ; 653E (69-30)
+   ?\u7DBD     ; 653F (69-31)
+   ?\u7DAB     ; 6540 (69-32)
+   ?\u7E3D     ; 6541 (69-33)
+   ?\u7DA2     ; 6542 (69-34)
+   ?\u7DAF     ; 6543 (69-35)
+   ?\u7DDC     ; 6544 (69-36)
+   ?\u7DB8     ; 6545 (69-37)
+   ?\u7D9F     ; 6546 (69-38)
+   ?\u7DB0     ; 6547 (69-39)
+   ?\u7DD8     ; 6548 (69-40)
+   ?\u7DDD     ; 6549 (69-41)
+   ?\u7DE4     ; 654A (69-42)
+   ?\u7DDE     ; 654B (69-43)
+   ?\u7DFB     ; 654C (69-44)
+   ?\u7DF2     ; 654D (69-45)
+   ?\u7DE1     ; 654E (69-46)
+   ?\u7E05     ; 654F (69-47)
+   ?\u7E0A     ; 6550 (69-48)
+   ?\u7E23     ; 6551 (69-49)
+   ?\u7E21     ; 6552 (69-50)
+   ?\u7E12     ; 6553 (69-51)
+   ?\u7E31     ; 6554 (69-52)
+   ?\u7E1F     ; 6555 (69-53)
+   ?\u7E09     ; 6556 (69-54)
+   ?\u7E0B     ; 6557 (69-55)
+   ?\u7E22     ; 6558 (69-56)
+   ?\u7E46     ; 6559 (69-57)
+   ?\u7E66     ; 655A (69-58)
+   ?\u7E3B     ; 655B (69-59)
+   ?\u7E35     ; 655C (69-60)
+   ?\u7E39     ; 655D (69-61)
+   ?\u7E43     ; 655E (69-62)
+   ?\u7E37     ; 655F (69-63)
+   ?\u7E32     ; 6560 (69-64)
+   ?\u7E3A     ; 6561 (69-65)
+   ?\u7E67     ; 6562 (69-66)
+   ?\u7E5D     ; 6563 (69-67)
+   ?\u7E56     ; 6564 (69-68)
+   ?\u7E5E     ; 6565 (69-69)
+   ?\u7E59     ; 6566 (69-70)
+   ?\u7E5A     ; 6567 (69-71)
+   ?\u7E79     ; 6568 (69-72)
+   ?\u7E6A     ; 6569 (69-73)
+   ?\u7E69     ; 656A (69-74)
+   ?\u7E7C     ; 656B (69-75)
+   ?\u7E7B     ; 656C (69-76)
+   ?\u7E83     ; 656D (69-77)
+   ?\u7DD5     ; 656E (69-78)
+   ?\u7E7D     ; 656F (69-79)
+   ?\u8FAE     ; 6570 (69-80)
+   ?\u7E7F     ; 6571 (69-81)
+   ?\u7E88     ; 6572 (69-82)
+   ?\u7E89     ; 6573 (69-83)
+   ?\u7E8C     ; 6574 (69-84)
+   ?\u7E92     ; 6575 (69-85)
+   ?\u7E90     ; 6576 (69-86)
+   ?\u7E93     ; 6577 (69-87)
+   ?\u7E94     ; 6578 (69-88)
+   ?\u7E96     ; 6579 (69-89)
+   ?\u7E8E     ; 657A (69-90)
+   ?\u7E9B     ; 657B (69-91)
+   ?\u7E9C     ; 657C (69-92)
+   ?\u7F38     ; 657D (69-93)
+   ?\u7F3A     ; 657E (69-94)
+   ]
+  [?\u7F45     ; 6621 (70-01)
+   ?\u7F4C     ; 6622 (70-02)
+   ?\u7F4D     ; 6623 (70-03)
+   ?\u7F4E     ; 6624 (70-04)
+   ?\u7F50     ; 6625 (70-05)
+   ?\u7F51     ; 6626 (70-06)
+   ?\u7F55     ; 6627 (70-07)
+   ?\u7F54     ; 6628 (70-08)
+   ?\u7F58     ; 6629 (70-09)
+   ?\u7F5F     ; 662A (70-10)
+   ?\u7F60     ; 662B (70-11)
+   ?\u7F68     ; 662C (70-12)
+   ?\u7F69     ; 662D (70-13)
+   ?\u7F67     ; 662E (70-14)
+   ?\u7F78     ; 662F (70-15)
+   ?\u7F82     ; 6630 (70-16)
+   ?\u7F86     ; 6631 (70-17)
+   ?\u7F83     ; 6632 (70-18)
+   ?\u7F88     ; 6633 (70-19)
+   ?\u7F87     ; 6634 (70-20)
+   ?\u7F8C     ; 6635 (70-21)
+   ?\u7F94     ; 6636 (70-22)
+   ?\u7F9E     ; 6637 (70-23)
+   ?\u7F9D     ; 6638 (70-24)
+   ?\u7F9A     ; 6639 (70-25)
+   ?\u7FA3     ; 663A (70-26)
+   ?\u7FAF     ; 663B (70-27)
+   ?\u7FB2     ; 663C (70-28)
+   ?\u7FB9     ; 663D (70-29)
+   ?\u7FAE     ; 663E (70-30)
+   ?\u7FB6     ; 663F (70-31)
+   ?\u7FB8     ; 6640 (70-32)
+   ?\u8B71     ; 6641 (70-33)
+   ?\u7FC5     ; 6642 (70-34)
+   ?\u7FC6     ; 6643 (70-35)
+   ?\u7FCA     ; 6644 (70-36)
+   ?\u7FD5     ; 6645 (70-37)
+   ?\u7FD4     ; 6646 (70-38)
+   ?\u7FE1     ; 6647 (70-39)
+   ?\u7FE6     ; 6648 (70-40)
+   ?\u7FE9     ; 6649 (70-41)
+   ?\u7FF3     ; 664A (70-42)
+   ?\u7FF9     ; 664B (70-43)
+   ?\u98DC     ; 664C (70-44)
+   ?\u8006     ; 664D (70-45)
+   ?\u8004     ; 664E (70-46)
+   ?\u800B     ; 664F (70-47)
+   ?\u8012     ; 6650 (70-48)
+   ?\u8018     ; 6651 (70-49)
+   ?\u8019     ; 6652 (70-50)
+   ?\u801C     ; 6653 (70-51)
+   ?\u8021     ; 6654 (70-52)
+   ?\u8028     ; 6655 (70-53)
+   ?\u803F     ; 6656 (70-54)
+   ?\u803B     ; 6657 (70-55)
+   ?\u804A     ; 6658 (70-56)
+   ?\u8046     ; 6659 (70-57)
+   ?\u8052     ; 665A (70-58)
+   ?\u8058     ; 665B (70-59)
+   ?\u805A     ; 665C (70-60)
+   ?\u805F     ; 665D (70-61)
+   ?\u8062     ; 665E (70-62)
+   ?\u8068     ; 665F (70-63)
+   ?\u8073     ; 6660 (70-64)
+   ?\u8072     ; 6661 (70-65)
+   ?\u8070     ; 6662 (70-66)
+   ?\u8076     ; 6663 (70-67)
+   ?\u8079     ; 6664 (70-68)
+   ?\u807D     ; 6665 (70-69)
+   ?\u807F     ; 6666 (70-70)
+   ?\u8084     ; 6667 (70-71)
+   ?\u8086     ; 6668 (70-72)
+   ?\u8085     ; 6669 (70-73)
+   ?\u809B     ; 666A (70-74)
+   ?\u8093     ; 666B (70-75)
+   ?\u809A     ; 666C (70-76)
+   ?\u80AD     ; 666D (70-77)
+   ?\u5190     ; 666E (70-78)
+   ?\u80AC     ; 666F (70-79)
+   ?\u80DB     ; 6670 (70-80)
+   ?\u80E5     ; 6671 (70-81)
+   ?\u80D9     ; 6672 (70-82)
+   ?\u80DD     ; 6673 (70-83)
+   ?\u80C4     ; 6674 (70-84)
+   ?\u80DA     ; 6675 (70-85)
+   ?\u80D6     ; 6676 (70-86)
+   ?\u8109     ; 6677 (70-87)
+   ?\u80EF     ; 6678 (70-88)
+   ?\u80F1     ; 6679 (70-89)
+   ?\u811B     ; 667A (70-90)
+   ?\u8129     ; 667B (70-91)
+   ?\u8123     ; 667C (70-92)
+   ?\u812F     ; 667D (70-93)
+   ?\u814B     ; 667E (70-94)
+   ]
+  [?\u968B     ; 6721 (71-01)
+   ?\u8146     ; 6722 (71-02)
+   ?\u813E     ; 6723 (71-03)
+   ?\u8153     ; 6724 (71-04)
+   ?\u8151     ; 6725 (71-05)
+   ?\u80FC     ; 6726 (71-06)
+   ?\u8171     ; 6727 (71-07)
+   ?\u816E     ; 6728 (71-08)
+   ?\u8165     ; 6729 (71-09)
+   ?\u8166     ; 672A (71-10)
+   ?\u8174     ; 672B (71-11)
+   ?\u8183     ; 672C (71-12)
+   ?\u8188     ; 672D (71-13)
+   ?\u818A     ; 672E (71-14)
+   ?\u8180     ; 672F (71-15)
+   ?\u8182     ; 6730 (71-16)
+   ?\u81A0     ; 6731 (71-17)
+   ?\u8195     ; 6732 (71-18)
+   ?\u81A4     ; 6733 (71-19)
+   ?\u81A3     ; 6734 (71-20)
+   ?\u815F     ; 6735 (71-21)
+   ?\u8193     ; 6736 (71-22)
+   ?\u81A9     ; 6737 (71-23)
+   ?\u81B0     ; 6738 (71-24)
+   ?\u81B5     ; 6739 (71-25)
+   ?\u81BE     ; 673A (71-26)
+   ?\u81B8     ; 673B (71-27)
+   ?\u81BD     ; 673C (71-28)
+   ?\u81C0     ; 673D (71-29)
+   ?\u81C2     ; 673E (71-30)
+   ?\u81BA     ; 673F (71-31)
+   ?\u81C9     ; 6740 (71-32)
+   ?\u81CD     ; 6741 (71-33)
+   ?\u81D1     ; 6742 (71-34)
+   ?\u81D9     ; 6743 (71-35)
+   ?\u81D8     ; 6744 (71-36)
+   ?\u81C8     ; 6745 (71-37)
+   ?\u81DA     ; 6746 (71-38)
+   ?\u81DF     ; 6747 (71-39)
+   ?\u81E0     ; 6748 (71-40)
+   ?\u81E7     ; 6749 (71-41)
+   ?\u81FA     ; 674A (71-42)
+   ?\u81FB     ; 674B (71-43)
+   ?\u81FE     ; 674C (71-44)
+   ?\u8201     ; 674D (71-45)
+   ?\u8202     ; 674E (71-46)
+   ?\u8205     ; 674F (71-47)
+   ?\u8207     ; 6750 (71-48)
+   ?\u820A     ; 6751 (71-49)
+   ?\u820D     ; 6752 (71-50)
+   ?\u8210     ; 6753 (71-51)
+   ?\u8216     ; 6754 (71-52)
+   ?\u8229     ; 6755 (71-53)
+   ?\u822B     ; 6756 (71-54)
+   ?\u8238     ; 6757 (71-55)
+   ?\u8233     ; 6758 (71-56)
+   ?\u8240     ; 6759 (71-57)
+   ?\u8259     ; 675A (71-58)
+   ?\u8258     ; 675B (71-59)
+   ?\u825D     ; 675C (71-60)
+   ?\u825A     ; 675D (71-61)
+   ?\u825F     ; 675E (71-62)
+   ?\u8264     ; 675F (71-63)
+   ?\u8262     ; 6760 (71-64)
+   ?\u8268     ; 6761 (71-65)
+   ?\u826A     ; 6762 (71-66)
+   ?\u826B     ; 6763 (71-67)
+   ?\u822E     ; 6764 (71-68)
+   ?\u8271     ; 6765 (71-69)
+   ?\u8277     ; 6766 (71-70)
+   ?\u8278     ; 6767 (71-71)
+   ?\u827E     ; 6768 (71-72)
+   ?\u828D     ; 6769 (71-73)
+   ?\u8292     ; 676A (71-74)
+   ?\u82AB     ; 676B (71-75)
+   ?\u829F     ; 676C (71-76)
+   ?\u82BB     ; 676D (71-77)
+   ?\u82AC     ; 676E (71-78)
+   ?\u82E1     ; 676F (71-79)
+   ?\u82E3     ; 6770 (71-80)
+   ?\u82DF     ; 6771 (71-81)
+   ?\u82D2     ; 6772 (71-82)
+   ?\u82F4     ; 6773 (71-83)
+   ?\u82F3     ; 6774 (71-84)
+   ?\u82FA     ; 6775 (71-85)
+   ?\u8393     ; 6776 (71-86)
+   ?\u8303     ; 6777 (71-87)
+   ?\u82FB     ; 6778 (71-88)
+   ?\u82F9     ; 6779 (71-89)
+   ?\u82DE     ; 677A (71-90)
+   ?\u8306     ; 677B (71-91)
+   ?\u82DC     ; 677C (71-92)
+   ?\u8309     ; 677D (71-93)
+   ?\u82D9     ; 677E (71-94)
+   ]
+  [?\u8335     ; 6821 (72-01)
+   ?\u8334     ; 6822 (72-02)
+   ?\u8316     ; 6823 (72-03)
+   ?\u8332     ; 6824 (72-04)
+   ?\u8331     ; 6825 (72-05)
+   ?\u8340     ; 6826 (72-06)
+   ?\u8339     ; 6827 (72-07)
+   ?\u8350     ; 6828 (72-08)
+   ?\u8345     ; 6829 (72-09)
+   ?\u832F     ; 682A (72-10)
+   ?\u832B     ; 682B (72-11)
+   ?\u8317     ; 682C (72-12)
+   ?\u8318     ; 682D (72-13)
+   ?\u8385     ; 682E (72-14)
+   ?\u839A     ; 682F (72-15)
+   ?\u83AA     ; 6830 (72-16)
+   ?\u839F     ; 6831 (72-17)
+   ?\u83A2     ; 6832 (72-18)
+   ?\u8396     ; 6833 (72-19)
+   ?\u8323     ; 6834 (72-20)
+   ?\u838E     ; 6835 (72-21)
+   ?\u8387     ; 6836 (72-22)
+   ?\u838A     ; 6837 (72-23)
+   ?\u837C     ; 6838 (72-24)
+   ?\u83B5     ; 6839 (72-25)
+   ?\u8373     ; 683A (72-26)
+   ?\u8375     ; 683B (72-27)
+   ?\u83A0     ; 683C (72-28)
+   ?\u8389     ; 683D (72-29)
+   ?\u83A8     ; 683E (72-30)
+   ?\u83F4     ; 683F (72-31)
+   ?\u8413     ; 6840 (72-32)
+   ?\u83EB     ; 6841 (72-33)
+   ?\u83CE     ; 6842 (72-34)
+   ?\u83FD     ; 6843 (72-35)
+   ?\u8403     ; 6844 (72-36)
+   ?\u83D8     ; 6845 (72-37)
+   ?\u840B     ; 6846 (72-38)
+   ?\u83C1     ; 6847 (72-39)
+   ?\u83F7     ; 6848 (72-40)
+   ?\u8407     ; 6849 (72-41)
+   ?\u83E0     ; 684A (72-42)
+   ?\u83F2     ; 684B (72-43)
+   ?\u840D     ; 684C (72-44)
+   ?\u8422     ; 684D (72-45)
+   ?\u8420     ; 684E (72-46)
+   ?\u83BD     ; 684F (72-47)
+   ?\u8438     ; 6850 (72-48)
+   ?\u8506     ; 6851 (72-49)
+   ?\u83FB     ; 6852 (72-50)
+   ?\u846D     ; 6853 (72-51)
+   ?\u842A     ; 6854 (72-52)
+   ?\u843C     ; 6855 (72-53)
+   ?\u855A     ; 6856 (72-54)
+   ?\u8484     ; 6857 (72-55)
+   ?\u8477     ; 6858 (72-56)
+   ?\u846B     ; 6859 (72-57)
+   ?\u84AD     ; 685A (72-58)
+   ?\u846E     ; 685B (72-59)
+   ?\u8482     ; 685C (72-60)
+   ?\u8469     ; 685D (72-61)
+   ?\u8446     ; 685E (72-62)
+   ?\u842C     ; 685F (72-63)
+   ?\u846F     ; 6860 (72-64)
+   ?\u8479     ; 6861 (72-65)
+   ?\u8435     ; 6862 (72-66)
+   ?\u84CA     ; 6863 (72-67)
+   ?\u8462     ; 6864 (72-68)
+   ?\u84B9     ; 6865 (72-69)
+   ?\u84BF     ; 6866 (72-70)
+   ?\u849F     ; 6867 (72-71)
+   ?\u84D9     ; 6868 (72-72)
+   ?\u84CD     ; 6869 (72-73)
+   ?\u84BB     ; 686A (72-74)
+   ?\u84DA     ; 686B (72-75)
+   ?\u84D0     ; 686C (72-76)
+   ?\u84C1     ; 686D (72-77)
+   ?\u84C6     ; 686E (72-78)
+   ?\u84D6     ; 686F (72-79)
+   ?\u84A1     ; 6870 (72-80)
+   ?\u8521     ; 6871 (72-81)
+   ?\u84FF     ; 6872 (72-82)
+   ?\u84F4     ; 6873 (72-83)
+   ?\u8517     ; 6874 (72-84)
+   ?\u8518     ; 6875 (72-85)
+   ?\u852C     ; 6876 (72-86)
+   ?\u851F     ; 6877 (72-87)
+   ?\u8515     ; 6878 (72-88)
+   ?\u8514     ; 6879 (72-89)
+   ?\u84FC     ; 687A (72-90)
+   ?\u8540     ; 687B (72-91)
+   ?\u8563     ; 687C (72-92)
+   ?\u8558     ; 687D (72-93)
+   ?\u8548     ; 687E (72-94)
+   ]
+  [?\u8541     ; 6921 (73-01)
+   ?\u8602     ; 6922 (73-02)
+   ?\u854B     ; 6923 (73-03)
+   ?\u8555     ; 6924 (73-04)
+   ?\u8580     ; 6925 (73-05)
+   ?\u85A4     ; 6926 (73-06)
+   ?\u8588     ; 6927 (73-07)
+   ?\u8591     ; 6928 (73-08)
+   ?\u858A     ; 6929 (73-09)
+   ?\u85A8     ; 692A (73-10)
+   ?\u856D     ; 692B (73-11)
+   ?\u8594     ; 692C (73-12)
+   ?\u859B     ; 692D (73-13)
+   ?\u85EA     ; 692E (73-14)
+   ?\u8587     ; 692F (73-15)
+   ?\u859C     ; 6930 (73-16)
+   ?\u8577     ; 6931 (73-17)
+   ?\u857E     ; 6932 (73-18)
+   ?\u8590     ; 6933 (73-19)
+   ?\u85C9     ; 6934 (73-20)
+   ?\u85BA     ; 6935 (73-21)
+   ?\u85CF     ; 6936 (73-22)
+   ?\u85B9     ; 6937 (73-23)
+   ?\u85D0     ; 6938 (73-24)
+   ?\u85D5     ; 6939 (73-25)
+   ?\u85DD     ; 693A (73-26)
+   ?\u85E5     ; 693B (73-27)
+   ?\u85DC     ; 693C (73-28)
+   ?\u85F9     ; 693D (73-29)
+   ?\u860A     ; 693E (73-30)
+   ?\u8613     ; 693F (73-31)
+   ?\u860B     ; 6940 (73-32)
+   ?\u85FE     ; 6941 (73-33)
+   ?\u85FA     ; 6942 (73-34)
+   ?\u8606     ; 6943 (73-35)
+   ?\u8622     ; 6944 (73-36)
+   ?\u861A     ; 6945 (73-37)
+   ?\u8630     ; 6946 (73-38)
+   ?\u863F     ; 6947 (73-39)
+   ?\u864D     ; 6948 (73-40)
+   ?\u4E55     ; 6949 (73-41)
+   ?\u8654     ; 694A (73-42)
+   ?\u865F     ; 694B (73-43)
+   ?\u8667     ; 694C (73-44)
+   ?\u8671     ; 694D (73-45)
+   ?\u8693     ; 694E (73-46)
+   ?\u86A3     ; 694F (73-47)
+   ?\u86A9     ; 6950 (73-48)
+   ?\u86AA     ; 6951 (73-49)
+   ?\u868B     ; 6952 (73-50)
+   ?\u868C     ; 6953 (73-51)
+   ?\u86B6     ; 6954 (73-52)
+   ?\u86AF     ; 6955 (73-53)
+   ?\u86C4     ; 6956 (73-54)
+   ?\u86C6     ; 6957 (73-55)
+   ?\u86B0     ; 6958 (73-56)
+   ?\u86C9     ; 6959 (73-57)
+   ?\u8823     ; 695A (73-58)
+   ?\u86AB     ; 695B (73-59)
+   ?\u86D4     ; 695C (73-60)
+   ?\u86DE     ; 695D (73-61)
+   ?\u86E9     ; 695E (73-62)
+   ?\u86EC     ; 695F (73-63)
+   ?\u86DF     ; 6960 (73-64)
+   ?\u86DB     ; 6961 (73-65)
+   ?\u86EF     ; 6962 (73-66)
+   ?\u8712     ; 6963 (73-67)
+   ?\u8706     ; 6964 (73-68)
+   ?\u8708     ; 6965 (73-69)
+   ?\u8700     ; 6966 (73-70)
+   ?\u8703     ; 6967 (73-71)
+   ?\u86FB     ; 6968 (73-72)
+   ?\u8711     ; 6969 (73-73)
+   ?\u8709     ; 696A (73-74)
+   ?\u870D     ; 696B (73-75)
+   ?\u86F9     ; 696C (73-76)
+   ?\u870A     ; 696D (73-77)
+   ?\u8734     ; 696E (73-78)
+   ?\u873F     ; 696F (73-79)
+   ?\u8737     ; 6970 (73-80)
+   ?\u873B     ; 6971 (73-81)
+   ?\u8725     ; 6972 (73-82)
+   ?\u8729     ; 6973 (73-83)
+   ?\u871A     ; 6974 (73-84)
+   ?\u8760     ; 6975 (73-85)
+   ?\u875F     ; 6976 (73-86)
+   ?\u8778     ; 6977 (73-87)
+   ?\u874C     ; 6978 (73-88)
+   ?\u874E     ; 6979 (73-89)
+   ?\u8774     ; 697A (73-90)
+   ?\u8757     ; 697B (73-91)
+   ?\u8768     ; 697C (73-92)
+   ?\u876E     ; 697D (73-93)
+   ?\u8759     ; 697E (73-94)
+   ]
+  [?\u8753     ; 6A21 (74-01)
+   ?\u8763     ; 6A22 (74-02)
+   ?\u876A     ; 6A23 (74-03)
+   ?\u8805     ; 6A24 (74-04)
+   ?\u87A2     ; 6A25 (74-05)
+   ?\u879F     ; 6A26 (74-06)
+   ?\u8782     ; 6A27 (74-07)
+   ?\u87AF     ; 6A28 (74-08)
+   ?\u87CB     ; 6A29 (74-09)
+   ?\u87BD     ; 6A2A (74-10)
+   ?\u87C0     ; 6A2B (74-11)
+   ?\u87D0     ; 6A2C (74-12)
+   ?\u96D6     ; 6A2D (74-13)
+   ?\u87AB     ; 6A2E (74-14)
+   ?\u87C4     ; 6A2F (74-15)
+   ?\u87B3     ; 6A30 (74-16)
+   ?\u87C7     ; 6A31 (74-17)
+   ?\u87C6     ; 6A32 (74-18)
+   ?\u87BB     ; 6A33 (74-19)
+   ?\u87EF     ; 6A34 (74-20)
+   ?\u87F2     ; 6A35 (74-21)
+   ?\u87E0     ; 6A36 (74-22)
+   ?\u880F     ; 6A37 (74-23)
+   ?\u880D     ; 6A38 (74-24)
+   ?\u87FE     ; 6A39 (74-25)
+   ?\u87F6     ; 6A3A (74-26)
+   ?\u87F7     ; 6A3B (74-27)
+   ?\u880E     ; 6A3C (74-28)
+   ?\u87D2     ; 6A3D (74-29)
+   ?\u8811     ; 6A3E (74-30)
+   ?\u8816     ; 6A3F (74-31)
+   ?\u8815     ; 6A40 (74-32)
+   ?\u8822     ; 6A41 (74-33)
+   ?\u8821     ; 6A42 (74-34)
+   ?\u8831     ; 6A43 (74-35)
+   ?\u8836     ; 6A44 (74-36)
+   ?\u8839     ; 6A45 (74-37)
+   ?\u8827     ; 6A46 (74-38)
+   ?\u883B     ; 6A47 (74-39)
+   ?\u8844     ; 6A48 (74-40)
+   ?\u8842     ; 6A49 (74-41)
+   ?\u8852     ; 6A4A (74-42)
+   ?\u8859     ; 6A4B (74-43)
+   ?\u885E     ; 6A4C (74-44)
+   ?\u8862     ; 6A4D (74-45)
+   ?\u886B     ; 6A4E (74-46)
+   ?\u8881     ; 6A4F (74-47)
+   ?\u887E     ; 6A50 (74-48)
+   ?\u889E     ; 6A51 (74-49)
+   ?\u8875     ; 6A52 (74-50)
+   ?\u887D     ; 6A53 (74-51)
+   ?\u88B5     ; 6A54 (74-52)
+   ?\u8872     ; 6A55 (74-53)
+   ?\u8882     ; 6A56 (74-54)
+   ?\u8897     ; 6A57 (74-55)
+   ?\u8892     ; 6A58 (74-56)
+   ?\u88AE     ; 6A59 (74-57)
+   ?\u8899     ; 6A5A (74-58)
+   ?\u88A2     ; 6A5B (74-59)
+   ?\u888D     ; 6A5C (74-60)
+   ?\u88A4     ; 6A5D (74-61)
+   ?\u88B0     ; 6A5E (74-62)
+   ?\u88BF     ; 6A5F (74-63)
+   ?\u88B1     ; 6A60 (74-64)
+   ?\u88C3     ; 6A61 (74-65)
+   ?\u88C4     ; 6A62 (74-66)
+   ?\u88D4     ; 6A63 (74-67)
+   ?\u88D8     ; 6A64 (74-68)
+   ?\u88D9     ; 6A65 (74-69)
+   ?\u88DD     ; 6A66 (74-70)
+   ?\u88F9     ; 6A67 (74-71)
+   ?\u8902     ; 6A68 (74-72)
+   ?\u88FC     ; 6A69 (74-73)
+   ?\u88F4     ; 6A6A (74-74)
+   ?\u88E8     ; 6A6B (74-75)
+   ?\u88F2     ; 6A6C (74-76)
+   ?\u8904     ; 6A6D (74-77)
+   ?\u890C     ; 6A6E (74-78)
+   ?\u890A     ; 6A6F (74-79)
+   ?\u8913     ; 6A70 (74-80)
+   ?\u8943     ; 6A71 (74-81)
+   ?\u891E     ; 6A72 (74-82)
+   ?\u8925     ; 6A73 (74-83)
+   ?\u892A     ; 6A74 (74-84)
+   ?\u892B     ; 6A75 (74-85)
+   ?\u8941     ; 6A76 (74-86)
+   ?\u8944     ; 6A77 (74-87)
+   ?\u893B     ; 6A78 (74-88)
+   ?\u8936     ; 6A79 (74-89)
+   ?\u8938     ; 6A7A (74-90)
+   ?\u894C     ; 6A7B (74-91)
+   ?\u891D     ; 6A7C (74-92)
+   ?\u8960     ; 6A7D (74-93)
+   ?\u895E     ; 6A7E (74-94)
+   ]
+  [?\u8966     ; 6B21 (75-01)
+   ?\u8964     ; 6B22 (75-02)
+   ?\u896D     ; 6B23 (75-03)
+   ?\u896A     ; 6B24 (75-04)
+   ?\u896F     ; 6B25 (75-05)
+   ?\u8974     ; 6B26 (75-06)
+   ?\u8977     ; 6B27 (75-07)
+   ?\u897E     ; 6B28 (75-08)
+   ?\u8983     ; 6B29 (75-09)
+   ?\u8988     ; 6B2A (75-10)
+   ?\u898A     ; 6B2B (75-11)
+   ?\u8993     ; 6B2C (75-12)
+   ?\u8998     ; 6B2D (75-13)
+   ?\u89A1     ; 6B2E (75-14)
+   ?\u89A9     ; 6B2F (75-15)
+   ?\u89A6     ; 6B30 (75-16)
+   ?\u89AC     ; 6B31 (75-17)
+   ?\u89AF     ; 6B32 (75-18)
+   ?\u89B2     ; 6B33 (75-19)
+   ?\u89BA     ; 6B34 (75-20)
+   ?\u89BD     ; 6B35 (75-21)
+   ?\u89BF     ; 6B36 (75-22)
+   ?\u89C0     ; 6B37 (75-23)
+   ?\u89DA     ; 6B38 (75-24)
+   ?\u89DC     ; 6B39 (75-25)
+   ?\u89DD     ; 6B3A (75-26)
+   ?\u89E7     ; 6B3B (75-27)
+   ?\u89F4     ; 6B3C (75-28)
+   ?\u89F8     ; 6B3D (75-29)
+   ?\u8A03     ; 6B3E (75-30)
+   ?\u8A16     ; 6B3F (75-31)
+   ?\u8A10     ; 6B40 (75-32)
+   ?\u8A0C     ; 6B41 (75-33)
+   ?\u8A1B     ; 6B42 (75-34)
+   ?\u8A1D     ; 6B43 (75-35)
+   ?\u8A25     ; 6B44 (75-36)
+   ?\u8A36     ; 6B45 (75-37)
+   ?\u8A41     ; 6B46 (75-38)
+   ?\u8A5B     ; 6B47 (75-39)
+   ?\u8A52     ; 6B48 (75-40)
+   ?\u8A46     ; 6B49 (75-41)
+   ?\u8A48     ; 6B4A (75-42)
+   ?\u8A7C     ; 6B4B (75-43)
+   ?\u8A6D     ; 6B4C (75-44)
+   ?\u8A6C     ; 6B4D (75-45)
+   ?\u8A62     ; 6B4E (75-46)
+   ?\u8A85     ; 6B4F (75-47)
+   ?\u8A82     ; 6B50 (75-48)
+   ?\u8A84     ; 6B51 (75-49)
+   ?\u8AA8     ; 6B52 (75-50)
+   ?\u8AA1     ; 6B53 (75-51)
+   ?\u8A91     ; 6B54 (75-52)
+   ?\u8AA5     ; 6B55 (75-53)
+   ?\u8AA6     ; 6B56 (75-54)
+   ?\u8A9A     ; 6B57 (75-55)
+   ?\u8AA3     ; 6B58 (75-56)
+   ?\u8AC4     ; 6B59 (75-57)
+   ?\u8ACD     ; 6B5A (75-58)
+   ?\u8AC2     ; 6B5B (75-59)
+   ?\u8ADA     ; 6B5C (75-60)
+   ?\u8AEB     ; 6B5D (75-61)
+   ?\u8AF3     ; 6B5E (75-62)
+   ?\u8AE7     ; 6B5F (75-63)
+   ?\u8AE4     ; 6B60 (75-64)
+   ?\u8AF1     ; 6B61 (75-65)
+   ?\u8B14     ; 6B62 (75-66)
+   ?\u8AE0     ; 6B63 (75-67)
+   ?\u8AE2     ; 6B64 (75-68)
+   ?\u8AF7     ; 6B65 (75-69)
+   ?\u8ADE     ; 6B66 (75-70)
+   ?\u8ADB     ; 6B67 (75-71)
+   ?\u8B0C     ; 6B68 (75-72)
+   ?\u8B07     ; 6B69 (75-73)
+   ?\u8B1A     ; 6B6A (75-74)
+   ?\u8AE1     ; 6B6B (75-75)
+   ?\u8B16     ; 6B6C (75-76)
+   ?\u8B10     ; 6B6D (75-77)
+   ?\u8B17     ; 6B6E (75-78)
+   ?\u8B20     ; 6B6F (75-79)
+   ?\u8B33     ; 6B70 (75-80)
+   ?\u97AB     ; 6B71 (75-81)
+   ?\u8B26     ; 6B72 (75-82)
+   ?\u8B2B     ; 6B73 (75-83)
+   ?\u8B3E     ; 6B74 (75-84)
+   ?\u8B28     ; 6B75 (75-85)
+   ?\u8B41     ; 6B76 (75-86)
+   ?\u8B4C     ; 6B77 (75-87)
+   ?\u8B4F     ; 6B78 (75-88)
+   ?\u8B4E     ; 6B79 (75-89)
+   ?\u8B49     ; 6B7A (75-90)
+   ?\u8B56     ; 6B7B (75-91)
+   ?\u8B5B     ; 6B7C (75-92)
+   ?\u8B5A     ; 6B7D (75-93)
+   ?\u8B6B     ; 6B7E (75-94)
+   ]
+  [?\u8B5F     ; 6C21 (76-01)
+   ?\u8B6C     ; 6C22 (76-02)
+   ?\u8B6F     ; 6C23 (76-03)
+   ?\u8B74     ; 6C24 (76-04)
+   ?\u8B7D     ; 6C25 (76-05)
+   ?\u8B80     ; 6C26 (76-06)
+   ?\u8B8C     ; 6C27 (76-07)
+   ?\u8B8E     ; 6C28 (76-08)
+   ?\u8B92     ; 6C29 (76-09)
+   ?\u8B93     ; 6C2A (76-10)
+   ?\u8B96     ; 6C2B (76-11)
+   ?\u8B99     ; 6C2C (76-12)
+   ?\u8B9A     ; 6C2D (76-13)
+   ?\u8C3A     ; 6C2E (76-14)
+   ?\u8C41     ; 6C2F (76-15)
+   ?\u8C3F     ; 6C30 (76-16)
+   ?\u8C48     ; 6C31 (76-17)
+   ?\u8C4C     ; 6C32 (76-18)
+   ?\u8C4E     ; 6C33 (76-19)
+   ?\u8C50     ; 6C34 (76-20)
+   ?\u8C55     ; 6C35 (76-21)
+   ?\u8C62     ; 6C36 (76-22)
+   ?\u8C6C     ; 6C37 (76-23)
+   ?\u8C78     ; 6C38 (76-24)
+   ?\u8C7A     ; 6C39 (76-25)
+   ?\u8C82     ; 6C3A (76-26)
+   ?\u8C89     ; 6C3B (76-27)
+   ?\u8C85     ; 6C3C (76-28)
+   ?\u8C8A     ; 6C3D (76-29)
+   ?\u8C8D     ; 6C3E (76-30)
+   ?\u8C8E     ; 6C3F (76-31)
+   ?\u8C94     ; 6C40 (76-32)
+   ?\u8C7C     ; 6C41 (76-33)
+   ?\u8C98     ; 6C42 (76-34)
+   ?\u621D     ; 6C43 (76-35)
+   ?\u8CAD     ; 6C44 (76-36)
+   ?\u8CAA     ; 6C45 (76-37)
+   ?\u8CBD     ; 6C46 (76-38)
+   ?\u8CB2     ; 6C47 (76-39)
+   ?\u8CB3     ; 6C48 (76-40)
+   ?\u8CAE     ; 6C49 (76-41)
+   ?\u8CB6     ; 6C4A (76-42)
+   ?\u8CC8     ; 6C4B (76-43)
+   ?\u8CC1     ; 6C4C (76-44)
+   ?\u8CE4     ; 6C4D (76-45)
+   ?\u8CE3     ; 6C4E (76-46)
+   ?\u8CDA     ; 6C4F (76-47)
+   ?\u8CFD     ; 6C50 (76-48)
+   ?\u8CFA     ; 6C51 (76-49)
+   ?\u8CFB     ; 6C52 (76-50)
+   ?\u8D04     ; 6C53 (76-51)
+   ?\u8D05     ; 6C54 (76-52)
+   ?\u8D0A     ; 6C55 (76-53)
+   ?\u8D07     ; 6C56 (76-54)
+   ?\u8D0F     ; 6C57 (76-55)
+   ?\u8D0D     ; 6C58 (76-56)
+   ?\u8D10     ; 6C59 (76-57)
+   ?\u9F4E     ; 6C5A (76-58)
+   ?\u8D13     ; 6C5B (76-59)
+   ?\u8CCD     ; 6C5C (76-60)
+   ?\u8D14     ; 6C5D (76-61)
+   ?\u8D16     ; 6C5E (76-62)
+   ?\u8D67     ; 6C5F (76-63)
+   ?\u8D6D     ; 6C60 (76-64)
+   ?\u8D71     ; 6C61 (76-65)
+   ?\u8D73     ; 6C62 (76-66)
+   ?\u8D81     ; 6C63 (76-67)
+   ?\u8D99     ; 6C64 (76-68)
+   ?\u8DC2     ; 6C65 (76-69)
+   ?\u8DBE     ; 6C66 (76-70)
+   ?\u8DBA     ; 6C67 (76-71)
+   ?\u8DCF     ; 6C68 (76-72)
+   ?\u8DDA     ; 6C69 (76-73)
+   ?\u8DD6     ; 6C6A (76-74)
+   ?\u8DCC     ; 6C6B (76-75)
+   ?\u8DDB     ; 6C6C (76-76)
+   ?\u8DCB     ; 6C6D (76-77)
+   ?\u8DEA     ; 6C6E (76-78)
+   ?\u8DEB     ; 6C6F (76-79)
+   ?\u8DDF     ; 6C70 (76-80)
+   ?\u8DE3     ; 6C71 (76-81)
+   ?\u8DFC     ; 6C72 (76-82)
+   ?\u8E08     ; 6C73 (76-83)
+   ?\u8E09     ; 6C74 (76-84)
+   ?\u8DFF     ; 6C75 (76-85)
+   ?\u8E1D     ; 6C76 (76-86)
+   ?\u8E1E     ; 6C77 (76-87)
+   ?\u8E10     ; 6C78 (76-88)
+   ?\u8E1F     ; 6C79 (76-89)
+   ?\u8E42     ; 6C7A (76-90)
+   ?\u8E35     ; 6C7B (76-91)
+   ?\u8E30     ; 6C7C (76-92)
+   ?\u8E34     ; 6C7D (76-93)
+   ?\u8E4A     ; 6C7E (76-94)
+   ]
+  [?\u8E47     ; 6D21 (77-01)
+   ?\u8E49     ; 6D22 (77-02)
+   ?\u8E4C     ; 6D23 (77-03)
+   ?\u8E50     ; 6D24 (77-04)
+   ?\u8E48     ; 6D25 (77-05)
+   ?\u8E59     ; 6D26 (77-06)
+   ?\u8E64     ; 6D27 (77-07)
+   ?\u8E60     ; 6D28 (77-08)
+   ?\u8E2A     ; 6D29 (77-09)
+   ?\u8E63     ; 6D2A (77-10)
+   ?\u8E55     ; 6D2B (77-11)
+   ?\u8E76     ; 6D2C (77-12)
+   ?\u8E72     ; 6D2D (77-13)
+   ?\u8E7C     ; 6D2E (77-14)
+   ?\u8E81     ; 6D2F (77-15)
+   ?\u8E87     ; 6D30 (77-16)
+   ?\u8E85     ; 6D31 (77-17)
+   ?\u8E84     ; 6D32 (77-18)
+   ?\u8E8B     ; 6D33 (77-19)
+   ?\u8E8A     ; 6D34 (77-20)
+   ?\u8E93     ; 6D35 (77-21)
+   ?\u8E91     ; 6D36 (77-22)
+   ?\u8E94     ; 6D37 (77-23)
+   ?\u8E99     ; 6D38 (77-24)
+   ?\u8EAA     ; 6D39 (77-25)
+   ?\u8EA1     ; 6D3A (77-26)
+   ?\u8EAC     ; 6D3B (77-27)
+   ?\u8EB0     ; 6D3C (77-28)
+   ?\u8EC6     ; 6D3D (77-29)
+   ?\u8EB1     ; 6D3E (77-30)
+   ?\u8EBE     ; 6D3F (77-31)
+   ?\u8EC5     ; 6D40 (77-32)
+   ?\u8EC8     ; 6D41 (77-33)
+   ?\u8ECB     ; 6D42 (77-34)
+   ?\u8EDB     ; 6D43 (77-35)
+   ?\u8EE3     ; 6D44 (77-36)
+   ?\u8EFC     ; 6D45 (77-37)
+   ?\u8EFB     ; 6D46 (77-38)
+   ?\u8EEB     ; 6D47 (77-39)
+   ?\u8EFE     ; 6D48 (77-40)
+   ?\u8F0A     ; 6D49 (77-41)
+   ?\u8F05     ; 6D4A (77-42)
+   ?\u8F15     ; 6D4B (77-43)
+   ?\u8F12     ; 6D4C (77-44)
+   ?\u8F19     ; 6D4D (77-45)
+   ?\u8F13     ; 6D4E (77-46)
+   ?\u8F1C     ; 6D4F (77-47)
+   ?\u8F1F     ; 6D50 (77-48)
+   ?\u8F1B     ; 6D51 (77-49)
+   ?\u8F0C     ; 6D52 (77-50)
+   ?\u8F26     ; 6D53 (77-51)
+   ?\u8F33     ; 6D54 (77-52)
+   ?\u8F3B     ; 6D55 (77-53)
+   ?\u8F39     ; 6D56 (77-54)
+   ?\u8F45     ; 6D57 (77-55)
+   ?\u8F42     ; 6D58 (77-56)
+   ?\u8F3E     ; 6D59 (77-57)
+   ?\u8F4C     ; 6D5A (77-58)
+   ?\u8F49     ; 6D5B (77-59)
+   ?\u8F46     ; 6D5C (77-60)
+   ?\u8F4E     ; 6D5D (77-61)
+   ?\u8F57     ; 6D5E (77-62)
+   ?\u8F5C     ; 6D5F (77-63)
+   ?\u8F62     ; 6D60 (77-64)
+   ?\u8F63     ; 6D61 (77-65)
+   ?\u8F64     ; 6D62 (77-66)
+   ?\u8F9C     ; 6D63 (77-67)
+   ?\u8F9F     ; 6D64 (77-68)
+   ?\u8FA3     ; 6D65 (77-69)
+   ?\u8FAD     ; 6D66 (77-70)
+   ?\u8FAF     ; 6D67 (77-71)
+   ?\u8FB7     ; 6D68 (77-72)
+   ?\u8FDA     ; 6D69 (77-73)
+   ?\u8FE5     ; 6D6A (77-74)
+   ?\u8FE2     ; 6D6B (77-75)
+   ?\u8FEA     ; 6D6C (77-76)
+   ?\u8FEF     ; 6D6D (77-77)
+   ?\u9087     ; 6D6E (77-78)
+   ?\u8FF4     ; 6D6F (77-79)
+   ?\u9005     ; 6D70 (77-80)
+   ?\u8FF9     ; 6D71 (77-81)
+   ?\u8FFA     ; 6D72 (77-82)
+   ?\u9011     ; 6D73 (77-83)
+   ?\u9015     ; 6D74 (77-84)
+   ?\u9021     ; 6D75 (77-85)
+   ?\u900D     ; 6D76 (77-86)
+   ?\u901E     ; 6D77 (77-87)
+   ?\u9016     ; 6D78 (77-88)
+   ?\u900B     ; 6D79 (77-89)
+   ?\u9027     ; 6D7A (77-90)
+   ?\u9036     ; 6D7B (77-91)
+   ?\u9035     ; 6D7C (77-92)
+   ?\u9039     ; 6D7D (77-93)
+   ?\u8FF8     ; 6D7E (77-94)
+   ]
+  [?\u904F     ; 6E21 (78-01)
+   ?\u9050     ; 6E22 (78-02)
+   ?\u9051     ; 6E23 (78-03)
+   ?\u9052     ; 6E24 (78-04)
+   ?\u900E     ; 6E25 (78-05)
+   ?\u9049     ; 6E26 (78-06)
+   ?\u903E     ; 6E27 (78-07)
+   ?\u9056     ; 6E28 (78-08)
+   ?\u9058     ; 6E29 (78-09)
+   ?\u905E     ; 6E2A (78-10)
+   ?\u9068     ; 6E2B (78-11)
+   ?\u906F     ; 6E2C (78-12)
+   ?\u9076     ; 6E2D (78-13)
+   ?\u96A8     ; 6E2E (78-14)
+   ?\u9072     ; 6E2F (78-15)
+   ?\u9082     ; 6E30 (78-16)
+   ?\u907D     ; 6E31 (78-17)
+   ?\u9081     ; 6E32 (78-18)
+   ?\u9080     ; 6E33 (78-19)
+   ?\u908A     ; 6E34 (78-20)
+   ?\u9089     ; 6E35 (78-21)
+   ?\u908F     ; 6E36 (78-22)
+   ?\u90A8     ; 6E37 (78-23)
+   ?\u90AF     ; 6E38 (78-24)
+   ?\u90B1     ; 6E39 (78-25)
+   ?\u90B5     ; 6E3A (78-26)
+   ?\u90E2     ; 6E3B (78-27)
+   ?\u90E4     ; 6E3C (78-28)
+   ?\u6248     ; 6E3D (78-29)
+   ?\u90DB     ; 6E3E (78-30)
+   ?\u9102     ; 6E3F (78-31)
+   ?\u9112     ; 6E40 (78-32)
+   ?\u9119     ; 6E41 (78-33)
+   ?\u9132     ; 6E42 (78-34)
+   ?\u9130     ; 6E43 (78-35)
+   ?\u914A     ; 6E44 (78-36)
+   ?\u9156     ; 6E45 (78-37)
+   ?\u9158     ; 6E46 (78-38)
+   ?\u9163     ; 6E47 (78-39)
+   ?\u9165     ; 6E48 (78-40)
+   ?\u9169     ; 6E49 (78-41)
+   ?\u9173     ; 6E4A (78-42)
+   ?\u9172     ; 6E4B (78-43)
+   ?\u918B     ; 6E4C (78-44)
+   ?\u9189     ; 6E4D (78-45)
+   ?\u9182     ; 6E4E (78-46)
+   ?\u91A2     ; 6E4F (78-47)
+   ?\u91AB     ; 6E50 (78-48)
+   ?\u91AF     ; 6E51 (78-49)
+   ?\u91AA     ; 6E52 (78-50)
+   ?\u91B5     ; 6E53 (78-51)
+   ?\u91B4     ; 6E54 (78-52)
+   ?\u91BA     ; 6E55 (78-53)
+   ?\u91C0     ; 6E56 (78-54)
+   ?\u91C1     ; 6E57 (78-55)
+   ?\u91C9     ; 6E58 (78-56)
+   ?\u91CB     ; 6E59 (78-57)
+   ?\u91D0     ; 6E5A (78-58)
+   ?\u91D6     ; 6E5B (78-59)
+   ?\u91DF     ; 6E5C (78-60)
+   ?\u91E1     ; 6E5D (78-61)
+   ?\u91DB     ; 6E5E (78-62)
+   ?\u91FC     ; 6E5F (78-63)
+   ?\u91F5     ; 6E60 (78-64)
+   ?\u91F6     ; 6E61 (78-65)
+   ?\u921E     ; 6E62 (78-66)
+   ?\u91FF     ; 6E63 (78-67)
+   ?\u9214     ; 6E64 (78-68)
+   ?\u922C     ; 6E65 (78-69)
+   ?\u9215     ; 6E66 (78-70)
+   ?\u9211     ; 6E67 (78-71)
+   ?\u925E     ; 6E68 (78-72)
+   ?\u9257     ; 6E69 (78-73)
+   ?\u9245     ; 6E6A (78-74)
+   ?\u9249     ; 6E6B (78-75)
+   ?\u9264     ; 6E6C (78-76)
+   ?\u9248     ; 6E6D (78-77)
+   ?\u9295     ; 6E6E (78-78)
+   ?\u923F     ; 6E6F (78-79)
+   ?\u924B     ; 6E70 (78-80)
+   ?\u9250     ; 6E71 (78-81)
+   ?\u929C     ; 6E72 (78-82)
+   ?\u9296     ; 6E73 (78-83)
+   ?\u9293     ; 6E74 (78-84)
+   ?\u929B     ; 6E75 (78-85)
+   ?\u925A     ; 6E76 (78-86)
+   ?\u92CF     ; 6E77 (78-87)
+   ?\u92B9     ; 6E78 (78-88)
+   ?\u92B7     ; 6E79 (78-89)
+   ?\u92E9     ; 6E7A (78-90)
+   ?\u930F     ; 6E7B (78-91)
+   ?\u92FA     ; 6E7C (78-92)
+   ?\u9344     ; 6E7D (78-93)
+   ?\u932E     ; 6E7E (78-94)
+   ]
+  [?\u9319     ; 6F21 (79-01)
+   ?\u9322     ; 6F22 (79-02)
+   ?\u931A     ; 6F23 (79-03)
+   ?\u9323     ; 6F24 (79-04)
+   ?\u933A     ; 6F25 (79-05)
+   ?\u9335     ; 6F26 (79-06)
+   ?\u933B     ; 6F27 (79-07)
+   ?\u935C     ; 6F28 (79-08)
+   ?\u9360     ; 6F29 (79-09)
+   ?\u937C     ; 6F2A (79-10)
+   ?\u936E     ; 6F2B (79-11)
+   ?\u9356     ; 6F2C (79-12)
+   ?\u93B0     ; 6F2D (79-13)
+   ?\u93AC     ; 6F2E (79-14)
+   ?\u93AD     ; 6F2F (79-15)
+   ?\u9394     ; 6F30 (79-16)
+   ?\u93B9     ; 6F31 (79-17)
+   ?\u93D6     ; 6F32 (79-18)
+   ?\u93D7     ; 6F33 (79-19)
+   ?\u93E8     ; 6F34 (79-20)
+   ?\u93E5     ; 6F35 (79-21)
+   ?\u93D8     ; 6F36 (79-22)
+   ?\u93C3     ; 6F37 (79-23)
+   ?\u93DD     ; 6F38 (79-24)
+   ?\u93D0     ; 6F39 (79-25)
+   ?\u93C8     ; 6F3A (79-26)
+   ?\u93E4     ; 6F3B (79-27)
+   ?\u941A     ; 6F3C (79-28)
+   ?\u9414     ; 6F3D (79-29)
+   ?\u9413     ; 6F3E (79-30)
+   ?\u9403     ; 6F3F (79-31)
+   ?\u9407     ; 6F40 (79-32)
+   ?\u9410     ; 6F41 (79-33)
+   ?\u9436     ; 6F42 (79-34)
+   ?\u942B     ; 6F43 (79-35)
+   ?\u9435     ; 6F44 (79-36)
+   ?\u9421     ; 6F45 (79-37)
+   ?\u943A     ; 6F46 (79-38)
+   ?\u9441     ; 6F47 (79-39)
+   ?\u9452     ; 6F48 (79-40)
+   ?\u9444     ; 6F49 (79-41)
+   ?\u945B     ; 6F4A (79-42)
+   ?\u9460     ; 6F4B (79-43)
+   ?\u9462     ; 6F4C (79-44)
+   ?\u945E     ; 6F4D (79-45)
+   ?\u946A     ; 6F4E (79-46)
+   ?\u9229     ; 6F4F (79-47)
+   ?\u9470     ; 6F50 (79-48)
+   ?\u9475     ; 6F51 (79-49)
+   ?\u9477     ; 6F52 (79-50)
+   ?\u947D     ; 6F53 (79-51)
+   ?\u945A     ; 6F54 (79-52)
+   ?\u947C     ; 6F55 (79-53)
+   ?\u947E     ; 6F56 (79-54)
+   ?\u9481     ; 6F57 (79-55)
+   ?\u947F     ; 6F58 (79-56)
+   ?\u9582     ; 6F59 (79-57)
+   ?\u9587     ; 6F5A (79-58)
+   ?\u958A     ; 6F5B (79-59)
+   ?\u9594     ; 6F5C (79-60)
+   ?\u9596     ; 6F5D (79-61)
+   ?\u9598     ; 6F5E (79-62)
+   ?\u9599     ; 6F5F (79-63)
+   ?\u95A0     ; 6F60 (79-64)
+   ?\u95A8     ; 6F61 (79-65)
+   ?\u95A7     ; 6F62 (79-66)
+   ?\u95AD     ; 6F63 (79-67)
+   ?\u95BC     ; 6F64 (79-68)
+   ?\u95BB     ; 6F65 (79-69)
+   ?\u95B9     ; 6F66 (79-70)
+   ?\u95BE     ; 6F67 (79-71)
+   ?\u95CA     ; 6F68 (79-72)
+   ?\u6FF6     ; 6F69 (79-73)
+   ?\u95C3     ; 6F6A (79-74)
+   ?\u95CD     ; 6F6B (79-75)
+   ?\u95CC     ; 6F6C (79-76)
+   ?\u95D5     ; 6F6D (79-77)
+   ?\u95D4     ; 6F6E (79-78)
+   ?\u95D6     ; 6F6F (79-79)
+   ?\u95DC     ; 6F70 (79-80)
+   ?\u95E1     ; 6F71 (79-81)
+   ?\u95E5     ; 6F72 (79-82)
+   ?\u95E2     ; 6F73 (79-83)
+   ?\u9621     ; 6F74 (79-84)
+   ?\u9628     ; 6F75 (79-85)
+   ?\u962E     ; 6F76 (79-86)
+   ?\u962F     ; 6F77 (79-87)
+   ?\u9642     ; 6F78 (79-88)
+   ?\u964C     ; 6F79 (79-89)
+   ?\u964F     ; 6F7A (79-90)
+   ?\u964B     ; 6F7B (79-91)
+   ?\u9677     ; 6F7C (79-92)
+   ?\u965C     ; 6F7D (79-93)
+   ?\u965E     ; 6F7E (79-94)
+   ]
+  [?\u965D     ; 7021 (80-01)
+   ?\u965F     ; 7022 (80-02)
+   ?\u9666     ; 7023 (80-03)
+   ?\u9672     ; 7024 (80-04)
+   ?\u966C     ; 7025 (80-05)
+   ?\u968D     ; 7026 (80-06)
+   ?\u9698     ; 7027 (80-07)
+   ?\u9695     ; 7028 (80-08)
+   ?\u9697     ; 7029 (80-09)
+   ?\u96AA     ; 702A (80-10)
+   ?\u96A7     ; 702B (80-11)
+   ?\u96B1     ; 702C (80-12)
+   ?\u96B2     ; 702D (80-13)
+   ?\u96B0     ; 702E (80-14)
+   ?\u96B4     ; 702F (80-15)
+   ?\u96B6     ; 7030 (80-16)
+   ?\u96B8     ; 7031 (80-17)
+   nil         ; 7032 (80-18) ?\u96B9
+   ?\u96CE     ; 7033 (80-19)
+   ?\u96CB     ; 7034 (80-20)
+   ?\u96C9     ; 7035 (80-21)
+   ?\u96CD     ; 7036 (80-22)
+   ?\u894D     ; 7037 (80-23)
+   ?\u96DC     ; 7038 (80-24)
+   ?\u970D     ; 7039 (80-25)
+   ?\u96D5     ; 703A (80-26)
+   ?\u96F9     ; 703B (80-27)
+   ?\u9704     ; 703C (80-28)
+   ?\u9706     ; 703D (80-29)
+   ?\u9708     ; 703E (80-30)
+   ?\u9713     ; 703F (80-31)
+   ?\u970E     ; 7040 (80-32)
+   ?\u9711     ; 7041 (80-33)
+   ?\u970F     ; 7042 (80-34)
+   ?\u9716     ; 7043 (80-35)
+   ?\u9719     ; 7044 (80-36)
+   ?\u9724     ; 7045 (80-37)
+   ?\u972A     ; 7046 (80-38)
+   ?\u9730     ; 7047 (80-39)
+   ?\u9739     ; 7048 (80-40)
+   ?\u973D     ; 7049 (80-41)
+   ?\u973E     ; 704A (80-42)
+   ?\u9744     ; 704B (80-43)
+   ?\u9746     ; 704C (80-44)
+   ?\u9748     ; 704D (80-45)
+   ?\u9742     ; 704E (80-46)
+   ?\u9749     ; 704F (80-47)
+   ?\u975C     ; 7050 (80-48)
+   ?\u9760     ; 7051 (80-49)
+   ?\u9764     ; 7052 (80-50)
+   ?\u9766     ; 7053 (80-51)
+   ?\u9768     ; 7054 (80-52)
+   ?\u52D2     ; 7055 (80-53)
+   ?\u976B     ; 7056 (80-54)
+   ?\u9771     ; 7057 (80-55)
+   ?\u9779     ; 7058 (80-56)
+   ?\u9785     ; 7059 (80-57)
+   ?\u977C     ; 705A (80-58)
+   ?\u9781     ; 705B (80-59)
+   ?\u977A     ; 705C (80-60)
+   ?\u9786     ; 705D (80-61)
+   ?\u978B     ; 705E (80-62)
+   ?\u978F     ; 705F (80-63)
+   ?\u9790     ; 7060 (80-64)
+   ?\u979C     ; 7061 (80-65)
+   ?\u97A8     ; 7062 (80-66)
+   ?\u97A6     ; 7063 (80-67)
+   ?\u97A3     ; 7064 (80-68)
+   ?\u97B3     ; 7065 (80-69)
+   ?\u97B4     ; 7066 (80-70)
+   ?\u97C3     ; 7067 (80-71)
+   ?\u97C6     ; 7068 (80-72)
+   ?\u97C8     ; 7069 (80-73)
+   ?\u97CB     ; 706A (80-74)
+   ?\u97DC     ; 706B (80-75)
+   ?\u97ED     ; 706C (80-76)
+   ?\u9F4F     ; 706D (80-77)
+   ?\u97F2     ; 706E (80-78)
+   ?\u7ADF     ; 706F (80-79)
+   ?\u97F6     ; 7070 (80-80)
+   ?\u97F5     ; 7071 (80-81)
+   ?\u980F     ; 7072 (80-82)
+   ?\u980C     ; 7073 (80-83)
+   ?\u9838     ; 7074 (80-84)
+   ?\u9824     ; 7075 (80-85)
+   ?\u9821     ; 7076 (80-86)
+   ?\u9837     ; 7077 (80-87)
+   ?\u983D     ; 7078 (80-88)
+   ?\u9846     ; 7079 (80-89)
+   ?\u984F     ; 707A (80-90)
+   ?\u984B     ; 707B (80-91)
+   ?\u986B     ; 707C (80-92)
+   ?\u986F     ; 707D (80-93)
+   ?\u9870     ; 707E (80-94)
+   ]
+  [?\u9871     ; 7121 (81-01)
+   ?\u9874     ; 7122 (81-02)
+   ?\u9873     ; 7123 (81-03)
+   ?\u98AA     ; 7124 (81-04)
+   ?\u98AF     ; 7125 (81-05)
+   ?\u98B1     ; 7126 (81-06)
+   ?\u98B6     ; 7127 (81-07)
+   ?\u98C4     ; 7128 (81-08)
+   ?\u98C3     ; 7129 (81-09)
+   ?\u98C6     ; 712A (81-10)
+   ?\u98E9     ; 712B (81-11)
+   ?\u98EB     ; 712C (81-12)
+   ?\u9903     ; 712D (81-13)
+   ?\u9909     ; 712E (81-14)
+   ?\u9912     ; 712F (81-15)
+   ?\u9914     ; 7130 (81-16)
+   ?\u9918     ; 7131 (81-17)
+   ?\u9921     ; 7132 (81-18)
+   ?\u991D     ; 7133 (81-19)
+   ?\u991E     ; 7134 (81-20)
+   ?\u9924     ; 7135 (81-21)
+   ?\u9920     ; 7136 (81-22)
+   ?\u992C     ; 7137 (81-23)
+   ?\u992E     ; 7138 (81-24)
+   ?\u993D     ; 7139 (81-25)
+   ?\u993E     ; 713A (81-26)
+   ?\u9942     ; 713B (81-27)
+   ?\u9949     ; 713C (81-28)
+   ?\u9945     ; 713D (81-29)
+   ?\u9950     ; 713E (81-30)
+   ?\u994B     ; 713F (81-31)
+   ?\u9951     ; 7140 (81-32)
+   ?\u9952     ; 7141 (81-33)
+   ?\u994C     ; 7142 (81-34)
+   ?\u9955     ; 7143 (81-35)
+   ?\u9997     ; 7144 (81-36)
+   ?\u9998     ; 7145 (81-37)
+   ?\u99A5     ; 7146 (81-38)
+   ?\u99AD     ; 7147 (81-39)
+   ?\u99AE     ; 7148 (81-40)
+   ?\u99BC     ; 7149 (81-41)
+   ?\u99DF     ; 714A (81-42)
+   ?\u99DB     ; 714B (81-43)
+   ?\u99DD     ; 714C (81-44)
+   ?\u99D8     ; 714D (81-45)
+   ?\u99D1     ; 714E (81-46)
+   ?\u99ED     ; 714F (81-47)
+   ?\u99EE     ; 7150 (81-48)
+   ?\u99F1     ; 7151 (81-49)
+   ?\u99F2     ; 7152 (81-50)
+   ?\u99FB     ; 7153 (81-51)
+   ?\u99F8     ; 7154 (81-52)
+   ?\u9A01     ; 7155 (81-53)
+   ?\u9A0F     ; 7156 (81-54)
+   ?\u9A05     ; 7157 (81-55)
+   ?\u99E2     ; 7158 (81-56)
+   ?\u9A19     ; 7159 (81-57)
+   ?\u9A2B     ; 715A (81-58)
+   ?\u9A37     ; 715B (81-59)
+   ?\u9A45     ; 715C (81-60)
+   ?\u9A42     ; 715D (81-61)
+   ?\u9A40     ; 715E (81-62)
+   ?\u9A43     ; 715F (81-63)
+   ?\u9A3E     ; 7160 (81-64)
+   ?\u9A55     ; 7161 (81-65)
+   ?\u9A4D     ; 7162 (81-66)
+   ?\u9A5B     ; 7163 (81-67)
+   ?\u9A57     ; 7164 (81-68)
+   ?\u9A5F     ; 7165 (81-69)
+   ?\u9A62     ; 7166 (81-70)
+   ?\u9A65     ; 7167 (81-71)
+   ?\u9A64     ; 7168 (81-72)
+   ?\u9A69     ; 7169 (81-73)
+   ?\u9A6B     ; 716A (81-74)
+   ?\u9A6A     ; 716B (81-75)
+   ?\u9AAD     ; 716C (81-76)
+   ?\u9AB0     ; 716D (81-77)
+   ?\u9ABC     ; 716E (81-78)
+   ?\u9AC0     ; 716F (81-79)
+   ?\u9ACF     ; 7170 (81-80)
+   ?\u9AD1     ; 7171 (81-81)
+   ?\u9AD3     ; 7172 (81-82)
+   ?\u9AD4     ; 7173 (81-83)
+   ?\u9ADE     ; 7174 (81-84)
+   ?\u9ADF     ; 7175 (81-85)
+   ?\u9AE2     ; 7176 (81-86)
+   ?\u9AE3     ; 7177 (81-87)
+   ?\u9AE6     ; 7178 (81-88)
+   ?\u9AEF     ; 7179 (81-89)
+   ?\u9AEB     ; 717A (81-90)
+   ?\u9AEE     ; 717B (81-91)
+   ?\u9AF4     ; 717C (81-92)
+   ?\u9AF1     ; 717D (81-93)
+   ?\u9AF7     ; 717E (81-94)
+   ]
+  [?\u9AFB     ; 7221 (82-01)
+   ?\u9B06     ; 7222 (82-02)
+   ?\u9B18     ; 7223 (82-03)
+   ?\u9B1A     ; 7224 (82-04)
+   ?\u9B1F     ; 7225 (82-05)
+   ?\u9B22     ; 7226 (82-06)
+   ?\u9B23     ; 7227 (82-07)
+   ?\u9B25     ; 7228 (82-08)
+   ?\u9B27     ; 7229 (82-09)
+   ?\u9B28     ; 722A (82-10)
+   ?\u9B29     ; 722B (82-11)
+   ?\u9B2A     ; 722C (82-12)
+   ?\u9B2E     ; 722D (82-13)
+   ?\u9B2F     ; 722E (82-14)
+   ?\u9B32     ; 722F (82-15)
+   ?\u9B44     ; 7230 (82-16)
+   ?\u9B43     ; 7231 (82-17)
+   ?\u9B4F     ; 7232 (82-18)
+   ?\u9B4D     ; 7233 (82-19)
+   ?\u9B4E     ; 7234 (82-20)
+   ?\u9B51     ; 7235 (82-21)
+   ?\u9B58     ; 7236 (82-22)
+   ?\u9B74     ; 7237 (82-23)
+   ?\u9B93     ; 7238 (82-24)
+   ?\u9B83     ; 7239 (82-25)
+   ?\u9B91     ; 723A (82-26)
+   ?\u9B96     ; 723B (82-27)
+   ?\u9B97     ; 723C (82-28)
+   ?\u9B9F     ; 723D (82-29)
+   ?\u9BA0     ; 723E (82-30)
+   ?\u9BA8     ; 723F (82-31)
+   ?\u9BB4     ; 7240 (82-32)
+   ?\u9BC0     ; 7241 (82-33)
+   ?\u9BCA     ; 7242 (82-34)
+   ?\u9BB9     ; 7243 (82-35)
+   ?\u9BC6     ; 7244 (82-36)
+   ?\u9BCF     ; 7245 (82-37)
+   ?\u9BD1     ; 7246 (82-38)
+   ?\u9BD2     ; 7247 (82-39)
+   ?\u9BE3     ; 7248 (82-40)
+   ?\u9BE2     ; 7249 (82-41)
+   ?\u9BE4     ; 724A (82-42)
+   ?\u9BD4     ; 724B (82-43)
+   ?\u9BE1     ; 724C (82-44)
+   ?\u9C3A     ; 724D (82-45)
+   ?\u9BF2     ; 724E (82-46)
+   ?\u9BF1     ; 724F (82-47)
+   ?\u9BF0     ; 7250 (82-48)
+   ?\u9C15     ; 7251 (82-49)
+   ?\u9C14     ; 7252 (82-50)
+   ?\u9C09     ; 7253 (82-51)
+   ?\u9C13     ; 7254 (82-52)
+   ?\u9C0C     ; 7255 (82-53)
+   ?\u9C06     ; 7256 (82-54)
+   ?\u9C08     ; 7257 (82-55)
+   ?\u9C12     ; 7258 (82-56)
+   ?\u9C0A     ; 7259 (82-57)
+   ?\u9C04     ; 725A (82-58)
+   ?\u9C2E     ; 725B (82-59)
+   ?\u9C1B     ; 725C (82-60)
+   ?\u9C25     ; 725D (82-61)
+   ?\u9C24     ; 725E (82-62)
+   ?\u9C21     ; 725F (82-63)
+   ?\u9C30     ; 7260 (82-64)
+   ?\u9C47     ; 7261 (82-65)
+   ?\u9C32     ; 7262 (82-66)
+   ?\u9C46     ; 7263 (82-67)
+   ?\u9C3E     ; 7264 (82-68)
+   ?\u9C5A     ; 7265 (82-69)
+   ?\u9C60     ; 7266 (82-70)
+   ?\u9C67     ; 7267 (82-71)
+   ?\u9C76     ; 7268 (82-72)
+   ?\u9C78     ; 7269 (82-73)
+   ?\u9CE7     ; 726A (82-74)
+   ?\u9CEC     ; 726B (82-75)
+   ?\u9CF0     ; 726C (82-76)
+   ?\u9D09     ; 726D (82-77)
+   ?\u9D08     ; 726E (82-78)
+   ?\u9CEB     ; 726F (82-79)
+   ?\u9D03     ; 7270 (82-80)
+   ?\u9D06     ; 7271 (82-81)
+   ?\u9D2A     ; 7272 (82-82)
+   ?\u9D26     ; 7273 (82-83)
+   ?\u9DAF     ; 7274 (82-84)
+   ?\u9D23     ; 7275 (82-85)
+   ?\u9D1F     ; 7276 (82-86)
+   ?\u9D44     ; 7277 (82-87)
+   ?\u9D15     ; 7278 (82-88)
+   ?\u9D12     ; 7279 (82-89)
+   ?\u9D41     ; 727A (82-90)
+   ?\u9D3F     ; 727B (82-91)
+   ?\u9D3E     ; 727C (82-92)
+   ?\u9D46     ; 727D (82-93)
+   ?\u9D48     ; 727E (82-94)
+   ]
+  [?\u9D5D     ; 7321 (83-01)
+   ?\u9D5E     ; 7322 (83-02)
+   ?\u9D64     ; 7323 (83-03)
+   ?\u9D51     ; 7324 (83-04)
+   ?\u9D50     ; 7325 (83-05)
+   ?\u9D59     ; 7326 (83-06)
+   ?\u9D72     ; 7327 (83-07)
+   ?\u9D89     ; 7328 (83-08)
+   ?\u9D87     ; 7329 (83-09)
+   ?\u9DAB     ; 732A (83-10)
+   ?\u9D6F     ; 732B (83-11)
+   ?\u9D7A     ; 732C (83-12)
+   ?\u9D9A     ; 732D (83-13)
+   ?\u9DA4     ; 732E (83-14)
+   ?\u9DA9     ; 732F (83-15)
+   ?\u9DB2     ; 7330 (83-16)
+   ?\u9DC4     ; 7331 (83-17)
+   ?\u9DC1     ; 7332 (83-18)
+   ?\u9DBB     ; 7333 (83-19)
+   ?\u9DB8     ; 7334 (83-20)
+   ?\u9DBA     ; 7335 (83-21)
+   ?\u9DC6     ; 7336 (83-22)
+   ?\u9DCF     ; 7337 (83-23)
+   ?\u9DC2     ; 7338 (83-24)
+   ?\u9DD9     ; 7339 (83-25)
+   ?\u9DD3     ; 733A (83-26)
+   ?\u9DF8     ; 733B (83-27)
+   ?\u9DE6     ; 733C (83-28)
+   ?\u9DED     ; 733D (83-29)
+   ?\u9DEF     ; 733E (83-30)
+   ?\u9DFD     ; 733F (83-31)
+   ?\u9E1A     ; 7340 (83-32)
+   ?\u9E1B     ; 7341 (83-33)
+   ?\u9E1E     ; 7342 (83-34)
+   ?\u9E75     ; 7343 (83-35)
+   ?\u9E79     ; 7344 (83-36)
+   ?\u9E7D     ; 7345 (83-37)
+   ?\u9E81     ; 7346 (83-38)
+   ?\u9E88     ; 7347 (83-39)
+   ?\u9E8B     ; 7348 (83-40)
+   ?\u9E8C     ; 7349 (83-41)
+   ?\u9E92     ; 734A (83-42)
+   ?\u9E95     ; 734B (83-43)
+   ?\u9E91     ; 734C (83-44)
+   ?\u9E9D     ; 734D (83-45)
+   ?\u9EA5     ; 734E (83-46)
+   ?\u9EA9     ; 734F (83-47)
+   ?\u9EB8     ; 7350 (83-48)
+   ?\u9EAA     ; 7351 (83-49)
+   ?\u9EAD     ; 7352 (83-50)
+   ?\u9761     ; 7353 (83-51)
+   ?\u9ECC     ; 7354 (83-52)
+   ?\u9ECE     ; 7355 (83-53)
+   ?\u9ECF     ; 7356 (83-54)
+   ?\u9ED0     ; 7357 (83-55)
+   ?\u9ED4     ; 7358 (83-56)
+   ?\u9EDC     ; 7359 (83-57)
+   ?\u9EDE     ; 735A (83-58)
+   ?\u9EDD     ; 735B (83-59)
+   ?\u9EE0     ; 735C (83-60)
+   ?\u9EE5     ; 735D (83-61)
+   ?\u9EE8     ; 735E (83-62)
+   ?\u9EEF     ; 735F (83-63)
+   ?\u9EF4     ; 7360 (83-64)
+   ?\u9EF6     ; 7361 (83-65)
+   ?\u9EF7     ; 7362 (83-66)
+   ?\u9EF9     ; 7363 (83-67)
+   ?\u9EFB     ; 7364 (83-68)
+   ?\u9EFC     ; 7365 (83-69)
+   ?\u9EFD     ; 7366 (83-70)
+   ?\u9F07     ; 7367 (83-71)
+   ?\u9F08     ; 7368 (83-72)
+   ?\u76B7     ; 7369 (83-73)
+   ?\u9F15     ; 736A (83-74)
+   ?\u9F21     ; 736B (83-75)
+   ?\u9F2C     ; 736C (83-76)
+   ?\u9F3E     ; 736D (83-77)
+   ?\u9F4A     ; 736E (83-78)
+   ?\u9F52     ; 736F (83-79)
+   ?\u9F54     ; 7370 (83-80)
+   ?\u9F63     ; 7371 (83-81)
+   ?\u9F5F     ; 7372 (83-82)
+   ?\u9F60     ; 7373 (83-83)
+   ?\u9F61     ; 7374 (83-84)
+   ?\u9F66     ; 7375 (83-85)
+   ?\u9F67     ; 7376 (83-86)
+   ?\u9F6C     ; 7377 (83-87)
+   ?\u9F6A     ; 7378 (83-88)
+   ?\u9F77     ; 7379 (83-89)
+   ?\u9F72     ; 737A (83-90)
+   ?\u9F76     ; 737B (83-91)
+   ?\u9F95     ; 737C (83-92)
+   ?\u9F9C     ; 737D (83-93)
+   ?\u9FA0     ; 737E (83-94)
+   ]
+  [?\u582F     ; 7421 (84-01)
+   ?\u69C7     ; 7422 (84-02)
+   ?\u9059     ; 7423 (84-03)
+   ?\u7464     ; 7424 (84-04)
+   nil         ; 7425 (84-05)
+   nil         ; 7426 (84-06)
+   nil         ; 7427 (84-07)
+   nil         ; 7428 (84-08)
+   nil         ; 7429 (84-09)
+   nil         ; 742A (84-10)
+   nil         ; 742B (84-11)
+   nil         ; 742C (84-12)
+   nil         ; 742D (84-13)
+   nil         ; 742E (84-14)
+   nil         ; 742F (84-15)
+   nil         ; 7430 (84-16)
+   nil         ; 7431 (84-17)
+   nil         ; 7432 (84-18)
+   nil         ; 7433 (84-19)
+   nil         ; 7434 (84-20)
+   nil         ; 7435 (84-21)
+   nil         ; 7436 (84-22)
+   nil         ; 7437 (84-23)
+   nil         ; 7438 (84-24)
+   nil         ; 7439 (84-25)
+   nil         ; 743A (84-26)
+   nil         ; 743B (84-27)
+   nil         ; 743C (84-28)
+   nil         ; 743D (84-29)
+   nil         ; 743E (84-30)
+   nil         ; 743F (84-31)
+   nil         ; 7440 (84-32)
+   nil         ; 7441 (84-33)
+   nil         ; 7442 (84-34)
+   nil         ; 7443 (84-35)
+   nil         ; 7444 (84-36)
+   nil         ; 7445 (84-37)
+   nil         ; 7446 (84-38)
+   nil         ; 7447 (84-39)
+   nil         ; 7448 (84-40)
+   nil         ; 7449 (84-41)
+   nil         ; 744A (84-42)
+   nil         ; 744B (84-43)
+   nil         ; 744C (84-44)
+   nil         ; 744D (84-45)
+   nil         ; 744E (84-46)
+   nil         ; 744F (84-47)
+   nil         ; 7450 (84-48)
+   nil         ; 7451 (84-49)
+   nil         ; 7452 (84-50)
+   nil         ; 7453 (84-51)
+   nil         ; 7454 (84-52)
+   nil         ; 7455 (84-53)
+   nil         ; 7456 (84-54)
+   nil         ; 7457 (84-55)
+   nil         ; 7458 (84-56)
+   nil         ; 7459 (84-57)
+   nil         ; 745A (84-58)
+   nil         ; 745B (84-59)
+   nil         ; 745C (84-60)
+   nil         ; 745D (84-61)
+   nil         ; 745E (84-62)
+   nil         ; 745F (84-63)
+   nil         ; 7460 (84-64)
+   nil         ; 7461 (84-65)
+   nil         ; 7462 (84-66)
+   nil         ; 7463 (84-67)
+   nil         ; 7464 (84-68)
+   nil         ; 7465 (84-69)
+   nil         ; 7466 (84-70)
+   nil         ; 7467 (84-71)
+   nil         ; 7468 (84-72)
+   nil         ; 7469 (84-73)
+   nil         ; 746A (84-74)
+   nil         ; 746B (84-75)
+   nil         ; 746C (84-76)
+   nil         ; 746D (84-77)
+   nil         ; 746E (84-78)
+   nil         ; 746F (84-79)
+   nil         ; 7470 (84-80)
+   nil         ; 7471 (84-81)
+   nil         ; 7472 (84-82)
+   nil         ; 7473 (84-83)
+   nil         ; 7474 (84-84)
+   nil         ; 7475 (84-85)
+   nil         ; 7476 (84-86)
+   nil         ; 7477 (84-87)
+   nil         ; 7478 (84-88)
+   nil         ; 7479 (84-89)
+   nil         ; 747A (84-90)
+   nil         ; 747B (84-91)
+   nil         ; 747C (84-92)
+   nil         ; 747D (84-93)
+   nil         ; 747E (84-94)
+   ]]
+  )
+
+;;; ccs-jisx0208-1983.el ends here
diff --git a/lisp/utf-2000/ccs-tcvn5712.el b/lisp/utf-2000/ccs-tcvn5712.el
new file mode 100644 (file)
index 0000000..33f3e83
--- /dev/null
@@ -0,0 +1,128 @@
+;;; ccs-viscii.el --- Mapping table for TCVN 5712.
+
+;; Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+;; Licensed to the Free Software Foundation.
+
+;; Author: MORIOKA Tomohiko <tomo@m17n.org>
+;; Keywords: coded character set
+
+;; This file is part of UTF-2000.
+
+;; UTF-2000 is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; UTF-2000 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
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with UTF-2000; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(set-charset-mapping-table
+ 'latin-tcvn5712
+ [?\u00A0 ; 0xA0  NO-BREAK SPACE
+  ?\u0102 ; 0xA1  LATIN CAPITAL LETTER A WITH BREVE
+  ?\u00C2 ; 0xA2  LATIN CAPITAL LETTER A WITH CIRCUMFLEX ; VISCII-1.1-C2
+  ?\u00CA ; 0xA3  LATIN CAPITAL LETTER E WITH CIRCUMFLEX ; VISCII-1.1-CA
+  ?\u00D4 ; 0xA4  LATIN CAPITAL LETTER O WITH CIRCUMFLEX ; VISCII-1.1-D4
+  ?\u01A0 ; 0xA5  LATIN CAPITAL LETTER O WITH HORN
+  ?\u01AF ; 0xA6  LATIN CAPITAL LETTER U WITH HORN
+  ?\u0110 ; 0xA7  LATIN CAPITAL LETTER D WITH STROKE
+  ?\u0103 ; 0xA8  LATIN SMALL LETTER A WITH BREVE
+  ?\u00E2 ; 0xA9  LATIN SMALL LETTER A WITH CIRCUMFLEX ; VISCII-1.1-E2
+  ?\u00EA ; 0xAA  LATIN SMALL LETTER E WITH CIRCUMFLEX
+  ?\u00F4 ; 0xAB  LATIN SMALL LETTER O WITH CIRCUMFLEX
+  ?\u01A1 ; 0xAC  LATIN SMALL LETTER O WITH HORN
+  ?\u01B0 ; 0xAD  LATIN SMALL LETTER U WITH HORN
+  ?\u0111 ; 0xAE  LATIN SMALL LETTER D WITH STROKE
+  ?\u1EB0 ; 0xAF  LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+  ?\u0300 ; 0xB0  COMBINING GRAVE ACCENT
+  ?\u0309 ; 0xB1  COMBINING HOOK ABOVE
+  ?\u0303 ; 0xB2  COMBINING TILDE
+  ?\u0301 ; 0xB3  COMBINING ACUTE ACCENT
+  ?\u0323 ; 0xB4  COMBINING DOT BELOW
+  ?\u00E0 ; 0xB5  LATIN SMALL LETTER A WITH GRAVE ; VISCII-1.1-E0
+  ?\u1EA3 ; 0xB6  LATIN SMALL LETTER A WITH HOOK ABOVE
+  ?\u00E3 ; 0xB7  LATIN SMALL LETTER A WITH TILDE ; VISCII-1.1-E3
+  ?\u00E1 ; 0xB8  LATIN SMALL LETTER A WITH ACUTE ; VISCII-1.1-E1
+  ?\u1EA1 ; 0xB9  LATIN SMALL LETTER A WITH DOT BELOW
+  ?\u1EB2 ; 0xBA  LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+  ?\u1EB1 ; 0xBB  LATIN SMALL LETTER A WITH BREVE AND GRAVE
+  ?\u1EB3 ; 0xBC  LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+  ?\u1EB5 ; 0xBD  LATIN SMALL LETTER A WITH BREVE AND TILDE
+  ?\u1EAF ; 0xBE  LATIN SMALL LETTER A WITH BREVE AND ACUTE
+  ?\u1EB4 ; 0xBF  LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+  ?\u1EAE ; 0xC0  LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+  ?\u1EA6 ; 0xC1  LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+  ?\u1EA8 ; 0xC2  LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+  ?\u1EAA ; 0xC3  LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+  ?\u1EA4 ; 0xC4  LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+  ?\u1EC0 ; 0xC5  LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+  ?\u1EB7 ; 0xC6  LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+  ?\u1EA7 ; 0xC7  LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+  ?\u1EA9 ; 0xC8  LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+  ?\u1EAB ; 0xC9  LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+  ?\u1EA5 ; 0xCA  LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+  ?\u1EAD ; 0xCB  LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+  ?\u00E8 ; 0xCC  LATIN SMALL LETTER E WITH GRAVE ; VISCII-1.1-E8
+  ?\u1EC2 ; 0xCD  LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+  ?\u1EBB ; 0xCE  LATIN SMALL LETTER E WITH HOOK ABOVE
+  ?\u1EBD ; 0xCF  LATIN SMALL LETTER E WITH TILDE
+  ?\u00E9 ; 0xD0  LATIN SMALL LETTER E WITH ACUTE
+  ?\u1EB9 ; 0xD1  LATIN SMALL LETTER E WITH DOT BELOW
+  ?\u1EC1 ; 0xD2  LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+  ?\u1EC3 ; 0xD3  LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+  ?\u1EC5 ; 0xD4  LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+  ?\u1EBF ; 0xD5  LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+  ?\u1EC7 ; 0xD6  LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+  ?\u00EC ; 0xD7  LATIN SMALL LETTER I WITH GRAVE
+  ?\u1EC9 ; 0xD8  LATIN SMALL LETTER I WITH HOOK ABOVE
+  ?\u1EC4 ; 0xD9  LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+  ?\u1EBE ; 0xDA  LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+  ?\u1ED2 ; 0xDB  LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+  ?\u0129 ; 0xDC  LATIN SMALL LETTER I WITH TILDE
+  ?\u00ED ; 0xDD  LATIN SMALL LETTER I WITH ACUTE
+  ?\u1ECB ; 0xDE  LATIN SMALL LETTER I WITH DOT BELOW
+  ?\u00F2 ; 0xDF  LATIN SMALL LETTER O WITH GRAVE
+  ?\u1ED4 ; 0xE0  LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+  ?\u1ECF ; 0xE1  LATIN SMALL LETTER O WITH HOOK ABOVE
+  ?\u00F5 ; 0xE2  LATIN SMALL LETTER O WITH TILDE
+  ?\u00F3 ; 0xE3  LATIN SMALL LETTER O WITH ACUTE
+  ?\u1ECD ; 0xE4  LATIN SMALL LETTER O WITH DOT BELOW
+  ?\u1ED3 ; 0xE5  LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+  ?\u1ED5 ; 0xE6  LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+  ?\u1ED7 ; 0xE7  LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+  ?\u1ED1 ; 0xE8  LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+  ?\u1ED9 ; 0xE9  LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+  ?\u1EDD ; 0xEA  LATIN SMALL LETTER O WITH HORN AND GRAVE
+  ?\u1EDF ; 0xEB  LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+  ?\u1EE1 ; 0xEC  LATIN SMALL LETTER O WITH HORN AND TILDE
+  ?\u1EDB ; 0xED  LATIN SMALL LETTER O WITH HORN AND ACUTE
+  ?\u1EE3 ; 0xEE  LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+  ?\u00F9 ; 0xEF  LATIN SMALL LETTER U WITH GRAVE
+  ?\u1ED6 ; 0xF0  LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+  ?\u1EE7 ; 0xF1  LATIN SMALL LETTER U WITH HOOK ABOVE
+  ?\u0169 ; 0xF2  LATIN SMALL LETTER U WITH TILDE
+  ?\u00FA ; 0xF3  LATIN SMALL LETTER U WITH ACUTE
+  ?\u1EE5 ; 0xF4  LATIN SMALL LETTER U WITH DOT BELOW
+  ?\u1EEB ; 0xF5  LATIN SMALL LETTER U WITH HORN AND GRAVE
+  ?\u1EED ; 0xF6  LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+  ?\u1EEF ; 0xF7  LATIN SMALL LETTER U WITH HORN AND TILDE
+  ?\u1EE9 ; 0xF8  LATIN SMALL LETTER U WITH HORN AND ACUTE
+  ?\u1EF1 ; 0xF9  LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+  ?\u1EF3 ; 0xFA  LATIN SMALL LETTER Y WITH GRAVE
+  ?\u1EF7 ; 0xFB  LATIN SMALL LETTER Y WITH HOOK ABOVE
+  ?\u1EF9 ; 0xFC  LATIN SMALL LETTER Y WITH TILDE
+  ?\u00FD ; 0xFD  LATIN SMALL LETTER Y WITH ACUTE
+  ?\u1EF5 ; 0xFE  LATIN SMALL LETTER Y WITH DOT BELOW
+  ?\u1ED0 ; 0xFF  LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+  ])
+
+;;; ccs-tcvn5712.el ends here
diff --git a/lisp/utf-2000/char-db-util.el b/lisp/utf-2000/char-db-util.el
new file mode 100644 (file)
index 0000000..8fa8fbb
--- /dev/null
@@ -0,0 +1,424 @@
+;;; char-db-util.el --- Character Database utility
+
+;; Copyright (C) 1998, 1999 MORIOKA Tomohiko.
+
+;; Author: MORIOKA Tomohiko <tomo@m17n.org>
+;; Keywords: UTF-2000, ISO/IEC 10646, Unicode, UCS-4, MULE.
+
+;; This file is part of UTF-2000.
+
+;; UTF-2000 is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; UTF-2000 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
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+;; 02111-1307, USA.
+
+;;; Code:
+
+(require 'alist)
+
+(defconst unidata-normative-category-alist
+  '(("Lu" letter       uppercase)
+    ("Ll" letter       lowercase)
+    ("Lt" letter       titlecase)
+    ("Mn" mark         non-spacing)
+    ("Mc" mark         spacing-combining)
+    ("Me" mark         enclosing)
+    ("Nd" number       decimal-digit)
+    ("Nl" number       letter)
+    ("No" number       other)
+    ("Zs" separator    space)
+    ("Zl" separator    line)
+    ("Zp" separator    paragraph)
+    ("Cc" other                control)
+    ("Cf" other                format)
+    ("Cs" other                surrogate)
+    ("Co" other                private-use)
+    ("Cn" other                not-assigned)))
+
+(defconst unidata-informative-category-alist
+  '(("Lm" letter       modifier)
+    ("Lo" letter       other)
+    ("Pc" punctuation  connector)
+    ("Pd" punctuation  dash)
+    ("Ps" punctuation  open)
+    ("Pe" punctuation  close)
+    ("Pi" punctuation  initial-quote)
+    ("Pf" punctuation  final-quote)
+    ("Po" punctuation  other)
+    ("Sm" symbol       math)
+    ("Sc" symbol       currency)
+    ("Sk" symbol       modifier)
+    ("So" symbol       other)
+    ))
+
+(defun char-attribute-name< (ka kb)
+  (cond
+   ((find-charset ka)
+    (cond
+     ((find-charset kb)
+      (cond
+       ((= (charset-dimension ka)
+          (charset-dimension kb))
+       (cond ((= (charset-chars ka)(charset-chars kb))
+              (cond
+               ((>= (charset-final ka) ?@)
+                (if (>= (charset-final kb) ?@)
+                    (< (charset-final ka)
+                       (charset-final kb))
+                  t))
+               ((>= (charset-final ka) ?0)
+                (cond
+                 ((>= (charset-final kb) ?@)
+                  nil)
+                 ((>= (charset-final kb) ?0)
+                  (< (charset-final ka)
+                     (charset-final kb)))
+                 (t)))))
+             ((<= (charset-chars ka)(charset-chars kb)))))
+       (t
+       (< (charset-dimension ka)
+          (charset-dimension kb))
+       )))
+     (t)))
+   ((find-charset kb)
+    t)
+   ((symbolp ka)
+    (cond ((symbolp kb)
+          (string< (symbol-name ka)
+                   (symbol-name kb)))
+         (t)))
+   ((symbolp kb)
+    nil)))
+
+(defun insert-char-data (char)
+  (let ((data (char-attribute-alist char))
+       cell ret name has-long-ccs-name rest)
+    (when data
+      (save-restriction
+       (narrow-to-region (point)(point))
+       (insert "(define-char
+  '(")
+       (when (setq cell (assq 'name data))
+         (setq cell (cdr cell))
+         (insert (format
+                  (if (> (length cell) 47)
+                      "(name . %S)
+    "
+                    "(name\t\t. %S)
+    ")
+                  cell))
+         (setq data (del-alist 'name data))
+         )
+       (when (setq cell (assq 'name data))
+         (setq cell (cdr cell))
+         (insert (format
+                  (if (> (length cell) 47)
+                      "(name . %S)
+    "
+                    "(name\t\t. %S)
+    ")
+                  cell))
+         (setq data (del-alist 'name data))
+         )
+       (when (setq cell (assq 'ucs data))
+         (setq cell (cdr cell))
+         (insert (format "(ucs\t\t. #x%04X)
+    "
+                         cell))
+         (setq data (del-alist 'ucs data))
+         )
+       (when (setq cell (assq '->ucs data))
+         (setq cell (cdr cell))
+         (insert (format "(->ucs\t\t. #x%04X)
+    "
+                         cell))
+         (setq data (del-alist '->ucs data))
+         )
+       (when (setq cell (assq 'general-category data))
+         (setq ret (cdr cell))
+         (insert (format
+                  "(general-category\t%s) ; %s
+    "
+                  (mapconcat (lambda (cell)
+                               (format "%S" cell))
+                             ret " ")
+                  (cond ((rassoc (cdr cell)
+                                 unidata-normative-category-alist)
+                         "Normative Category")
+                        ((rassoc (cdr cell)
+                                 unidata-informative-category-alist)
+                         "Informative Category")
+                        (t
+                         "Unknown Category"))))
+         (setq data (del-alist 'general-category data))
+         )
+       (when (setq cell (assq 'bidi-category data))
+         (setq cell (cdr cell))
+         (insert (format "(bidi-category\t. %S)
+    "
+                         cell))
+         (setq data (del-alist 'bidi-category data))
+         )
+       (when (setq cell (assq 'mirrored data))
+         (setq cell (cdr cell))
+         (insert (format "(mirrored\t\t. %S)
+    "
+                         cell))
+         (setq data (del-alist 'mirrored data))
+         )
+       (cond
+        ((setq cell (assq 'decimal-digit-value data))
+         (setq cell (cdr cell))
+         (insert (format "(decimal-digit-value . %S)
+    "
+                         cell))
+         (setq data (del-alist 'decimal-digit-value data))
+         (when (setq cell (assq 'digit-value data))
+           (setq cell (cdr cell))
+           (insert (format "(digit-value\t . %S)
+    "
+                           cell))
+           (setq data (del-alist 'digit-value data))
+           )
+         (when (setq cell (assq 'numeric-value data))
+           (setq cell (cdr cell))
+           (insert (format "(numeric-value\t . %S)
+    "
+                           cell))
+           (setq data (del-alist 'numeric-value data))
+           )
+         )
+        (t
+         (when (setq cell (assq 'digit-value data))
+           (setq cell (cdr cell))
+           (insert (format "(digit-value\t. %S)
+    "
+                           cell))
+           (setq data (del-alist 'digit-value data))
+           )
+         (when (setq cell (assq 'numeric-value data))
+           (setq cell (cdr cell))
+           (insert (format "(numeric-value\t. %S)
+    "
+                           cell))
+           (setq data (del-alist 'numeric-value data))
+           )))
+       (when (setq cell (assq 'iso-10646-comment data))
+         (setq cell (cdr cell))
+         (insert (format "(iso-10646-comment\t. %S)
+    "
+                         cell))
+         (setq data (del-alist 'iso-10646-comment data))
+         )
+       (when (setq cell (assq '->decomposition data))
+         (setq cell (cdr cell))
+         (insert (format "(->decomposition\t%s)
+    "
+                         (mapconcat (lambda (code)
+                                      (cond ((symbolp code)
+                                             (symbol-name code))
+                                            ((integerp code)
+                                             (format "#x%04X" code))
+                                            (t
+                                             (format "\n     %S" code))))
+                                    cell " ")))
+         (setq data (del-alist '->decomposition data))
+         )
+       (when (setq cell (assq '->uppercase data))
+         (setq cell (cdr cell))
+         (insert (format "(->uppercase\t%s)
+    "
+                         (mapconcat (lambda (code)
+                                      (cond ((symbolp code)
+                                             (symbol-name code))
+                                            ((integerp code)
+                                             (format "#x%04X" code))
+                                            (t
+                                             (format "\n     %S" code))))
+                                    cell " ")))
+         (setq data (del-alist '->uppercase data))
+         )
+       (when (setq cell (assq '->lowercase data))
+         (setq cell (cdr cell))
+         (insert (format "(->lowercase\t%s)
+    "
+                         (mapconcat (lambda (code)
+                                      (cond ((symbolp code)
+                                             (symbol-name code))
+                                            ((integerp code)
+                                             (format "#x%04X" code))
+                                            (t
+                                             (format "\n     %S" code))))
+                                    cell " ")))
+         (setq data (del-alist '->lowercase data))
+         )
+       (when (setq cell (assq '->titlecase data))
+         (setq cell (cdr cell))
+         (insert (format "(->titlecase\t%s)
+    "
+                         (mapconcat (lambda (code)
+                                      (cond ((symbolp code)
+                                             (symbol-name code))
+                                            ((integerp code)
+                                             (format "#x%04X" code))
+                                            (t
+                                             (format "\n     %S" code))))
+                                    cell " ")))
+         (setq data (del-alist '->titlecase data))
+         )
+       (setq data
+             (sort data
+                   (lambda (a b)
+                     (char-attribute-name< (car a)(car b)))))
+       (setq rest data)
+       (while (and rest
+                   (progn
+                     (setq cell (car rest))
+                     (if (setq ret (find-charset (car cell)))
+                         (if (>= (length (symbol-name (charset-name ret))) 19)
+                             (progn
+                               (setq has-long-ccs-name t)
+                               nil)
+                           t)
+                       t)))
+         (setq rest (cdr rest)))
+       (while data
+         (setq cell (car data))
+         (cond ((setq ret (find-charset (car cell)))
+                (insert (format (if has-long-ccs-name
+                                    "(%-26s %s)
+    "
+                                  "(%-18s %s)
+    "
+                                  )
+                                (charset-name ret)
+                                (mapconcat
+                                 (lambda (b)
+                                   (format "#x%02X"
+                                           (if (= (charset-graphic ret) 1)
+                                               (logior b #x80)
+                                             b)))
+                                 (cdr cell) " "))))
+               ((string-match "^->" (symbol-name (car cell)))
+                (insert
+                 (format "(%-18s %s)
+    "
+                         (car cell)
+                         (mapconcat (lambda (code)
+                                      (cond ((symbolp code)
+                                             (symbol-name code))
+                                            ((integerp code)
+                                             (format "#x%04X" code))
+                                            (t
+                                             (format "\n     %S" code))))
+                                    (cdr cell) " "))))
+               ((consp (cdr cell))
+                (insert (format "%S
+    "
+                                cell)))
+               (t
+                (insert (format "(%-18s . %S)
+    "
+                                (car cell)(cdr cell)))
+                ))
+         (setq data (cdr data)))
+       (insert "))\n")
+       (goto-char (point-min))
+       (while (re-search-forward "[ \t]+$" nil t)
+         (replace-match ""))
+       (goto-char (point-max))
+       (tabify (point-min)(point-max))
+       ))))
+
+;;;###autoload
+(defun char-db-update-comment ()
+  (interactive)
+  (save-excursion
+    (goto-char (point-min))
+    (let (cdef table char)
+      (while (re-search-forward "^[ \t]*\\(([^.()]+)\\)" nil t)
+       (goto-char (match-beginning 1))
+       (setq cdef (read (current-buffer)))
+       (when (find-charset (car cdef))
+         (goto-char (match-end 0))
+         (setq char
+               (if (or (memq (car cdef) '(ascii latin-viscii-upper
+                                                latin-viscii-lower
+                                                arabic-iso8859-6))
+                       (= (char-int (charset-final (car cdef))) 0))
+                   (apply (function make-char) cdef)
+                 (if (setq table (charset-mapping-table (car cdef)))
+                     (set-charset-mapping-table (car cdef) nil))
+                 (prog1
+                     (apply (function make-char) cdef)
+                   (if table
+                       (set-charset-mapping-table (car cdef) table)))))
+         (when (not (or (< (char-int char) 32)
+                        (and (<= 128 (char-int char))
+                             (< (char-int char) 160))))
+           (delete-region (point) (point-at-eol))
+           (insert (format "\t; %c" char)))
+         )))))
+
+(defun insert-char-data-with-variant (char)
+  (insert-char-data char)
+  (let ((variants (char-variants char)))
+    (while variants
+      (insert-char-data (car variants))
+      (setq variants (cdr variants))
+      )))
+
+(defun insert-char-range-data (min max)
+  (let ((code min)
+       char
+       variants)
+    (while (<= code max)
+      (setq char (int-char code))
+      (insert-char-data-with-variant char)
+      (setq code (1+ code))
+      )))
+
+(defun write-char-range-data-to-file (min max file)
+  (with-temp-buffer
+    (insert-char-range-data min max)
+    (write-region (point-min)(point-max) file)))
+
+;;;###autoload
+(defun what-char-definition (char)
+  (interactive (list (char-after)))
+  (let ((buf (get-buffer-create "*Character Description*"))
+       (the-buf (current-buffer))
+       (win-conf (current-window-configuration)))
+    (pop-to-buffer buf)
+    (make-local-variable 'what-character-original-window-configuration)
+    (setq what-character-original-window-configuration win-conf)
+    (setq buffer-read-only nil)
+    (erase-buffer)
+    (condition-case err
+       (progn
+         (insert-char-data-with-variant char)
+         (char-db-update-comment)
+         (set-buffer-modified-p nil)
+         (view-mode the-buf (lambda (buf)
+                              (set-window-configuration
+                               what-character-original-window-configuration)
+                              ))
+         (goto-char (point-min)))
+      (error (progn
+              (set-window-configuration
+               what-character-original-window-configuration)
+              (signal (car err) (cdr err)))))))
+
+(provide 'char-db-util)
+
+;;; char-db-util.el ends here
diff --git a/lisp/utf-2000/u00000-C0.el b/lisp/utf-2000/u00000-C0.el
new file mode 100644 (file)
index 0000000..f51d2bf
--- /dev/null
@@ -0,0 +1,240 @@
+(define-char
+  '((name              . "NULL")
+    (ucs               . #x0000)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x00)
+    ))
+(define-char
+  '((name              . "START OF HEADING")
+    (ucs               . #x0001)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x01)
+    ))
+(define-char
+  '((name              . "START OF TEXT")
+    (ucs               . #x0002)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x02)
+    ))
+(define-char
+  '((name              . "END OF TEXT")
+    (ucs               . #x0003)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x03)
+    ))
+(define-char
+  '((name              . "END OF TRANSMISSION")
+    (ucs               . #x0004)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x04)
+    ))
+(define-char
+  '((name              . "ENQUIRY")
+    (ucs               . #x0005)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x05)
+    ))
+(define-char
+  '((name              . "ACKNOWLEDGE")
+    (ucs               . #x0006)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x06)
+    ))
+(define-char
+  '((name              . "BELL")
+    (ucs               . #x0007)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x07)
+    ))
+(define-char
+  '((name              . "BACKSPACE")
+    (ucs               . #x0008)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x08)
+    ))
+(define-char
+  '((name              . "HORIZONTAL TABULATION")
+    (ucs               . #x0009)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "S")
+    (mirrored          . nil)
+    (ascii             #x09)
+    ))
+(define-char
+  '((name              . "LINE FEED")
+    (ucs               . #x000A)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "B")
+    (mirrored          . nil)
+    (ascii             #x0A)
+    ))
+(define-char
+  '((name              . "VERTICAL TABULATION")
+    (ucs               . #x000B)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "S")
+    (mirrored          . nil)
+    (ascii             #x0B)
+    ))
+(define-char
+  '((name              . "FORM FEED")
+    (ucs               . #x000C)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (ascii             #x0C)
+    ))
+(define-char
+  '((name              . "CARRIAGE RETURN")
+    (ucs               . #x000D)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "B")
+    (mirrored          . nil)
+    (ascii             #x0D)
+    ))
+(define-char
+  '((name              . "SHIFT OUT")
+    (ucs               . #x000E)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x0E)
+    ))
+(define-char
+  '((name              . "SHIFT IN")
+    (ucs               . #x000F)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x0F)
+    ))
+(define-char
+  '((ucs               . #x0010)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x10)
+    ))
+(define-char
+  '((ucs               . #x0011)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x11)
+    ))
+(define-char
+  '((ucs               . #x0012)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x12)
+    ))
+(define-char
+  '((ucs               . #x0013)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x13)
+    ))
+(define-char
+  '((ucs               . #x0014)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x14)
+    ))
+(define-char
+  '((ucs               . #x0015)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x15)
+    ))
+(define-char
+  '((ucs               . #x0016)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x16)
+    ))
+(define-char
+  '((ucs               . #x0017)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x17)
+    ))
+(define-char
+  '((ucs               . #x0018)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x18)
+    ))
+(define-char
+  '((ucs               . #x0019)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x19)
+    ))
+(define-char
+  '((ucs               . #x001A)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x1A)
+    ))
+(define-char
+  '((ucs               . #x001B)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x1B)
+    ))
+(define-char
+  '((ucs               . #x001C)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "B")
+    (mirrored          . nil)
+    (ascii             #x1C)
+    ))
+(define-char
+  '((ucs               . #x001D)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "B")
+    (mirrored          . nil)
+    (ascii             #x1D)
+    ))
+(define-char
+  '((ucs               . #x001E)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "B")
+    (mirrored          . nil)
+    (ascii             #x1E)
+    ))
+(define-char
+  '((ucs               . #x001F)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "S")
+    (mirrored          . nil)
+    (ascii             #x1F)
+    ))
diff --git a/lisp/utf-2000/u00020-Basic-Latin.el b/lisp/utf-2000/u00020-Basic-Latin.el
new file mode 100644 (file)
index 0000000..7e21898
--- /dev/null
@@ -0,0 +1,1088 @@
+(define-char
+  '((name              . "SPACE")
+    (ucs               . #x0020)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (ascii             #x20)   ;  
+    (ipa               #x7F)   ; \e.0\eN\7f
+    (latin-viscii      #x20)   ;  
+    ))
+(define-char
+  '((name              . "EXCLAMATION MARK")
+    (ucs               . #x0021)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x21)   ; !
+    (latin-jisx0201    #x21)   ; \e(J!\e(B
+    (latin-viscii      #x21)   ; !
+    ))
+(define-char
+  '((name              . "QUOTATION MARK")
+    (ucs               . #x0022)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x22)   ; "
+    (latin-jisx0201    #x22)   ; \e(J"\e(B
+    (latin-viscii      #x22)   ; "
+    ))
+(define-char
+  '((name              . "NUMBER SIGN")
+    (ucs               . #x0023)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (ascii             #x23)   ; #
+    (latin-jisx0201    #x23)   ; \e(J#\e(B
+    (latin-viscii      #x23)   ; #
+    ))
+(define-char
+  '((name              . "DOLLAR SIGN")
+    (ucs               . #x0024)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (ascii             #x24)   ; $
+    (latin-jisx0201    #x24)   ; \e(J$\e(B
+    (latin-viscii      #x24)   ; $
+    ))
+(define-char
+  '((name              . "PERCENT SIGN")
+    (ucs               . #x0025)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (ascii             #x25)   ; %
+    (latin-jisx0201    #x25)   ; \e(J%\e(B
+    (latin-viscii      #x25)   ; %
+    ))
+(define-char
+  '((name              . "AMPERSAND")
+    (ucs               . #x0026)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x26)   ; &
+    (latin-jisx0201    #x26)   ; \e(J&\e(B
+    (latin-viscii      #x26)   ; &
+    ))
+(define-char
+  '((name              . "APOSTROPHE")
+    (ucs               . #x0027)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x27)   ; '
+    (latin-jisx0201    #x27)   ; \e(J'\e(B
+    (latin-viscii      #x27)   ; '
+    ))
+(define-char
+  '((name              . "LEFT PARENTHESIS")
+    (ucs               . #x0028)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (ascii             #x28)   ; (
+    (latin-jisx0201    #x28)   ; \e(J(\e(B
+    (latin-viscii      #x28)   ; (
+    ))
+(define-char
+  '((name              . "RIGHT PARENTHESIS")
+    (ucs               . #x0029)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (ascii             #x29)   ; )
+    (latin-jisx0201    #x29)   ; \e(J)\e(B
+    (latin-viscii      #x29)   ; )
+    ))
+(define-char
+  '((name              . "ASTERISK")
+    (ucs               . #x002A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x2A)   ; *
+    (latin-jisx0201    #x2A)   ; \e(J*\e(B
+    (latin-viscii      #x2A)   ; *
+    ))
+(define-char
+  '((name              . "PLUS SIGN")
+    (ucs               . #x002B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (ascii             #x2B)   ; +
+    (latin-jisx0201    #x2B)   ; \e(J+\e(B
+    (latin-viscii      #x2B)   ; +
+    ))
+(define-char
+  '((name              . "COMMA")
+    (ucs               . #x002C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "CS")
+    (mirrored          . nil)
+    (ascii             #x2C)   ; ,
+    (latin-jisx0201    #x2C)   ; \e(J,\e(B
+    (latin-viscii      #x2C)   ; ,
+    ))
+(define-char
+  '((name              . "HYPHEN-MINUS")
+    (ucs               . #x002D)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (ascii             #x2D)   ; -
+    (latin-jisx0201    #x2D)   ; \e(J-\e(B
+    (latin-viscii      #x2D)   ; -
+    ))
+(define-char
+  '((name              . "FULL STOP")
+    (ucs               . #x002E)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "CS")
+    (mirrored          . nil)
+    (ascii             #x2E)   ; .
+    (latin-jisx0201    #x2E)   ; \e(J.\e(B
+    (latin-viscii      #x2E)   ; .
+    ))
+(define-char
+  '((name              . "SOLIDUS")
+    (ucs               . #x002F)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ES")
+    (mirrored          . nil)
+    (ascii             #x2F)   ; /
+    (latin-jisx0201    #x2F)   ; \e(J/\e(B
+    (latin-viscii      #x2F)   ; /
+    ))
+(define-char
+  '((name              . "DIGIT ZERO")
+    (ucs               . #x0030)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 0)
+    (digit-value        . 0)
+    (numeric-value      . 0)
+    (ascii             #x30)   ; 0
+    (latin-jisx0201    #x30)   ; \e(J0\e(B
+    (latin-viscii      #x30)   ; 0
+    ))
+(define-char
+  '((name              . "DIGIT ONE")
+    (ucs               . #x0031)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    (ascii             #x31)   ; 1
+    (latin-jisx0201    #x31)   ; \e(J1\e(B
+    (latin-viscii      #x31)   ; 1
+    ))
+(define-char
+  '((name              . "DIGIT TWO")
+    (ucs               . #x0032)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    (ascii             #x32)   ; 2
+    (latin-jisx0201    #x32)   ; \e(J2\e(B
+    (latin-viscii      #x32)   ; 2
+    ))
+(define-char
+  '((name              . "DIGIT THREE")
+    (ucs               . #x0033)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    (ascii             #x33)   ; 3
+    (latin-jisx0201    #x33)   ; \e(J3\e(B
+    (latin-viscii      #x33)   ; 3
+    ))
+(define-char
+  '((name              . "DIGIT FOUR")
+    (ucs               . #x0034)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    (ascii             #x34)   ; 4
+    (latin-jisx0201    #x34)   ; \e(J4\e(B
+    (latin-viscii      #x34)   ; 4
+    ))
+(define-char
+  '((name              . "DIGIT FIVE")
+    (ucs               . #x0035)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    (ascii             #x35)   ; 5
+    (latin-jisx0201    #x35)   ; \e(J5\e(B
+    (latin-viscii      #x35)   ; 5
+    ))
+(define-char
+  '((name              . "DIGIT SIX")
+    (ucs               . #x0036)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    (ascii             #x36)   ; 6
+    (latin-jisx0201    #x36)   ; \e(J6\e(B
+    (latin-viscii      #x36)   ; 6
+    ))
+(define-char
+  '((name              . "DIGIT SEVEN")
+    (ucs               . #x0037)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    (ascii             #x37)   ; 7
+    (latin-jisx0201    #x37)   ; \e(J7\e(B
+    (latin-viscii      #x37)   ; 7
+    ))
+(define-char
+  '((name              . "DIGIT EIGHT")
+    (ucs               . #x0038)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    (ascii             #x38)   ; 8
+    (latin-jisx0201    #x38)   ; \e(J8\e(B
+    (latin-viscii      #x38)   ; 8
+    ))
+(define-char
+  '((name              . "DIGIT NINE")
+    (ucs               . #x0039)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    (ascii             #x39)   ; 9
+    (latin-jisx0201    #x39)   ; \e(J9\e(B
+    (latin-viscii      #x39)   ; 9
+    ))
+(define-char
+  '((name              . "COLON")
+    (ucs               . #x003A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "CS")
+    (mirrored          . nil)
+    (ascii             #x3A)   ; :
+    (latin-jisx0201    #x3A)   ; \e(J:\e(B
+    (latin-viscii      #x3A)   ; :
+    ))
+(define-char
+  '((name              . "SEMICOLON")
+    (ucs               . #x003B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x3B)   ; ;
+    (latin-jisx0201    #x3B)   ; \e(J;\e(B
+    (latin-viscii      #x3B)   ; ;
+    ))
+(define-char
+  '((name              . "LESS-THAN SIGN")
+    (ucs               . #x003C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (ascii             #x3C)   ; <
+    (latin-jisx0201    #x3C)   ; \e(J<\e(B
+    (latin-viscii      #x3C)   ; <
+    ))
+(define-char
+  '((name              . "EQUALS SIGN")
+    (ucs               . #x003D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x3D)   ; =
+    (latin-jisx0201    #x3D)   ; \e(J=\e(B
+    (latin-viscii      #x3D)   ; =
+    ))
+(define-char
+  '((name              . "GREATER-THAN SIGN")
+    (ucs               . #x003E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (ascii             #x3E)   ; >
+    (latin-jisx0201    #x3E)   ; \e(J>\e(B
+    (latin-viscii      #x3E)   ; >
+    ))
+(define-char
+  '((name              . "QUESTION MARK")
+    (ucs               . #x003F)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x3F)   ; ?
+    (latin-jisx0201    #x3F)   ; \e(J?\e(B
+    (latin-viscii      #x3F)   ; ?
+    ))
+(define-char
+  '((name              . "COMMERCIAL AT")
+    (ucs               . #x0040)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x40)   ; @
+    (latin-jisx0201    #x40)   ; \e(J@\e(B
+    (latin-viscii      #x40)   ; @
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A")
+    (ucs               . #x0041)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0061)
+    (ascii             #x41)   ; A
+    (latin-jisx0201    #x41)   ; \e(JA\e(B
+    (latin-viscii      #x41)   ; A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER B")
+    (ucs               . #x0042)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0062)
+    (ascii             #x42)   ; B
+    (latin-jisx0201    #x42)   ; \e(JB\e(B
+    (latin-viscii      #x42)   ; B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER C")
+    (ucs               . #x0043)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0063)
+    (ascii             #x43)   ; C
+    (latin-jisx0201    #x43)   ; \e(JC\e(B
+    (latin-viscii      #x43)   ; C
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D")
+    (ucs               . #x0044)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0064)
+    (ascii             #x44)   ; D
+    (latin-jisx0201    #x44)   ; \e(JD\e(B
+    (latin-viscii      #x44)   ; D
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E")
+    (ucs               . #x0045)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0065)
+    (ascii             #x45)   ; E
+    (latin-jisx0201    #x45)   ; \e(JE\e(B
+    (latin-viscii      #x45)   ; E
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER F")
+    (ucs               . #x0046)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0066)
+    (ascii             #x46)   ; F
+    (latin-jisx0201    #x46)   ; \e(JF\e(B
+    (latin-viscii      #x46)   ; F
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G")
+    (ucs               . #x0047)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0067)
+    (ascii             #x47)   ; G
+    (latin-jisx0201    #x47)   ; \e(JG\e(B
+    (latin-viscii      #x47)   ; G
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER H")
+    (ucs               . #x0048)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0068)
+    (ascii             #x48)   ; H
+    (latin-jisx0201    #x48)   ; \e(JH\e(B
+    (latin-viscii      #x48)   ; H
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I")
+    (ucs               . #x0049)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0069)
+    (ascii             #x49)   ; I
+    (latin-jisx0201    #x49)   ; \e(JI\e(B
+    (latin-viscii      #x49)   ; I
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER J")
+    (ucs               . #x004A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x006A)
+    (ascii             #x4A)   ; J
+    (latin-jisx0201    #x4A)   ; \e(JJ\e(B
+    (latin-viscii      #x4A)   ; J
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER K")
+    (ucs               . #x004B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x006B)
+    (ascii             #x4B)   ; K
+    (latin-jisx0201    #x4B)   ; \e(JK\e(B
+    (latin-viscii      #x4B)   ; K
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L")
+    (ucs               . #x004C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x006C)
+    (ascii             #x4C)   ; L
+    (latin-jisx0201    #x4C)   ; \e(JL\e(B
+    (latin-viscii      #x4C)   ; L
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER M")
+    (ucs               . #x004D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x006D)
+    (ascii             #x4D)   ; M
+    (latin-jisx0201    #x4D)   ; \e(JM\e(B
+    (latin-viscii      #x4D)   ; M
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N")
+    (ucs               . #x004E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x006E)
+    (ascii             #x4E)   ; N
+    (latin-jisx0201    #x4E)   ; \e(JN\e(B
+    (latin-viscii      #x4E)   ; N
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O")
+    (ucs               . #x004F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x006F)
+    (ascii             #x4F)   ; O
+    (latin-jisx0201    #x4F)   ; \e(JO\e(B
+    (latin-viscii      #x4F)   ; O
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER P")
+    (ucs               . #x0050)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0070)
+    (ascii             #x50)   ; P
+    (latin-jisx0201    #x50)   ; \e(JP\e(B
+    (latin-viscii      #x50)   ; P
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Q")
+    (ucs               . #x0051)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0071)
+    (ascii             #x51)   ; Q
+    (latin-jisx0201    #x51)   ; \e(JQ\e(B
+    (latin-viscii      #x51)   ; Q
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER R")
+    (ucs               . #x0052)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0072)
+    (ascii             #x52)   ; R
+    (latin-jisx0201    #x52)   ; \e(JR\e(B
+    (latin-viscii      #x52)   ; R
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S")
+    (ucs               . #x0053)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0073)
+    (ascii             #x53)   ; S
+    (latin-jisx0201    #x53)   ; \e(JS\e(B
+    (latin-viscii      #x53)   ; S
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T")
+    (ucs               . #x0054)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0074)
+    (ascii             #x54)   ; T
+    (latin-jisx0201    #x54)   ; \e(JT\e(B
+    (latin-viscii      #x54)   ; T
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U")
+    (ucs               . #x0055)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0075)
+    (ascii             #x55)   ; U
+    (latin-jisx0201    #x55)   ; \e(JU\e(B
+    (latin-viscii      #x55)   ; U
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER V")
+    (ucs               . #x0056)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0076)
+    (ascii             #x56)   ; V
+    (latin-jisx0201    #x56)   ; \e(JV\e(B
+    (latin-viscii      #x56)   ; V
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER W")
+    (ucs               . #x0057)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0077)
+    (ascii             #x57)   ; W
+    (latin-jisx0201    #x57)   ; \e(JW\e(B
+    (latin-viscii      #x57)   ; W
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER X")
+    (ucs               . #x0058)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0078)
+    (ascii             #x58)   ; X
+    (latin-jisx0201    #x58)   ; \e(JX\e(B
+    (latin-viscii      #x58)   ; X
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y")
+    (ucs               . #x0059)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0079)
+    (ascii             #x59)   ; Y
+    (latin-jisx0201    #x59)   ; \e(JY\e(B
+    (latin-viscii      #x59)   ; Y
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Z")
+    (ucs               . #x005A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x007A)
+    (ascii             #x5A)   ; Z
+    (latin-jisx0201    #x5A)   ; \e(JZ\e(B
+    (latin-viscii      #x5A)   ; Z
+    ))
+(define-char
+  '((name              . "LEFT SQUARE BRACKET")
+    (ucs               . #x005B)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (ascii             #x5B)   ; [
+    (latin-jisx0201    #x5B)   ; \e(J[\e(B
+    (latin-viscii      #x5B)   ; [
+    ))
+(define-char
+  '((name              . "REVERSE SOLIDUS")
+    (ucs               . #x005C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x5C)   ; \
+    (latin-viscii      #x5C)   ; \
+    ))
+(define-char
+  '((name              . "RIGHT SQUARE BRACKET")
+    (ucs               . #x005D)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (ascii             #x5D)   ; ]
+    (latin-jisx0201    #x5D)   ; \e(J]\e(B
+    (latin-viscii      #x5D)   ; ]
+    ))
+(define-char
+  '((name              . "CIRCUMFLEX ACCENT")
+    (ucs               . #x005E)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x5E)   ; ^
+    (latin-jisx0201    #x5E)   ; \e(J^\e(B
+    (latin-viscii      #x5E)   ; ^
+    ))
+(define-char
+  '((name              . "LOW LINE")
+    (ucs               . #x005F)
+    (general-category  punctuation connector) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x5F)   ; _
+    (latin-jisx0201    #x5F)   ; \e(J_\e(B
+    (latin-viscii      #x5F)   ; _
+    ))
+(define-char
+  '((name              . "GRAVE ACCENT")
+    (ucs               . #x0060)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x60)   ; `
+    (latin-jisx0201    #x60)   ; \e(J`\e(B
+    (latin-viscii      #x60)   ; `
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A")
+    (ucs               . #x0061)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0041)
+    (->titlecase       #x0041)
+    (ascii             #x61)   ; a
+    (latin-jisx0201    #x61)   ; \e(Ja\e(B
+    (ipa               #x25)   ; \e.0\eN%
+    (latin-viscii      #x61)   ; a
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER B")
+    (ucs               . #x0062)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0042)
+    (->titlecase       #x0042)
+    (ascii             #x62)   ; b
+    (latin-jisx0201    #x62)   ; \e(Jb\e(B
+    (ipa               #x41)   ; \e.0\eNA
+    (latin-viscii      #x62)   ; b
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER C")
+    (ucs               . #x0063)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0043)
+    (->titlecase       #x0043)
+    (ascii             #x63)   ; c
+    (latin-jisx0201    #x63)   ; \e(Jc\e(B
+    (latin-viscii      #x63)   ; c
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D")
+    (ucs               . #x0064)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0044)
+    (->titlecase       #x0044)
+    (ascii             #x64)   ; d
+    (latin-jisx0201    #x64)   ; \e(Jd\e(B
+    (ipa               #x43)   ; \e.0\eNC
+    (latin-viscii      #x64)   ; d
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E")
+    (ucs               . #x0065)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0045)
+    (->titlecase       #x0045)
+    (ascii             #x65)   ; e
+    (latin-jisx0201    #x65)   ; \e(Je\e(B
+    (ipa               #x22)   ; \e.0\eN"
+    (latin-viscii      #x65)   ; e
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER F")
+    (ucs               . #x0066)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0046)
+    (->titlecase       #x0046)
+    (ascii             #x66)   ; f
+    (latin-jisx0201    #x66)   ; \e(Jf\e(B
+    (ipa               #x46)   ; \e.0\eNF
+    (latin-viscii      #x66)   ; f
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G")
+    (ucs               . #x0067)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0047)
+    (->titlecase       #x0047)
+    (ascii             #x67)   ; g
+    (latin-jisx0201    #x67)   ; \e(Jg\e(B
+    (ipa               #x45)   ; \e.0\eNE
+    (latin-viscii      #x67)   ; g
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H")
+    (ucs               . #x0068)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0048)
+    (->titlecase       #x0048)
+    (ascii             #x68)   ; h
+    (latin-jisx0201    #x68)   ; \e(Jh\e(B
+    (ipa               #x51)   ; \e.0\eNQ
+    (latin-viscii      #x68)   ; h
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I")
+    (ucs               . #x0069)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0049)
+    (->titlecase       #x0049)
+    (ascii             #x69)   ; i
+    (latin-jisx0201    #x69)   ; \e(Ji\e(B
+    (ipa               #x20)   ; \e.0\e
+    (latin-viscii      #x69)   ; i
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER J")
+    (ucs               . #x006A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x004A)
+    (->titlecase       #x004A)
+    (ascii             #x6A)   ; j
+    (latin-jisx0201    #x6A)   ; \e(Jj\e(B
+    (ipa               #x59)   ; \e.0\eNY
+    (latin-viscii      #x6A)   ; j
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER K")
+    (ucs               . #x006B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x004B)
+    (->titlecase       #x004B)
+    (ascii             #x6B)   ; k
+    (latin-jisx0201    #x6B)   ; \e(Jk\e(B
+    (ipa               #x44)   ; \e.0\eND
+    (latin-viscii      #x6B)   ; k
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L")
+    (ucs               . #x006C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x004C)
+    (->titlecase       #x004C)
+    (ascii             #x6C)   ; l
+    (latin-jisx0201    #x6C)   ; \e(Jl\e(B
+    (ipa               #x5A)   ; \e.0\eNZ
+    (latin-viscii      #x6C)   ; l
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER M")
+    (ucs               . #x006D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x004D)
+    (->titlecase       #x004D)
+    (ascii             #x6D)   ; m
+    (latin-jisx0201    #x6D)   ; \e(Jm\e(B
+    (ipa               #x52)   ; \e.0\eNR
+    (latin-viscii      #x6D)   ; m
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N")
+    (ucs               . #x006E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x004E)
+    (->titlecase       #x004E)
+    (ascii             #x6E)   ; n
+    (latin-jisx0201    #x6E)   ; \e(Jn\e(B
+    (ipa               #x53)   ; \e.0\eNS
+    (latin-viscii      #x6E)   ; n
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O")
+    (ucs               . #x006F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x004F)
+    (->titlecase       #x004F)
+    (ascii             #x6F)   ; o
+    (latin-jisx0201    #x6F)   ; \e(Jo\e(B
+    (ipa               #x36)   ; \e.0\eN6
+    (latin-viscii      #x6F)   ; o
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER P")
+    (ucs               . #x0070)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0050)
+    (->titlecase       #x0050)
+    (ascii             #x70)   ; p
+    (latin-jisx0201    #x70)   ; \e(Jp\e(B
+    (ipa               #x40)   ; \e.0\eN@
+    (latin-viscii      #x70)   ; p
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Q")
+    (ucs               . #x0071)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0051)
+    (->titlecase       #x0051)
+    (ascii             #x71)   ; q
+    (latin-jisx0201    #x71)   ; \e(Jq\e(B
+    (latin-viscii      #x71)   ; q
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R")
+    (ucs               . #x0072)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0052)
+    (->titlecase       #x0052)
+    (ascii             #x72)   ; r
+    (latin-jisx0201    #x72)   ; \e(Jr\e(B
+    (ipa               #x56)   ; \e.0\eNV
+    (latin-viscii      #x72)   ; r
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S")
+    (ucs               . #x0073)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0053)
+    (->titlecase       #x0053)
+    (ascii             #x73)   ; s
+    (latin-jisx0201    #x73)   ; \e(Js\e(B
+    (ipa               #x4A)   ; \e.0\eNJ
+    (latin-viscii      #x73)   ; s
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T")
+    (ucs               . #x0074)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0054)
+    (->titlecase       #x0054)
+    (ascii             #x74)   ; t
+    (latin-jisx0201    #x74)   ; \e(Jt\e(B
+    (ipa               #x42)   ; \e.0\eNB
+    (latin-viscii      #x74)   ; t
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U")
+    (ucs               . #x0075)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0055)
+    (->titlecase       #x0055)
+    (ascii             #x75)   ; u
+    (latin-jisx0201    #x75)   ; \e(Ju\e(B
+    (ipa               #x34)   ; \e.0\eN4
+    (latin-viscii      #x75)   ; u
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER V")
+    (ucs               . #x0076)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0056)
+    (->titlecase       #x0056)
+    (ascii             #x76)   ; v
+    (latin-jisx0201    #x76)   ; \e(Jv\e(B
+    (ipa               #x47)   ; \e.0\eNG
+    (latin-viscii      #x76)   ; v
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER W")
+    (ucs               . #x0077)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0057)
+    (->titlecase       #x0057)
+    (ascii             #x77)   ; w
+    (latin-jisx0201    #x77)   ; \e(Jw\e(B
+    (ipa               #x5E)   ; \e.0\eN^
+    (latin-viscii      #x77)   ; w
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER X")
+    (ucs               . #x0078)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0058)
+    (->titlecase       #x0058)
+    (ascii             #x78)   ; x
+    (latin-jisx0201    #x78)   ; \e(Jx\e(B
+    (ipa               #x4F)   ; \e.0\eNO
+    (latin-viscii      #x78)   ; x
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y")
+    (ucs               . #x0079)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0059)
+    (->titlecase       #x0059)
+    (ascii             #x79)   ; y
+    (latin-jisx0201    #x79)   ; \e(Jy\e(B
+    (ipa               #x2D)   ; \e.0\eN-
+    (latin-viscii      #x79)   ; y
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z")
+    (ucs               . #x007A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x005A)
+    (->titlecase       #x005A)
+    (ascii             #x7A)   ; z
+    (latin-jisx0201    #x7A)   ; \e(Jz\e(B
+    (ipa               #x4B)   ; \e.0\eNK
+    (latin-viscii      #x7A)   ; z
+    ))
+(define-char
+  '((name              . "LEFT CURLY BRACKET")
+    (ucs               . #x007B)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (ascii             #x7B)   ; {
+    (latin-jisx0201    #x7B)   ; \e(J{\e(B
+    (latin-viscii      #x7B)   ; {
+    ))
+(define-char
+  '((name              . "VERTICAL LINE")
+    (ucs               . #x007C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x7C)   ; |
+    (latin-jisx0201    #x7C)   ; \e(J|\e(B
+    (latin-viscii      #x7C)   ; |
+    ))
+(define-char
+  '((name              . "RIGHT CURLY BRACKET")
+    (ucs               . #x007D)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (ascii             #x7D)   ; }
+    (latin-jisx0201    #x7D)   ; \e(J}\e(B
+    (latin-viscii      #x7D)   ; }
+    ))
+(define-char
+  '((name              . "TILDE")
+    (ucs               . #x007E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ascii             #x7E)   ; ~
+    (latin-viscii      #x7E)   ; ~
+    ))
+(define-char
+  '((ucs               . #x007F)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    (ascii             #x7F)
+    (latin-viscii      #x7F)
+    ))
diff --git a/lisp/utf-2000/u00080-C1.el b/lisp/utf-2000/u00080-C1.el
new file mode 100644 (file)
index 0000000..806e965
--- /dev/null
@@ -0,0 +1,192 @@
+(define-char
+  '((ucs               . #x0080)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0081)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0082)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0083)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0084)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0085)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "B")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0086)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0087)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0088)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0089)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x008A)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x008B)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x008C)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x008D)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x008E)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x008F)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0090)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0091)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0092)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0093)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0094)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0095)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0096)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0097)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0098)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x0099)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x009A)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x009B)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x009C)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x009D)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x009E)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((ucs               . #x009F)
+    (general-category  other control) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u000A0-Latin-1-Supplement.el b/lisp/utf-2000/u000A0-Latin-1-Supplement.el
new file mode 100755 (executable)
index 0000000..e701f1b
--- /dev/null
@@ -0,0 +1,2330 @@
+(define-char
+  '((name              . "NO-BREAK SPACE")
+    (ucs               . #x00A0)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "CS")
+    (mirrored          . nil)
+    (->decomposition   noBreak #x0020)
+    (latin-iso8859-1   #xA0)   ; \e.A\e
+    (latin-iso8859-2   #xA0)   ; \e.B\e
+    (latin-iso8859-3   #xA0)   ; \e.C\e
+    (latin-iso8859-4   #xA0)   ; \e.D\e
+    (greek-iso8859-7   #xA0)   ; \e.F\e
+    (hebrew-iso8859-8  #xA0)   ; \e[2]\e.H\e\e[0]
+    (cyrillic-iso8859-5 #xA0)  ; \e.L\e
+    (latin-iso8859-9   #xA0)   ; \e.M\e
+    ))
+(define-char
+  '((name              . "INVERTED EXCLAMATION MARK")
+    (ucs               . #x00A1)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xA1)   ; \e.A\eN!
+    (latin-iso8859-9   #xA1)   ; \e.M\eN!
+    ))
+(define-char
+  '((name              . "FULLWIDTH INVERTED EXCLAMATION MARK")
+    (->ucs             . #x00A1)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00A1)
+    (korean-ksc5601    #x22 #x2E)      ; \e$(D"B\e(B
+    (japanese-jisx0212 #x22 #x42)      ; \e$(D"B\e(B
+    ))
+(define-char
+  '((name              . "CENT SIGN")
+    (ucs               . #x00A2)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xA2)   ; \e.A\eN"
+    (hebrew-iso8859-8  #xA2)   ; \e[2]\e.H\eN"\e[0]
+    (latin-iso8859-9   #xA2)   ; \e.M\eN"
+    ))
+(define-char
+  '((name              . "POUND SIGN")
+    (ucs               . #x00A3)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xA3)   ; \e.A\eN#
+    (latin-iso8859-3   #xA3)   ; \e.C\eN#
+    (greek-iso8859-7   #xA3)   ; \e.F\eN#
+    (hebrew-iso8859-8  #xA3)   ; \e[2]\e.H\eN#\e[0]
+    (latin-iso8859-9   #xA3)   ; \e.M\eN#
+    ))
+(define-char
+  '((name              . "CURRENCY SIGN")
+    (ucs               . #x00A4)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xA4)   ; \e.A\eN$
+    (latin-iso8859-2   #xA4)   ; \e.B\eN$
+    (latin-iso8859-3   #xA4)   ; \e.C\eN$
+    (latin-iso8859-4   #xA4)   ; \e.D\eN$
+    (hebrew-iso8859-8  #xA4)   ; \e[2]\e.H\eN$\e[0]
+    (latin-iso8859-9   #xA4)   ; \e.M\eN$
+    ))
+(define-char
+  '((name              . "FULLWIDTH CURRENCY SIGN")
+    (->ucs             . #x00A4)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   wide #x00A4)
+    (chinese-gb2312    #x21 #x68)      ; \e$(D"p\e(B
+    (korean-ksc5601    #x22 #x34)      ; \e$(C"4\e(B
+    (japanese-jisx0212 #x22 #x70)      ; \e$(D"p\e(B
+    ))
+(define-char
+  '((name              . "YEN SIGN")
+    (ucs               . #x00A5)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (latin-jisx0201    #x5C)   ; \e(J\\e(B
+    (latin-iso8859-1   #xA5)   ; \e.A\eN%
+    (hebrew-iso8859-8  #xA5)   ; \e[2]\e.H\eN%\e[0]
+    (latin-iso8859-9   #xA5)   ; \e.M\eN%
+    ))
+(define-char
+  '((name              . "BROKEN BAR")
+    (ucs               . #x00A6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xA6)   ; \e.A\eN&
+    (greek-iso8859-7   #xA6)   ; \e.F\eN&
+    (hebrew-iso8859-8  #xA6)   ; \e[2]\e.H\eN&\e[0]
+    (latin-iso8859-9   #xA6)   ; \e.M\eN&
+    ))
+(define-char
+  '((name              . "SECTION SIGN")
+    (ucs               . #x00A7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xA7)   ; \e.A\eN'
+    (latin-iso8859-2   #xA7)   ; \e.B\eN'
+    (latin-iso8859-3   #xA7)   ; \e.C\eN'
+    (latin-iso8859-4   #xA7)   ; \e.D\eN'
+    (greek-iso8859-7   #xA7)   ; \e.F\eN'
+    (hebrew-iso8859-8  #xA7)   ; \e[2]\e.H\eN'\e[0]
+    (cyrillic-iso8859-5 #xFD)  ; \e.L\eN}
+    (latin-iso8859-9   #xA7)   ; \e.M\eN'
+    ))
+(define-char
+  '((name              . "FULLWIDTH SECTION SIGN")
+    (->ucs             . #x00A7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00A7)
+    (japanese-jisx0208-1978    #x21 #x78)      ; \e$B!x\e(B
+    (chinese-gb2312            #x21 #x6C)      ; \e$A!l\e(B
+    (japanese-jisx0208         #x21 #x78)      ; \e$B!x\e(B
+    (korean-ksc5601            #x21 #x57)      ; \e$(C!W\e(B
+    (chinese-cns11643-1                #x21 #x70)      ; \e$(G!p\e(B
+    ))
+(define-char
+  '((name              . "DIAERESIS")
+    (ucs               . #x00A8)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0308)
+    (latin-iso8859-1   #xA8)   ; \e.A\eN(
+    (latin-iso8859-2   #xA8)   ; \e.B\eN(
+    (latin-iso8859-3   #xA8)   ; \e.C\eN(
+    (latin-iso8859-4   #xA8)   ; \e.D\eN(
+    (greek-iso8859-7   #xA8)   ; \e.F\eN(
+    (hebrew-iso8859-8  #xA8)   ; \e[2]\e.H\eN(\e[0]
+    (latin-iso8859-9   #xA8)   ; \e.M\eN(
+    ))
+(define-char
+  '((name              . "FULLWIDTH DIAERESIS")
+    (->ucs             . #x00A8)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00A8)
+    (japanese-jisx0208-1978    #x21 #x2F)      ; \e$B!/\e(B
+    (chinese-gb2312            #x21 #x27)      ; \e$A!'\e(B
+    (japanese-jisx0208         #x21 #x2F)      ; \e$B!/\e(B
+    (korean-ksc5601            #x21 #x27)      ; \e$(C!'\e(B
+    ))
+(define-char
+  '((name              . "COPYRIGHT SIGN")
+    (ucs               . #x00A9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xA9)   ; \e.A\eN)
+    (greek-iso8859-7   #xA9)   ; \e.F\eN)
+    (hebrew-iso8859-8  #xA9)   ; \e[2]\e.H\eN)\e[0]
+    (latin-iso8859-9   #xA9)   ; \e.M\eN)
+    ))
+(define-char
+  '((name              . "FULLWIDTH COPYRIGHT SIGN")
+    (->ucs             . #x00A9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00A9)
+    (japanese-jisx0212 #x22 #x6D)      ; \e$(D"m\e(B
+    ))
+(define-char
+  '((name              . "FEMININE ORDINAL INDICATOR")
+    (ucs               . #x00AA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0061)
+    (latin-iso8859-1   #xAA)   ; \e.A\eN*
+    (latin-iso8859-9   #xAA)   ; \e.M\eN*
+    ))
+(define-char
+  '((name              . "FULLWIDTH FEMININE ORDINAL INDICATOR")
+    (->ucs             . #x00AA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00AA)
+    (korean-ksc5601    #x28 #x23)      ; \e$(D"l\e(B
+    (japanese-jisx0212 #x22 #x6C)      ; \e$(D"l\e(B
+    ))
+(define-char
+  '((name              . "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK")
+    (ucs               . #x00AB)
+    (general-category  punctuation initial-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (iso-10646-comment . "*")
+    (latin-iso8859-1   #xAB)   ; \e.A\eN+
+    (greek-iso8859-7   #xAB)   ; \e.F\eN+
+    (hebrew-iso8859-8  #xAB)   ; \e[2]\e.H\eN+\e[0]
+    (latin-iso8859-9   #xAB)   ; \e.M\eN+
+    ))
+(define-char
+  '((name              . "NOT SIGN")
+    (ucs               . #x00AC)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xAC)   ; \e.A\eN,
+    (greek-iso8859-7   #xAC)   ; \e.F\eN,
+    (hebrew-iso8859-8  #xAC)   ; \e[2]\e.H\eN,\e[0]
+    (latin-iso8859-9   #xAC)   ; \e.M\eN,
+    ))
+(define-char
+  '((name              . "SOFT HYPHEN")
+    (ucs               . #x00AD)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xAD)   ; \e.A\eN-
+    (latin-iso8859-2   #xAD)   ; \e.B\eN-
+    (latin-iso8859-3   #xAD)   ; \e.C\eN-
+    (latin-iso8859-4   #xAD)   ; \e.D\eN-
+    (greek-iso8859-7   #xAD)   ; \e.F\eN-
+    (hebrew-iso8859-8  #xAD)   ; \e[2]\e.H\eN-\e[0]
+    (cyrillic-iso8859-5 #xAD)  ; \e.L\eN-
+    (latin-iso8859-9   #xAD)   ; \e.M\eN-
+    ))
+(define-char
+  '((name              . "FULLWIDTH SOFT HYPHEN")
+    (->ucs             . #x00AD)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00AD)
+    (korean-ksc5601    #x21 #x29)      ; \e$(C!)\e(B
+    ))
+(define-char
+  '((name              . "REGISTERED SIGN")
+    (ucs               . #x00AE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xAE)   ; \e.A\eN.
+    (hebrew-iso8859-8  #xAE)   ; \e[2]\e.H\eN.\e[0]
+    (latin-iso8859-9   #xAE)   ; \e.M\eN.
+    ))
+(define-char
+  '((name              . "FULLWIDTH REGISTERED SIGN")
+    (->ucs             . #x00AE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00AE)
+    (japanese-jisx0212 #x22 #x6E)      ; \e$(D"n\e(B
+    ))
+(define-char
+  '((name              . "MACRON")
+    (ucs               . #x00AF)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0304)
+    (latin-iso8859-1   #xAF)   ; \e.A\eN/
+    (latin-iso8859-4   #xAF)   ; \e.D\eN/
+    (latin-iso8859-9   #xAF)   ; \e.M\eN/
+    ))
+(define-char
+  '((name              . "DEGREE SIGN")
+    (ucs               . #x00B0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xB0)   ; \e.A\eN0
+    (latin-iso8859-2   #xB0)   ; \e.B\eN0
+    (latin-iso8859-3   #xB0)   ; \e.C\eN0
+    (latin-iso8859-4   #xB0)   ; \e.D\eN0
+    (greek-iso8859-7   #xB0)   ; \e.F\eN0
+    (hebrew-iso8859-8  #xB0)   ; \e[2]\e.H\eN0\e[0]
+    (latin-iso8859-9   #xB0)   ; \e.M\eN0
+    ))
+(define-char
+  '((name              . "FULLWIDTH DEGREE SIGN")
+    (->ucs             . #x00B0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   wide #x00B0)
+    (japanese-jisx0208-1978    #x21 #x6B)      ; \e$B!k\e(B
+    (chinese-gb2312            #x21 #x63)      ; \e$A!c\e(B
+    (japanese-jisx0208         #x21 #x6B)      ; \e$B!k\e(B
+    (korean-ksc5601            #x21 #x46)      ; \e$(C!F\e(B
+    (chinese-cns11643-1                #x22 #x78)      ; \e$(G"x\e(B
+    ))
+(define-char
+  '((name              . "PLUS-MINUS SIGN")
+    (ucs               . #x00B1)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xB1)   ; \e.A\eN1
+    (greek-iso8859-7   #xB1)   ; \e.F\eN1
+    (hebrew-iso8859-8  #xB1)   ; \e[2]\e.H\eN1\e[0]
+    (latin-iso8859-9   #xB1)   ; \e.M\eN1
+    ))
+(define-char
+  '((name              . "FULLWIDTH PLUS-MINUS SIGN")
+    (->ucs             . #x00B1)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   wide #x00B1)
+    (japanese-jisx0208-1978    #x21 #x5E)      ; \e$B!^\e(B
+    (chinese-gb2312            #x21 #x40)      ; \e$A!@\e(B
+    (japanese-jisx0208         #x21 #x5E)      ; \e$B!^\e(B
+    (korean-ksc5601            #x21 #x3E)      ; \e$(C!>\e(B
+    (chinese-cns11643-1                #x22 #x34)      ; \e$(G"4\e(B
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT TWO")
+    (ucs               . #x00B2)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    (->decomposition   super #x0032)
+    (latin-iso8859-1   #xB2)   ; \e.A\eN2
+    (latin-iso8859-3   #xB2)   ; \e.C\eN2
+    (greek-iso8859-7   #xB2)   ; \e.F\eN2
+    (hebrew-iso8859-8  #xB2)   ; \e[2]\e.H\eN2\e[0]
+    (latin-iso8859-9   #xB2)   ; \e.M\eN2
+    ))
+(define-char
+  '((name              . "FULLWIDTH SUPERSCRIPT TWO")
+    (->ucs             . #x00B2)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    (->decomposition   wide #x00B2)
+    (korean-ksc5601    #x29 #x77)      ; \e$(C)w\e(B
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT THREE")
+    (ucs               . #x00B3)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    (->decomposition   super #x0033)
+    (latin-iso8859-1   #xB3)   ; \e.A\eN3
+    (latin-iso8859-3   #xB3)   ; \e.C\eN3
+    (greek-iso8859-7   #xB3)   ; \e.F\eN3
+    (hebrew-iso8859-8  #xB3)   ; \e[2]\e.H\eN3\e[0]
+    (latin-iso8859-9   #xB3)   ; \e.M\eN3
+    ))
+(define-char
+  '((name              . "FULLWIDTH SUPERSCRIPT THREE")
+    (->ucs             . #x00B3)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    (->decomposition   wide #x00B3)
+    (korean-ksc5601    #x29 #x78)      ; \e$(C)x\e(B
+    ))
+(define-char
+  '((name              . "ACUTE ACCENT")
+    (ucs               . #x00B4)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0301)
+    (latin-iso8859-1   #xB4)   ; \e.A\eN4
+    (latin-iso8859-2   #xB4)   ; \e.B\eN4
+    (latin-iso8859-3   #xB4)   ; \e.C\eN4
+    (latin-iso8859-4   #xB4)   ; \e.D\eN4
+    (hebrew-iso8859-8  #xB4)   ; \e[2]\e.H\eN4\e[0]
+    (latin-iso8859-9   #xB4)   ; \e.M\eN4
+    ))
+(define-char
+  '((name              . "FULLWIDTH ACUTE ACCENT")
+    (->ucs             . #x00B4)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00B4)
+    (japanese-jisx0208-1978    #x21 #x2D)      ; \e$B!-\e(B
+    (japanese-jisx0208         #x21 #x2D)      ; \e$B!-\e(B
+    (korean-ksc5601            #x22 #x25)      ; \e$(C"%\e(B
+    ))
+(define-char
+  '((name              . "MICRO SIGN")
+    (ucs               . #x00B5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x03BC)
+    (->uppercase       #x039C)
+    (->titlecase       #x039C)
+    (latin-iso8859-1   #xB5)   ; \e.A\eN5
+    (latin-iso8859-3   #xB5)   ; \e.C\eN5
+    (hebrew-iso8859-8  #xB5)   ; \e[2]\e.H\eN5\e[0]
+    (latin-iso8859-9   #xB5)   ; \e.M\eN5
+    ))
+(define-char
+  '((name              . "PILCROW SIGN")
+    (ucs               . #x00B6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xB6)   ; \e.A\eN6
+    (hebrew-iso8859-8  #xB6)   ; \e[2]\e.H\eN6\e[0]
+    (latin-iso8859-9   #xB6)   ; \e.M\eN6
+    ))
+(define-char
+  '((name              . "FULLWIDTH PILCROW SIGN")
+    (->ucs             . #x00B6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00B6)
+    (japanese-jisx0208 #x22 #x79)      ; \e$B"y\e(B
+    (korean-ksc5601    #x22 #x52)      ; \e$(C"R\e(B
+    ))
+(define-char
+  '((name              . "MIDDLE DOT")
+    (ucs               . #x00B7)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xB7)   ; \e.A\eN7
+    (latin-iso8859-3   #xB7)   ; \e.C\eN7
+    (greek-iso8859-7   #xB7)   ; \e.F\eN7
+    (hebrew-iso8859-8  #xB7)   ; \e[2]\e.H\eN7\e[0]
+    (latin-iso8859-9   #xB7)   ; \e.M\eN7
+    ))
+(define-char
+  '((name              . "FULLWIDTH MIDDLE DOT")
+    (->ucs             . #x00B7)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00B7)
+    (korean-ksc5601    #x21 #x24)      ; \e$(C!$\e(B
+    (chinese-cns11643-1 #x21 #x26)     ; \e$(G!&\e(B
+    ))
+(define-char
+  '((name              . "CEDILLA")
+    (ucs               . #x00B8)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0327)
+    (latin-iso8859-1   #xB8)   ; \e.A\eN8
+    (latin-iso8859-2   #xB8)   ; \e.B\eN8
+    (latin-iso8859-3   #xB8)   ; \e.C\eN8
+    (latin-iso8859-4   #xB8)   ; \e.D\eN8
+    (hebrew-iso8859-8  #xB8)   ; \e[2]\e.H\eN8\e[0]
+    (latin-iso8859-9   #xB8)   ; \e.M\eN8
+    ))
+(define-char
+  '((name              . "FULLWIDTH CEDILLA")
+    (->ucs             . #x00B8)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00B8)
+    (korean-ksc5601    #x22 #x2C)      ; \e$(D"1\e(B
+    (japanese-jisx0212 #x22 #x31)      ; \e$(D"1\e(B
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT ONE")
+    (ucs               . #x00B9)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    (->decomposition   super #x0031)
+    (latin-iso8859-1   #xB9)   ; \e.A\eN9
+    (hebrew-iso8859-8  #xB9)   ; \e[2]\e.H\eN9\e[0]
+    (latin-iso8859-9   #xB9)   ; \e.M\eN9
+    ))
+(define-char
+  '((name              . "FULLWIDTH SUPERSCRIPT ONE")
+    (->ucs             . #x00B9)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    (->decomposition   wide #x00B9)
+    (korean-ksc5601    #x29 #x76)      ; \e$(C)v\e(B
+    ))
+(define-char
+  '((name              . "MASCULINE ORDINAL INDICATOR")
+    (ucs               . #x00BA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x006F)
+    (latin-iso8859-1   #xBA)   ; \e.A\eN:
+    (latin-iso8859-9   #xBA)   ; \e.M\eN:
+    ))
+(define-char
+  '((name              . "FULLWIDTH MASCULINE ORDINAL INDICATOR")
+    (->ucs             . #x00BA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00BA)
+    (korean-ksc5601    #x28 #x2C)      ; \e$(D"k\e(B
+    (japanese-jisx0212 #x22 #x6B)      ; \e$(D"k\e(B
+    ))
+(define-char
+  '((name              . "RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK")
+    (ucs               . #x00BB)
+    (general-category  punctuation final-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (iso-10646-comment . "*")
+    (latin-iso8859-1   #xBB)   ; \e.A\eN;
+    (greek-iso8859-7   #xBB)   ; \e.F\eN;
+    (hebrew-iso8859-8  #xBB)   ; \e[2]\e.H\eN;\e[0]
+    (latin-iso8859-9   #xBB)   ; \e.M\eN;
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION ONE QUARTER")
+    (ucs               . #x00BC)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 1/4)
+    (->decomposition   fraction #x0031 #x2044 #x0034)
+    (latin-iso8859-1   #xBC)   ; \e.A\eN<
+    (hebrew-iso8859-8  #xBC)   ; \e[2]\e.H\eN<\e[0]
+    (latin-iso8859-9   #xBC)   ; \e.M\eN<
+    ))
+(define-char
+  '((name              . "FULLWIDTH VULGAR FRACTION ONE QUARTER")
+    (->ucs             . #x00BC)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 1/4)
+    (->decomposition   wide #x00BC)
+    (korean-ksc5601    #x28 #x79)      ; \e$(C(y\e(B
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION ONE HALF")
+    (ucs               . #x00BD)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 1/2)
+    (->decomposition   fraction #x0031 #x2044 #x0032)
+    (latin-iso8859-1   #xBD)   ; \e.A\eN=
+    (latin-iso8859-3   #xBD)   ; \e.C\eN=
+    (greek-iso8859-7   #xBD)   ; \e.F\eN=
+    (hebrew-iso8859-8  #xBD)   ; \e[2]\e.H\eN=\e[0]
+    (latin-iso8859-9   #xBD)   ; \e.M\eN=
+    ))
+(define-char
+  '((name              . "FULLWIDTH VULGAR FRACTION ONE HALF")
+    (->ucs             . #x00BD)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 1/2)
+    (->decomposition   wide #x00BD)
+    (korean-ksc5601    #x28 #x76)      ; \e$(C(v\e(B
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION THREE QUARTERS")
+    (ucs               . #x00BE)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 3/4)
+    (->decomposition   fraction #x0033 #x2044 #x0034)
+    (latin-iso8859-1   #xBE)   ; \e.A\eN>
+    (hebrew-iso8859-8  #xBE)   ; \e[2]\e.H\eN>\e[0]
+    (latin-iso8859-9   #xBE)   ; \e.M\eN>
+    ))
+(define-char
+  '((name              . "FULLWIDTH VULGAR FRACTION THREE QUARTERS")
+    (->ucs             . #x00BE)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 3/4)
+    (->decomposition   wide #x00BE)
+    (korean-ksc5601    #x28 #x7A)      ; \e$(C(z\e(B
+    ))
+(define-char
+  '((name              . "INVERTED QUESTION MARK")
+    (ucs               . #x00BF)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xBF)   ; \e.A\eN?
+    (latin-iso8859-9   #xBF)   ; \e.M\eN?
+    ))
+(define-char
+  '((name              . "FULLWIDTH INVERTED QUESTION MARK")
+    (->ucs             . #x00BF)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00BF)
+    (korean-ksc5601    #x22 #x2F)      ; \e$(D"D\e(B
+    (japanese-jisx0212 #x22 #x44)      ; \e$(D"D\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH GRAVE")
+    (ucs               . #x00C0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0300)
+    (->lowercase       #x00E0)
+    (latin-iso8859-1   #xC0)   ; \e.A\eN@
+    (latin-iso8859-3   #xC0)   ; \e.C\eN@
+    (latin-iso8859-9   #xC0)   ; \e.M\eN@
+    (latin-viscii-upper #xE0)  ; \e.A\eN@
+    (latin-viscii      #xC0)   ; \e.A\eN@
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER A WITH GRAVE")
+    (->ucs             . #x00C0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00C0)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH GRAVE")))
+    (japanese-jisx0212 #x2A #x22)      ; \e$(D*"\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH ACUTE")
+    (ucs               . #x00C1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0301)
+    (->lowercase       #x00E1)
+    (latin-iso8859-1   #xC1)   ; \e.A\eNA
+    (latin-iso8859-2   #xC1)   ; \e.B\eNA
+    (latin-iso8859-3   #xC1)   ; \e.C\eNA
+    (latin-iso8859-4   #xC1)   ; \e.D\eNA
+    (latin-iso8859-9   #xC1)   ; \e.M\eNA
+    (latin-viscii-upper #xE1)  ; \e.A\eNA
+    (latin-viscii      #xC1)   ; \e.A\eNA
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER A WITH ACUTE")
+    (->ucs             . #x00C1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00C1)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x21)      ; \e$(D*!\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH CIRCUMFLEX")
+    (ucs               . #x00C2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0302)
+    (->lowercase       #x00E2)
+    (latin-iso8859-1   #xC2)   ; \e.A\eNB
+    (latin-iso8859-2   #xC2)   ; \e.B\eNB
+    (latin-iso8859-3   #xC2)   ; \e.C\eNB
+    (latin-iso8859-4   #xC2)   ; \e.D\eNB
+    (latin-iso8859-9   #xC2)   ; \e.M\eNB
+    (latin-viscii-upper #xE2)  ; \e.A\eNB
+    (latin-viscii      #xC2)   ; \e.A\eNB
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH CIRCUMFLEX")
+    (->ucs             . #x00C2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00C2)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x24)      ; \e$(D*$\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH TILDE")
+    (ucs               . #x00C3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0303)
+    (->lowercase       #x00E3)
+    (latin-iso8859-1   #xC3)   ; \e.A\eNC
+    (latin-iso8859-4   #xC3)   ; \e.D\eNC
+    (latin-iso8859-9   #xC3)   ; \e.M\eNC
+    (latin-viscii-upper #xE3)  ; \e.A\eNC
+    (latin-viscii      #xC3)   ; \e.A\eNC
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER A WITH TILDE")
+    (->ucs             . #x00C3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00C3)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH TILDE")))
+    (japanese-jisx0212 #x2A #x2A)      ; \e$(D**\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH DIAERESIS")
+    (ucs               . #x00C4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0308)
+    (->lowercase       #x00E4)
+    (latin-iso8859-1   #xC4)   ; \e.A\eND
+    (latin-iso8859-2   #xC4)   ; \e.B\eND
+    (latin-iso8859-3   #xC4)   ; \e.C\eND
+    (latin-iso8859-4   #xC4)   ; \e.D\eND
+    (latin-iso8859-9   #xC4)   ; \e.M\eND
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER A WITH DIAERESIS")
+    (->ucs             . #x00C4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00C4)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH DIAERESIS")))
+    (japanese-jisx0212 #x2A #x23)      ; \e$(D*#\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH RING ABOVE")
+    (ucs               . #x00C5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x030A)
+    (->lowercase       #x00E5)
+    (latin-iso8859-1   #xC5)   ; \e.A\eNE
+    (latin-iso8859-4   #xC5)   ; \e.D\eNE
+    (latin-iso8859-9   #xC5)   ; \e.M\eNE
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH RING ABOVE")
+    (->ucs             . #x00C5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00C5)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH RING ABOVE")))
+    (japanese-jisx0212 #x2A #x29)      ; \e$(D*)\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER AE")
+    (ucs               . #x00C6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ash *")
+    (->lowercase       #x00E6)
+    (latin-iso8859-1   #xC6)   ; \e.A\eNF
+    (latin-iso8859-4   #xC6)   ; \e.D\eNF
+    (latin-iso8859-9   #xC6)   ; \e.M\eNF
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER AE")
+    (->ucs             . #x00C6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER AE")))
+    (korean-ksc5601    #x28 #x21)      ; \e$(D)!\e(B
+    (japanese-jisx0212 #x29 #x21)      ; \e$(D)!\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER C WITH CEDILLA")
+    (ucs               . #x00C7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0043 #x0327)
+    (->lowercase       #x00E7)
+    (latin-iso8859-1   #xC7)   ; \e.A\eNG
+    (latin-iso8859-2   #xC7)   ; \e.B\eNG
+    (latin-iso8859-3   #xC7)   ; \e.C\eNG
+    (latin-iso8859-9   #xC7)   ; \e.M\eNG
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER C WITH CEDILLA")
+    (->ucs             . #x00C7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00C7)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER C WITH CEDILLA")))
+    (japanese-jisx0212 #x2A #x2E)      ; \e$(D*.\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH GRAVE")
+    (ucs               . #x00C8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0300)
+    (->lowercase       #x00E8)
+    (latin-iso8859-1   #xC8)   ; \e.A\eNH
+    (latin-iso8859-3   #xC8)   ; \e.C\eNH
+    (latin-iso8859-9   #xC8)   ; \e.M\eNH
+    (latin-viscii-upper #xE8)  ; \e.A\eNH
+    (latin-viscii      #xC8)   ; \e.A\eNH
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER E WITH GRAVE")
+    (->ucs             . #x00C8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00C8)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER E WITH GRAVE")))
+    (japanese-jisx0212 #x2A #x32)      ; \e$(D*2\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH ACUTE")
+    (ucs               . #x00C9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0301)
+    (->lowercase       #x00E9)
+    (latin-iso8859-1   #xC9)   ; \e.A\eNI
+    (latin-iso8859-2   #xC9)   ; \e.B\eNI
+    (latin-iso8859-3   #xC9)   ; \e.C\eNI
+    (latin-iso8859-4   #xC9)   ; \e.D\eNI
+    (latin-iso8859-9   #xC9)   ; \e.M\eNI
+    (latin-viscii-upper #xE9)  ; \e.A\eNI
+    (latin-viscii      #xC9)   ; \e.A\eNI
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER E WITH ACUTE")
+    (->ucs             . #x00C9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00C9)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER E WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x31)      ; \e$(D*1\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH CIRCUMFLEX")
+    (ucs               . #x00CA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0302)
+    (->lowercase       #x00EA)
+    (latin-iso8859-1   #xCA)   ; \e.A\eNJ
+    (latin-iso8859-3   #xCA)   ; \e.C\eNJ
+    (latin-iso8859-9   #xCA)   ; \e.M\eNJ
+    (latin-viscii-upper #xEA)  ; \e.A\eNJ
+    (latin-viscii      #xCA)   ; \e.A\eNJ
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH CIRCUMFLEX")
+    (->ucs             . #x00CA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00CA)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER E WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x34)      ; \e$(D*4\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH DIAERESIS")
+    (ucs               . #x00CB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0308)
+    (->lowercase       #x00EB)
+    (latin-iso8859-1   #xCB)   ; \e.A\eNK
+    (latin-iso8859-2   #xCB)   ; \e.B\eNK
+    (latin-iso8859-3   #xCB)   ; \e.C\eNK
+    (latin-iso8859-4   #xCB)   ; \e.D\eNK
+    (latin-iso8859-9   #xCB)   ; \e.M\eNK
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER E WITH DIAERESIS")
+    (->ucs             . #x00CB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00CB)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER E WITH DIAERESIS")))
+    (japanese-jisx0212 #x2A #x33)      ; \e$(D*3\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH GRAVE")
+    (ucs               . #x00CC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0300)
+    (->lowercase       #x00EC)
+    (latin-iso8859-1   #xCC)   ; \e.A\eNL
+    (latin-iso8859-3   #xCC)   ; \e.C\eNL
+    (latin-iso8859-9   #xCC)   ; \e.M\eNL
+    (latin-viscii-upper #xEC)  ; \e.A\eNL
+    (latin-viscii      #xCC)   ; \e.A\eNL
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER I WITH GRAVE")
+    (->ucs             . #x00CC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00CC)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH GRAVE")))
+    (japanese-jisx0212 #x2A #x40)      ; \e$(D*@\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH ACUTE")
+    (ucs               . #x00CD)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0301)
+    (->lowercase       #x00ED)
+    (latin-iso8859-1   #xCD)   ; \e.A\eNM
+    (latin-iso8859-2   #xCD)   ; \e.B\eNM
+    (latin-iso8859-3   #xCD)   ; \e.C\eNM
+    (latin-iso8859-4   #xCD)   ; \e.D\eNM
+    (latin-iso8859-9   #xCD)   ; \e.M\eNM
+    (latin-viscii-upper #xED)  ; \e.A\eNM
+    (latin-viscii      #xCD)   ; \e.A\eNM
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER I WITH ACUTE")
+    (->ucs             . #x00CD)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00CD)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x3F)      ; \e$(D*?\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH CIRCUMFLEX")
+    (ucs               . #x00CE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0302)
+    (->lowercase       #x00EE)
+    (latin-iso8859-1   #xCE)   ; \e.A\eNN
+    (latin-iso8859-2   #xCE)   ; \e.B\eNN
+    (latin-iso8859-3   #xCE)   ; \e.C\eNN
+    (latin-iso8859-4   #xCE)   ; \e.D\eNN
+    (latin-iso8859-9   #xCE)   ; \e.M\eNN
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH CIRCUMFLEX")
+    (->ucs             . #x00CE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00CE)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x42)      ; \e$(D*B\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH DIAERESIS")
+    (ucs               . #x00CF)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0308)
+    (->lowercase       #x00EF)
+    (latin-iso8859-1   #xCF)   ; \e.A\eNO
+    (latin-iso8859-3   #xCF)   ; \e.C\eNO
+    (latin-iso8859-9   #xCF)   ; \e.M\eNO
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER I WITH DIAERESIS")
+    (->ucs             . #x00CF)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00CF)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH DIAERESIS")))
+    (japanese-jisx0212 #x2A #x41)      ; \e$(D*A\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER ETH")
+    (ucs               . #x00D0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Icelandic")
+    (->lowercase       #x00F0)
+    (latin-iso8859-1   #xD0)   ; \e.A\eNP
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER ETH")
+    (->ucs             . #x00D0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Icelandic")
+    (->decomposition   wide #x00D0)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER ETH")))
+    (korean-ksc5601    #x28 #x22)      ; \e$(C("\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH TILDE")
+    (ucs               . #x00D1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004E #x0303)
+    (->lowercase       #x00F1)
+    (latin-iso8859-1   #xD1)   ; \e.A\eNQ
+    (latin-iso8859-3   #xD1)   ; \e.C\eNQ
+    (latin-iso8859-9   #xD1)   ; \e.M\eNQ
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER N WITH TILDE")
+    (->ucs             . #x00D1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00D1)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER N WITH TILDE")))
+    (japanese-jisx0212 #x2A #x50)      ; \e$(D*P\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH GRAVE")
+    (ucs               . #x00D2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0300)
+    (->lowercase       #x00F2)
+    (latin-iso8859-1   #xD2)   ; \e.A\eNR
+    (latin-iso8859-3   #xD2)   ; \e.C\eNR
+    (latin-iso8859-9   #xD2)   ; \e.M\eNR
+    (latin-viscii-upper #xF2)  ; \e.A\eNR
+    (latin-viscii      #xD2)   ; \e.A\eNR
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER O WITH GRAVE")
+    (->ucs             . #x00D2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00D2)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER O WITH GRAVE")))
+    (japanese-jisx0212 #x2A #x52)      ; \e$(D*R\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH ACUTE")
+    (ucs               . #x00D3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0301)
+    (->lowercase       #x00F3)
+    (latin-iso8859-1   #xD3)   ; \e.A\eNS
+    (latin-iso8859-2   #xD3)   ; \e.B\eNS
+    (latin-iso8859-3   #xD3)   ; \e.C\eNS
+    (latin-iso8859-9   #xD3)   ; \e.M\eNS
+    (latin-viscii-upper #xF3)  ; \e.A\eNS
+    (latin-viscii      #xD3)   ; \e.A\eNS
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER O WITH ACUTE")
+    (->ucs             . #x00D3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00D3)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER O WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x51)      ; \e$(D*Q\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH CIRCUMFLEX")
+    (ucs               . #x00D4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0302)
+    (->lowercase       #x00F4)
+    (latin-iso8859-1   #xD4)   ; \e.A\eNT
+    (latin-iso8859-2   #xD4)   ; \e.B\eNT
+    (latin-iso8859-3   #xD4)   ; \e.C\eNT
+    (latin-iso8859-4   #xD4)   ; \e.D\eNT
+    (latin-iso8859-9   #xD4)   ; \e.M\eNT
+    (latin-viscii-upper #xF4)  ; \e.A\eNT
+    (latin-viscii      #xD4)   ; \e.A\eNT
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH CIRCUMFLEX")
+    (->ucs             . #x00D4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00D4)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER O WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x54)      ; \e$(D*T\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH TILDE")
+    (ucs               . #x00D5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0303)
+    (->lowercase       #x00F5)
+    (latin-iso8859-1   #xD5)   ; \e.A\eNU
+    (latin-iso8859-4   #xD5)   ; \e.D\eNU
+    (latin-iso8859-9   #xD5)   ; \e.M\eNU
+    (latin-viscii-upper #xF5)  ; \e.A\eNU
+    (latin-viscii      #xA0)   ; \e.A\eNU
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER O WITH TILDE")
+    (->ucs             . #x00D5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00D5)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH TILDE")))
+    (japanese-jisx0212 #x2A #x58)      ; \e$(D*X\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH DIAERESIS")
+    (ucs               . #x00D6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0308)
+    (->lowercase       #x00F6)
+    (latin-iso8859-1   #xD6)   ; \e.A\eNV
+    (latin-iso8859-2   #xD6)   ; \e.B\eNV
+    (latin-iso8859-3   #xD6)   ; \e.C\eNV
+    (latin-iso8859-4   #xD6)   ; \e.D\eNV
+    (latin-iso8859-9   #xD6)   ; \e.M\eNV
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER O WITH DIAERESIS")
+    (->ucs             . #x00D6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00D6)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH DIAERESIS")))
+    (japanese-jisx0212 #x2A #x53)      ; \e$(D*S\e(B
+    ))
+(define-char
+  '((name              . "MULTIPLICATION SIGN")
+    (ucs               . #x00D7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xD7)   ; \e.A\eNW
+    (latin-iso8859-2   #xD7)   ; \e.B\eNW
+    (latin-iso8859-3   #xD7)   ; \e.C\eNW
+    (latin-iso8859-4   #xD7)   ; \e.D\eNW
+    (hebrew-iso8859-8  #xAA)   ; \e[2]\e.H\eN*\e[0]
+    (latin-iso8859-9   #xD7)   ; \e.M\eNW
+    ))
+(define-char
+  '((name              . "FULLWIDTH MULTIPLICATION SIGN")
+    (->ucs             . #x00D7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00D7)
+    (japanese-jisx0208-1978    #x21 #x5F)      ; \e$B!_\e(B
+    (chinese-gb2312            #x21 #x41)      ; \e$A!A\e(B
+    (japanese-jisx0208         #x21 #x5F)      ; \e$B!_\e(B
+    (korean-ksc5601            #x21 #x3F)      ; \e$(C!?\e(B
+    (chinese-cns11643-1                #x22 #x32)      ; \e$(G"2\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH STROKE")
+    (ucs               . #x00D8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x00F8)
+    (latin-iso8859-1   #xD8)   ; \e.A\eNX
+    (latin-iso8859-4   #xD8)   ; \e.D\eNX
+    (latin-iso8859-9   #xD8)   ; \e.M\eNX
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER O WITH STROKE")
+    (->ucs             . #x00D8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER O WITH STROKE")))
+    (korean-ksc5601    #x28 #x2A)      ; \e$(D),\e(B
+    (japanese-jisx0212 #x29 #x2C)      ; \e$(D),\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH GRAVE")
+    (ucs               . #x00D9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0300)
+    (->lowercase       #x00F9)
+    (latin-iso8859-1   #xD9)   ; \e.A\eNY
+    (latin-iso8859-3   #xD9)   ; \e.C\eNY
+    (latin-iso8859-9   #xD9)   ; \e.M\eNY
+    (latin-viscii-upper #xF9)  ; \e.A\eNY
+    (latin-viscii      #xD9)   ; \e.A\eNY
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER U WITH GRAVE")
+    (->ucs             . #x00D9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0300)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH GRAVE")))
+    (japanese-jisx0212 #x2A #x63)      ; \e$(D*c\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH ACUTE")
+    (ucs               . #x00DA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0301)
+    (->lowercase       #x00FA)
+    (latin-iso8859-1   #xDA)   ; \e.A\eNZ
+    (latin-iso8859-2   #xDA)   ; \e.B\eNZ
+    (latin-iso8859-3   #xDA)   ; \e.C\eNZ
+    (latin-iso8859-4   #xDA)   ; \e.D\eNZ
+    (latin-iso8859-9   #xDA)   ; \e.M\eNZ
+    (latin-viscii-upper #xFA)  ; \e.A\eNZ
+    (latin-viscii      #xDA)   ; \e.A\eNZ
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER U WITH ACUTE")
+    (->ucs             . #x00DA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00DA)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x62)      ; \e$(D*b\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH CIRCUMFLEX")
+    (ucs               . #x00DB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0302)
+    (->lowercase       #x00FB)
+    (latin-iso8859-1   #xDB)   ; \e.A\eN[
+    (latin-iso8859-3   #xDB)   ; \e.C\eN[
+    (latin-iso8859-4   #xDB)   ; \e.D\eN[
+    (latin-iso8859-9   #xDB)   ; \e.M\eN[
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH CIRCUMFLEX")
+    (->ucs             . #x00DB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00DB)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x65)      ; \e$(D*e\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH DIAERESIS")
+    (ucs               . #x00DC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0308)
+    (->lowercase       #x00FC)
+    (latin-iso8859-1   #xDC)   ; \e.A\eN\
+    (latin-iso8859-2   #xDC)   ; \e.B\eN\
+    (latin-iso8859-3   #xDC)   ; \e.C\eN\
+    (latin-iso8859-4   #xDC)   ; \e.D\eN\
+    (latin-iso8859-9   #xDC)   ; \e.M\eN\
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS")
+    (->ucs             . #x00DC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00DC)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS")))
+    (japanese-jisx0212 #x2A #x64)      ; \e$(D*d\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH ACUTE")
+    (ucs               . #x00DD)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0059 #x0301)
+    (->lowercase       #x00FD)
+    (latin-iso8859-1   #xDD)   ; \e.A\eN]
+    (latin-iso8859-2   #xDD)   ; \e.B\eN]
+    (latin-viscii-upper #xFD)  ; \e.A\eN]
+    (latin-viscii      #xDD)   ; \e.A\eN]
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER Y WITH ACUTE")
+    (->ucs             . #x00DD)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00DD)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER Y WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x72)      ; \e$(D*r\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER THORN")
+    (ucs               . #x00DE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Icelandic")
+    (->lowercase       #x00FE)
+    (latin-iso8859-1   #xDE)   ; \e.A\eN^
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER THORN")
+    (->ucs             . #x00DE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Icelandic")
+    (->decomposition   wide #x00DE)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER THORN")))
+    (korean-ksc5601    #x28 #x2D)      ; \e$(D)0\e(B
+    (japanese-jisx0212 #x29 #x30)      ; \e$(D)0\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER SHARP S")
+    (ucs               . #x00DF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "German")
+    (latin-iso8859-1   #xDF)   ; \e.A\eN_
+    (latin-iso8859-2   #xDF)   ; \e.B\eN_
+    (latin-iso8859-3   #xDF)   ; \e.C\eN_
+    (latin-iso8859-4   #xDF)   ; \e.D\eN_
+    (latin-iso8859-9   #xDF)   ; \e.M\eN_
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER SHARP S")
+    (->ucs             . #x00DF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "German")
+    (->decomposition   wide #x00DF)
+    (korean-ksc5601    #x29 #x2C)      ; \e$(D)N\e(B
+    (japanese-jisx0212 #x29 #x4E)      ; \e$(D)N\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH GRAVE")
+    (ucs               . #x00E0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0300)
+    (->uppercase       #x00C0)
+    (->titlecase       #x00C0)
+    (latin-iso8859-1   #xE0)   ; \e.A\eN`
+    (latin-iso8859-3   #xE0)   ; \e.C\eN`
+    (latin-iso8859-9   #xE0)   ; \e.M\eN`
+    (latin-viscii-lower #xE0)  ; \e.A\eN`
+    (latin-viscii      #xE0)   ; \e.A\eN`
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH GRAVE")
+    (->ucs             . #x00E0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00E0)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH GRAVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH GRAVE")))
+    (chinese-gb2312    #x28 #x24)      ; \e$(D+"\e(B
+    (japanese-jisx0212 #x2B #x22)      ; \e$(D+"\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH ACUTE")
+    (ucs               . #x00E1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0301)
+    (->uppercase       #x00C1)
+    (->titlecase       #x00C1)
+    (latin-iso8859-1   #xE1)   ; \e.A\eNa
+    (latin-iso8859-2   #xE1)   ; \e.B\eNa
+    (latin-iso8859-3   #xE1)   ; \e.C\eNa
+    (latin-iso8859-4   #xE1)   ; \e.D\eNa
+    (latin-iso8859-9   #xE1)   ; \e.M\eNa
+    (latin-viscii-lower #xE1)  ; \e.A\eNa
+    (latin-viscii      #xE1)   ; \e.A\eNa
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH ACUTE")
+    (->ucs             . #x00E1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00E1)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH ACUTE")))
+    (chinese-gb2312    #x28 #x22)      ; \e$(D+!\e(B
+    (japanese-jisx0212 #x2B #x21)      ; \e$(D+!\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH CIRCUMFLEX")
+    (ucs               . #x00E2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0302)
+    (->uppercase       #x00C2)
+    (->titlecase       #x00C2)
+    (latin-iso8859-1   #xE2)   ; \e.A\eNb
+    (latin-iso8859-2   #xE2)   ; \e.B\eNb
+    (latin-iso8859-3   #xE2)   ; \e.C\eNb
+    (latin-iso8859-4   #xE2)   ; \e.D\eNb
+    (latin-iso8859-9   #xE2)   ; \e.M\eNb
+    (latin-viscii-lower #xE2)  ; \e.A\eNb
+    (latin-viscii      #xE2)   ; \e.A\eNb
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH CIRCUMFLEX")
+    (->ucs             . #x00E2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00E2)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x24)      ; \e$(D+$\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH TILDE")
+    (ucs               . #x00E3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0303)
+    (->uppercase       #x00C3)
+    (->titlecase       #x00C3)
+    (latin-iso8859-1   #xE3)   ; \e.A\eNc
+    (latin-iso8859-4   #xE3)   ; \e.D\eNc
+    (latin-iso8859-9   #xE3)   ; \e.M\eNc
+    (latin-viscii-lower #xE3)  ; \e.A\eNc
+    (latin-viscii      #xE3)   ; \e.A\eNc
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH TILDE")
+    (->ucs             . #x00E3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00E3)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH TILDE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH TILDE")))
+    (japanese-jisx0212 #x2B #x2A)      ; \e$(D+*\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH DIAERESIS")
+    (ucs               . #x00E4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0308)
+    (->uppercase       #x00C4)
+    (->titlecase       #x00C4)
+    (latin-iso8859-1   #xE4)   ; \e.A\eNd
+    (latin-iso8859-2   #xE4)   ; \e.B\eNd
+    (latin-iso8859-3   #xE4)   ; \e.C\eNd
+    (latin-iso8859-4   #xE4)   ; \e.D\eNd
+    (latin-iso8859-9   #xE4)   ; \e.M\eNd
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH DIAERESIS")
+    (->ucs             . #x00E4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00E4)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH DIAERESIS")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH DIAERESIS")))
+    (japanese-jisx0212 #x2B #x23)      ; \e$(D+#\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH RING ABOVE")
+    (ucs               . #x00E5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x030A)
+    (->uppercase       #x00C5)
+    (->titlecase       #x00C5)
+    (latin-iso8859-1   #xE5)   ; \e.A\eNe
+    (latin-iso8859-4   #xE5)   ; \e.D\eNe
+    (latin-iso8859-9   #xE5)   ; \e.M\eNe
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH RING ABOVE")
+    (->ucs             . #x00E5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00E5)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH RING ABOVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH RING ABOVE")))
+    (japanese-jisx0212 #x2B #x29)      ; \e$(D+)\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER AE")
+    (ucs               . #x00E6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ash *")
+    (->uppercase       #x00C6)
+    (->titlecase       #x00C6)
+    (latin-iso8859-1   #xE6)   ; \e.A\eNf
+    (latin-iso8859-4   #xE6)   ; \e.D\eNf
+    (latin-iso8859-9   #xE6)   ; \e.M\eNf
+    (ipa               #xA4)   ; \e.0\eN$
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER AE")
+    (->ucs             . #x00E6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ash *")
+    (->decomposition   wide #x00E6)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER AE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER AE")))
+    (korean-ksc5601    #x29 #x21)      ; \e$(D)A\e(B
+    (japanese-jisx0212 #x29 #x41)      ; \e$(D)A\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER C WITH CEDILLA")
+    (ucs               . #x00E7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0063 #x0327)
+    (->uppercase       #x00C7)
+    (->titlecase       #x00C7)
+    (latin-iso8859-1   #xE7)   ; \e.A\eNg
+    (latin-iso8859-2   #xE7)   ; \e.B\eNg
+    (latin-iso8859-3   #xE7)   ; \e.C\eNg
+    (latin-iso8859-9   #xE7)   ; \e.M\eNg
+    (ipa               #xCE)   ; \e.0\eNN
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER C WITH CEDILLA")
+    (->ucs             . #x00E7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00E7)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH CEDILLA")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH CEDILLA")))
+    (japanese-jisx0212 #x2B #x2E)      ; \e$(D+.\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH GRAVE")
+    (ucs               . #x00E8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0300)
+    (->uppercase       #x00C8)
+    (->titlecase       #x00C8)
+    (latin-iso8859-1   #xE8)   ; \e.A\eNh
+    (latin-iso8859-3   #xE8)   ; \e.C\eNh
+    (latin-iso8859-9   #xE8)   ; \e.M\eNh
+    (latin-viscii-lower #xE8)  ; \e.A\eNh
+    (latin-viscii      #xE8)   ; \e.A\eNh
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER E WITH GRAVE")
+    (->ucs             . #x00E8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00E8)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH GRAVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH GRAVE")))
+    (chinese-gb2312    #x28 #x28)      ; \e$(D+2\e(B
+    (japanese-jisx0212 #x2B #x32)      ; \e$(D+2\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH ACUTE")
+    (ucs               . #x00E9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0301)
+    (->uppercase       #x00C9)
+    (->titlecase       #x00C9)
+    (latin-iso8859-1   #xE9)   ; \e.A\eNi
+    (latin-iso8859-2   #xE9)   ; \e.B\eNi
+    (latin-iso8859-3   #xE9)   ; \e.C\eNi
+    (latin-iso8859-4   #xE9)   ; \e.D\eNi
+    (latin-iso8859-9   #xE9)   ; \e.M\eNi
+    (latin-viscii-lower #xE9)  ; \e.A\eNi
+    (latin-viscii      #xE9)   ; \e.A\eNi
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER E WITH ACUTE")
+    (->ucs             . #x00E9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00E9)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH ACUTE")))
+    (chinese-gb2312    #x28 #x26)      ; \e$(D+1\e(B
+    (japanese-jisx0212 #x2B #x31)      ; \e$(D+1\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH CIRCUMFLEX")
+    (ucs               . #x00EA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0302)
+    (->uppercase       #x00CA)
+    (->titlecase       #x00CA)
+    (latin-iso8859-1   #xEA)   ; \e.A\eNj
+    (latin-iso8859-3   #xEA)   ; \e.C\eNj
+    (latin-iso8859-9   #xEA)   ; \e.M\eNj
+    (latin-viscii-lower #xEA)  ; \e.A\eNj
+    (latin-viscii      #xEA)   ; \e.A\eNj
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER E WITH CIRCUMFLEX")
+    (->ucs             . #x00EA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00EA)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH CIRCUMFLEX")))
+    (chinese-gb2312    #x28 #x3A)      ; \e$(D+4\e(B
+    (japanese-jisx0212 #x2B #x34)      ; \e$(D+4\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH DIAERESIS")
+    (ucs               . #x00EB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0308)
+    (->uppercase       #x00CB)
+    (->titlecase       #x00CB)
+    (latin-iso8859-1   #xEB)   ; \e.A\eNk
+    (latin-iso8859-2   #xEB)   ; \e.B\eNk
+    (latin-iso8859-3   #xEB)   ; \e.C\eNk
+    (latin-iso8859-4   #xEB)   ; \e.D\eNk
+    (latin-iso8859-9   #xEB)   ; \e.M\eNk
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER E WITH DIAERESIS")
+    (->ucs             . #x00EB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00EB)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH DIAERESIS")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH DIAERESIS")))
+    (japanese-jisx0212 #x2B #x33)      ; \e$(D+3\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH GRAVE")
+    (ucs               . #x00EC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0300)
+    (->uppercase       #x00CC)
+    (->titlecase       #x00CC)
+    (latin-iso8859-1   #xEC)   ; \e.A\eNl
+    (latin-iso8859-3   #xEC)   ; \e.C\eNl
+    (latin-iso8859-9   #xEC)   ; \e.M\eNl
+    (latin-viscii-lower #xEC)  ; \e.A\eNl
+    (latin-viscii      #xEC)   ; \e.A\eNl
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER I WITH GRAVE")
+    (->ucs             . #x00EC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00EC)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH GRAVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH GRAVE")))
+    (chinese-gb2312    #x28 #x2C)      ; \e$(D+@\e(B
+    (japanese-jisx0212 #x2B #x40)      ; \e$(D+@\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH ACUTE")
+    (ucs               . #x00ED)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0301)
+    (->uppercase       #x00CD)
+    (->titlecase       #x00CD)
+    (latin-iso8859-1   #xED)   ; \e.A\eNm
+    (latin-iso8859-2   #xED)   ; \e.B\eNm
+    (latin-iso8859-3   #xED)   ; \e.C\eNm
+    (latin-iso8859-4   #xED)   ; \e.D\eNm
+    (latin-iso8859-9   #xED)   ; \e.M\eNm
+    (latin-viscii-lower #xED)  ; \e.A\eNm
+    (latin-viscii      #xED)   ; \e.A\eNm
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER I WITH ACUTE")
+    (->ucs             . #x00ED)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00ED)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH ACUTE")))
+    (chinese-gb2312    #x28 #x2A)      ; \e$(D+?\e(B
+    (japanese-jisx0212 #x2B #x3F)      ; \e$(D+?\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH CIRCUMFLEX")
+    (ucs               . #x00EE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0302)
+    (->uppercase       #x00CE)
+    (->titlecase       #x00CE)
+    (latin-iso8859-1   #xEE)   ; \e.A\eNn
+    (latin-iso8859-2   #xEE)   ; \e.B\eNn
+    (latin-iso8859-3   #xEE)   ; \e.C\eNn
+    (latin-iso8859-4   #xEE)   ; \e.D\eNn
+    (latin-iso8859-9   #xEE)   ; \e.M\eNn
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER I WITH CIRCUMFLEX")
+    (->ucs             . #x00EE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00EE)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x42)      ; \e$(D+B\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH DIAERESIS")
+    (ucs               . #x00EF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0308)
+    (->uppercase       #x00CF)
+    (->titlecase       #x00CF)
+    (latin-iso8859-1   #xEF)   ; \e.A\eNo
+    (latin-iso8859-3   #xEF)   ; \e.C\eNo
+    (latin-iso8859-9   #xEF)   ; \e.M\eNo
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER I WITH DIAERESIS")
+    (->ucs             . #x00EF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0308)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH DIAERESIS")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH DIAERESIS")))
+    (japanese-jisx0212 #x2B #x41)      ; \e$(D+A\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER ETH")
+    (ucs               . #x00F0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Icelandic")
+    (->uppercase       #x00D0)
+    (->titlecase       #x00D0)
+    (latin-iso8859-1   #xF0)   ; \e.A\eNp
+    (ipa               #xC9)   ; \e.0\eNI
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER ETH")
+    (->ucs             . #x00F0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Icelandic")
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER ETH")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER ETH")))
+    (korean-ksc5601    #x29 #x23)      ; \e$(D)C\e(B
+    (japanese-jisx0212 #x29 #x43)      ; \e$(D)C\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH TILDE")
+    (ucs               . #x00F1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006E #x0303)
+    (->uppercase       #x00D1)
+    (->titlecase       #x00D1)
+    (latin-iso8859-1   #xF1)   ; \e.A\eNq
+    (latin-iso8859-3   #xF1)   ; \e.C\eNq
+    (latin-iso8859-9   #xF1)   ; \e.M\eNq
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER N WITH TILDE")
+    (->ucs             . #x00F1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00F1)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER N WITH TILDE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER N WITH TILDE")))
+    (japanese-jisx0212 #x2B #x50)      ; \e$(D+P\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH GRAVE")
+    (ucs               . #x00F2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0300)
+    (->uppercase       #x00D2)
+    (->titlecase       #x00D2)
+    (latin-iso8859-1   #xF2)   ; \e.A\eNr
+    (latin-iso8859-3   #xF2)   ; \e.C\eNr
+    (latin-iso8859-9   #xF2)   ; \e.M\eNr
+    (latin-viscii-lower #xF2)  ; \e.A\eNr
+    (latin-viscii      #xF2)   ; \e.A\eNr
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER O WITH GRAVE")
+    (->ucs             . #x00F2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00F2)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER O WITH GRAVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN SMALL LETTER O WITH GRAVE")))
+    (chinese-gb2312    #x28 #x30)      ; \e$(D+R\e(B
+    (japanese-jisx0212 #x2B #x52)      ; \e$(D+R\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH ACUTE")
+    (ucs               . #x00F3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0301)
+    (->uppercase       #x00D3)
+    (->titlecase       #x00D3)
+    (latin-iso8859-1   #xF3)   ; \e.A\eNs
+    (latin-iso8859-2   #xF3)   ; \e.B\eNs
+    (latin-iso8859-3   #xF3)   ; \e.C\eNs
+    (latin-iso8859-9   #xF3)   ; \e.M\eNs
+    (latin-viscii-lower #xF3)  ; \e.A\eNs
+    (latin-viscii      #xF3)   ; \e.A\eNs
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER O WITH ACUTE")
+    (->ucs             . #x00F3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00F3)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH ACUTE")))
+    (chinese-gb2312    #x28 #x2E)      ; \e$(D+Q\e(B
+    (japanese-jisx0212 #x2B #x51)      ; \e$(D+Q\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH CIRCUMFLEX")
+    (ucs               . #x00F4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0302)
+    (->uppercase       #x00D4)
+    (->titlecase       #x00D4)
+    (latin-iso8859-1   #xF4)   ; \e.A\eNt
+    (latin-iso8859-2   #xF4)   ; \e.B\eNt
+    (latin-iso8859-3   #xF4)   ; \e.C\eNt
+    (latin-iso8859-4   #xF4)   ; \e.D\eNt
+    (latin-iso8859-9   #xF4)   ; \e.M\eNt
+    (latin-viscii-lower #xF4)  ; \e.A\eNt
+    (latin-viscii      #xF4)   ; \e.A\eNt
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER O WITH CIRCUMFLEX")
+    (->ucs             . #x00F4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00F4)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x54)      ; \e$(D+T\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH TILDE")
+    (ucs               . #x00F5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0303)
+    (->uppercase       #x00D5)
+    (->titlecase       #x00D5)
+    (latin-iso8859-1   #xF5)   ; \e.A\eNu
+    (latin-iso8859-4   #xF5)   ; \e.D\eNu
+    (latin-iso8859-9   #xF5)   ; \e.M\eNu
+    (latin-viscii-lower #xF5)  ; \e.A\eNu
+    (latin-viscii      #xF5)   ; \e.A\eNu
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER O WITH TILDE")
+    (->ucs             . #x00F5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00F5)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH TILDE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH TILDE")))
+    (japanese-jisx0212 #x2B #x58)      ; \e$(D+X\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH DIAERESIS")
+    (ucs               . #x00F6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0308)
+    (->uppercase       #x00D6)
+    (->titlecase       #x00D6)
+    (latin-iso8859-1   #xF6)   ; \e.A\eNv
+    (latin-iso8859-2   #xF6)   ; \e.B\eNv
+    (latin-iso8859-3   #xF6)   ; \e.C\eNv
+    (latin-iso8859-4   #xF6)   ; \e.D\eNv
+    (latin-iso8859-9   #xF6)   ; \e.M\eNv
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER O WITH DIAERESIS")
+    (->ucs             . #x00F6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00F6)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH DIAERESIS")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH DIAERESIS")))
+    (japanese-jisx0212 #x2B #x53)      ; \e$(D+S\e(B
+    ))
+(define-char
+  '((name              . "DIVISION SIGN")
+    (ucs               . #x00F7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (latin-iso8859-1   #xF7)   ; \e.A\eNw
+    (latin-iso8859-2   #xF7)   ; \e.B\eNw
+    (latin-iso8859-3   #xF7)   ; \e.C\eNw
+    (latin-iso8859-4   #xF7)   ; \e.D\eNw
+    (hebrew-iso8859-8  #xBA)   ; \e[2]\e.H\eN:\e[0]
+    (latin-iso8859-9   #xF7)   ; \e.M\eNw
+    ))
+(define-char
+  '((name              . "FULLWIDTH DIVISION SIGN")
+    (->ucs             . #x00F7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x00F7)
+    (japanese-jisx0208-1978    #x21 #x60)      ; \e$B!`\e(B
+    (chinese-gb2312            #x21 #x42)      ; \e$A!B\e(B
+    (japanese-jisx0208         #x21 #x60)      ; \e$B!`\e(B
+    (korean-ksc5601            #x21 #x40)      ; \e$(C!@\e(B
+    (chinese-cns11643-1                #x22 #x33)      ; \e$(G"3\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH STROKE")
+    (ucs               . #x00F8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x00D8)
+    (->titlecase       #x00D8)
+    (latin-iso8859-1   #xF8)   ; \e.A\eNx
+    (latin-iso8859-4   #xF8)   ; \e.D\eNx
+    (latin-iso8859-9   #xF8)   ; \e.M\eNx
+    (ipa               #xAF)   ; \e.0\eN/
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER O WITH STROKE")
+    (->ucs             . #x00F8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00F8)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH STROKE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH STROKE")))
+    (korean-ksc5601    #x29 #x2A)      ; \e$(D)L\e(B
+    (japanese-jisx0212 #x29 #x4C)      ; \e$(D)L\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH GRAVE")
+    (ucs               . #x00F9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0300)
+    (->uppercase       #x00D9)
+    (->titlecase       #x00D9)
+    (latin-iso8859-1   #xF9)   ; \e.A\eNy
+    (latin-iso8859-3   #xF9)   ; \e.C\eNy
+    (latin-iso8859-9   #xF9)   ; \e.M\eNy
+    (latin-viscii-lower #xF9)  ; \e.A\eNy
+    (latin-viscii      #xF9)   ; \e.A\eNy
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH GRAVE")
+    (->ucs             . #x00F9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00F9)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH GRAVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH GRAVE")))
+    (chinese-gb2312    #x28 #x34)      ; \e$(D+c\e(B
+    (japanese-jisx0212 #x2B #x63)      ; \e$(D+c\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH ACUTE")
+    (ucs               . #x00FA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0301)
+    (->uppercase       #x00DA)
+    (->titlecase       #x00DA)
+    (latin-iso8859-1   #xFA)   ; \e.A\eNz
+    (latin-iso8859-2   #xFA)   ; \e.B\eNz
+    (latin-iso8859-3   #xFA)   ; \e.C\eNz
+    (latin-iso8859-4   #xFA)   ; \e.D\eNz
+    (latin-iso8859-9   #xFA)   ; \e.M\eNz
+    (latin-viscii-lower #xFA)  ; \e.A\eNz
+    (latin-viscii      #xFA)   ; \e.A\eNz
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH ACUTE")
+    (->ucs             . #x00FA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00FA)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH ACUTE")))
+    (chinese-gb2312    #x28 #x32)      ; \e$(D+b\e(B
+    (japanese-jisx0212 #x2B #x62)      ; \e$(D+b\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH CIRCUMFLEX")
+    (ucs               . #x00FB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0302)
+    (->uppercase       #x00DB)
+    (->titlecase       #x00DB)
+    (latin-iso8859-1   #xFB)   ; \e.A\eN{
+    (latin-iso8859-3   #xFB)   ; \e.C\eN{
+    (latin-iso8859-4   #xFB)   ; \e.D\eN{
+    (latin-iso8859-9   #xFB)   ; \e.M\eN{
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH CIRCUMFLEX")
+    (->ucs             . #x00FB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00FB)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x65)      ; \e$(D+e\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH DIAERESIS")
+    (ucs               . #x00FC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0308)
+    (->uppercase       #x00DC)
+    (->titlecase       #x00DC)
+    (latin-iso8859-1   #xFC)   ; \e.A\eN|
+    (latin-iso8859-2   #xFC)   ; \e.B\eN|
+    (latin-iso8859-3   #xFC)   ; \e.C\eN|
+    (latin-iso8859-4   #xFC)   ; \e.D\eN|
+    (latin-iso8859-9   #xFC)   ; \e.M\eN|
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS")
+    (->ucs             . #x00FC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00FC)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS")))
+    (chinese-gb2312    #x28 #x39)      ; \e$(D+d\e(B
+    (japanese-jisx0212 #x2B #x64)      ; \e$(D+d\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH ACUTE")
+    (ucs               . #x00FD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x0301)
+    (->uppercase       #x00DD)
+    (->titlecase       #x00DD)
+    (latin-iso8859-1   #xFD)   ; \e.A\eN}
+    (latin-iso8859-2   #xFD)   ; \e.B\eN}
+    (latin-viscii-lower #xFD)  ; \e.A\eN}
+    (latin-viscii      #xFD)   ; \e.A\eN}
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER Y WITH ACUTE")
+    (->ucs             . #x00FD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00FD)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER Y WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN SMALL LETTER Y WITH ACUTE")))
+    (japanese-jisx0212 #x2B #x72)      ; \e$(D+r\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER THORN")
+    (ucs               . #x00FE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Icelandic")
+    (->uppercase       #x00DE)
+    (->titlecase       #x00DE)
+    (latin-iso8859-1   #xFE)   ; \e.A\eN~
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER THORN")
+    (->ucs             . #x00FE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Icelandic")
+    (->decomposition   wide #x00FE)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER THORN")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER THORN")))
+    (korean-ksc5601    #x29 #x2D)      ; \e$(D)P\e(B
+    (japanese-jisx0212 #x29 #x50)      ; \e$(D)P\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH DIAERESIS")
+    (ucs               . #x00FF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x0308)
+    (->uppercase       #x0178)
+    (->titlecase       #x0178)
+    (latin-iso8859-1   #xFF)   ; \e.A\eN\7f
+    (latin-iso8859-9   #xFF)   ; \e.M\eN\7f
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER Y WITH DIAERESIS")
+    (->ucs             . #x00FF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x00FF)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Y WITH DIAERESIS")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Y WITH DIAERESIS")))
+    (japanese-jisx0212 #x2B #x73)      ; \e$(D+s\e(B
+    ))
diff --git a/lisp/utf-2000/u00100-Latin-Extended-A.el b/lisp/utf-2000/u00100-Latin-Extended-A.el
new file mode 100644 (file)
index 0000000..5e96fb1
--- /dev/null
@@ -0,0 +1,2788 @@
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH MACRON")
+    (ucs               . #x0100)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0304)
+    (->lowercase       #x0101)
+    (latin-iso8859-4   #xC0)   ; \e-DÀ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER A WITH MACRON")
+    (->ucs             . #x0100)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0100)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH MACRON")))
+    (japanese-jisx0212 #x2A #x27)      ; \e$(D*'\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH MACRON")
+    (ucs               . #x0101)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0304)
+    (->uppercase       #x0100)
+    (->titlecase       #x0100)
+    (latin-iso8859-4   #xE0)   ; \e-Dà\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH MACRON")
+    (->ucs             . #x0101)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0101)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH MACRON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH MACRON")))
+    (chinese-gb2312    #x28 #x21)      ; \e$(D+'\e(B
+    (japanese-jisx0212 #x2B #x27)      ; \e$(D+'\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH BREVE")
+    (ucs               . #x0102)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0306)
+    (->lowercase       #x0103)
+    (latin-iso8859-2   #xC3)   ; \e-BÃ\e-A
+    (latin-viscii-upper #xE5)  ; \e-BÃ\e-A
+    (latin-viscii      #xC5)   ; \e-BÃ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER A WITH BREVE")
+    (->ucs             . #x0102)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0102)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH BREVE")))
+    (japanese-jisx0212 #x2A #x25)      ; \e$(D*%\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH BREVE")
+    (ucs               . #x0103)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0306)
+    (->uppercase       #x0102)
+    (->titlecase       #x0102)
+    (latin-iso8859-2   #xE3)   ; \e-Bã\e-A
+    (latin-viscii-lower #xE5)  ; \e-Bã\e-A
+    (latin-viscii      #xE5)   ; \e-Bã\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH BREVE")
+    (->ucs             . #x0103)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0103)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH BREVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH BREVE")))
+    (japanese-jisx0212 #x2B #x25)      ; \e$(D+%\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH OGONEK")
+    (ucs               . #x0104)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0328)
+    (->lowercase       #x0105)
+    (latin-iso8859-2   #xA1)   ; \e-B¡\e-A
+    (latin-iso8859-4   #xA1)   ; \e-D¡\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER A WITH OGONEK")
+    (->ucs             . #x0104)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0104)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH OGONEK")))
+    (japanese-jisx0212 #x2A #x28)      ; \e$(D*(\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH OGONEK")
+    (ucs               . #x0105)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0328)
+    (->uppercase       #x0104)
+    (->titlecase       #x0104)
+    (latin-iso8859-2   #xB1)   ; \e-B±\e-A
+    (latin-iso8859-4   #xB1)   ; \e-D±\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH OGONEK")
+    (->ucs             . #x0105)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0105)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH OGONEK")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH OGONEK")))
+    (japanese-jisx0212 #x2B #x28)      ; \e$(D+(\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER C WITH ACUTE")
+    (ucs               . #x0106)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0043 #x0301)
+    (->lowercase       #x0107)
+    (latin-iso8859-2   #xC6)   ; \e-BÆ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER C WITH ACUTE")
+    (->ucs             . #x0106)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0106)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER C WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x2B)      ; \e$(D*+\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER C WITH ACUTE")
+    (ucs               . #x0107)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0063 #x0301)
+    (->uppercase       #x0106)
+    (->titlecase       #x0106)
+    (latin-iso8859-2   #xE6)   ; \e-Bæ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER C WITH ACUTE")
+    (->ucs             . #x0107)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0107)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH ACUTE")))
+    (japanese-jisx0212 #x2B #x2B)      ; \e$(D++\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER C WITH CIRCUMFLEX")
+    (ucs               . #x0108)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0043 #x0302)
+    (->lowercase       #x0109)
+    (latin-iso8859-3   #xC6)   ; \e-CÆ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH CIRCUMFLEX")
+    (->ucs             . #x0108)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0108)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER C WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x2C)      ; \e$(D*,\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER C WITH CIRCUMFLEX")
+    (ucs               . #x0109)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0063 #x0302)
+    (->uppercase       #x0108)
+    (->titlecase       #x0108)
+    (latin-iso8859-3   #xE6)   ; \e-Cæ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER C WITH CIRCUMFLEX")
+    (->ucs             . #x0109)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0109)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x2C)      ; \e$(D+,\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER C WITH DOT ABOVE")
+    (ucs               . #x010A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0043 #x0307)
+    (->lowercase       #x010B)
+    (latin-iso8859-3   #xC5)   ; \e-CÅ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER C WITH DOT ABOVE")
+    (->ucs             . #x010A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x010A)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER C WITH DOT ABOVE")))
+    (japanese-jisx0212 #x2A #x2F)      ; \e$(D*/\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER C WITH DOT ABOVE")
+    (ucs               . #x010B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0063 #x0307)
+    (->uppercase       #x010A)
+    (->titlecase       #x010A)
+    (latin-iso8859-3   #xE5)   ; \e-Cå\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER C WITH DOT ABOVE")
+    (->ucs             . #x010B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x010B)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH DOT ABOVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH DOT ABOVE")))
+    (japanese-jisx0212 #x2B #x2F)      ; \e$(D+/\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER C WITH CARON")
+    (ucs               . #x010C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0043 #x030C)
+    (->lowercase       #x010D)
+    (latin-iso8859-2   #xC8)   ; \e-BÈ\e-A
+    (latin-iso8859-4   #xC8)   ; \e-DÈ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER C WITH CARON")
+    (->ucs             . #x010C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x010C)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER C WITH CARON")))
+    (japanese-jisx0212 #x2A #x2D)      ; \e$(D*-\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER C WITH CARON")
+    (ucs               . #x010D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0063 #x030C)
+    (->uppercase       #x010C)
+    (->titlecase       #x010C)
+    (latin-iso8859-2   #xE8)   ; \e-Bè\e-A
+    (latin-iso8859-4   #xE8)   ; \e-Dè\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER C WITH CARON")
+    (->ucs             . #x010D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x010D)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER C WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN SMALL LETTER C WITH CARON")))
+    (japanese-jisx0212 #x2B #x2D)      ; \e$(D+-\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH CARON")
+    (ucs               . #x010E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0044 #x030C)
+    (->lowercase       #x010F)
+    (latin-iso8859-2   #xCF)   ; \e-BÏ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER D WITH CARON")
+    (->ucs             . #x010E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x010E)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER D WITH CARON")))
+    (japanese-jisx0212 #x2A #x30)      ; \e$(D*0\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH CARON")
+    (ucs               . #x010F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0064 #x030C)
+    (->uppercase       #x010E)
+    (->titlecase       #x010E)
+    (latin-iso8859-2   #xEF)   ; \e-Bï\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER D WITH CARON")
+    (->ucs             . #x010F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x010F)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER D WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER D WITH CARON")))
+    (japanese-jisx0212 #x2B #x30)      ; \e$(D+0\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH STROKE")
+    (ucs               . #x0110)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0111)
+    (latin-iso8859-2   #xD0)   ; \e-BÐ\e-A
+    (latin-iso8859-4   #xD0)   ; \e-DÐ\e-A
+    (latin-viscii-upper #xF0)  ; \e-BÐ\e-A
+    (latin-viscii      #xD0)   ; \e-BÐ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER D WITH STROKE")
+    (->ucs             . #x0110)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0110)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER D WITH STROKE")))
+    (japanese-jisx0212 #x29 #x22)      ; \e$(D)"\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH STROKE")
+    (ucs               . #x0111)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0110)
+    (->titlecase       #x0110)
+    (latin-iso8859-2   #xF0)   ; \e-Bð\e-A
+    (latin-iso8859-4   #xF0)   ; \e-Dð\e-A
+    (latin-viscii-lower #xF0)  ; \e-Bð\e-A
+    (latin-viscii      #xF0)   ; \e-Bð\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER D WITH STROKE")
+    (->ucs             . #x0111)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER D WITH STROKE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER D WITH STROKE")))
+    (korean-ksc5601    #x29 #x22)      ; \e$(D)B\e(B
+    (japanese-jisx0212 #x29 #x42)      ; \e$(D)B\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH MACRON")
+    (ucs               . #x0112)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0304)
+    (->lowercase       #x0113)
+    (latin-iso8859-4   #xAA)   ; \e-Dª\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER E WITH MACRON")
+    (->ucs             . #x0112)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0112)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER E WITH MACRON")))
+    (japanese-jisx0212 #x2A #x37)      ; \e$(D*7\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH MACRON")
+    (ucs               . #x0113)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0304)
+    (->uppercase       #x0112)
+    (->titlecase       #x0112)
+    (latin-iso8859-4   #xBA)   ; \e-Dº\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER E WITH MACRON")
+    (->ucs             . #x0113)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0113)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH MACRON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH MACRON")))
+    (chinese-gb2312    #x28 #x25)      ; \e$(D+7\e(B
+    (japanese-jisx0212 #x2B #x37)      ; \e$(D+7\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH BREVE")
+    (ucs               . #x0114)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0306)
+    (->lowercase       #x0115)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH BREVE")
+    (ucs               . #x0115)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0306)
+    (->uppercase       #x0114)
+    (->titlecase       #x0114)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH DOT ABOVE")
+    (ucs               . #x0116)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0307)
+    (->lowercase       #x0117)
+    (latin-iso8859-4   #xCC)   ; \e-DÌ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER E WITH DOT ABOVE")
+    (->ucs             . #x0116)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0116)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER E WITH DOT ABOVE")))
+    (japanese-jisx0212 #x2A #x36)      ; \e$(D*6\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH DOT ABOVE")
+    (ucs               . #x0117)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0307)
+    (->uppercase       #x0116)
+    (->titlecase       #x0116)
+    (latin-iso8859-4   #xEC)   ; \e-Dì\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER E WITH DOT ABOVE")
+    (->ucs             . #x0117)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0117)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH DOT ABOVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH DOT ABOVE")))
+    (japanese-jisx0212 #x2B #x36)      ; \e$(D+6\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH OGONEK")
+    (ucs               . #x0118)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0328)
+    (->lowercase       #x0119)
+    (latin-iso8859-2   #xCA)   ; \e-BÊ\e-A
+    (latin-iso8859-4   #xCA)   ; \e-DÊ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER E WITH OGONEK")
+    (->ucs             . #x0118)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0118)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER E WITH OGONEK")))
+    (japanese-jisx0212 #x2A #x38)      ; \e$(D*8\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH OGONEK")
+    (ucs               . #x0119)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0328)
+    (->uppercase       #x0118)
+    (->titlecase       #x0118)
+    (latin-iso8859-2   #xEA)   ; \e-Bê\e-A
+    (latin-iso8859-4   #xEA)   ; \e-Dê\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER E WITH OGONEK")
+    (->ucs             . #x0119)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0119)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH OGONEK")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH OGONEK")))
+    (japanese-jisx0212 #x2B #x38)      ; \e$(D+8\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH CARON")
+    (ucs               . #x011A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x030C)
+    (->lowercase       #x011B)
+    (latin-iso8859-2   #xCC)   ; \e-BÌ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER E WITH CARON")
+    (->ucs             . #x011A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x011A)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER E WITH CARON")))
+    (japanese-jisx0212 #x2A #x35)      ; \e$(D*5\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH CARON")
+    (ucs               . #x011B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x030C)
+    (->uppercase       #x011A)
+    (->titlecase       #x011A)
+    (latin-iso8859-2   #xEC)   ; \e-Bì\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER E WITH CARON")
+    (->ucs             . #x011B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x011B)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER E WITH CARON")))
+    (chinese-gb2312    #x28 #x27)      ; \e$(D+5\e(B
+    (japanese-jisx0212 #x2B #x35)      ; \e$(D+5\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G WITH CIRCUMFLEX")
+    (ucs               . #x011C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0047 #x0302)
+    (->lowercase       #x011D)
+    (latin-iso8859-3   #xD8)   ; \e-CØ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER G WITH CIRCUMFLEX")
+    (->ucs             . #x011C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x011C)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER G WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x3A)      ; \e$(D*:\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G WITH CIRCUMFLEX")
+    (ucs               . #x011D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0067 #x0302)
+    (->uppercase       #x011C)
+    (->titlecase       #x011C)
+    (latin-iso8859-3   #xF8)   ; \e-Cø\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER G WITH CIRCUMFLEX")
+    (->ucs             . #x011D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x011D)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER G WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN SMALL LETTER G WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x3A)      ; \e$(D+:\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G WITH BREVE")
+    (ucs               . #x011E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0047 #x0306)
+    (->lowercase       #x011F)
+    (latin-iso8859-3   #xAB)   ; \e-C«\e-A
+    (latin-iso8859-9   #xD0)   ; \e-MÐ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER G WITH BREVE")
+    (->ucs             . #x011E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x011E)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER G WITH BREVE")))
+    (japanese-jisx0212 #x2A #x3B)      ; \e$(D*;\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G WITH BREVE")
+    (ucs               . #x011F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0067 #x0306)
+    (->uppercase       #x011E)
+    (->titlecase       #x011E)
+    (latin-iso8859-3   #xBB)   ; \e-C»\e-A
+    (latin-iso8859-9   #xF0)   ; \e-Mð\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER G WITH BREVE")
+    (->ucs             . #x011F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x011F)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER G WITH BREVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER G WITH BREVE")))
+    (japanese-jisx0212 #x2B #x3B)      ; \e$(D+;\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G WITH DOT ABOVE")
+    (ucs               . #x0120)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0047 #x0307)
+    (->lowercase       #x0121)
+    (latin-iso8859-3   #xD5)   ; \e-CÕ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER G WITH DOT ABOVE")
+    (->ucs             . #x0120)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0120)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER G WITH DOT ABOVE")))
+    (japanese-jisx0212 #x2A #x3D)      ; \e$(D*=\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G WITH DOT ABOVE")
+    (ucs               . #x0121)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0067 #x0307)
+    (->uppercase       #x0120)
+    (->titlecase       #x0120)
+    (latin-iso8859-3   #xF5)   ; \e-Cõ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER G WITH DOT ABOVE")
+    (->ucs             . #x0121)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0121)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER G WITH DOT ABOVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER G WITH DOT ABOVE")))
+    (japanese-jisx0212 #x2B #x3D)      ; \e$(D+=\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G WITH CEDILLA")
+    (ucs               . #x0122)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0047 #x0327)
+    (->lowercase       #x0123)
+    (latin-iso8859-4   #xAB)   ; \e-D«\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER G WITH CEDILLA")
+    (->ucs             . #x0122)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0122)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER G WITH CEDILLA")))
+    (japanese-jisx0212 #x2A #x3C)      ; \e$(D*<\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G WITH CEDILLA")
+    (ucs               . #x0123)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0067 #x0327)
+    (->uppercase       #x0122)
+    (->titlecase       #x0122)
+    (latin-iso8859-4   #xBB)   ; \e-D»\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER H WITH CIRCUMFLEX")
+    (ucs               . #x0124)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0048 #x0302)
+    (->lowercase       #x0125)
+    (latin-iso8859-3   #xA6)   ; \e-C¦\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER H WITH CIRCUMFLEX")
+    (->ucs             . #x0124)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0124)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER H WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x3E)      ; \e$(D*>\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH CIRCUMFLEX")
+    (ucs               . #x0125)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0068 #x0302)
+    (->uppercase       #x0124)
+    (->titlecase       #x0124)
+    (latin-iso8859-3   #xB6)   ; \e-C¶\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER H WITH CIRCUMFLEX")
+    (->ucs             . #x0125)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0125)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER H WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER H WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x3E)      ; \e$(D+>\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER H WITH STROKE")
+    (ucs               . #x0126)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0127)
+    (latin-iso8859-3   #xA1)   ; \e-C¡\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER H WITH STROKE")
+    (->ucs             . #x0126)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0126)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER H WITH STROKE")))
+    (korean-ksc5601    #x28 #x24)      ; \e$(D)$\e(B
+    (japanese-jisx0212 #x29 #x24)      ; \e$(D)$\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH STROKE")
+    (ucs               . #x0127)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0126)
+    (->titlecase       #x0126)
+    (latin-iso8859-3   #xB1)   ; \e-C±\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER H WITH STROKE")
+    (->ucs             . #x0127)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0127)
+    (->uppercase       #x0126)
+    (->titlecase       #x0126)
+    (korean-ksc5601    #x29 #x24)      ; \e$(D)D\e(B
+    (japanese-jisx0212 #x29 #x44)      ; \e$(D)D\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH TILDE")
+    (ucs               . #x0128)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0303)
+    (->lowercase       #x0129)
+    (latin-iso8859-4   #xA5)   ; \e-D¥\e-A
+    (latin-viscii-upper #xEE)  ; \e-D¥\e-A
+    (latin-viscii      #xCE)   ; \e-D¥\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER I WITH TILDE")
+    (->ucs             . #x0128)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0128)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH TILDE")))
+    (japanese-jisx0212 #x2A #x47)      ; \e$(D*G\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH TILDE")
+    (ucs               . #x0129)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0303)
+    (->uppercase       #x0128)
+    (->titlecase       #x0128)
+    (latin-iso8859-4   #xB5)   ; \e-Dµ\e-A
+    (latin-viscii-lower #xEE)  ; \e-Dµ\e-A
+    (latin-viscii      #xEE)   ; \e-Dµ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER I WITH TILDE")
+    (->ucs             . #x0129)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0129)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH TILDE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH TILDE")))
+    (japanese-jisx0212 #x2B #x47)      ; \e$(D+G\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH MACRON")
+    (ucs               . #x012A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0304)
+    (->lowercase       #x012B)
+    (latin-iso8859-4   #xCF)   ; \e-DÏ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER I WITH MACRON")
+    (->ucs             . #x012A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x012A)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH MACRON")))
+    (japanese-jisx0212 #x2A #x45)      ; \e$(D*E\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH MACRON")
+    (ucs               . #x012B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0304)
+    (->uppercase       #x012A)
+    (->titlecase       #x012A)
+    (latin-iso8859-4   #xEF)   ; \e-Dï\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER I WITH MACRON")
+    (->ucs             . #x012B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x012B)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH MACRON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH MACRON")))
+    (chinese-gb2312    #x28 #x29)      ; \e$(D+E\e(B
+    (japanese-jisx0212 #x2B #x45)      ; \e$(D+E\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH BREVE")
+    (ucs               . #x012C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0306)
+    (->lowercase       #x012D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH BREVE")
+    (ucs               . #x012D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0306)
+    (->uppercase       #x012C)
+    (->titlecase       #x012C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH OGONEK")
+    (ucs               . #x012E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0328)
+    (->lowercase       #x012F)
+    (latin-iso8859-4   #xC7)   ; \e-DÇ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER I WITH OGONEK")
+    (->ucs             . #x012E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x012E)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH OGONEK")))
+    (japanese-jisx0212 #x2A #x46)      ; \e$(D*F\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH OGONEK")
+    (ucs               . #x012F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0328)
+    (->uppercase       #x012E)
+    (->titlecase       #x012E)
+    (latin-iso8859-4   #xE7)   ; \e-Dç\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER I WITH OGONEK")
+    (->ucs             . #x012F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x012F)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH OGONEK")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER I WITH OGONEK")))
+    (japanese-jisx0212 #x2B #x46)      ; \e$(D+F\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH DOT ABOVE")
+    (ucs               . #x0130)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0307)
+    (->lowercase       #x0069)
+    (latin-iso8859-3   #xA9)   ; \e-C©\e-A
+    (latin-iso8859-9   #xDD)   ; \e-MÝ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER I WITH DOT ABOVE")
+    (->ucs             . #x0130)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0130)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH DOT ABOVE")))
+    (japanese-jisx0212 #x2A #x44)      ; \e$(D*D\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER DOTLESS I")
+    (ucs               . #x0131)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0049)
+    (->titlecase       #x0049)
+    (latin-iso8859-3   #xB9)   ; \e-C¹\e-A
+    (latin-iso8859-9   #xFD)   ; \e-Mý\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER DOTLESS I")
+    (->ucs             . #x0131)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER DOTLESS I")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER DOTLESS I")))
+    (korean-ksc5601    #x29 #x25)      ; \e$(D)E\e(B
+    (japanese-jisx0212 #x29 #x45)      ; \e$(D)E\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LIGATURE IJ")
+    (ucs               . #x0132)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0049 #x004A)
+    (->lowercase       #x0133)
+    (korean-ksc5601    #x28 #x26)      ; \e$(C(&\e(B
+    (japanese-jisx0212 #x29 #x26)      ; \e$(D)&\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LIGATURE IJ")
+    (ucs               . #x0133)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0069 #x006A)
+    (->uppercase       #x0132)
+    (->titlecase       #x0132)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LIGATURE IJ")
+    (->ucs             . #x0133)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0133)
+    (->uppercase       #x0132)
+    (->titlecase       #x0132)
+    (korean-ksc5601    #x29 #x26)      ; \e$(C)&\e(B
+    (japanese-jisx0212 #x29 #x46)      ; \e$(D)F\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER J WITH CIRCUMFLEX")
+    (ucs               . #x0134)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004A #x0302)
+    (->lowercase       #x0135)
+    (latin-iso8859-3   #xAC)   ; \e-C¬\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER J WITH CIRCUMFLEX")
+    (->ucs             . #x0134)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0134)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER J WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x48)      ; \e$(D*H\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER J WITH CIRCUMFLEX")
+    (ucs               . #x0135)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006A #x0302)
+    (->uppercase       #x0134)
+    (->titlecase       #x0134)
+    (latin-iso8859-3   #xBC)   ; \e-C¼\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER J WITH CIRCUMFLEX")
+    (->ucs             . #x0135)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0135)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER J WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER J WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x48)      ; \e$(D+H\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER K WITH CEDILLA")
+    (ucs               . #x0136)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004B #x0327)
+    (->lowercase       #x0137)
+    (latin-iso8859-4   #xD3)   ; \e-DÓ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER K WITH CEDILLA")
+    (->ucs             . #x0136)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0136)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER K WITH CEDILLA")))
+    (japanese-jisx0212 #x2A #x49)      ; \e$(D*I\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER K WITH CEDILLA")
+    (ucs               . #x0137)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006B #x0327)
+    (->uppercase       #x0136)
+    (->titlecase       #x0136)
+    (latin-iso8859-4   #xF3)   ; \e-Dó\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER K WITH CEDILLA")
+    (->ucs             . #x0137)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0137)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER K WITH CEDILLA")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER K WITH CEDILLA")))
+    (japanese-jisx0212 #x2B #x49)      ; \e$(D+I\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER KRA")
+    (ucs               . #x0138)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Greenlandic")
+    (latin-iso8859-4   #xA2)   ; \e-D¢\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER KRA")
+    (->ucs             . #x0138)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Greenlandic")
+    (->decomposition   wide #x0138)
+    (korean-ksc5601    #x29 #x27)      ; \e$(D)G\e(B
+    (japanese-jisx0212 #x29 #x47)      ; \e$(D)G\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L WITH ACUTE")
+    (ucs               . #x0139)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004C #x0301)
+    (->lowercase       #x013A)
+    (latin-iso8859-2   #xC5)   ; \e-BÅ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER L WITH ACUTE")
+    (->ucs             . #x0139)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0139)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER L WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x4A)      ; \e$(D*J\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH ACUTE")
+    (ucs               . #x013A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006C #x0301)
+    (->uppercase       #x0139)
+    (->titlecase       #x0139)
+    (latin-iso8859-2   #xE5)   ; \e-Bå\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER L WITH ACUTE")
+    (->ucs             . #x013A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x013A)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH ACUTE")))
+    (japanese-jisx0212 #x2B #x4A)      ; \e$(D+J\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L WITH CEDILLA")
+    (ucs               . #x013B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004C #x0327)
+    (->lowercase       #x013C)
+    (latin-iso8859-4   #xA6)   ; \e-D¦\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER L WITH CEDILLA")
+    (->ucs             . #x013B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x013B)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH CEDILLA")))
+    (japanese-jisx0212 #x2A #x4C)      ; \e$(D*L\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH CEDILLA")
+    (ucs               . #x013C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006C #x0327)
+    (->uppercase       #x013B)
+    (->titlecase       #x013B)
+    (latin-iso8859-4   #xB6)   ; \e-D¶\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER L WITH CEDILLA")
+    (->ucs             . #x013C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x013C)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH CEDILLA")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH CEDILLA")))
+    (japanese-jisx0212 #x2B #x4C)      ; \e$(D+L\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L WITH CARON")
+    (ucs               . #x013D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004C #x030C)
+    (->lowercase       #x013E)
+    (latin-iso8859-2   #xA5)   ; \e-B¥\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER L WITH CARON")
+    (->ucs             . #x013D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x013D)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER L WITH CARON")))
+    (japanese-jisx0212 #x2A #x4B)      ; \e$(D*K\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH CARON")
+    (ucs               . #x013E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006C #x030C)
+    (->uppercase       #x013D)
+    (->titlecase       #x013D)
+    (latin-iso8859-2   #xB5)   ; \e-Bµ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER L WITH CARON")
+    (->ucs             . #x013E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x013E)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH CARON")))
+    (japanese-jisx0212 #x2B #x4B)      ; \e$(D+K\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L WITH MIDDLE DOT")
+    (ucs               . #x013F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x004C #x00B7)
+    (->lowercase       #x0140)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH MIDDLE DOT")
+    (->ucs             . #x013F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x013F)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER L WITH MIDDLE DOT")))
+    (korean-ksc5601    #x28 #x28)      ; \e$(D))\e(B
+    (japanese-jisx0212 #x29 #x29)      ; \e$(D))\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH MIDDLE DOT")
+    (ucs               . #x0140)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x006C #x00B7)
+    (->uppercase       #x013F)
+    (->titlecase       #x013F)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER L WITH MIDDLE DOT")
+    (->ucs             . #x0140)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0140)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH MIDDLE DOT")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH MIDDLE DOT")))
+    (korean-ksc5601    #x29 #x28)      ; \e$(D)I\e(B
+    (japanese-jisx0212 #x29 #x49)      ; \e$(D)I\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L WITH STROKE")
+    (ucs               . #x0141)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0142)
+    (latin-iso8859-2   #xA3)   ; \e-B£\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER L WITH STROKE")
+    (->ucs             . #x0141)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0141)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER L WITH STROKE")))
+    (korean-ksc5601    #x28 #x29)      ; \e$(D)(\e(B
+    (japanese-jisx0212 #x29 #x28)      ; \e$(D)(\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH STROKE")
+    (ucs               . #x0142)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0141)
+    (->titlecase       #x0141)
+    (latin-iso8859-2   #xB3)   ; \e-B³\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER L WITH STROKE")
+    (->ucs             . #x0142)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0142)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH STROKE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER L WITH STROKE")))
+    (korean-ksc5601    #x29 #x29)      ; \e$(D)H\e(B
+    (japanese-jisx0212 #x29 #x48)      ; \e$(D)H\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH ACUTE")
+    (ucs               . #x0143)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004E #x0301)
+    (->lowercase       #x0144)
+    (latin-iso8859-2   #xD1)   ; \e-BÑ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER N WITH ACUTE")
+    (->ucs             . #x0143)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0143)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER N WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x4D)      ; \e$(D*M\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH ACUTE")
+    (ucs               . #x0144)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006E #x0301)
+    (->uppercase       #x0143)
+    (->titlecase       #x0143)
+    (latin-iso8859-2   #xF1)   ; \e-Bñ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER N WITH ACUTE")
+    (->ucs             . #x0144)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0144)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER N WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER N WITH ACUTE")))
+    (japanese-jisx0212 #x2B #x4D)      ; \e$(D+M\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH CEDILLA")
+    (ucs               . #x0145)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004E #x0327)
+    (->lowercase       #x0146)
+    (latin-iso8859-4   #xD1)   ; \e-DÑ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER N WITH CEDILLA")
+    (->ucs             . #x0145)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0145)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER N WITH CEDILLA")))
+    (japanese-jisx0212 #x2A #x4F)      ; \e$(D*O\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH CEDILLA")
+    (ucs               . #x0146)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006E #x0327)
+    (->uppercase       #x0145)
+    (->titlecase       #x0145)
+    (latin-iso8859-4   #xF1)   ; \e-Dñ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER N WITH CEDILLA")
+    (->ucs             . #x0146)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0146)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER N WITH CEDILLA")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER N WITH CEDILLA")))
+    (japanese-jisx0212 #x2B #x4F)      ; \e$(D+O\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH CARON")
+    (ucs               . #x0147)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004E #x030C)
+    (->lowercase       #x0148)
+    (latin-iso8859-2   #xD2)   ; \e-BÒ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER N WITH CARON")
+    (->ucs             . #x0147)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0147)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER N WITH CARON")))
+    (japanese-jisx0212 #x2A #x4E)      ; \e$(D*N\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH CARON")
+    (ucs               . #x0148)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006E #x030C)
+    (->uppercase       #x0147)
+    (->titlecase       #x0147)
+    (latin-iso8859-2   #xF2)   ; \e-Bò\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER N WITH CARON")
+    (->ucs             . #x0148)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0148)
+    (->uppercase       #x0147)
+    (->titlecase       #x0147)
+    (japanese-jisx0212 #x2B #x4E)      ; \e$(D+N\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N PRECEDED BY APOSTROPHE")
+    (ucs               . #x0149)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x02BC #x006E)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN SMALL LETTER N PRECEDED BY APOSTROPHE")
+    (->ucs             . #x0149)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0149)
+    (korean-ksc5601    #x29 #x30)      ; \e$(D)J\e(B
+    (japanese-jisx0212 #x29 #x4A)      ; \e$(D)J\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER ENG")
+    (ucs               . #x014A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Sami")
+    (->lowercase       #x014B)
+    (latin-iso8859-4   #xBD)   ; \e-D½\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER ENG")
+    (->ucs             . #x014A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Sami")
+    (->decomposition   wide #x014A)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER ENG")))
+    (korean-ksc5601    #x28 #x2F)      ; \e$(D)+\e(B
+    (japanese-jisx0212 #x29 #x2B)      ; \e$(D)+\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER ENG")
+    (ucs               . #x014B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Sami")
+    (->uppercase       #x014A)
+    (->titlecase       #x014A)
+    (latin-iso8859-4   #xBF)   ; \e-D¿\e-A
+    (ipa               #xD5)   ; \e-0Õ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER ENG")
+    (->ucs             . #x014B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Sami")
+    (->decomposition   wide #x014B)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER ENG")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER ENG")))
+    (korean-ksc5601    #x29 #x2F)      ; \e$(D)K\e(B
+    (japanese-jisx0212 #x29 #x4B)      ; \e$(D)K\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH MACRON")
+    (ucs               . #x014C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0304)
+    (->lowercase       #x014D)
+    (latin-iso8859-4   #xD2)   ; \e-DÒ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER O WITH MACRON")
+    (->ucs             . #x014C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x014C)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER O WITH MACRON")))
+    (japanese-jisx0212 #x2A #x57)      ; \e$(D*W\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH MACRON")
+    (ucs               . #x014D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0304)
+    (->uppercase       #x014C)
+    (->titlecase       #x014C)
+    (latin-iso8859-4   #xF2)   ; \e-Dò\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER O WITH MACRON")
+    (->ucs             . #x014D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x014D)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH MACRON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH MACRON")))
+    (chinese-gb2312    #x28 #x2D)      ; \e$(D+W\e(B
+    (japanese-jisx0212 #x2B #x57)      ; \e$(D+W\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH BREVE")
+    (ucs               . #x014E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0306)
+    (->lowercase       #x014F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH BREVE")
+    (ucs               . #x014F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0306)
+    (->uppercase       #x014E)
+    (->titlecase       #x014E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH DOUBLE ACUTE")
+    (ucs               . #x0150)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x030B)
+    (->lowercase       #x0151)
+    (latin-iso8859-2   #xD5)   ; \e-BÕ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH DOUBLE ACUTE")
+    (->ucs             . #x0150)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0150)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER O WITH DOUBLE ACUTE")))
+    (japanese-jisx0212 #x2A #x56)      ; \e$(D*V\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH DOUBLE ACUTE")
+    (ucs               . #x0151)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x030B)
+    (->uppercase       #x0150)
+    (->titlecase       #x0150)
+    (latin-iso8859-2   #xF5)   ; \e-Bõ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN SMALL LETTER O WITH DOUBLE ACUTE")
+    (->ucs             . #x0151)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0151)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH DOUBLE ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH DOUBLE ACUTE")))
+    (japanese-jisx0212 #x2B #x56)      ; \e$(D+V\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LIGATURE OE")
+    (ucs               . #x0152)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0153)
+    (korean-ksc5601    #x28 #x2B)      ; \e$(C(+\e(B
+    (japanese-jisx0212 #x29 #x2D)      ; \e$(D)-\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LIGATURE OE")
+    (ucs               . #x0153)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0152)
+    (->titlecase       #x0152)
+    (ipa               #xB0)   ; \e-0°\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LIGATURE OE")
+    (->ucs             . #x0153)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0153)
+    (->uppercase       #x0152)
+    (->titlecase       #x0152)
+    (korean-ksc5601    #x29 #x2B)      ; \e$(D)M\e(B
+    (japanese-jisx0212 #x29 #x4D)      ; \e$(D)M\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER R WITH ACUTE")
+    (ucs               . #x0154)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0052 #x0301)
+    (->lowercase       #x0155)
+    (latin-iso8859-2   #xC0)   ; \e-BÀ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER R WITH ACUTE")
+    (->ucs             . #x0154)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0154)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER R WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x59)      ; \e$(D*Y\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH ACUTE")
+    (ucs               . #x0155)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0072 #x0301)
+    (->uppercase       #x0154)
+    (->titlecase       #x0154)
+    (latin-iso8859-2   #xE0)   ; \e-Bà\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER R WITH ACUTE")
+    (->ucs             . #x0155)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0155)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER R WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER R WITH ACUTE")))
+    (japanese-jisx0212 #x2B #x59)      ; \e$(D+Y\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER R WITH CEDILLA")
+    (ucs               . #x0156)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0052 #x0327)
+    (->lowercase       #x0157)
+    (latin-iso8859-4   #xA3)   ; \e-D£\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER R WITH CEDILLA")
+    (->ucs             . #x0156)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0156)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER R WITH CEDILLA")))
+    (japanese-jisx0212 #x2A #x5B)      ; \e$(D*[\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH CEDILLA")
+    (ucs               . #x0157)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0072 #x0327)
+    (->uppercase       #x0156)
+    (->titlecase       #x0156)
+    (latin-iso8859-4   #xB3)   ; \e-D³\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER R WITH CEDILLA")
+    (->ucs             . #x0157)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0157)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER R WITH CEDILLA")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER R WITH CEDILLA")))
+    (japanese-jisx0212 #x2B #x5B)      ; \e$(D+[\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER R WITH CARON")
+    (ucs               . #x0158)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0052 #x030C)
+    (->lowercase       #x0159)
+    (latin-iso8859-2   #xD8)   ; \e-BØ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER R WITH CARON")
+    (->ucs             . #x0158)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0158)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER R WITH CARON")))
+    (japanese-jisx0212 #x2A #x5A)      ; \e$(D*Z\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH CARON")
+    (ucs               . #x0159)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0072 #x030C)
+    (->uppercase       #x0158)
+    (->titlecase       #x0158)
+    (latin-iso8859-2   #xF8)   ; \e-Bø\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER R WITH CARON")
+    (->ucs             . #x0159)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0159)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER R WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER R WITH CARON")))
+    (japanese-jisx0212 #x2B #x5A)      ; \e$(D+Z\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S WITH ACUTE")
+    (ucs               . #x015A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0053 #x0301)
+    (->lowercase       #x015B)
+    (latin-iso8859-2   #xA6)   ; \e-B¦\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER S WITH ACUTE")
+    (->ucs             . #x015A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x015A)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER S WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x5C)      ; \e$(D*\\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH ACUTE")
+    (ucs               . #x015B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0073 #x0301)
+    (->uppercase       #x015A)
+    (->titlecase       #x015A)
+    (latin-iso8859-2   #xB6)   ; \e-B¶\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER S WITH ACUTE")
+    (->ucs             . #x015B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x015B)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER S WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER S WITH ACUTE")))
+    (japanese-jisx0212 #x2B #x5C)      ; \e$(D+\\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S WITH CIRCUMFLEX")
+    (ucs               . #x015C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0053 #x0302)
+    (->lowercase       #x015D)
+    (latin-iso8859-3   #xDE)   ; \e-CÞ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER S WITH CIRCUMFLEX")
+    (->ucs             . #x015C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x015C)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER S WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x5D)      ; \e$(D*]\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH CIRCUMFLEX")
+    (ucs               . #x015D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0073 #x0302)
+    (->uppercase       #x015C)
+    (->titlecase       #x015C)
+    (latin-iso8859-3   #xFE)   ; \e-Cþ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER S WITH CIRCUMFLEX")
+    (->ucs             . #x015D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x015D)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER S WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER S WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x5D)      ; \e$(D+]\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S WITH CEDILLA")
+    (ucs               . #x015E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   #x0053 #x0327)
+    (->lowercase       #x015F)
+    (latin-iso8859-2   #xAA)   ; \e-Bª\e-A
+    (latin-iso8859-3   #xAA)   ; \e-Cª\e-A
+    (latin-iso8859-9   #xDE)   ; \e-MÞ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER S WITH CEDILLA")
+    (->ucs             . #x015E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   wide #x015E)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER S WITH CEDILLA")))
+    (japanese-jisx0212 #x2A #x5F)      ; \e$(D*_\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH CEDILLA")
+    (ucs               . #x015F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   #x0073 #x0327)
+    (->uppercase       #x015E)
+    (->titlecase       #x015E)
+    (latin-iso8859-2   #xBA)   ; \e-Bº\e-A
+    (latin-iso8859-3   #xBA)   ; \e-Cº\e-A
+    (latin-iso8859-9   #xFE)   ; \e-Mþ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER S WITH CEDILLA")
+    (->ucs             . #x015F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   wide #x015F)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER S WITH CEDILLA")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER S WITH CEDILLA")))
+    (japanese-jisx0212 #x2B #x5F)      ; \e$(D+_\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S WITH CARON")
+    (ucs               . #x0160)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0053 #x030C)
+    (->lowercase       #x0161)
+    (latin-iso8859-2   #xA9)   ; \e-B©\e-A
+    (latin-iso8859-4   #xA9)   ; \e-D©\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER S WITH CARON")
+    (->ucs             . #x0160)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0160)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER S WITH CARON")))
+    (japanese-jisx0212 #x2A #x5E)      ; \e$(D*^\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH CARON")
+    (ucs               . #x0161)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0073 #x030C)
+    (->uppercase       #x0160)
+    (->titlecase       #x0160)
+    (latin-iso8859-2   #xB9)   ; \e-B¹\e-A
+    (latin-iso8859-4   #xB9)   ; \e-D¹\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER S WITH CARON")
+    (->ucs             . #x0161)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0161)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER S WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER S WITH CARON")))
+    (japanese-jisx0212 #x2B #x5E)      ; \e$(D+^\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH CEDILLA")
+    (ucs               . #x0162)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   #x0054 #x0327)
+    (->lowercase       #x0163)
+    (latin-iso8859-2   #xDE)   ; \e-BÞ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER T WITH CEDILLA")
+    (->ucs             . #x0162)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   wide #x0162)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER T WITH CEDILLA")))
+    (japanese-jisx0212 #x2A #x61)      ; \e$(D*a\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH CEDILLA")
+    (ucs               . #x0163)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   #x0074 #x0327)
+    (->uppercase       #x0162)
+    (->titlecase       #x0162)
+    (latin-iso8859-2   #xFE)   ; \e-Bþ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER T WITH CEDILLA")
+    (->ucs             . #x0163)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   wide #x0163)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER T WITH CEDILLA")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER T WITH CEDILLA")))
+    (japanese-jisx0212 #x2B #x61)      ; \e$(D+a\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH CARON")
+    (ucs               . #x0164)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0054 #x030C)
+    (->lowercase       #x0165)
+    (latin-iso8859-2   #xAB)   ; \e-B«\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER T WITH CARON")
+    (->ucs             . #x0164)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0164)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER T WITH CARON")))
+    (japanese-jisx0212 #x2A #x60)      ; \e$(D*`\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH CARON")
+    (ucs               . #x0165)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0074 #x030C)
+    (->uppercase       #x0164)
+    (->titlecase       #x0164)
+    (latin-iso8859-2   #xBB)   ; \e-B»\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER T WITH CARON")
+    (->ucs             . #x0165)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0165)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER T WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER T WITH CARON")))
+    (japanese-jisx0212 #x2B #x60)      ; \e$(D+`\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH STROKE")
+    (ucs               . #x0166)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0167)
+    (latin-iso8859-4   #xAC)   ; \e-D¬\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER T WITH STROKE")
+    (->ucs             . #x0166)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0166)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER T WITH STROKE")))
+    (korean-ksc5601    #x28 #x2E)      ; \e$(D)/\e(B
+    (japanese-jisx0212 #x29 #x2F)      ; \e$(D)/\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH STROKE")
+    (ucs               . #x0167)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0166)
+    (->titlecase       #x0166)
+    (latin-iso8859-4   #xBC)   ; \e-D¼\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER T WITH STROKE")
+    (->ucs             . #x0167)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0167)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER T WITH STROKE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER T WITH STROKE")))
+    (korean-ksc5601    #x29 #x2E)      ; \e$(D)O\e(B
+    (japanese-jisx0212 #x29 #x4F)      ; \e$(D)O\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH TILDE")
+    (ucs               . #x0168)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0303)
+    (->lowercase       #x0169)
+    (latin-iso8859-4   #xDD)   ; \e-DÝ\e-A
+    (latin-viscii-upper #xFB)  ; \e-DÝ\e-A
+    (latin-viscii      #x9D)   ; \e-DÝ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER U WITH TILDE")
+    (->ucs             . #x0168)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0168)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH TILDE")))
+    (japanese-jisx0212 #x2A #x6C)      ; \e$(D*l\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH TILDE")
+    (ucs               . #x0169)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0303)
+    (->uppercase       #x0168)
+    (->titlecase       #x0168)
+    (latin-iso8859-4   #xFD)   ; \e-Dý\e-A
+    (latin-viscii-lower #xFB)  ; \e-Dý\e-A
+    (latin-viscii      #xFB)   ; \e-Dý\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH TILDE")
+    (->ucs             . #x0169)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0169)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH TILDE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH TILDE")))
+    (japanese-jisx0212 #x2B #x6C)      ; \e$(D+l\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH MACRON")
+    (ucs               . #x016A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0304)
+    (->lowercase       #x016B)
+    (latin-iso8859-4   #xDE)   ; \e-DÞ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER U WITH MACRON")
+    (->ucs             . #x016A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x016A)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH MACRON")))
+    (japanese-jisx0212 #x2A #x69)      ; \e$(D*i\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH MACRON")
+    (ucs               . #x016B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0304)
+    (->uppercase       #x016A)
+    (->titlecase       #x016A)
+    (latin-iso8859-4   #xFE)   ; \e-Dþ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH MACRON")
+    (->ucs             . #x016B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x016B)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH MACRON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH MACRON")))
+    (chinese-gb2312    #x28 #x31)      ; \e$(D+i\e(B
+    (japanese-jisx0212 #x2B #x69)      ; \e$(D+i\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH BREVE")
+    (ucs               . #x016C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0306)
+    (->lowercase       #x016D)
+    (latin-iso8859-3   #xDD)   ; \e-CÝ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER U WITH BREVE")
+    (->ucs             . #x016C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x016C)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH BREVE")))
+    (japanese-jisx0212 #x2A #x66)      ; \e$(D*f\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH BREVE")
+    (ucs               . #x016D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0306)
+    (->uppercase       #x016C)
+    (->titlecase       #x016C)
+    (latin-iso8859-3   #xFD)   ; \e-Cý\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH BREVE")
+    (->ucs             . #x016D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x016D)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH BREVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH BREVE")))
+    (japanese-jisx0212 #x2B #x66)      ; \e$(D+f\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH RING ABOVE")
+    (ucs               . #x016E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x030A)
+    (->lowercase       #x016F)
+    (latin-iso8859-2   #xD9)   ; \e-BÙ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH RING ABOVE")
+    (->ucs             . #x016E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x016E)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH RING ABOVE")))
+    (japanese-jisx0212 #x2A #x6B)      ; \e$(D*k\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH RING ABOVE")
+    (ucs               . #x016F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x030A)
+    (->uppercase       #x016E)
+    (->titlecase       #x016E)
+    (latin-iso8859-2   #xF9)   ; \e-Bù\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH RING ABOVE")
+    (->ucs             . #x016F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x016F)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH RING ABOVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH RING ABOVE")))
+    (japanese-jisx0212 #x2B #x6B)      ; \e$(D+k\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH DOUBLE ACUTE")
+    (ucs               . #x0170)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x030B)
+    (->lowercase       #x0171)
+    (latin-iso8859-2   #xDB)   ; \e-BÛ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DOUBLE ACUTE")
+    (->ucs             . #x0170)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0170)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH DOUBLE ACUTE")))
+    (japanese-jisx0212 #x2A #x68)      ; \e$(D*h\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH DOUBLE ACUTE")
+    (ucs               . #x0171)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x030B)
+    (->uppercase       #x0170)
+    (->titlecase       #x0170)
+    (latin-iso8859-2   #xFB)   ; \e-Bû\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN SMALL LETTER U WITH DOUBLE ACUTE")
+    (->ucs             . #x0171)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0171)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DOUBLE ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DOUBLE ACUTE")))
+    (japanese-jisx0212 #x2B #x68)      ; \e$(D+h\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH OGONEK")
+    (ucs               . #x0172)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0328)
+    (->lowercase       #x0173)
+    (latin-iso8859-4   #xD9)   ; \e-DÙ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER U WITH OGONEK")
+    (->ucs             . #x0172)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0172)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH OGONEK")))
+    (japanese-jisx0212 #x2A #x6A)      ; \e$(D*j\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH OGONEK")
+    (ucs               . #x0173)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0328)
+    (->uppercase       #x0172)
+    (->titlecase       #x0172)
+    (latin-iso8859-4   #xF9)   ; \e-Dù\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH OGONEK")
+    (->ucs             . #x0173)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0173)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH OGONEK")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH OGONEK")))
+    (japanese-jisx0212 #x2B #x6A)      ; \e$(D+j\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER W WITH CIRCUMFLEX")
+    (ucs               . #x0174)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0057 #x0302)
+    (->lowercase       #x0175)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER W WITH CIRCUMFLEX")
+    (->ucs             . #x0174)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0174)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER W WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x71)      ; \e$(D*q\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER W WITH CIRCUMFLEX")
+    (ucs               . #x0175)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0077 #x0302)
+    (->uppercase       #x0174)
+    (->titlecase       #x0174)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER W WITH CIRCUMFLEX")
+    (->ucs             . #x0175)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0175)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER W WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER W WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x71)      ; \e$(D+q\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH CIRCUMFLEX")
+    (ucs               . #x0176)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0059 #x0302)
+    (->lowercase       #x0177)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER Y WITH CIRCUMFLEX")
+    (->ucs             . #x0176)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0176)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER Y WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2A #x74)      ; \e$(D*t\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH CIRCUMFLEX")
+    (ucs               . #x0177)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x0302)
+    (->uppercase       #x0176)
+    (->titlecase       #x0176)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER Y WITH CIRCUMFLEX")
+    (->ucs             . #x0177)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0177)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Y WITH CIRCUMFLEX")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Y WITH CIRCUMFLEX")))
+    (japanese-jisx0212 #x2B #x74)      ; \e$(D+t\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH DIAERESIS")
+    (ucs               . #x0178)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0059 #x0308)
+    (->lowercase       #x00FF)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER Y WITH DIAERESIS")
+    (->ucs             . #x0178)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0178)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER Y WITH DIAERESIS")))
+    (japanese-jisx0212 #x2A #x73)      ; \e$(D*s\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Z WITH ACUTE")
+    (ucs               . #x0179)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x005A #x0301)
+    (->lowercase       #x017A)
+    (latin-iso8859-2   #xAC)   ; \e-B¬\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER Z WITH ACUTE")
+    (->ucs             . #x0179)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0179)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER Z WITH ACUTE")))
+    (japanese-jisx0212 #x2A #x75)      ; \e$(D*u\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH ACUTE")
+    (ucs               . #x017A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x007A #x0301)
+    (->uppercase       #x0179)
+    (->titlecase       #x0179)
+    (latin-iso8859-2   #xBC)   ; \e-B¼\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER Z WITH ACUTE")
+    (->ucs             . #x017A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x017A)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Z WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Z WITH ACUTE")))
+    (japanese-jisx0212 #x2B #x75)      ; \e$(D+u\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Z WITH DOT ABOVE")
+    (ucs               . #x017B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x005A #x0307)
+    (->lowercase       #x017C)
+    (latin-iso8859-2   #xAF)   ; \e-B¯\e-A
+    (latin-iso8859-3   #xAF)   ; \e-C¯\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER Z WITH DOT ABOVE")
+    (->ucs             . #x017B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x017B)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER Z WITH DOT ABOVE")))
+    (japanese-jisx0212 #x2A #x77)      ; \e$(D*w\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH DOT ABOVE")
+    (ucs               . #x017C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x007A #x0307)
+    (->uppercase       #x017B)
+    (->titlecase       #x017B)
+    (latin-iso8859-2   #xBF)   ; \e-B¿\e-A
+    (latin-iso8859-3   #xBF)   ; \e-C¿\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER Z WITH DOT ABOVE")
+    (->ucs             . #x017C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x017C)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Z WITH DOT ABOVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Z WITH DOT ABOVE")))
+    (japanese-jisx0212 #x2B #x77)      ; \e$(D+w\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Z WITH CARON")
+    (ucs               . #x017D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x005A #x030C)
+    (->lowercase       #x017E)
+    (latin-iso8859-2   #xAE)   ; \e-B®\e-A
+    (latin-iso8859-4   #xAE)   ; \e-D®\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER Z WITH CARON")
+    (->ucs             . #x017D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x017D)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER Z WITH CARON")))
+    (japanese-jisx0212 #x2A #x76)      ; \e$(D*v\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH CARON")
+    (ucs               . #x017E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x007A #x030C)
+    (->uppercase       #x017D)
+    (->titlecase       #x017D)
+    (latin-iso8859-2   #xBE)   ; \e-B¾\e-A
+    (latin-iso8859-4   #xBE)   ; \e-D¾\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER Z WITH CARON")
+    (->ucs             . #x017E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x017E)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Z WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER Z WITH CARON")))
+    (japanese-jisx0212 #x2B #x76)      ; \e$(D+v\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER LONG S")
+    (ucs               . #x017F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0073)
+    (->uppercase       #x0053)
+    (->titlecase       #x0053)
+    ))
diff --git a/lisp/utf-2000/u00180-Latin-Extended-B.el b/lisp/utf-2000/u00180-Latin-Extended-B.el
new file mode 100644 (file)
index 0000000..555470f
--- /dev/null
@@ -0,0 +1,1824 @@
+(define-char
+  '((name              . "LATIN SMALL LETTER B WITH STROKE")
+    (ucs               . #x0180)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER B WITH HOOK")
+    (ucs               . #x0181)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0253)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER B WITH TOPBAR")
+    (ucs               . #x0182)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0183)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER B WITH TOPBAR")
+    (ucs               . #x0183)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0182)
+    (->titlecase       #x0182)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER TONE SIX")
+    (ucs               . #x0184)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0185)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TONE SIX")
+    (ucs               . #x0185)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0184)
+    (->titlecase       #x0184)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER OPEN O")
+    (ucs               . #x0186)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0254)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER C WITH HOOK")
+    (ucs               . #x0187)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0188)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER C WITH HOOK")
+    (ucs               . #x0188)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0187)
+    (->titlecase       #x0187)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER AFRICAN D")
+    (ucs               . #x0189)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->lowercase       #x0256)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH HOOK")
+    (ucs               . #x018A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0257)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH TOPBAR")
+    (ucs               . #x018B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x018C)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH TOPBAR")
+    (ucs               . #x018C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x018B)
+    (->titlecase       #x018B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED DELTA")
+    (ucs               . #x018D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER REVERSED E")
+    (ucs               . #x018E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01DD)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER SCHWA")
+    (ucs               . #x018F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0259)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER OPEN E")
+    (ucs               . #x0190)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x025B)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER F WITH HOOK")
+    (ucs               . #x0191)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0192)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER F WITH HOOK")
+    (ucs               . #x0192)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0191)
+    (->titlecase       #x0191)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G WITH HOOK")
+    (ucs               . #x0193)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0260)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER GAMMA")
+    (ucs               . #x0194)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0263)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER HV")
+    (ucs               . #x0195)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "hwair")
+    (->uppercase       #x01F6)
+    (->titlecase       #x01F6)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER IOTA")
+    (ucs               . #x0196)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0269)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH STROKE")
+    (ucs               . #x0197)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0268)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER K WITH HOOK")
+    (ucs               . #x0198)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0199)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER K WITH HOOK")
+    (ucs               . #x0199)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0198)
+    (->titlecase       #x0198)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH BAR")
+    (ucs               . #x019A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER LAMBDA WITH STROKE")
+    (ucs               . #x019B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER TURNED M")
+    (ucs               . #x019C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x026F)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH LEFT HOOK")
+    (ucs               . #x019D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0272)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH LONG RIGHT LEG")
+    (ucs               . #x019E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH MIDDLE TILDE")
+    (ucs               . #x019F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->lowercase       #x0275)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH HORN")
+    (ucs               . #x01A0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x031B)
+    (->lowercase       #x01A1)
+    (latin-viscii-upper #xBD)  ; \e-2½\e-A
+    (latin-viscii      #xB4)   ; \e-2½\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH HORN")
+    (ucs               . #x01A1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x031B)
+    (->uppercase       #x01A0)
+    (->titlecase       #x01A0)
+    (latin-viscii-lower #xBD)  ; \e-1½\e-A
+    (latin-viscii      #xBD)   ; \e-1½\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER OI")
+    (ucs               . #x01A2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "gha")
+    (->lowercase       #x01A3)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER OI")
+    (ucs               . #x01A3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "gha")
+    (->uppercase       #x01A2)
+    (->titlecase       #x01A2)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER P WITH HOOK")
+    (ucs               . #x01A4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01A5)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER P WITH HOOK")
+    (ucs               . #x01A5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01A4)
+    (->titlecase       #x01A4)
+    ))
+(define-char
+  '((name              . "LATIN LETTER YR")
+    (ucs               . #x01A6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0280)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER TONE TWO")
+    (ucs               . #x01A7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01A8)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TONE TWO")
+    (ucs               . #x01A8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01A7)
+    (->titlecase       #x01A7)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER ESH")
+    (ucs               . #x01A9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0283)
+    ))
+(define-char
+  '((name              . "LATIN LETTER REVERSED ESH LOOP")
+    (ucs               . #x01AA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH PALATAL HOOK")
+    (ucs               . #x01AB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH HOOK")
+    (ucs               . #x01AC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01AD)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH HOOK")
+    (ucs               . #x01AD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01AC)
+    (->titlecase       #x01AC)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH RETROFLEX HOOK")
+    (ucs               . #x01AE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0288)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH HORN")
+    (ucs               . #x01AF)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x031B)
+    (->lowercase       #x01B0)
+    (latin-viscii-upper #xDF)  ; \e-2ß\e-A
+    (latin-viscii      #xBF)   ; \e-2ß\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH HORN")
+    (ucs               . #x01B0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x031B)
+    (->uppercase       #x01AF)
+    (->titlecase       #x01AF)
+    (latin-viscii-lower #xDF)  ; \e-1ß\e-A
+    (latin-viscii      #xDF)   ; \e-1ß\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER UPSILON")
+    (ucs               . #x01B1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x028A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER V WITH HOOK")
+    (ucs               . #x01B2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x028B)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH HOOK")
+    (ucs               . #x01B3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01B4)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH HOOK")
+    (ucs               . #x01B4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01B3)
+    (->titlecase       #x01B3)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Z WITH STROKE")
+    (ucs               . #x01B5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01B6)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH STROKE")
+    (ucs               . #x01B6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01B5)
+    (->titlecase       #x01B5)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER EZH")
+    (ucs               . #x01B7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0292)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER EZH REVERSED")
+    (ucs               . #x01B8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01B9)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER EZH REVERSED")
+    (ucs               . #x01B9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01B8)
+    (->titlecase       #x01B8)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER EZH WITH TAIL")
+    (ucs               . #x01BA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER TWO WITH STROKE")
+    (ucs               . #x01BB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER TONE FIVE")
+    (ucs               . #x01BC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01BD)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TONE FIVE")
+    (ucs               . #x01BD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01BC)
+    (->titlecase       #x01BC)
+    ))
+(define-char
+  '((name              . "LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE")
+    (ucs               . #x01BE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER WYNN")
+    (ucs               . #x01BF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01F7)
+    (->titlecase       #x01F7)
+    ))
+(define-char
+  '((name              . "LATIN LETTER DENTAL CLICK")
+    (ucs               . #x01C0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER LATERAL CLICK")
+    (ucs               . #x01C1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER ALVEOLAR CLICK")
+    (ucs               . #x01C2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER RETROFLEX CLICK")
+    (ucs               . #x01C3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER DZ WITH CARON")
+    (ucs               . #x01C4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0044 #x017D)
+    (->lowercase       #x01C6)
+    (->titlecase       #x01C5)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON")
+    (ucs               . #x01C5)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0044 #x017E)
+    (->uppercase       #x01C4)
+    (->lowercase       #x01C6)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER DZ WITH CARON")
+    (ucs               . #x01C6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0064 #x017E)
+    (->uppercase       #x01C4)
+    (->titlecase       #x01C5)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER LJ")
+    (ucs               . #x01C7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x004C #x004A)
+    (->lowercase       #x01C9)
+    (->titlecase       #x01C8)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L WITH SMALL LETTER J")
+    (ucs               . #x01C8)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x004C #x006A)
+    (->uppercase       #x01C7)
+    (->lowercase       #x01C9)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER LJ")
+    (ucs               . #x01C9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x006C #x006A)
+    (->uppercase       #x01C7)
+    (->titlecase       #x01C8)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER NJ")
+    (ucs               . #x01CA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x004E #x004A)
+    (->lowercase       #x01CC)
+    (->titlecase       #x01CB)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH SMALL LETTER J")
+    (ucs               . #x01CB)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x004E #x006A)
+    (->uppercase       #x01CA)
+    (->lowercase       #x01CC)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER NJ")
+    (ucs               . #x01CC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x006E #x006A)
+    (->uppercase       #x01CA)
+    (->titlecase       #x01CB)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH CARON")
+    (ucs               . #x01CD)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x030C)
+    (->lowercase       #x01CE)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER A WITH CARON")
+    (->ucs             . #x01CD)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01CD)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER A WITH CARON")))
+    (japanese-jisx0212 #x2A #x26)      ; \e$(D*&\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH CARON")
+    (ucs               . #x01CE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x030C)
+    (->uppercase       #x01CD)
+    (->titlecase       #x01CD)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER A WITH CARON")
+    (->ucs             . #x01CE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01CE)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER A WITH CARON")))
+    (chinese-gb2312    #x28 #x23)      ; \e$(D+&\e(B
+    (japanese-jisx0212 #x2B #x26)      ; \e$(D+&\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH CARON")
+    (ucs               . #x01CF)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x030C)
+    (->lowercase       #x01D0)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER I WITH CARON")
+    (->ucs             . #x01CF)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01CF)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH CARON")))
+    (japanese-jisx0212 #x2A #x43)      ; \e$(D*C\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH CARON")
+    (ucs               . #x01D0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x030C)
+    (->uppercase       #x01CF)
+    (->titlecase       #x01CF)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER I WITH CARON")
+    (->ucs             . #x01D0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D0)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN SMALL LETTER I WITH CARON")))
+    (chinese-gb2312    #x28 #x2B)      ; \e$(D+C\e(B
+    (japanese-jisx0212 #x2B #x43)      ; \e$(D+C\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH CARON")
+    (ucs               . #x01D1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x030C)
+    (->lowercase       #x01D2)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER O WITH CARON")
+    (->ucs             . #x01D1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D1)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER O WITH CARON")))
+    (japanese-jisx0212 #x2A #x55)      ; \e$(D*U\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH CARON")
+    (ucs               . #x01D2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x030C)
+    (->uppercase       #x01D1)
+    (->titlecase       #x01D1)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER O WITH CARON")
+    (->ucs             . #x01D2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D2)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER O WITH CARON")))
+    (chinese-gb2312    #x28 #x2F)      ; \e$(D+U\e(B
+    (japanese-jisx0212 #x2B #x55)      ; \e$(D+U\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH CARON")
+    (ucs               . #x01D3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x030C)
+    (->lowercase       #x01D4)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN CAPITAL LETTER U WITH CARON")
+    (->ucs             . #x01D3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D3)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH CARON")))
+    (japanese-jisx0212 #x2A #x67)      ; \e$(D*g\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH CARON")
+    (ucs               . #x01D4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x030C)
+    (->uppercase       #x01D3)
+    (->titlecase       #x01D3)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER U WITH CARON")
+    (->ucs             . #x01D4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D4)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH CARON")))
+    (chinese-gb2312    #x28 #x33)      ; \e$(D+g\e(B
+    (japanese-jisx0212 #x2B #x67)      ; \e$(D+g\e(B
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON")
+    (ucs               . #x01D5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00DC #x0304)
+    (->lowercase       #x01D6)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON")
+    (->ucs             . #x01D5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D5)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS AND MACRON")))
+    (japanese-jisx0212 #x2A #x70)      ; \e$(D*p\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH DIAERESIS AND MACRON")
+    (ucs               . #x01D6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00FC #x0304)
+    (->uppercase       #x01D5)
+    (->titlecase       #x01D5)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS AND MACRON")
+    (->ucs             . #x01D6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D6)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON")))
+    (chinese-gb2312    #x28 #x35)      ; \e$(D+p\e(B
+    (japanese-jisx0212 #x2B #x70)      ; \e$(D+p\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE")
+    (ucs               . #x01D7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00DC #x0301)
+    (->lowercase       #x01D8)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE")
+    (->ucs             . #x01D7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D7)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE")))
+    (japanese-jisx0212 #x2A #x6D)      ; \e$(D*m\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE")
+    (ucs               . #x01D8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00FC #x0301)
+    (->uppercase       #x01D7)
+    (->titlecase       #x01D7)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE")
+    (->ucs             . #x01D8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D8)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE")))
+    (chinese-gb2312    #x28 #x36)      ; \e$(D+m\e(B
+    (japanese-jisx0212 #x2B #x6D)      ; \e$(D+m\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON")
+    (ucs               . #x01D9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00DC #x030C)
+    (->lowercase       #x01DA)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON")
+    (->ucs             . #x01D9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01D9)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS AND CARON")))
+    (japanese-jisx0212 #x2A #x6F)      ; \e$(D*o\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH DIAERESIS AND CARON")
+    (ucs               . #x01DA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00FC #x030C)
+    (->uppercase       #x01D9)
+    (->titlecase       #x01D9)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS AND CARON")
+    (->ucs             . #x01DA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01DA)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON")))
+    (chinese-gb2312    #x28 #x37)      ; \e$(D+o\e(B
+    (japanese-jisx0212 #x2B #x6F)      ; \e$(D+o\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE")
+    (ucs               . #x01DB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00DC #x0300)
+    (->lowercase       #x01DC)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE")
+    (->ucs             . #x01DB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01DB)
+    (->lowercase
+     ((name . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE")))
+    (japanese-jisx0212 #x2A #x6E)      ; \e$(D*n\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE")
+    (ucs               . #x01DC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00FC #x0300)
+    (->uppercase       #x01DB)
+    (->titlecase       #x01DB)
+    ))
+(define-char
+  '((name . "FULLWIDTH LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE")
+    (->ucs             . #x01DC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01DC)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE")))
+    (chinese-gb2312    #x28 #x38)      ; \e$(D+n\e(B
+    (japanese-jisx0212 #x2B #x6E)      ; \e$(D+n\e(B
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED E")
+    (ucs               . #x01DD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x018E)
+    (->titlecase       #x018E)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON")
+    (ucs               . #x01DE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00C4 #x0304)
+    (->lowercase       #x01DF)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH DIAERESIS AND MACRON")
+    (ucs               . #x01DF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00E4 #x0304)
+    (->uppercase       #x01DE)
+    (->titlecase       #x01DE)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON")
+    (ucs               . #x01E0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0226 #x0304)
+    (->lowercase       #x01E1)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON")
+    (ucs               . #x01E1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0227 #x0304)
+    (->uppercase       #x01E0)
+    (->titlecase       #x01E0)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER AE WITH MACRON")
+    (ucs               . #x01E2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ash *")
+    (->decomposition   #x00C6 #x0304)
+    (->lowercase       #x01E3)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER AE WITH MACRON")
+    (ucs               . #x01E3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ash *")
+    (->decomposition   #x00E6 #x0304)
+    (->uppercase       #x01E2)
+    (->titlecase       #x01E2)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G WITH STROKE")
+    (ucs               . #x01E4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01E5)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G WITH STROKE")
+    (ucs               . #x01E5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01E4)
+    (->titlecase       #x01E4)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G WITH CARON")
+    (ucs               . #x01E6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0047 #x030C)
+    (->lowercase       #x01E7)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G WITH CARON")
+    (ucs               . #x01E7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0067 #x030C)
+    (->uppercase       #x01E6)
+    (->titlecase       #x01E6)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER K WITH CARON")
+    (ucs               . #x01E8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004B #x030C)
+    (->lowercase       #x01E9)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER K WITH CARON")
+    (ucs               . #x01E9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006B #x030C)
+    (->uppercase       #x01E8)
+    (->titlecase       #x01E8)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH OGONEK")
+    (ucs               . #x01EA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0328)
+    (->lowercase       #x01EB)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH OGONEK")
+    (ucs               . #x01EB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0328)
+    (->uppercase       #x01EA)
+    (->titlecase       #x01EA)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH OGONEK AND MACRON")
+    (ucs               . #x01EC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01EA #x0304)
+    (->lowercase       #x01ED)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH OGONEK AND MACRON")
+    (ucs               . #x01ED)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01EB #x0304)
+    (->uppercase       #x01EC)
+    (->titlecase       #x01EC)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER EZH WITH CARON")
+    (ucs               . #x01EE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01B7 #x030C)
+    (->lowercase       #x01EF)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER EZH WITH CARON")
+    (ucs               . #x01EF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0292 #x030C)
+    (->uppercase       #x01EE)
+    (->titlecase       #x01EE)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER J WITH CARON")
+    (ucs               . #x01F0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006A #x030C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER DZ")
+    (ucs               . #x01F1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0044 #x005A)
+    (->lowercase       #x01F3)
+    (->titlecase       #x01F2)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH SMALL LETTER Z")
+    (ucs               . #x01F2)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0044 #x007A)
+    (->uppercase       #x01F1)
+    (->lowercase       #x01F3)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER DZ")
+    (ucs               . #x01F3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0064 #x007A)
+    (->uppercase       #x01F1)
+    (->titlecase       #x01F2)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G WITH ACUTE")
+    (ucs               . #x01F4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0047 #x0301)
+    (->lowercase       #x01F5)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G WITH ACUTE")
+    (ucs               . #x01F5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0067 #x0301)
+    (->uppercase       #x01F4)
+    (->titlecase       #x01F4)
+    ))
+(define-char
+  '((name              . "FULLWIDTH LATIN SMALL LETTER G WITH ACUTE")
+    (->ucs             . #x01F5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x01F5)
+    (->uppercase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER G WITH ACUTE")))
+    (->titlecase
+     ((name . "FULLWIDTH LATIN CAPITAL LETTER G WITH ACUTE")))
+    (japanese-jisx0212 #x2B #x39)      ; \e$(D+9\e(B
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER HWAIR")
+    (ucs               . #x01F6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0195)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER WYNN")
+    (ucs               . #x01F7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x01BF)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH GRAVE")
+    (ucs               . #x01F8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004E #x0300)
+    (->lowercase       #x01F9)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH GRAVE")
+    (ucs               . #x01F9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006E #x0300)
+    (->uppercase       #x01F8)
+    (->titlecase       #x01F8)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE")
+    (ucs               . #x01FA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00C5 #x0301)
+    (->lowercase       #x01FB)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE")
+    (ucs               . #x01FB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00E5 #x0301)
+    (->uppercase       #x01FA)
+    (->titlecase       #x01FA)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER AE WITH ACUTE")
+    (ucs               . #x01FC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ash *")
+    (->decomposition   #x00C6 #x0301)
+    (->lowercase       #x01FD)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER AE WITH ACUTE")
+    (ucs               . #x01FD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ash *")
+    (->decomposition   #x00E6 #x0301)
+    (->uppercase       #x01FC)
+    (->titlecase       #x01FC)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH STROKE AND ACUTE")
+    (ucs               . #x01FE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00D8 #x0301)
+    (->lowercase       #x01FF)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH STROKE AND ACUTE")
+    (ucs               . #x01FF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00F8 #x0301)
+    (->uppercase       #x01FE)
+    (->titlecase       #x01FE)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH DOUBLE GRAVE")
+    (ucs               . #x0200)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x030F)
+    (->lowercase       #x0201)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH DOUBLE GRAVE")
+    (ucs               . #x0201)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x030F)
+    (->uppercase       #x0200)
+    (->titlecase       #x0200)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH INVERTED BREVE")
+    (ucs               . #x0202)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0311)
+    (->lowercase       #x0203)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH INVERTED BREVE")
+    (ucs               . #x0203)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0311)
+    (->uppercase       #x0202)
+    (->titlecase       #x0202)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH DOUBLE GRAVE")
+    (ucs               . #x0204)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x030F)
+    (->lowercase       #x0205)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH DOUBLE GRAVE")
+    (ucs               . #x0205)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x030F)
+    (->uppercase       #x0204)
+    (->titlecase       #x0204)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH INVERTED BREVE")
+    (ucs               . #x0206)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0311)
+    (->lowercase       #x0207)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH INVERTED BREVE")
+    (ucs               . #x0207)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0311)
+    (->uppercase       #x0206)
+    (->titlecase       #x0206)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH DOUBLE GRAVE")
+    (ucs               . #x0208)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x030F)
+    (->lowercase       #x0209)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH DOUBLE GRAVE")
+    (ucs               . #x0209)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x030F)
+    (->uppercase       #x0208)
+    (->titlecase       #x0208)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH INVERTED BREVE")
+    (ucs               . #x020A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0311)
+    (->lowercase       #x020B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH INVERTED BREVE")
+    (ucs               . #x020B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0311)
+    (->uppercase       #x020A)
+    (->titlecase       #x020A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH DOUBLE GRAVE")
+    (ucs               . #x020C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x030F)
+    (->lowercase       #x020D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH DOUBLE GRAVE")
+    (ucs               . #x020D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x030F)
+    (->uppercase       #x020C)
+    (->titlecase       #x020C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH INVERTED BREVE")
+    (ucs               . #x020E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0311)
+    (->lowercase       #x020F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH INVERTED BREVE")
+    (ucs               . #x020F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0311)
+    (->uppercase       #x020E)
+    (->titlecase       #x020E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER R WITH DOUBLE GRAVE")
+    (ucs               . #x0210)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0052 #x030F)
+    (->lowercase       #x0211)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH DOUBLE GRAVE")
+    (ucs               . #x0211)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0072 #x030F)
+    (->uppercase       #x0210)
+    (->titlecase       #x0210)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER R WITH INVERTED BREVE")
+    (ucs               . #x0212)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0052 #x0311)
+    (->lowercase       #x0213)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH INVERTED BREVE")
+    (ucs               . #x0213)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0072 #x0311)
+    (->uppercase       #x0212)
+    (->titlecase       #x0212)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH DOUBLE GRAVE")
+    (ucs               . #x0214)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x030F)
+    (->lowercase       #x0215)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH DOUBLE GRAVE")
+    (ucs               . #x0215)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x030F)
+    (->uppercase       #x0214)
+    (->titlecase       #x0214)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH INVERTED BREVE")
+    (ucs               . #x0216)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0311)
+    (->lowercase       #x0217)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH INVERTED BREVE")
+    (ucs               . #x0217)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0311)
+    (->uppercase       #x0216)
+    (->titlecase       #x0216)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S WITH COMMA BELOW")
+    (ucs               . #x0218)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   #x0053 #x0326)
+    (->lowercase       #x0219)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH COMMA BELOW")
+    (ucs               . #x0219)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   #x0073 #x0326)
+    (->uppercase       #x0218)
+    (->titlecase       #x0218)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH COMMA BELOW")
+    (ucs               . #x021A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   #x0054 #x0326)
+    (->lowercase       #x021B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH COMMA BELOW")
+    (ucs               . #x021B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    (->decomposition   #x0074 #x0326)
+    (->uppercase       #x021A)
+    (->titlecase       #x021A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER YOGH")
+    (ucs               . #x021C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x021D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER YOGH")
+    (ucs               . #x021D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x021C)
+    (->titlecase       #x021C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER H WITH CARON")
+    (ucs               . #x021E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0048 #x030C)
+    (->lowercase       #x021F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH CARON")
+    (ucs               . #x021F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0068 #x030C)
+    (->uppercase       #x021E)
+    (->titlecase       #x021E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER OU")
+    (ucs               . #x0222)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0223)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER OU")
+    (ucs               . #x0223)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0222)
+    (->titlecase       #x0222)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Z WITH HOOK")
+    (ucs               . #x0224)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0225)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH HOOK")
+    (ucs               . #x0225)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0224)
+    (->titlecase       #x0224)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH DOT ABOVE")
+    (ucs               . #x0226)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0307)
+    (->lowercase       #x0227)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH DOT ABOVE")
+    (ucs               . #x0227)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0307)
+    (->uppercase       #x0226)
+    (->titlecase       #x0226)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH CEDILLA")
+    (ucs               . #x0228)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0327)
+    (->lowercase       #x0229)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH CEDILLA")
+    (ucs               . #x0229)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0327)
+    (->uppercase       #x0228)
+    (->titlecase       #x0228)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON")
+    (ucs               . #x022A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00D6 #x0304)
+    (->lowercase       #x022B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH DIAERESIS AND MACRON")
+    (ucs               . #x022B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00F6 #x0304)
+    (->uppercase       #x022A)
+    (->titlecase       #x022A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH TILDE AND MACRON")
+    (ucs               . #x022C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00D5 #x0304)
+    (->lowercase       #x022D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH TILDE AND MACRON")
+    (ucs               . #x022D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00F5 #x0304)
+    (->uppercase       #x022C)
+    (->titlecase       #x022C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH DOT ABOVE")
+    (ucs               . #x022E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0307)
+    (->lowercase       #x022F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH DOT ABOVE")
+    (ucs               . #x022F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0307)
+    (->uppercase       #x022E)
+    (->titlecase       #x022E)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON")
+    (ucs               . #x0230)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x022E #x0304)
+    (->lowercase       #x0231)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON")
+    (ucs               . #x0231)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x022F #x0304)
+    (->uppercase       #x0230)
+    (->titlecase       #x0230)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH MACRON")
+    (ucs               . #x0232)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0059 #x0304)
+    (->lowercase       #x0233)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH MACRON")
+    (ucs               . #x0233)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x0304)
+    (->uppercase       #x0232)
+    (->titlecase       #x0232)
+    ))
diff --git a/lisp/utf-2000/u00250-IPA-Extensions.el b/lisp/utf-2000/u00250-IPA-Extensions.el
new file mode 100644 (file)
index 0000000..d21bd33
--- /dev/null
@@ -0,0 +1,724 @@
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED A")
+    (ucs               . #x0250)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x28)   ; \e-0¨\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER ALPHA")
+    (ucs               . #x0251)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x2C)   ; \e-0¬\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED ALPHA")
+    (ucs               . #x0252)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x38)   ; \e-0¸\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER B WITH HOOK")
+    (ucs               . #x0253)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0181)
+    (->titlecase       #x0181)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER OPEN O")
+    (ucs               . #x0254)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0186)
+    (->titlecase       #x0186)
+    (ipa               #x37)   ; \e-0·\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER C WITH CURL")
+    (ucs               . #x0255)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH TAIL")
+    (ucs               . #x0256)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0189)
+    (->titlecase       #x0189)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH HOOK")
+    (ucs               . #x0257)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x018A)
+    (->titlecase       #x018A)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER REVERSED E")
+    (ucs               . #x0258)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER SCHWA")
+    (ucs               . #x0259)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x018F)
+    (->titlecase       #x018F)
+    (ipa               #x27)   ; \e-0§\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER SCHWA WITH HOOK")
+    (ucs               . #x025A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x3A)   ; \e-0º\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER OPEN E")
+    (ucs               . #x025B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0190)
+    (->titlecase       #x0190)
+    (ipa               #x23)   ; \e-0£\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER REVERSED OPEN E")
+    (ucs               . #x025C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER REVERSED OPEN E WITH HOOK")
+    (ucs               . #x025D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER CLOSED REVERSED OPEN E")
+    (ucs               . #x025E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER DOTLESS J WITH STROKE")
+    (ucs               . #x025F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G WITH HOOK")
+    (ucs               . #x0260)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0193)
+    (->titlecase       #x0193)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER SCRIPT G")
+    (ucs               . #x0261)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL G")
+    (ucs               . #x0262)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER GAMMA")
+    (ucs               . #x0263)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0194)
+    (->titlecase       #x0194)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER RAMS HORN")
+    (ucs               . #x0264)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x2A)   ; \e-0ª\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED H")
+    (ucs               . #x0265)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x5D)   ; \e-0Ý\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH HOOK")
+    (ucs               . #x0266)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER HENG WITH HOOK")
+    (ucs               . #x0267)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH STROKE")
+    (ucs               . #x0268)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0197)
+    (->titlecase       #x0197)
+    (ipa               #x26)   ; \e-0¦\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER IOTA")
+    (ucs               . #x0269)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0196)
+    (->titlecase       #x0196)
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL I")
+    (ucs               . #x026A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x21)   ; \e-0¡\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH MIDDLE TILDE")
+    (ucs               . #x026B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH BELT")
+    (ucs               . #x026C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH RETROFLEX HOOK")
+    (ucs               . #x026D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER LEZH")
+    (ucs               . #x026E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED M")
+    (ucs               . #x026F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x019C)
+    (->titlecase       #x019C)
+    (ipa               #x29)   ; \e-0©\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED M WITH LONG LEG")
+    (ucs               . #x0270)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER M WITH HOOK")
+    (ucs               . #x0271)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x5F)   ; \e-0ß\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH LEFT HOOK")
+    (ucs               . #x0272)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x019D)
+    (->titlecase       #x019D)
+    (ipa               #x54)   ; \e-0Ô\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH RETROFLEX HOOK")
+    (ucs               . #x0273)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL N")
+    (ucs               . #x0274)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER BARRED O")
+    (ucs               . #x0275)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x019F)
+    (->titlecase       #x019F)
+    (ipa               #x33)   ; \e-0³\e-A
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL OE")
+    (ucs               . #x0276)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x31)   ; \e-0±\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER CLOSED OMEGA")
+    (ucs               . #x0277)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER PHI")
+    (ucs               . #x0278)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED R")
+    (ucs               . #x0279)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x58)   ; \e-0Ø\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED R WITH LONG LEG")
+    (ucs               . #x027A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED R WITH HOOK")
+    (ucs               . #x027B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH LONG LEG")
+    (ucs               . #x027C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH TAIL")
+    (ucs               . #x027D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH FISHHOOK")
+    (ucs               . #x027E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER REVERSED R WITH FISHHOOK")
+    (ucs               . #x027F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL R")
+    (ucs               . #x0280)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01A6)
+    (->titlecase       #x01A6)
+    (ipa               #x57)   ; \e-0×\e-A
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL INVERTED R")
+    (ucs               . #x0281)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x50)   ; \e-0Ð\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH HOOK")
+    (ucs               . #x0282)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER ESH")
+    (ucs               . #x0283)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01A9)
+    (->titlecase       #x01A9)
+    (ipa               #x4C)   ; \e-0Ì\e-A
+    ))
+(define-char
+  '((name . "LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK")
+    (ucs               . #x0284)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER SQUAT REVERSED ESH")
+    (ucs               . #x0285)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER ESH WITH CURL")
+    (ucs               . #x0286)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED T")
+    (ucs               . #x0287)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH RETROFLEX HOOK")
+    (ucs               . #x0288)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01AE)
+    (->titlecase       #x01AE)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U BAR")
+    (ucs               . #x0289)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x32)   ; \e-0²\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER UPSILON")
+    (ucs               . #x028A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01B1)
+    (->titlecase       #x01B1)
+    (ipa               #x35)   ; \e-0µ\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER V WITH HOOK")
+    (ucs               . #x028B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01B2)
+    (->titlecase       #x01B2)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED V")
+    (ucs               . #x028C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x2B)   ; \e-0«\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED W")
+    (ucs               . #x028D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x5F)   ; \e-0ß\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED Y")
+    (ucs               . #x028E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x5B)   ; \e-0Û\e-A
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL Y")
+    (ucs               . #x028F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x2E)   ; \e-0®\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH RETROFLEX HOOK")
+    (ucs               . #x0290)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH CURL")
+    (ucs               . #x0291)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER EZH")
+    (ucs               . #x0292)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x01B7)
+    (->titlecase       #x01B7)
+    (ipa               #x4D)   ; \e-0Í\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER EZH WITH CURL")
+    (ucs               . #x0293)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER GLOTTAL STOP")
+    (ucs               . #x0294)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER PHARYNGEAL VOICED FRICATIVE")
+    (ucs               . #x0295)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER INVERTED GLOTTAL STOP")
+    (ucs               . #x0296)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER STRETCHED C")
+    (ucs               . #x0297)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER BILABIAL CLICK")
+    (ucs               . #x0298)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL B")
+    (ucs               . #x0299)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER CLOSED OPEN E")
+    (ucs               . #x029A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL G WITH HOOK")
+    (ucs               . #x029B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL H")
+    (ucs               . #x029C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER J WITH CROSSED-TAIL")
+    (ucs               . #x029D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TURNED K")
+    (ucs               . #x029E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER SMALL CAPITAL L")
+    (ucs               . #x029F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x5C)   ; \e-0Ü\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Q WITH HOOK")
+    (ucs               . #x02A0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER GLOTTAL STOP WITH STROKE")
+    (ucs               . #x02A1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE")
+    (ucs               . #x02A2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER DZ DIGRAPH")
+    (ucs               . #x02A3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER DEZH DIGRAPH")
+    (ucs               . #x02A4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER DZ DIGRAPH WITH CURL")
+    (ucs               . #x02A5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TS DIGRAPH")
+    (ucs               . #x02A6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TESH DIGRAPH")
+    (ucs               . #x02A7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER TC DIGRAPH WITH CURL")
+    (ucs               . #x02A8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER FENG DIGRAPH")
+    (ucs               . #x02A9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER LS DIGRAPH")
+    (ucs               . #x02AA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER LZ DIGRAPH")
+    (ucs               . #x02AB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER BILABIAL PERCUSSIVE")
+    (ucs               . #x02AC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN LETTER BIDENTAL PERCUSSIVE")
+    (ucs               . #x02AD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u002B0-Spacing-Modifier-Letters.el b/lisp/utf-2000/u002B0-Spacing-Modifier-Letters.el
new file mode 100644 (file)
index 0000000..e54032f
--- /dev/null
@@ -0,0 +1,549 @@
+(define-char
+  '((name              . "MODIFIER LETTER SMALL H")
+    (ucs               . #x02B0)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0068)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL H WITH HOOK")
+    (ucs               . #x02B1)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0266)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL J")
+    (ucs               . #x02B2)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x006A)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL R")
+    (ucs               . #x02B3)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0072)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL TURNED R")
+    (ucs               . #x02B4)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0279)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL TURNED R WITH HOOK")
+    (ucs               . #x02B5)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x027B)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL CAPITAL INVERTED R")
+    (ucs               . #x02B6)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0281)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL W")
+    (ucs               . #x02B7)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0077)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL Y")
+    (ucs               . #x02B8)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0079)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER PRIME")
+    (ucs               . #x02B9)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER DOUBLE PRIME")
+    (ucs               . #x02BA)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER TURNED COMMA")
+    (ucs               . #x02BB)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER APOSTROPHE")
+    (ucs               . #x02BC)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (greek-iso8859-7   #x22)   ; \e-F¢\e-A
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER REVERSED COMMA")
+    (ucs               . #x02BD)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (greek-iso8859-7   #x21)   ; \e-F¡\e-A
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER RIGHT HALF RING")
+    (ucs               . #x02BE)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER LEFT HALF RING")
+    (ucs               . #x02BF)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER GLOTTAL STOP")
+    (ucs               . #x02C0)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER REVERSED GLOTTAL STOP")
+    (ucs               . #x02C1)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER LEFT ARROWHEAD")
+    (ucs               . #x02C2)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER RIGHT ARROWHEAD")
+    (ucs               . #x02C3)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER UP ARROWHEAD")
+    (ucs               . #x02C4)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER DOWN ARROWHEAD")
+    (ucs               . #x02C5)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER CIRCUMFLEX ACCENT")
+    (ucs               . #x02C6)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CARON")
+    (ucs               . #x02C7)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Mandarin Chinese third tone")
+    (latin-iso8859-2   #x37)   ; \e-B·\e-A
+    (latin-iso8859-4   #x37)   ; \e-D·\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CARON")
+    (->ucs             . #x02C7)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Mandarin Chinese third tone")
+    (->decomposition   wide #x02C7)
+    (chinese-gb2312    #x21 #x26)      ; \e$(D"0\e(B
+    (korean-ksc5601    #x22 #x27)      ; \e$(C"'\e(B
+    (japanese-jisx0212 #x22 #x30)      ; \e$(D"0\e(B
+    (chinese-cns11643-1 #x25 #x6F)     ; \e$(G%o\e(B
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER VERTICAL LINE")
+    (ucs               . #x02C8)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ipa               #x70)   ; \e-0ð\e-A
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER MACRON")
+    (ucs               . #x02C9)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Mandarin Chinese first tone")
+    (chinese-gb2312    #x21 #x25)      ; \e$A!%\e(B
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER ACUTE ACCENT")
+    (ucs               . #x02CA)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Mandarin Chinese second tone")
+    (chinese-cns11643-1 #x25 #x6E)     ; \e$(G%n\e(B
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER GRAVE ACCENT")
+    (ucs               . #x02CB)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Mandarin Chinese fourth tone")
+    (chinese-cns11643-1 #x25 #x70)     ; \e$(G%p\e(B
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER LOW VERTICAL LINE")
+    (ucs               . #x02CC)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (ipa               #x71)   ; \e-0ñ\e-A
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER LOW MACRON")
+    (ucs               . #x02CD)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER LOW GRAVE ACCENT")
+    (ucs               . #x02CE)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER LOW ACUTE ACCENT")
+    (ucs               . #x02CF)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER TRIANGULAR COLON")
+    (ucs               . #x02D0)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ipa               #x72)   ; \e-0ò\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH MODIFIER LETTER TRIANGULAR COLON")
+    (->ucs             . #x02D0)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x02D0)
+    (korean-ksc5601    #x22 #x30)      ; \e$(C"0\e(B
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER HALF TRIANGULAR COLON")
+    (ucs               . #x02D1)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER CENTRED RIGHT HALF RING")
+    (ucs               . #x02D2)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER CENTRED LEFT HALF RING")
+    (ucs               . #x02D3)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER UP TACK")
+    (ucs               . #x02D4)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER DOWN TACK")
+    (ucs               . #x02D5)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER PLUS SIGN")
+    (ucs               . #x02D6)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER MINUS SIGN")
+    (ucs               . #x02D7)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BREVE")
+    (ucs               . #x02D8)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0306)
+    (latin-iso8859-2   #x22)   ; \e-B¢\e-A
+    (latin-iso8859-3   #x22)   ; \e-C¢\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH BREVE")
+    (->ucs             . #x02D8)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x02D8)
+    (korean-ksc5601    #x22 #x28)      ; \e$(D"/\e(B
+    (japanese-jisx0212 #x22 #x2F)      ; \e$(D"/\e(B
+    ))
+(define-char
+  '((name              . "DOT ABOVE")
+    (ucs               . #x02D9)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Mandarin Chinese light tone")
+    (->decomposition   compat #x0020 #x0307)
+    (latin-iso8859-2   #x7F)   ; \e-Bÿ\e-A
+    (latin-iso8859-3   #x7F)   ; \e-Cÿ\e-A
+    (latin-iso8859-4   #x7F)   ; \e-Dÿ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH DOT ABOVE")
+    (->ucs             . #x02D9)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Mandarin Chinese light tone")
+    (->decomposition   wide #x02D9)
+    (korean-ksc5601    #x22 #x2B)      ; \e$(D"2\e(B
+    (japanese-jisx0212 #x22 #x32)      ; \e$(D"2\e(B
+    (chinese-cns11643-1 #x25 #x6C)     ; \e$(G%l\e(B
+    ))
+(define-char
+  '((name              . "RING ABOVE")
+    (ucs               . #x02DA)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x030A)
+    (korean-ksc5601    #x22 #x2A)      ; \e$(C"*\e(B
+    (japanese-jisx0212 #x22 #x36)      ; \e$(D"6\e(B
+    ))
+(define-char
+  '((name              . "OGONEK")
+    (ucs               . #x02DB)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0328)
+    (latin-iso8859-2   #x32)   ; \e-B²\e-A
+    (latin-iso8859-4   #x32)   ; \e-D²\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH OGONEK")
+    (->ucs             . #x02DB)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   wide #x02DB)
+    (korean-ksc5601    #x22 #x2D)      ; \e$(D"5\e(B
+    (japanese-jisx0212 #x22 #x35)      ; \e$(D"5\e(B
+    ))
+(define-char
+  '((name              . "SMALL TILDE")
+    (ucs               . #x02DC)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0303)
+    ))
+(define-char
+  '((name              . "DOUBLE ACUTE ACCENT")
+    (ucs               . #x02DD)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x030B)
+    (latin-iso8859-2   #x3D)   ; \e-B½\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH DOUBLE ACUTE ACCENT")
+    (->ucs             . #x02DD)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x02DD)
+    (korean-ksc5601    #x22 #x29)      ; \e$(D"3\e(B
+    (japanese-jisx0212 #x22 #x33)      ; \e$(D"3\e(B
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER RHOTIC HOOK")
+    (ucs               . #x02DE)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER CROSS ACCENT")
+    (ucs               . #x02DF)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL GAMMA")
+    (ucs               . #x02E0)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0263)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL L")
+    (ucs               . #x02E1)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x006C)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL S")
+    (ucs               . #x02E2)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0073)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL X")
+    (ucs               . #x02E3)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0078)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER SMALL REVERSED GLOTTAL STOP")
+    (ucs               . #x02E4)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x0295)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER EXTRA-HIGH TONE BAR")
+    (ucs               . #x02E5)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER HIGH TONE BAR")
+    (ucs               . #x02E6)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER MID TONE BAR")
+    (ucs               . #x02E7)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER LOW TONE BAR")
+    (ucs               . #x02E8)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER EXTRA-LOW TONE BAR")
+    (ucs               . #x02E9)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER YIN DEPARTING TONE MARK")
+    (ucs               . #x02EA)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER YANG DEPARTING TONE MARK")
+    (ucs               . #x02EB)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER VOICING")
+    (ucs               . #x02EC)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER UNASPIRATED")
+    (ucs               . #x02ED)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MODIFIER LETTER DOUBLE APOSTROPHE")
+    (ucs               . #x02EE)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00300-Combining-Diacritical-Marks.el b/lisp/utf-2000/u00300-Combining-Diacritical-Marks.el
new file mode 100644 (file)
index 0000000..c12e58c
--- /dev/null
@@ -0,0 +1,589 @@
+(define-char
+  '((name              . "COMBINING GRAVE ACCENT")
+    (ucs               . #x0300)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "Varia")
+    ))
+(define-char
+  '((name              . "COMBINING ACUTE ACCENT")
+    (ucs               . #x0301)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "Oxia")
+    ))
+(define-char
+  '((name              . "COMBINING CIRCUMFLEX ACCENT")
+    (ucs               . #x0302)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING TILDE")
+    (ucs               . #x0303)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING MACRON")
+    (ucs               . #x0304)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING OVERLINE")
+    (ucs               . #x0305)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING BREVE")
+    (ucs               . #x0306)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "Vrachy")
+    ))
+(define-char
+  '((name              . "COMBINING DOT ABOVE")
+    (ucs               . #x0307)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DIAERESIS")
+    (ucs               . #x0308)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "Dialytika")
+    ))
+(define-char
+  '((name              . "COMBINING HOOK ABOVE")
+    (ucs               . #x0309)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING RING ABOVE")
+    (ucs               . #x030A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOUBLE ACUTE ACCENT")
+    (ucs               . #x030B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CARON")
+    (ucs               . #x030C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING VERTICAL LINE ABOVE")
+    (ucs               . #x030D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "Tonos")
+    ))
+(define-char
+  '((name              . "COMBINING DOUBLE VERTICAL LINE ABOVE")
+    (ucs               . #x030E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOUBLE GRAVE ACCENT")
+    (ucs               . #x030F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CANDRABINDU")
+    (ucs               . #x0310)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING INVERTED BREVE")
+    (ucs               . #x0311)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING TURNED COMMA ABOVE")
+    (ucs               . #x0312)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING COMMA ABOVE")
+    (ucs               . #x0313)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "Psili")
+    ))
+(define-char
+  '((name              . "COMBINING REVERSED COMMA ABOVE")
+    (ucs               . #x0314)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "Dasia")
+    ))
+(define-char
+  '((name              . "COMBINING COMMA ABOVE RIGHT")
+    (ucs               . #x0315)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING GRAVE ACCENT BELOW")
+    (ucs               . #x0316)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ACUTE ACCENT BELOW")
+    (ucs               . #x0317)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LEFT TACK BELOW")
+    (ucs               . #x0318)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING RIGHT TACK BELOW")
+    (ucs               . #x0319)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LEFT ANGLE ABOVE")
+    (ucs               . #x031A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING HORN")
+    (ucs               . #x031B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LEFT HALF RING BELOW")
+    (ucs               . #x031C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING UP TACK BELOW")
+    (ucs               . #x031D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOWN TACK BELOW")
+    (ucs               . #x031E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING PLUS SIGN BELOW")
+    (ucs               . #x031F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING MINUS SIGN BELOW")
+    (ucs               . #x0320)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING PALATALIZED HOOK BELOW")
+    (ucs               . #x0321)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING RETROFLEX HOOK BELOW")
+    (ucs               . #x0322)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOT BELOW")
+    (ucs               . #x0323)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DIAERESIS BELOW")
+    (ucs               . #x0324)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING RING BELOW")
+    (ucs               . #x0325)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING COMMA BELOW")
+    (ucs               . #x0326)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CEDILLA")
+    (ucs               . #x0327)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING OGONEK")
+    (ucs               . #x0328)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING VERTICAL LINE BELOW")
+    (ucs               . #x0329)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING BRIDGE BELOW")
+    (ucs               . #x032A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING INVERTED DOUBLE ARCH BELOW")
+    (ucs               . #x032B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CARON BELOW")
+    (ucs               . #x032C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CIRCUMFLEX ACCENT BELOW")
+    (ucs               . #x032D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING BREVE BELOW")
+    (ucs               . #x032E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING INVERTED BREVE BELOW")
+    (ucs               . #x032F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING TILDE BELOW")
+    (ucs               . #x0330)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING MACRON BELOW")
+    (ucs               . #x0331)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LOW LINE")
+    (ucs               . #x0332)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOUBLE LOW LINE")
+    (ucs               . #x0333)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING TILDE OVERLAY")
+    (ucs               . #x0334)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING SHORT STROKE OVERLAY")
+    (ucs               . #x0335)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LONG STROKE OVERLAY")
+    (ucs               . #x0336)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING SHORT SOLIDUS OVERLAY")
+    (ucs               . #x0337)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LONG SOLIDUS OVERLAY")
+    (ucs               . #x0338)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING RIGHT HALF RING BELOW")
+    (ucs               . #x0339)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING INVERTED BRIDGE BELOW")
+    (ucs               . #x033A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING SQUARE BELOW")
+    (ucs               . #x033B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING SEAGULL BELOW")
+    (ucs               . #x033C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING X ABOVE")
+    (ucs               . #x033D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING VERTICAL TILDE")
+    (ucs               . #x033E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOUBLE OVERLINE")
+    (ucs               . #x033F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING GRAVE TONE MARK")
+    (ucs               . #x0340)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "Vietnamese")
+    (->decomposition   #x0300)
+    ))
+(define-char
+  '((name              . "COMBINING ACUTE TONE MARK")
+    (ucs               . #x0341)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "Vietnamese")
+    (->decomposition   #x0301)
+    ))
+(define-char
+  '((name              . "COMBINING GREEK PERISPOMENI")
+    (ucs               . #x0342)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING GREEK KORONIS")
+    (ucs               . #x0343)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (->decomposition   #x0313)
+    ))
+(define-char
+  '((name              . "COMBINING GREEK DIALYTIKA TONOS")
+    (ucs               . #x0344)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (->decomposition   #x0308 #x0301)
+    ))
+(define-char
+  '((name              . "COMBINING GREEK YPOGEGRAMMENI")
+    (ucs               . #x0345)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (->uppercase       #x0399)
+    (->titlecase       #x0399)
+    ))
+(define-char
+  '((name              . "COMBINING BRIDGE ABOVE")
+    (ucs               . #x0346)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING EQUALS SIGN BELOW")
+    (ucs               . #x0347)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOUBLE VERTICAL LINE BELOW")
+    (ucs               . #x0348)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LEFT ANGLE BELOW")
+    (ucs               . #x0349)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING NOT TILDE ABOVE")
+    (ucs               . #x034A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING HOMOTHETIC ABOVE")
+    (ucs               . #x034B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ALMOST EQUAL TO ABOVE")
+    (ucs               . #x034C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LEFT RIGHT ARROW BELOW")
+    (ucs               . #x034D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING UPWARDS ARROW BELOW")
+    (ucs               . #x034E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOUBLE TILDE")
+    (ucs               . #x0360)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOUBLE INVERTED BREVE")
+    (ucs               . #x0361)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING DOUBLE RIGHTWARDS ARROW BELOW")
+    (ucs               . #x0362)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00370-Greek.el b/lisp/utf-2000/u00370-Greek.el
new file mode 100644 (file)
index 0000000..b840dba
--- /dev/null
@@ -0,0 +1,2060 @@
+(define-char
+  '((name              . "GREEK NUMERAL SIGN")
+    (ucs               . #x0374)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Dexia keraia")
+    (->decomposition   #x02B9)
+    ))
+(define-char
+  '((name              . "GREEK LOWER NUMERAL SIGN")
+    (ucs               . #x0375)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Aristeri keraia")
+    ))
+(define-char
+  '((name              . "GREEK YPOGEGRAMMENI")
+    (ucs               . #x037A)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0345)
+    ))
+(define-char
+  '((name              . "GREEK QUESTION MARK")
+    (ucs               . #x037E)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Erotimatiko")
+    (->decomposition   #x003B)
+    ))
+(define-char
+  '((name              . "GREEK TONOS")
+    (ucs               . #x0384)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0301)
+    (greek-iso8859-7   #x34)   ; \e-F´\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK TONOS")
+    (->ucs             . #x0384)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x0384)
+    (japanese-jisx0212 #x22 #x38)      ; \e$(D"8\e(B
+    ))
+(define-char
+  '((name              . "GREEK DIALYTIKA TONOS")
+    (ucs               . #x0385)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   #x00A8 #x0301)
+    (greek-iso8859-7   #x35)   ; \e-Fµ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK DIALYTIKA TONOS")
+    (->ucs             . #x0385)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x0385)
+    (japanese-jisx0212 #x22 #x39)      ; \e$(D"9\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH TONOS")
+    (ucs               . #x0386)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0391 #x0301)
+    (->lowercase       #x03AC)
+    (greek-iso8859-7   #x36)   ; \e-F¶\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER ALPHA WITH TONOS")
+    (->ucs             . #x0386)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0386)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER ALPHA WITH TONOS")))
+    (japanese-jisx0212 #x26 #x61)      ; \e$(D&a\e(B
+    ))
+(define-char
+  '((name              . "GREEK ANO TELEIA")
+    (ucs               . #x0387)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   #x00B7)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER EPSILON WITH TONOS")
+    (ucs               . #x0388)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0395 #x0301)
+    (->lowercase       #x03AD)
+    (greek-iso8859-7   #x38)   ; \e-F¸\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH GREEK CAPITAL LETTER EPSILON WITH TONOS")
+    (->ucs             . #x0388)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0388)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER EPSILON WITH TONOS")))
+    (japanese-jisx0212 #x26 #x62)      ; \e$(D&b\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH TONOS")
+    (ucs               . #x0389)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0397 #x0301)
+    (->lowercase       #x03AE)
+    (greek-iso8859-7   #x39)   ; \e-F¹\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER ETA WITH TONOS")
+    (->ucs             . #x0389)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0389)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER ETA WITH TONOS")))
+    (japanese-jisx0212 #x26 #x63)      ; \e$(D&c\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH TONOS")
+    (ucs               . #x038A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0399 #x0301)
+    (->lowercase       #x03AF)
+    (greek-iso8859-7   #x3A)   ; \e-Fº\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER IOTA WITH TONOS")
+    (->ucs             . #x038A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x038A)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER IOTA WITH TONOS")))
+    (japanese-jisx0212 #x26 #x64)      ; \e$(D&d\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMICRON WITH TONOS")
+    (ucs               . #x038C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x039F #x0301)
+    (->lowercase       #x03CC)
+    (greek-iso8859-7   #x3C)   ; \e-F¼\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH GREEK CAPITAL LETTER OMICRON WITH TONOS")
+    (->ucs             . #x038C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x038C)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER OMICRON WITH TONOS")))
+    (japanese-jisx0212 #x26 #x67)      ; \e$(D&g\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER UPSILON WITH TONOS")
+    (ucs               . #x038E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03A5 #x0301)
+    (->lowercase       #x03CD)
+    (greek-iso8859-7   #x3E)   ; \e-F¾\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH GREEK CAPITAL LETTER UPSILON WITH TONOS")
+    (->ucs             . #x038E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x038E)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER UPSILON WITH TONOS")))
+    (japanese-jisx0212 #x26 #x69)      ; \e$(D&i\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH TONOS")
+    (ucs               . #x038F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03A9 #x0301)
+    (->lowercase       #x03CE)
+    (greek-iso8859-7   #x3F)   ; \e-F¿\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER OMEGA WITH TONOS")
+    (->ucs             . #x038F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x038F)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER OMEGA WITH TONOS")))
+    (japanese-jisx0212 #x26 #x6C)      ; \e$(D&l\e(B
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS")
+    (ucs               . #x0390)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03CA #x0301)
+    (greek-iso8859-7   #x40)   ; \e-FÀ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS")
+    (->ucs             . #x0390)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0390)
+    (japanese-jisx0212 #x26 #x76)      ; \e$(D&v\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA")
+    (ucs               . #x0391)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03B1)
+    (greek-iso8859-7   #x41)   ; \e-FÁ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER ALPHA")
+    (->ucs             . #x0391)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0391)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER ALPHA")))
+    (japanese-jisx0208-1978    #x26 #x21)      ; \e$(B&!\e(B
+    (chinese-gb2312            #x26 #x21)      ; \e$(A&!\e(B
+    (japanese-jisx0208         #x26 #x21)      ; \e$(B&!\e(B
+    (korean-ksc5601            #x25 #x41)      ; \e$(C%A\e(B
+    (chinese-cns11643-1                #x24 #x75)      ; \e$(G$u\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER BETA")
+    (ucs               . #x0392)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03B2)
+    (greek-iso8859-7   #x42)   ; \e-FÂ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER BETA")
+    (->ucs             . #x0392)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0392)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER BETA")))
+    (japanese-jisx0208-1978    #x26 #x22)      ; \e$(B&"\e(B
+    (chinese-gb2312            #x26 #x22)      ; \e$(A&"\e(B
+    (japanese-jisx0208         #x26 #x22)      ; \e$(B&"\e(B
+    (korean-ksc5601            #x25 #x42)      ; \e$(C%B\e(B
+    (chinese-cns11643-1                #x24 #x76)      ; \e$(G$v\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER GAMMA")
+    (ucs               . #x0393)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03B3)
+    (greek-iso8859-7   #x43)   ; \e-FÃ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER GAMMA")
+    (->ucs             . #x0393)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0393)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER GAMMA")))
+    (japanese-jisx0208-1978    #x26 #x23)      ; \e$(B&#\e(B
+    (chinese-gb2312            #x26 #x23)      ; \e$(A&#\e(B
+    (japanese-jisx0208         #x26 #x23)      ; \e$(B&#\e(B
+    (korean-ksc5601            #x25 #x43)      ; \e$(C%C\e(B
+    (chinese-cns11643-1                #x24 #x77)      ; \e$(G$w\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER DELTA")
+    (ucs               . #x0394)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03B4)
+    (greek-iso8859-7   #x44)   ; \e-FÄ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER DELTA")
+    (->ucs             . #x0394)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0394)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER DELTA")))
+    (japanese-jisx0208-1978    #x26 #x24)      ; \e$(B&$\e(B
+    (chinese-gb2312            #x26 #x24)      ; \e$(A&$\e(B
+    (japanese-jisx0208         #x26 #x24)      ; \e$(B&$\e(B
+    (korean-ksc5601            #x25 #x44)      ; \e$(C%D\e(B
+    (chinese-cns11643-1                #x24 #x78)      ; \e$(G$x\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER EPSILON")
+    (ucs               . #x0395)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03B5)
+    (greek-iso8859-7   #x45)   ; \e-FÅ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER EPSILON")
+    (->ucs             . #x0395)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0395)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER EPSILON")))
+    (japanese-jisx0208-1978    #x26 #x25)      ; \e$(B&%\e(B
+    (chinese-gb2312            #x26 #x25)      ; \e$(A&%\e(B
+    (japanese-jisx0208         #x26 #x25)      ; \e$(B&%\e(B
+    (korean-ksc5601            #x25 #x45)      ; \e$(C%E\e(B
+    (chinese-cns11643-1                #x24 #x79)      ; \e$(G$y\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ZETA")
+    (ucs               . #x0396)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03B6)
+    (greek-iso8859-7   #x46)   ; \e-FÆ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER ZETA")
+    (->ucs             . #x0396)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0396)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER ZETA")))
+    (japanese-jisx0208-1978    #x26 #x26)      ; \e$(B&&\e(B
+    (chinese-gb2312            #x26 #x26)      ; \e$(A&&\e(B
+    (japanese-jisx0208         #x26 #x26)      ; \e$(B&&\e(B
+    (korean-ksc5601            #x25 #x46)      ; \e$(C%F\e(B
+    (chinese-cns11643-1                #x24 #x7A)      ; \e$(G$z\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA")
+    (ucs               . #x0397)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03B7)
+    (greek-iso8859-7   #x47)   ; \e-FÇ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER ETA")
+    (->ucs             . #x0397)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0397)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER ETA")))
+    (japanese-jisx0208-1978    #x26 #x27)      ; \e$(B&'\e(B
+    (chinese-gb2312            #x26 #x27)      ; \e$(A&'\e(B
+    (japanese-jisx0208         #x26 #x27)      ; \e$(B&'\e(B
+    (korean-ksc5601            #x25 #x47)      ; \e$(C%G\e(B
+    (chinese-cns11643-1                #x24 #x7B)      ; \e$(G${\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER THETA")
+    (ucs               . #x0398)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03B8)
+    (greek-iso8859-7   #x48)   ; \e-FÈ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER THETA")
+    (->ucs             . #x0398)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0398)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER THETA")))
+    (japanese-jisx0208-1978    #x26 #x28)      ; \e$(B&(\e(B
+    (chinese-gb2312            #x26 #x28)      ; \e$(A&(\e(B
+    (japanese-jisx0208         #x26 #x28)      ; \e$(B&(\e(B
+    (korean-ksc5601            #x25 #x48)      ; \e$(C%H\e(B
+    (chinese-cns11643-1                #x24 #x7C)      ; \e$(G$|\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA")
+    (ucs               . #x0399)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03B9)
+    (greek-iso8859-7   #x49)   ; \e-FÉ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER IOTA")
+    (->ucs             . #x0399)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0399)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER IOTA")))
+    (japanese-jisx0208-1978    #x26 #x29)      ; \e$(B&)\e(B
+    (chinese-gb2312            #x26 #x29)      ; \e$(A&)\e(B
+    (japanese-jisx0208         #x26 #x29)      ; \e$(B&)\e(B
+    (korean-ksc5601            #x25 #x49)      ; \e$(C%I\e(B
+    (chinese-cns11643-1                #x24 #x7D)      ; \e$(G$}\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER KAPPA")
+    (ucs               . #x039A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03BA)
+    (greek-iso8859-7   #x4A)   ; \e-FÊ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER KAPPA")
+    (->ucs             . #x039A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x039A)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER KAPPA")))
+    (japanese-jisx0208-1978    #x26 #x2A)      ; \e$(B&*\e(B
+    (chinese-gb2312            #x26 #x2A)      ; \e$(A&*\e(B
+    (japanese-jisx0208         #x26 #x2A)      ; \e$(B&*\e(B
+    (korean-ksc5601            #x25 #x4A)      ; \e$(C%J\e(B
+    (chinese-cns11643-1                #x24 #x7E)      ; \e$(G$~\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER LAMDA")
+    (ucs               . #x039B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03BB)
+    (greek-iso8859-7   #x4B)   ; \e-FË\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER LAMDA")
+    (->ucs             . #x039B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x039B)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER LAMDA")))
+    (japanese-jisx0208-1978    #x26 #x2B)      ; \e$(B&+\e(B
+    (chinese-gb2312            #x26 #x2B)      ; \e$(A&+\e(B
+    (japanese-jisx0208         #x26 #x2B)      ; \e$(B&+\e(B
+    (korean-ksc5601            #x25 #x4B)      ; \e$(C%K\e(B
+    (chinese-cns11643-1                #x25 #x21)      ; \e$(G%!\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER MU")
+    (ucs               . #x039C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03BC)
+    (greek-iso8859-7   #x4C)   ; \e-FÌ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER MU")
+    (->ucs             . #x039C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x039C)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER MU")))
+    (japanese-jisx0208-1978    #x26 #x2C)      ; \e$(B&,\e(B
+    (chinese-gb2312            #x26 #x2C)      ; \e$(A&,\e(B
+    (japanese-jisx0208         #x26 #x2C)      ; \e$(B&,\e(B
+    (korean-ksc5601            #x25 #x4C)      ; \e$(C%L\e(B
+    (chinese-cns11643-1                #x25 #x22)      ; \e$(G%"\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER NU")
+    (ucs               . #x039D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03BD)
+    (greek-iso8859-7   #x4D)   ; \e-FÍ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER NU")
+    (->ucs             . #x039D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x039D)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER NU")))
+    (japanese-jisx0208-1978    #x26 #x2D)      ; \e$(B&-\e(B
+    (chinese-gb2312            #x26 #x2D)      ; \e$(A&-\e(B
+    (japanese-jisx0208         #x26 #x2D)      ; \e$(B&-\e(B
+    (korean-ksc5601            #x25 #x4D)      ; \e$(C%M\e(B
+    (chinese-cns11643-1                #x25 #x23)      ; \e$(G%#\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER XI")
+    (ucs               . #x039E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03BE)
+    (greek-iso8859-7   #x4E)   ; \e-FÎ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER XI")
+    (->ucs             . #x039E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x039E)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER XI")))
+    (japanese-jisx0208-1978    #x26 #x2E)      ; \e$(B&.\e(B
+    (chinese-gb2312            #x26 #x2E)      ; \e$(A&.\e(B
+    (japanese-jisx0208         #x26 #x2E)      ; \e$(B&.\e(B
+    (korean-ksc5601            #x25 #x4E)      ; \e$(C%N\e(B
+    (chinese-cns11643-1                #x25 #x24)      ; \e$(G%$\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMICRON")
+    (ucs               . #x039F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03BF)
+    (greek-iso8859-7   #x4F)   ; \e-FÏ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER OMICRON")
+    (->ucs             . #x039F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x039F)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER OMICRON")))
+    (japanese-jisx0208-1978    #x26 #x2F)      ; \e$(B&/\e(B
+    (chinese-gb2312            #x26 #x2F)      ; \e$(A&/\e(B
+    (japanese-jisx0208         #x26 #x2F)      ; \e$(B&/\e(B
+    (korean-ksc5601            #x25 #x4F)      ; \e$(C%O\e(B
+    (chinese-cns11643-1                #x25 #x25)      ; \e$(G%%\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER PI")
+    (ucs               . #x03A0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03C0)
+    (greek-iso8859-7   #x50)   ; \e-FÐ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER PI")
+    (->ucs             . #x03A0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03A0)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER PI")))
+    (japanese-jisx0208-1978    #x26 #x30)      ; \e$(B&0\e(B
+    (chinese-gb2312            #x26 #x30)      ; \e$(A&0\e(B
+    (japanese-jisx0208         #x26 #x30)      ; \e$(B&0\e(B
+    (korean-ksc5601            #x25 #x50)      ; \e$(C%P\e(B
+    (chinese-cns11643-1                #x25 #x26)      ; \e$(G%&\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER RHO")
+    (ucs               . #x03A1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03C1)
+    (greek-iso8859-7   #x51)   ; \e-FÑ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER RHO")
+    (->ucs             . #x03A1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03A1)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER RHO")))
+    (japanese-jisx0208-1978    #x26 #x31)      ; \e$(B&1\e(B
+    (chinese-gb2312            #x26 #x31)      ; \e$(A&1\e(B
+    (japanese-jisx0208         #x26 #x31)      ; \e$(B&1\e(B
+    (korean-ksc5601            #x25 #x51)      ; \e$(C%Q\e(B
+    (chinese-cns11643-1                #x25 #x27)      ; \e$(G%'\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER SIGMA")
+    (ucs               . #x03A3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03C3)
+    (greek-iso8859-7   #x53)   ; \e-FÓ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER SIGMA")
+    (->ucs             . #x03A3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03A3)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER SIGMA")))
+    (japanese-jisx0208-1978    #x26 #x32)      ; \e$(B&2\e(B
+    (chinese-gb2312            #x26 #x32)      ; \e$(A&2\e(B
+    (japanese-jisx0208         #x26 #x32)      ; \e$(B&2\e(B
+    (korean-ksc5601            #x25 #x52)      ; \e$(C%R\e(B
+    (chinese-cns11643-1                #x25 #x28)      ; \e$(G%(\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER TAU")
+    (ucs               . #x03A4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03C4)
+    (greek-iso8859-7   #x54)   ; \e-FÔ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER TAU")
+    (->ucs             . #x03A4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03A4)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER TAU")))
+    (japanese-jisx0208-1978    #x26 #x33)      ; \e$(B&3\e(B
+    (chinese-gb2312            #x26 #x33)      ; \e$(A&3\e(B
+    (japanese-jisx0208         #x26 #x33)      ; \e$(B&3\e(B
+    (korean-ksc5601            #x25 #x53)      ; \e$(C%S\e(B
+    (chinese-cns11643-1                #x25 #x29)      ; \e$(G%)\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER UPSILON")
+    (ucs               . #x03A5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03C5)
+    (greek-iso8859-7   #x55)   ; \e-FÕ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER UPSILON")
+    (->ucs             . #x03A5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03A5)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER UPSILON")))
+    (japanese-jisx0208-1978    #x26 #x34)      ; \e$(B&4\e(B
+    (chinese-gb2312            #x26 #x34)      ; \e$(A&4\e(B
+    (japanese-jisx0208         #x26 #x34)      ; \e$(B&4\e(B
+    (korean-ksc5601            #x25 #x54)      ; \e$(C%T\e(B
+    (chinese-cns11643-1                #x25 #x2A)      ; \e$(G%*\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER PHI")
+    (ucs               . #x03A6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03C6)
+    (greek-iso8859-7   #x56)   ; \e-FÖ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER PHI")
+    (->ucs             . #x03A6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03A6)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER PHI")))
+    (japanese-jisx0208-1978    #x26 #x35)      ; \e$(B&5\e(B
+    (chinese-gb2312            #x26 #x35)      ; \e$(A&5\e(B
+    (japanese-jisx0208         #x26 #x35)      ; \e$(B&5\e(B
+    (korean-ksc5601            #x25 #x55)      ; \e$(C%U\e(B
+    (chinese-cns11643-1                #x25 #x2B)      ; \e$(G%+\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER CHI")
+    (ucs               . #x03A7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03C7)
+    (greek-iso8859-7   #x57)   ; \e-F×\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER CHI")
+    (->ucs             . #x03A7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03A7)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER CHI")))
+    (japanese-jisx0208-1978    #x26 #x36)      ; \e$(B&6\e(B
+    (chinese-gb2312            #x26 #x36)      ; \e$(A&6\e(B
+    (japanese-jisx0208         #x26 #x36)      ; \e$(B&6\e(B
+    (korean-ksc5601            #x25 #x56)      ; \e$(C%V\e(B
+    (chinese-cns11643-1                #x25 #x2C)      ; \e$(G%,\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER PSI")
+    (ucs               . #x03A8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03C8)
+    (greek-iso8859-7   #x58)   ; \e-FØ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER PSI")
+    (->ucs             . #x03A8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03A8)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER PSI")))
+    (japanese-jisx0208-1978    #x26 #x37)      ; \e$(B&7\e(B
+    (chinese-gb2312            #x26 #x37)      ; \e$(A&7\e(B
+    (japanese-jisx0208         #x26 #x37)      ; \e$(B&7\e(B
+    (korean-ksc5601            #x25 #x57)      ; \e$(C%W\e(B
+    (chinese-cns11643-1                #x25 #x2D)      ; \e$(G%-\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA")
+    (ucs               . #x03A9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03C9)
+    (greek-iso8859-7   #x59)   ; \e-FÙ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK CAPITAL LETTER OMEGA")
+    (->ucs             . #x03A9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03A9)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER OMEGA")))
+    (japanese-jisx0208-1978    #x26 #x38)      ; \e$(B&8\e(B
+    (chinese-gb2312            #x26 #x38)      ; \e$(A&8\e(B
+    (japanese-jisx0208         #x26 #x38)      ; \e$(B&8\e(B
+    (korean-ksc5601            #x25 #x58)      ; \e$(C%X\e(B
+    (chinese-cns11643-1                #x25 #x2E)      ; \e$(G%.\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH DIALYTIKA")
+    (ucs               . #x03AA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0399 #x0308)
+    (->lowercase       #x03CA)
+    (greek-iso8859-7   #x5A)   ; \e-FÚ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH GREEK CAPITAL LETTER IOTA WITH DIALYTIKA")
+    (->ucs             . #x03AA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03AA)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER IOTA WITH DIALYTIKA")))
+    (japanese-jisx0212 #x26 #x65)      ; \e$(D&e\e(B
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA")
+    (ucs               . #x03AB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03A5 #x0308)
+    (->lowercase       #x03CB)
+    (greek-iso8859-7   #x5B)   ; \e-FÛ\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA")
+    (->ucs             . #x03AB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03AB)
+    (->lowercase
+     ((name . "FULLWIDTH GREEK SMALL LETTER UPSILON WITH DIALYTIKA")))
+    (japanese-jisx0212 #x26 #x6A)      ; \e$(D&j\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH TONOS")
+    (ucs               . #x03AC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03B1 #x0301)
+    (->uppercase       #x0386)
+    (->titlecase       #x0386)
+    (greek-iso8859-7   #x5C)   ; \e-FÜ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER ALPHA WITH TONOS")
+    (->ucs             . #x03AC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03AC)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ALPHA WITH TONOS")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ALPHA WITH TONOS")))
+    (japanese-jisx0212 #x26 #x71)      ; \e$(D&q\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON WITH TONOS")
+    (ucs               . #x03AD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03B5 #x0301)
+    (->uppercase       #x0388)
+    (->titlecase       #x0388)
+    (greek-iso8859-7   #x5D)   ; \e-FÝ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER EPSILON WITH TONOS")
+    (->ucs             . #x03AD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03AD)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER EPSILON WITH TONOS")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER EPSILON WITH TONOS")))
+    (japanese-jisx0212 #x26 #x72)      ; \e$(D&r\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH TONOS")
+    (ucs               . #x03AE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03B7 #x0301)
+    (->uppercase       #x0389)
+    (->titlecase       #x0389)
+    (greek-iso8859-7   #x5E)   ; \e-FÞ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER ETA WITH TONOS")
+    (->ucs             . #x03AE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03AE)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ETA WITH TONOS")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ETA WITH TONOS")))
+    (japanese-jisx0212 #x26 #x73)      ; \e$(D&s\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH TONOS")
+    (ucs               . #x03AF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03B9 #x0301)
+    (->uppercase       #x038A)
+    (->titlecase       #x038A)
+    (greek-iso8859-7   #x5F)   ; \e-Fß\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER IOTA WITH TONOS")
+    (->ucs             . #x03AF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03AF)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER IOTA WITH TONOS")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER IOTA WITH TONOS")))
+    (japanese-jisx0212 #x26 #x74)      ; \e$(D&t\e(B
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS")
+    (ucs               . #x03B0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03CB #x0301)
+    (greek-iso8859-7   #x60)   ; \e-Fà\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS")
+    (->ucs             . #x03B0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B0)
+    (japanese-jisx0212 #x26 #x7B)      ; \e$(D&{\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA")
+    (ucs               . #x03B1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0391)
+    (->titlecase       #x0391)
+    (greek-iso8859-7   #x61)   ; \e-Fá\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER ALPHA")
+    (->ucs             . #x03B1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B1)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ALPHA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ALPHA")))
+    (japanese-jisx0208-1978    #x26 #x41)      ; \e$(B&A\e(B
+    (chinese-gb2312            #x26 #x41)      ; \e$(A&A\e(B
+    (japanese-jisx0208         #x26 #x41)      ; \e$(B&A\e(B
+    (korean-ksc5601            #x25 #x61)      ; \e$(C%a\e(B
+    (chinese-cns11643-1                #x25 #x2F)      ; \e$(G%/\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER BETA")
+    (ucs               . #x03B2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0392)
+    (->titlecase       #x0392)
+    (greek-iso8859-7   #x62)   ; \e-Fâ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER BETA")
+    (->ucs             . #x03B2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B2)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER BETA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER BETA")))
+    (japanese-jisx0208-1978    #x26 #x42)      ; \e$(@&B\e(B
+    (chinese-gb2312            #x26 #x42)      ; \e$(A&B\e(B
+    (japanese-jisx0208         #x26 #x42)      ; \e$(B&B\e(B
+    (korean-ksc5601            #x25 #x62)      ; \e$(C%b\e(B
+    (chinese-cns11643-1                #x25 #x30)      ; \e$(G%0\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER GAMMA")
+    (ucs               . #x03B3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0393)
+    (->titlecase       #x0393)
+    (greek-iso8859-7   #x63)   ; \e-Fã\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER GAMMA")
+    (->ucs             . #x03B3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B3)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER GAMMA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER GAMMA")))
+    (japanese-jisx0208-1978    #x26 #x43)      ; \e$(B&C\e(B
+    (chinese-gb2312            #x26 #x43)      ; \e$(A&C\e(B
+    (japanese-jisx0208         #x26 #x43)      ; \e$(B&C\e(B
+    (korean-ksc5601            #x25 #x63)      ; \e$(C%c\e(B
+    (chinese-cns11643-1                #x25 #x31)      ; \e$(G%1\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER DELTA")
+    (ucs               . #x03B4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0394)
+    (->titlecase       #x0394)
+    (greek-iso8859-7   #x64)   ; \e-Fä\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER DELTA")
+    (->ucs             . #x03B4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B4)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER DELTA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER DELTA")))
+    (japanese-jisx0208-1978    #x26 #x44)      ; \e$(B&D\e(B
+    (chinese-gb2312            #x26 #x44)      ; \e$(A&D\e(B
+    (japanese-jisx0208         #x26 #x44)      ; \e$(B&D\e(B
+    (korean-ksc5601            #x25 #x64)      ; \e$(C%d\e(B
+    (chinese-cns11643-1                #x25 #x32)      ; \e$(G%2\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON")
+    (ucs               . #x03B5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0395)
+    (->titlecase       #x0395)
+    (greek-iso8859-7   #x65)   ; \e-Få\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER EPSILON")
+    (->ucs             . #x03B5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B5)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER EPSILON")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER EPSILON")))
+    (japanese-jisx0208-1978    #x26 #x45)      ; \e$(B&E\e(B
+    (chinese-gb2312            #x26 #x45)      ; \e$(A&E\e(B
+    (japanese-jisx0208         #x26 #x45)      ; \e$(B&E\e(B
+    (korean-ksc5601            #x25 #x65)      ; \e$(C%e\e(B
+    (chinese-cns11643-1                #x25 #x33)      ; \e$(G%3\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ZETA")
+    (ucs               . #x03B6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0396)
+    (->titlecase       #x0396)
+    (greek-iso8859-7   #x66)   ; \e-Fæ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER ZETA")
+    (->ucs             . #x03B6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B6)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ZETA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ZETA")))
+    (japanese-jisx0208-1978    #x26 #x46)      ; \e$(B&F\e(B
+    (chinese-gb2312            #x26 #x46)      ; \e$(A&F\e(B
+    (japanese-jisx0208         #x26 #x46)      ; \e$(B&F\e(B
+    (korean-ksc5601            #x25 #x66)      ; \e$(C%f\e(B
+    (chinese-cns11643-1                #x25 #x34)      ; \e$(G%4\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA")
+    (ucs               . #x03B7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0397)
+    (->titlecase       #x0397)
+    (greek-iso8859-7   #x67)   ; \e-Fç\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER ETA")
+    (->ucs             . #x03B7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B7)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ETA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER ETA")))
+    (japanese-jisx0208-1978    #x26 #x47)      ; \e$(B&G\e(B
+    (chinese-gb2312            #x26 #x47)      ; \e$(A&G\e(B
+    (japanese-jisx0208         #x26 #x47)      ; \e$(B&G\e(B
+    (korean-ksc5601            #x25 #x67)      ; \e$(C%g\e(B
+    (chinese-cns11643-1                #x25 #x35)      ; \e$(G%5\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER THETA")
+    (ucs               . #x03B8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0398)
+    (->titlecase       #x0398)
+    (greek-iso8859-7   #x68)   ; \e-Fè\e-A
+    (ipa               #x48)   ; \e-0È\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER THETA")
+    (->ucs             . #x03B8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B8)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER THETA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER THETA")))
+    (japanese-jisx0208-1978    #x26 #x48)      ; \e$(B&H\e(B
+    (chinese-gb2312            #x26 #x48)      ; \e$(A&H\e(B
+    (japanese-jisx0208         #x26 #x48)      ; \e$(B&H\e(B
+    (korean-ksc5601            #x25 #x68)      ; \e$(C%h\e(B
+    (chinese-cns11643-1                #x25 #x36)      ; \e$(G%6\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA")
+    (ucs               . #x03B9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0399)
+    (->titlecase       #x0399)
+    (greek-iso8859-7   #x69)   ; \e-Fé\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER IOTA")
+    (->ucs             . #x03B9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03B9)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER IOTA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER IOTA")))
+    (japanese-jisx0208-1978    #x26 #x49)      ; \e$(B&I\e(B
+    (chinese-gb2312            #x26 #x49)      ; \e$(A&I\e(B
+    (japanese-jisx0208         #x26 #x49)      ; \e$(B&I\e(B
+    (korean-ksc5601            #x25 #x69)      ; \e$(C%i\e(B
+    (chinese-cns11643-1                #x25 #x37)      ; \e$(G%7\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER KAPPA")
+    (ucs               . #x03BA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x039A)
+    (->titlecase       #x039A)
+    (greek-iso8859-7   #x6A)   ; \e-Fê\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER KAPPA")
+    (->ucs             . #x03BA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03BA)
+    (->uppercase       #x039A)
+    (->titlecase       #x039A)
+    (japanese-jisx0208-1978    #x26 #x4A)      ; \e$(B&J\e(B
+    (chinese-gb2312            #x26 #x4A)      ; \e$(A&J\e(B
+    (japanese-jisx0208         #x26 #x4A)      ; \e$(B&J\e(B
+    (korean-ksc5601            #x25 #x6A)      ; \e$(C%j\e(B
+    (chinese-cns11643-1                #x25 #x38)      ; \e$(G%8\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER LAMDA")
+    (ucs               . #x03BB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x039B)
+    (->titlecase       #x039B)
+    (greek-iso8859-7   #x6B)   ; \e-Fë\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER LAMDA")
+    (->ucs             . #x03BB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03BB)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER LAMDA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER LAMDA")))
+    (japanese-jisx0208-1978    #x26 #x4B)      ; \e$(B&K\e(B
+    (chinese-gb2312            #x26 #x4B)      ; \e$(A&K\e(B
+    (japanese-jisx0208         #x26 #x4B)      ; \e$(B&K\e(B
+    (korean-ksc5601            #x25 #x6B)      ; \e$(C%k\e(B
+    (chinese-cns11643-1                #x25 #x39)      ; \e$(G%9\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER MU")
+    (ucs               . #x03BC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x039C)
+    (->titlecase       #x039C)
+    (greek-iso8859-7   #x6C)   ; \e-Fì\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER MU")
+    (->ucs             . #x03BC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03BC)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER MU")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER MU")))
+    (japanese-jisx0208-1978    #x26 #x4C)      ; \e$(B&L\e(B
+    (chinese-gb2312            #x26 #x4C)      ; \e$(A&L\e(B
+    (japanese-jisx0208         #x26 #x4C)      ; \e$(B&L\e(B
+    (korean-ksc5601            #x25 #x6C)      ; \e$(C%l\e(B
+    (chinese-cns11643-1                #x25 #x3A)      ; \e$(G%:\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER NU")
+    (ucs               . #x03BD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x039D)
+    (->titlecase       #x039D)
+    (greek-iso8859-7   #x6D)   ; \e-Fí\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER NU")
+    (->ucs             . #x03BD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03BD)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER NU")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER NU")))
+    (japanese-jisx0208-1978    #x26 #x4D)      ; \e$(B&M\e(B
+    (chinese-gb2312            #x26 #x4D)      ; \e$(A&M\e(B
+    (japanese-jisx0208         #x26 #x4D)      ; \e$(B&M\e(B
+    (korean-ksc5601            #x25 #x6D)      ; \e$(C%m\e(B
+    (chinese-cns11643-1                #x25 #x3B)      ; \e$(G%;\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER XI")
+    (ucs               . #x03BE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x039E)
+    (->titlecase       #x039E)
+    (greek-iso8859-7   #x6E)   ; \e-Fî\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER XI")
+    (->ucs             . #x03BE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03BE)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER XI")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER XI")))
+    (japanese-jisx0208-1978    #x26 #x4E)      ; \e$(B&N\e(B
+    (chinese-gb2312            #x26 #x4E)      ; \e$(A&N\e(B
+    (japanese-jisx0208         #x26 #x4E)      ; \e$(B&N\e(B
+    (korean-ksc5601            #x25 #x6E)      ; \e$(C%n\e(B
+    (chinese-cns11643-1                #x25 #x3C)      ; \e$(G%<\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON")
+    (ucs               . #x03BF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x039F)
+    (->titlecase       #x039F)
+    (greek-iso8859-7   #x6F)   ; \e-Fï\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER OMICRON")
+    (->ucs             . #x03BF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03BF)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER OMICRON")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER OMICRON")))
+    (japanese-jisx0208-1978    #x26 #x4F)      ; \e$(B&O\e(B
+    (chinese-gb2312            #x26 #x4F)      ; \e$(A&O\e(B
+    (japanese-jisx0208         #x26 #x4F)      ; \e$(B&O\e(B
+    (korean-ksc5601            #x25 #x6F)      ; \e$(C%o\e(B
+    (chinese-cns11643-1                #x25 #x3D)      ; \e$(G%=\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER PI")
+    (ucs               . #x03C0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A0)
+    (->titlecase       #x03A0)
+    (greek-iso8859-7   #x70)   ; \e-Fð\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER PI")
+    (->ucs             . #x03C0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C0)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER PI")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER PI")))
+    (japanese-jisx0208-1978    #x26 #x50)      ; \e$(B&P\e(B
+    (chinese-gb2312            #x26 #x50)      ; \e$(A&P\e(B
+    (japanese-jisx0208         #x26 #x50)      ; \e$(B&P\e(B
+    (korean-ksc5601            #x25 #x70)      ; \e$(C%p\e(B
+    (chinese-cns11643-1                #x25 #x3E)      ; \e$(G%>\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER RHO")
+    (ucs               . #x03C1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A1)
+    (->titlecase       #x03A1)
+    (greek-iso8859-7   #x71)   ; \e-Fñ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER RHO")
+    (->ucs             . #x03C1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C1)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER RHO")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER RHO")))
+    (japanese-jisx0208-1978    #x26 #x51)      ; \e$(B&Q\e(B
+    (chinese-gb2312            #x26 #x51)      ; \e$(A&Q\e(B
+    (japanese-jisx0208         #x26 #x51)      ; \e$(B&Q\e(B
+    (korean-ksc5601            #x25 #x71)      ; \e$(C%q\e(B
+    (chinese-cns11643-1                #x25 #x3F)      ; \e$(G%?\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER FINAL SIGMA")
+    (ucs               . #x03C2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A3)
+    (->titlecase       #x03A3)
+    (greek-iso8859-7   #x72)   ; \e-Fò\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER FINAL SIGMA")
+    (->ucs             . #x03C2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C2)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER FINAL SIGMA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER FINAL SIGMA")))
+    (japanese-jisx0212 #x26 #x78)      ; \e$(D&x\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER SIGMA")
+    (ucs               . #x03C3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A3)
+    (->titlecase       #x03A3)
+    (greek-iso8859-7   #x73)   ; \e-Fó\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER SIGMA")
+    (->ucs             . #x03C3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C3)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER SIGMA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER SIGMA")))
+    (japanese-jisx0208-1978    #x26 #x52)      ; \e$(B&R\e(B
+    (chinese-gb2312            #x26 #x52)      ; \e$(A&R\e(B
+    (japanese-jisx0208         #x26 #x52)      ; \e$(B&R\e(B
+    (korean-ksc5601            #x25 #x72)      ; \e$(C%r\e(B
+    (chinese-cns11643-1                #x25 #x40)      ; \e$(G%@\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER TAU")
+    (ucs               . #x03C4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A4)
+    (->titlecase       #x03A4)
+    (greek-iso8859-7   #x74)   ; \e-Fô\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER TAU")
+    (->ucs             . #x03C4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C4)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER TAU")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER TAU")))
+    (japanese-jisx0208-1978    #x26 #x53)      ; \e$(B&S\e(B
+    (chinese-gb2312            #x26 #x53)      ; \e$(A&S\e(B
+    (japanese-jisx0208         #x26 #x53)      ; \e$(B&S\e(B
+    (korean-ksc5601            #x25 #x73)      ; \e$(C%s\e(B
+    (chinese-cns11643-1                #x25 #x41)      ; \e$(G%A\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON")
+    (ucs               . #x03C5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A5)
+    (->titlecase       #x03A5)
+    (greek-iso8859-7   #x75)   ; \e-Fõ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER UPSILON")
+    (->ucs             . #x03C5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C5)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER UPSILON")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER UPSILON")))
+    (japanese-jisx0208-1978    #x26 #x54)      ; \e$(B&T\e(B
+    (chinese-gb2312            #x26 #x54)      ; \e$(A&T\e(B
+    (japanese-jisx0208         #x26 #x54)      ; \e$(B&T\e(B
+    (korean-ksc5601            #x25 #x74)      ; \e$(C%t\e(B
+    (chinese-cns11643-1                #x25 #x42)      ; \e$(G%B\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER PHI")
+    (ucs               . #x03C6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A6)
+    (->titlecase       #x03A6)
+    (greek-iso8859-7   #x76)   ; \e-Fö\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER PHI")
+    (->ucs             . #x03C6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C6)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER PHI")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER PHI")))
+    (japanese-jisx0208-1978    #x26 #x55)      ; \e$(B&U\e(B
+    (chinese-gb2312            #x26 #x55)      ; \e$(A&U\e(B
+    (japanese-jisx0208         #x26 #x55)      ; \e$(B&U\e(B
+    (korean-ksc5601            #x25 #x75)      ; \e$(C%u\e(B
+    (chinese-cns11643-1                #x25 #x43)      ; \e$(G%C\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER CHI")
+    (ucs               . #x03C7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A7)
+    (->titlecase       #x03A7)
+    (greek-iso8859-7   #x77)   ; \e-F÷\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER CHI")
+    (->ucs             . #x03C7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C7)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER CHI")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER CHI")))
+    (japanese-jisx0208-1978    #x26 #x56)      ; \e$(B&V\e(B
+    (chinese-gb2312            #x26 #x56)      ; \e$(A&V\e(B
+    (japanese-jisx0208         #x26 #x56)      ; \e$(B&V\e(B
+    (korean-ksc5601            #x25 #x76)      ; \e$(C%v\e(B
+    (chinese-cns11643-1                #x25 #x44)      ; \e$(G%D\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER PSI")
+    (ucs               . #x03C8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A8)
+    (->titlecase       #x03A8)
+    (greek-iso8859-7   #x78)   ; \e-Fø\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER PSI")
+    (->ucs             . #x03C8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C8)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER PSI")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER PSI")))
+    (japanese-jisx0208-1978    #x26 #x57)      ; \e$(B&W\e(B
+    (chinese-gb2312            #x26 #x57)      ; \e$(A&W\e(B
+    (japanese-jisx0208         #x26 #x57)      ; \e$(B&W\e(B
+    (korean-ksc5601            #x25 #x77)      ; \e$(C%w\e(B
+    (chinese-cns11643-1                #x25 #x45)      ; \e$(G%E\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA")
+    (ucs               . #x03C9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03A9)
+    (->titlecase       #x03A9)
+    (greek-iso8859-7   #x79)   ; \e-Fù\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER OMEGA")
+    (->ucs             . #x03C9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03C9)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER OMEGA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER OMEGA")))
+    (japanese-jisx0208-1978    #x26 #x58)      ; \e$(B&X\e(B
+    (chinese-gb2312            #x26 #x58)      ; \e$(A&X\e(B
+    (japanese-jisx0208         #x26 #x58)      ; \e$(B&X\e(B
+    (korean-ksc5601            #x25 #x78)      ; \e$(C%x\e(B
+    (chinese-cns11643-1                #x25 #x46)      ; \e$(G%F\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH DIALYTIKA")
+    (ucs               . #x03CA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03B9 #x0308)
+    (->uppercase       #x03AA)
+    (->titlecase       #x03AA)
+    (greek-iso8859-7   #x7A)   ; \e-Fú\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH GREEK SMALL LETTER IOTA WITH DIALYTIKA")
+    (->ucs             . #x03CA)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03CA)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER IOTA WITH DIALYTIKA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER IOTA WITH DIALYTIKA")))
+    (japanese-jisx0212 #x26 #x75)      ; \e$(D&u\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH DIALYTIKA")
+    (ucs               . #x03CB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03C5 #x0308)
+    (->uppercase       #x03AB)
+    (->titlecase       #x03AB)
+    (greek-iso8859-7   #x7B)   ; \e-Fû\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH GREEK SMALL LETTER UPSILON WITH DIALYTIKA")
+    (->ucs             . #x03CB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03CB)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA")))
+    (japanese-jisx0212 #x26 #x7A)      ; \e$(D&z\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON WITH TONOS")
+    (ucs               . #x03CC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03BF #x0301)
+    (->uppercase       #x038C)
+    (->titlecase       #x038C)
+    (greek-iso8859-7   #x7C)   ; \e-Fü\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER OMICRON WITH TONOS")
+    (->ucs             . #x03CC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03CC)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER OMICRON WITH TONOS")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER OMICRON WITH TONOS")))
+    (japanese-jisx0212 #x26 #x77)      ; \e$(D&w\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH TONOS")
+    (ucs               . #x03CD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03C5 #x0301)
+    (->uppercase       #x038E)
+    (->titlecase       #x038E)
+    (greek-iso8859-7   #x7D)   ; \e-Fý\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER UPSILON WITH TONOS")
+    (->ucs             . #x03CD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03CD)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER UPSILON WITH TONOS")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER UPSILON WITH TONOS")))
+    (japanese-jisx0212 #x26 #x79)      ; \e$(D&y\e(B
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH TONOS")
+    (ucs               . #x03CE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03C9 #x0301)
+    (->uppercase       #x038F)
+    (->titlecase       #x038F)
+    (greek-iso8859-7   #x7E)   ; \e-Fþ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH GREEK SMALL LETTER OMEGA WITH TONOS")
+    (->ucs             . #x03CE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x03CE)
+    (->uppercase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER OMEGA WITH TONOS")))
+    (->titlecase
+     ((name . "FULLWIDTH GREEK CAPITAL LETTER OMEGA WITH TONOS")))
+    (japanese-jisx0212 #x26 #x7C)      ; \e$(D&|\e(B
+    ))
+(define-char
+  '((name              . "GREEK BETA SYMBOL")
+    (ucs               . #x03D0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x03B2)
+    (->uppercase       #x0392)
+    (->titlecase       #x0392)
+    ))
+(define-char
+  '((name              . "GREEK THETA SYMBOL")
+    (ucs               . #x03D1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x03B8)
+    (->uppercase       #x0398)
+    (->titlecase       #x0398)
+    ))
+(define-char
+  '((name              . "GREEK UPSILON WITH HOOK SYMBOL")
+    (ucs               . #x03D2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x03A5)
+    ))
+(define-char
+  '((name              . "GREEK UPSILON WITH ACUTE AND HOOK SYMBOL")
+    (ucs               . #x03D3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03D2 #x0301)
+    ))
+(define-char
+  '((name              . "GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL")
+    (ucs               . #x03D4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03D2 #x0308)
+    ))
+(define-char
+  '((name              . "GREEK PHI SYMBOL")
+    (ucs               . #x03D5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x03C6)
+    (->uppercase       #x03A6)
+    (->titlecase       #x03A6)
+    ))
+(define-char
+  '((name              . "GREEK PI SYMBOL")
+    (ucs               . #x03D6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x03C0)
+    (->uppercase       #x03A0)
+    (->titlecase       #x03A0)
+    ))
+(define-char
+  '((name              . "GREEK KAI SYMBOL")
+    (ucs               . #x03D7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK LETTER STIGMA")
+    (ucs               . #x03DA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03DB)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER STIGMA")
+    (ucs               . #x03DB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03DA)
+    (->titlecase       #x03DA)
+    ))
+(define-char
+  '((name              . "GREEK LETTER DIGAMMA")
+    (ucs               . #x03DC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03DD)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER DIGAMMA")
+    (ucs               . #x03DD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03DC)
+    (->titlecase       #x03DC)
+    ))
+(define-char
+  '((name              . "GREEK LETTER KOPPA")
+    (ucs               . #x03DE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03DF)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER KOPPA")
+    (ucs               . #x03DF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03DE)
+    (->titlecase       #x03DE)
+    ))
+(define-char
+  '((name              . "GREEK LETTER SAMPI")
+    (ucs               . #x03E0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03E1)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER SAMPI")
+    (ucs               . #x03E1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03E0)
+    (->titlecase       #x03E0)
+    ))
+(define-char
+  '((name              . "COPTIC CAPITAL LETTER SHEI")
+    (ucs               . #x03E2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03E3)
+    ))
+(define-char
+  '((name              . "COPTIC SMALL LETTER SHEI")
+    (ucs               . #x03E3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03E2)
+    (->titlecase       #x03E2)
+    ))
+(define-char
+  '((name              . "COPTIC CAPITAL LETTER FEI")
+    (ucs               . #x03E4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03E5)
+    ))
+(define-char
+  '((name              . "COPTIC SMALL LETTER FEI")
+    (ucs               . #x03E5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03E4)
+    (->titlecase       #x03E4)
+    ))
+(define-char
+  '((name              . "COPTIC CAPITAL LETTER KHEI")
+    (ucs               . #x03E6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03E7)
+    ))
+(define-char
+  '((name              . "COPTIC SMALL LETTER KHEI")
+    (ucs               . #x03E7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03E6)
+    (->titlecase       #x03E6)
+    ))
+(define-char
+  '((name              . "COPTIC CAPITAL LETTER HORI")
+    (ucs               . #x03E8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03E9)
+    ))
+(define-char
+  '((name              . "COPTIC SMALL LETTER HORI")
+    (ucs               . #x03E9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03E8)
+    (->titlecase       #x03E8)
+    ))
+(define-char
+  '((name              . "COPTIC CAPITAL LETTER GANGIA")
+    (ucs               . #x03EA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03EB)
+    ))
+(define-char
+  '((name              . "COPTIC SMALL LETTER GANGIA")
+    (ucs               . #x03EB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03EA)
+    (->titlecase       #x03EA)
+    ))
+(define-char
+  '((name              . "COPTIC CAPITAL LETTER SHIMA")
+    (ucs               . #x03EC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03ED)
+    ))
+(define-char
+  '((name              . "COPTIC SMALL LETTER SHIMA")
+    (ucs               . #x03ED)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03EC)
+    (->titlecase       #x03EC)
+    ))
+(define-char
+  '((name              . "COPTIC CAPITAL LETTER DEI")
+    (ucs               . #x03EE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x03EF)
+    ))
+(define-char
+  '((name              . "COPTIC SMALL LETTER DEI")
+    (ucs               . #x03EF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x03EE)
+    (->titlecase       #x03EE)
+    ))
+(define-char
+  '((name              . "GREEK KAPPA SYMBOL")
+    (ucs               . #x03F0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x03BA)
+    (->uppercase       #x039A)
+    (->titlecase       #x039A)
+    ))
+(define-char
+  '((name              . "GREEK RHO SYMBOL")
+    (ucs               . #x03F1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x03C1)
+    (->uppercase       #x03A1)
+    (->titlecase       #x03A1)
+    ))
+(define-char
+  '((name              . "GREEK LUNATE SIGMA SYMBOL")
+    (ucs               . #x03F2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x03C2)
+    (->uppercase       #x03A3)
+    (->titlecase       #x03A3)
+    ))
+(define-char
+  '((name              . "GREEK LETTER YOT")
+    (ucs               . #x03F3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00400-Cyrillic.el b/lisp/utf-2000/u00400-Cyrillic.el
new file mode 100644 (file)
index 0000000..de7436f
--- /dev/null
@@ -0,0 +1,3476 @@
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER IE WITH GRAVE")
+    (ucs               . #x0400)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0415 #x0300)
+    (->lowercase       #x0450)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER IO")
+    (ucs               . #x0401)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0415 #x0308)
+    (->lowercase       #x0451)
+    (cyrillic-iso8859-5 #x21)  ; \e-L¡\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER IO")
+    (->ucs             . #x0401)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0401)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER IO")))
+    (japanese-jisx0208-1978    #x27 #x27)      ; \e$(B''\e(B
+    (chinese-gb2312            #x27 #x27)      ; \e$(A''\e(B
+    (japanese-jisx0208         #x27 #x27)      ; \e$(B''\e(B
+    (korean-ksc5601            #x2C #x27)      ; \e$(C,'\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER DJE")
+    (ucs               . #x0402)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Serbocroatian")
+    (->lowercase       #x0452)
+    (cyrillic-iso8859-5 #x22)  ; \e-L¢\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER DJE")
+    (->ucs             . #x0402)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Serbocroatian")
+    (->decomposition   wide #x0402)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER DJE")))
+    (japanese-jisx0212 #x27 #x42)      ; \e$(D'B\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER GJE")
+    (ucs               . #x0403)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0413 #x0301)
+    (->lowercase       #x0453)
+    (cyrillic-iso8859-5 #x23)  ; \e-L£\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER GJE")
+    (->ucs             . #x0403)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0403)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER GJE")))
+    (japanese-jisx0212 #x27 #x43)      ; \e$(D'C\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER UKRAINIAN IE")
+    (ucs               . #x0404)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0454)
+    (cyrillic-iso8859-5 #x24)  ; \e-L¤\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER UKRAINIAN IE")
+    (->ucs             . #x0404)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0404)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER UKRAINIAN IE")))
+    (japanese-jisx0212 #x27 #x44)      ; \e$(D'D\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER DZE")
+    (ucs               . #x0405)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0455)
+    (cyrillic-iso8859-5 #x25)  ; \e-L¥\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER DZE")
+    (->ucs             . #x0405)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0405)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER DZE")))
+    (japanese-jisx0212 #x27 #x45)      ; \e$(D'E\e(B
+    ))
+(define-char
+  '((name . "CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I")
+    (ucs               . #x0406)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0456)
+    (cyrillic-iso8859-5 #x26)  ; \e-L¦\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I")
+    (->ucs             . #x0406)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0406)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I")))
+    (japanese-jisx0212 #x27 #x46)      ; \e$(D'F\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER YI")
+    (ucs               . #x0407)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Ukrainian")
+    (->decomposition   #x0406 #x0308)
+    (->lowercase       #x0457)
+    (cyrillic-iso8859-5 #x27)  ; \e-L§\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER YI")
+    (->ucs             . #x0407)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Ukrainian")
+    (->decomposition   wide #x0407)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER YI")))
+    (japanese-jisx0212 #x27 #x47)      ; \e$(D'G\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER JE")
+    (ucs               . #x0408)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0458)
+    (cyrillic-iso8859-5 #x28)  ; \e-L¨\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER JE")
+    (->ucs             . #x0408)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0408)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER JE")))
+    (japanese-jisx0212 #x27 #x48)      ; \e$(D'H\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER LJE")
+    (ucs               . #x0409)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0459)
+    (cyrillic-iso8859-5 #x29)  ; \e-L©\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER LJE")
+    (->ucs             . #x0409)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0409)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER LJE")))
+    (japanese-jisx0212 #x27 #x49)      ; \e$(D'I\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER NJE")
+    (ucs               . #x040A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x045A)
+    (cyrillic-iso8859-5 #x2A)  ; \e-Lª\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER NJE")
+    (->ucs             . #x040A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x040A)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER NJE")))
+    (japanese-jisx0212 #x27 #x4A)      ; \e$(D'J\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER TSHE")
+    (ucs               . #x040B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Serbocroatian")
+    (->lowercase       #x045B)
+    (cyrillic-iso8859-5 #x2B)  ; \e-L«\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER TSHE")
+    (->ucs             . #x040B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Serbocroatian")
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER TSHE")))
+    (japanese-jisx0212 #x27 #x4B)      ; \e$(D'K\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER KJE")
+    (ucs               . #x040C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x041A #x0301)
+    (->lowercase       #x045C)
+    (cyrillic-iso8859-5 #x2C)  ; \e-L¬\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER KJE")
+    (->ucs             . #x040C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x040C)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER KJE")))
+    (japanese-jisx0212 #x27 #x4C)      ; \e$(D'L\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER I WITH GRAVE")
+    (ucs               . #x040D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0418 #x0300)
+    (->lowercase       #x045D)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER SHORT U")
+    (ucs               . #x040E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Byelorussian")
+    (->decomposition   #x0423 #x0306)
+    (->lowercase       #x045E)
+    (cyrillic-iso8859-5 #x2E)  ; \e-L®\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER SHORT U")
+    (->ucs             . #x040E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Byelorussian")
+    (->decomposition   wide #x040E)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER SHORT U")))
+    (japanese-jisx0212 #x27 #x4D)      ; \e$(D'M\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER DZHE")
+    (ucs               . #x040F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x045F)
+    (cyrillic-iso8859-5 #x2F)  ; \e-L¯\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER DZHE")
+    (->ucs             . #x040F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x040F)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER DZHE")))
+    (japanese-jisx0212 #x27 #x4E)      ; \e$(D'N\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER A")
+    (ucs               . #x0410)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0430)
+    (cyrillic-iso8859-5 #x30)  ; \e-L°\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER A")
+    (->ucs             . #x0410)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0410)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER A")))
+    (japanese-jisx0208-1978    #x27 #x21)      ; \e$(B'!\e(B
+    (chinese-gb2312            #x27 #x21)      ; \e$(A'!\e(B
+    (japanese-jisx0208         #x27 #x21)      ; \e$(B'!\e(B
+    (korean-ksc5601            #x2C #x21)      ; \e$(C,!\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER BE")
+    (ucs               . #x0411)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0431)
+    (cyrillic-iso8859-5 #x31)  ; \e-L±\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER BE")
+    (->ucs             . #x0411)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0411)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER BE")))
+    (japanese-jisx0208-1978    #x27 #x22)      ; \e$(B'"\e(B
+    (chinese-gb2312            #x27 #x22)      ; \e$(A'"\e(B
+    (japanese-jisx0208         #x27 #x22)      ; \e$(B'"\e(B
+    (korean-ksc5601            #x2C #x22)      ; \e$(C,"\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER VE")
+    (ucs               . #x0412)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0432)
+    (cyrillic-iso8859-5 #x32)  ; \e-L²\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER VE")
+    (->ucs             . #x0412)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0412)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER VE")))
+    (japanese-jisx0208-1978    #x27 #x23)      ; \e$(B'#\e(B
+    (chinese-gb2312            #x27 #x23)      ; \e$(A'#\e(B
+    (japanese-jisx0208         #x27 #x23)      ; \e$(B'#\e(B
+    (korean-ksc5601            #x2C #x23)      ; \e$(C,#\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER GHE")
+    (ucs               . #x0413)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0433)
+    (cyrillic-iso8859-5 #x33)  ; \e-L³\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER GHE")
+    (->ucs             . #x0413)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0413)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER GHE")))
+    (japanese-jisx0208-1978    #x27 #x24)      ; \e$(B'$\e(B
+    (chinese-gb2312            #x27 #x24)      ; \e$(A'$\e(B
+    (japanese-jisx0208         #x27 #x24)      ; \e$(B'$\e(B
+    (korean-ksc5601            #x2C #x24)      ; \e$(C,$\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER DE")
+    (ucs               . #x0414)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0434)
+    (cyrillic-iso8859-5 #x34)  ; \e-L´\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER DE")
+    (->ucs             . #x0414)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0414)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER DE")))
+    (japanese-jisx0208-1978    #x27 #x25)      ; \e$(B'%\e(B
+    (chinese-gb2312            #x27 #x25)      ; \e$(A'%\e(B
+    (japanese-jisx0208         #x27 #x25)      ; \e$(B'%\e(B
+    (korean-ksc5601            #x2C #x25)      ; \e$(C,%\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER IE")
+    (ucs               . #x0415)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0435)
+    (cyrillic-iso8859-5 #x35)  ; \e-Lµ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER IE")
+    (->ucs             . #x0415)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0415)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER IE")))
+    (japanese-jisx0208-1978    #x27 #x26)      ; \e$(B'&\e(B
+    (chinese-gb2312            #x27 #x26)      ; \e$(A'&\e(B
+    (japanese-jisx0208         #x27 #x26)      ; \e$(B'&\e(B
+    (korean-ksc5601            #x2C #x26)      ; \e$(C,&\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ZHE")
+    (ucs               . #x0416)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0436)
+    (cyrillic-iso8859-5 #x36)  ; \e-L¶\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER ZHE")
+    (->ucs             . #x0416)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0416)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER ZHE")))
+    (japanese-jisx0208-1978    #x27 #x28)      ; \e$(B'(\e(B
+    (chinese-gb2312            #x27 #x28)      ; \e$(A'(\e(B
+    (japanese-jisx0208         #x27 #x28)      ; \e$(B'(\e(B
+    (korean-ksc5601            #x2C #x28)      ; \e$(C,(\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ZE")
+    (ucs               . #x0417)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0437)
+    (cyrillic-iso8859-5 #x37)  ; \e-L·\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER ZE")
+    (->ucs             . #x0417)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0417)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER ZE")))
+    (japanese-jisx0208-1978    #x27 #x29)      ; \e$(B')\e(B
+    (chinese-gb2312            #x27 #x29)      ; \e$(A')\e(B
+    (japanese-jisx0208         #x27 #x29)      ; \e$(B')\e(B
+    (korean-ksc5601            #x2C #x29)      ; \e$(C,)\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER I")
+    (ucs               . #x0418)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0438)
+    (cyrillic-iso8859-5 #x38)  ; \e-L¸\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER I")
+    (->ucs             . #x0418)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0418)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER I")))
+    (japanese-jisx0208-1978    #x27 #x2A)      ; \e$(B'*\e(B
+    (chinese-gb2312            #x27 #x2A)      ; \e$(A'*\e(B
+    (japanese-jisx0208         #x27 #x2A)      ; \e$(B'*\e(B
+    (korean-ksc5601            #x2C #x2A)      ; \e$(C,*\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER SHORT I")
+    (ucs               . #x0419)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0418 #x0306)
+    (->lowercase       #x0439)
+    (cyrillic-iso8859-5 #x39)  ; \e-L¹\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER SHORT I")
+    (->ucs             . #x0419)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0419)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER SHORT I")))
+    (japanese-jisx0208-1978    #x27 #x2B)      ; \e$(B'+\e(B
+    (chinese-gb2312            #x27 #x2B)      ; \e$(A'+\e(B
+    (japanese-jisx0208         #x27 #x2B)      ; \e$(B'+\e(B
+    (korean-ksc5601            #x2C #x2B)      ; \e$(C,+\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER KA")
+    (ucs               . #x041A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x043A)
+    (cyrillic-iso8859-5 #x3A)  ; \e-Lº\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER KA")
+    (->ucs             . #x041A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x041A)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER KA")))
+    (japanese-jisx0208-1978    #x27 #x2C)      ; \e$(B',\e(B
+    (chinese-gb2312            #x27 #x2C)      ; \e$(A',\e(B
+    (japanese-jisx0208         #x27 #x2C)      ; \e$(B',\e(B
+    (korean-ksc5601            #x2C #x2C)      ; \e$(C,,\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER EL")
+    (ucs               . #x041B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x043B)
+    (cyrillic-iso8859-5 #x3B)  ; \e-L»\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER EL")
+    (->ucs             . #x041B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x041B)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER EL")))
+    (japanese-jisx0208-1978    #x27 #x2D)      ; \e$(B'-\e(B
+    (chinese-gb2312            #x27 #x2D)      ; \e$(A'-\e(B
+    (japanese-jisx0208         #x27 #x2D)      ; \e$(B'-\e(B
+    (korean-ksc5601            #x2C #x2D)      ; \e$(C,-\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER EM")
+    (ucs               . #x041C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x043C)
+    (cyrillic-iso8859-5 #x3C)  ; \e-L¼\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER EM")
+    (->ucs             . #x041C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x041C)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER EM")))
+    (japanese-jisx0208-1978    #x27 #x2E)      ; \e$(B'.\e(B
+    (chinese-gb2312            #x27 #x2E)      ; \e$(A'.\e(B
+    (japanese-jisx0208         #x27 #x2E)      ; \e$(B'.\e(B
+    (korean-ksc5601            #x2C #x2E)      ; \e$(C,.\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER EN")
+    (ucs               . #x041D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x043D)
+    (cyrillic-iso8859-5 #x3D)  ; \e-L½\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER EN")
+    (->ucs             . #x041D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x041D)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER EN")))
+    (japanese-jisx0208-1978    #x27 #x2F)      ; \e$(B'/\e(B
+    (chinese-gb2312            #x27 #x2F)      ; \e$(A'/\e(B
+    (japanese-jisx0208         #x27 #x2F)      ; \e$(B'/\e(B
+    (korean-ksc5601            #x2C #x2F)      ; \e$(C,/\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER O")
+    (ucs               . #x041E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x043E)
+    (cyrillic-iso8859-5 #x3E)  ; \e-L¾\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER O")
+    (->ucs             . #x041E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x041E)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER O")))
+    (japanese-jisx0208-1978    #x27 #x30)      ; \e$(B'0\e(B
+    (chinese-gb2312            #x27 #x30)      ; \e$(A'0\e(B
+    (japanese-jisx0208         #x27 #x30)      ; \e$(B'0\e(B
+    (korean-ksc5601            #x2C #x30)      ; \e$(C,0\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER PE")
+    (ucs               . #x041F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x043F)
+    (cyrillic-iso8859-5 #x3F)  ; \e-L¿\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER PE")
+    (->ucs             . #x041F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x041F)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER PE")))
+    (japanese-jisx0208-1978    #x27 #x31)      ; \e$(B'1\e(B
+    (chinese-gb2312            #x27 #x31)      ; \e$(A'1\e(B
+    (japanese-jisx0208         #x27 #x31)      ; \e$(B'1\e(B
+    (korean-ksc5601            #x2C #x31)      ; \e$(C,1\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ER")
+    (ucs               . #x0420)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0440)
+    (cyrillic-iso8859-5 #x40)  ; \e-LÀ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER ER")
+    (->ucs             . #x0420)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0420)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER ER")))
+    (japanese-jisx0208-1978    #x27 #x32)      ; \e$(B'2\e(B
+    (chinese-gb2312            #x27 #x32)      ; \e$(A'2\e(B
+    (japanese-jisx0208         #x27 #x32)      ; \e$(B'2\e(B
+    (korean-ksc5601            #x2C #x32)      ; \e$(C,2\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ES")
+    (ucs               . #x0421)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0441)
+    (cyrillic-iso8859-5 #x41)  ; \e-LÁ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER ES")
+    (->ucs             . #x0421)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0421)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER ES")))
+    (japanese-jisx0208-1978    #x27 #x33)      ; \e$(B'3\e(B
+    (chinese-gb2312            #x27 #x33)      ; \e$(A'3\e(B
+    (japanese-jisx0208         #x27 #x33)      ; \e$(B'3\e(B
+    (korean-ksc5601            #x2C #x33)      ; \e$(C,3\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER TE")
+    (ucs               . #x0422)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0442)
+    (cyrillic-iso8859-5 #x42)  ; \e-LÂ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER TE")
+    (->ucs             . #x0422)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0422)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER TE")))
+    (japanese-jisx0208-1978    #x27 #x34)      ; \e$(B'4\e(B
+    (chinese-gb2312            #x27 #x34)      ; \e$(A'4\e(B
+    (japanese-jisx0208         #x27 #x34)      ; \e$(B'4\e(B
+    (korean-ksc5601            #x2C #x34)      ; \e$(C,4\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER U")
+    (ucs               . #x0423)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0443)
+    (cyrillic-iso8859-5 #x43)  ; \e-LÃ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER U")
+    (->ucs             . #x0423)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0423)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER U")))
+    (japanese-jisx0208-1978    #x27 #x35)      ; \e$(B'5\e(B
+    (chinese-gb2312            #x27 #x35)      ; \e$(A'5\e(B
+    (japanese-jisx0208         #x27 #x35)      ; \e$(B'5\e(B
+    (korean-ksc5601            #x2C #x35)      ; \e$(C,5\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER EF")
+    (ucs               . #x0424)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0444)
+    (cyrillic-iso8859-5 #x44)  ; \e-LÄ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER EF")
+    (->ucs             . #x0424)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0424)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER EF")))
+    (japanese-jisx0208-1978    #x27 #x36)      ; \e$(B'6\e(B
+    (chinese-gb2312            #x27 #x36)      ; \e$(A'6\e(B
+    (japanese-jisx0208         #x27 #x36)      ; \e$(B'6\e(B
+    (korean-ksc5601            #x2C #x36)      ; \e$(C,6\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER HA")
+    (ucs               . #x0425)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0445)
+    (cyrillic-iso8859-5 #x45)  ; \e-LÅ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER HA")
+    (->ucs             . #x0425)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0425)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER HA")))
+    (japanese-jisx0208-1978    #x27 #x37)      ; \e$(B'7\e(B
+    (chinese-gb2312            #x27 #x37)      ; \e$(A'7\e(B
+    (japanese-jisx0208         #x27 #x37)      ; \e$(B'7\e(B
+    (korean-ksc5601            #x2C #x37)      ; \e$(C,7\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER TSE")
+    (ucs               . #x0426)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0446)
+    (cyrillic-iso8859-5 #x46)  ; \e-LÆ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER TSE")
+    (->ucs             . #x0426)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0426)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER TSE")))
+    (japanese-jisx0208-1978    #x27 #x38)      ; \e$(B'8\e(B
+    (chinese-gb2312            #x27 #x38)      ; \e$(A'8\e(B
+    (japanese-jisx0208         #x27 #x38)      ; \e$(B'8\e(B
+    (korean-ksc5601            #x2C #x38)      ; \e$(C,8\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER CHE")
+    (ucs               . #x0427)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0447)
+    (cyrillic-iso8859-5 #x47)  ; \e-LÇ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER CHE")
+    (->ucs             . #x0427)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0427)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER CHE")))
+    (japanese-jisx0208-1978    #x27 #x39)      ; \e$(B'9\e(B
+    (chinese-gb2312            #x27 #x39)      ; \e$(A'9\e(B
+    (japanese-jisx0208         #x27 #x39)      ; \e$(B'9\e(B
+    (korean-ksc5601            #x2C #x39)      ; \e$(C,9\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER SHA")
+    (ucs               . #x0428)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0448)
+    (cyrillic-iso8859-5 #x48)  ; \e-LÈ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER SHA")
+    (->ucs             . #x0428)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0428)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER SHA")))
+    (japanese-jisx0208-1978    #x27 #x3A)      ; \e$(B':\e(B
+    (chinese-gb2312            #x27 #x3A)      ; \e$(A':\e(B
+    (japanese-jisx0208         #x27 #x3A)      ; \e$(B':\e(B
+    (korean-ksc5601            #x2C #x3A)      ; \e$(C,:\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER SHCHA")
+    (ucs               . #x0429)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0449)
+    (cyrillic-iso8859-5 #x49)  ; \e-LÉ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER SHCHA")
+    (->ucs             . #x0429)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0429)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER SHCHA")))
+    (japanese-jisx0208-1978    #x27 #x3B)      ; \e$(B';\e(B
+    (chinese-gb2312            #x27 #x3B)      ; \e$(A';\e(B
+    (japanese-jisx0208         #x27 #x3B)      ; \e$(B';\e(B
+    (korean-ksc5601            #x2C #x3B)      ; \e$(C,;\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER HARD SIGN")
+    (ucs               . #x042A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x044A)
+    (cyrillic-iso8859-5 #x4A)  ; \e-LÊ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER HARD SIGN")
+    (->ucs             . #x042A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x042A)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER HARD SIGN")))
+    (japanese-jisx0208-1978    #x27 #x3C)      ; \e$(B'<\e(B
+    (chinese-gb2312            #x27 #x3C)      ; \e$(A'<\e(B
+    (japanese-jisx0208         #x27 #x3C)      ; \e$(B'<\e(B
+    (korean-ksc5601            #x2C #x3C)      ; \e$(C,<\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER YERU")
+    (ucs               . #x042B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x044B)
+    (cyrillic-iso8859-5 #x4B)  ; \e-LË\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER YERU")
+    (->ucs             . #x042B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x042B)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER YERU")))
+    (japanese-jisx0208-1978    #x27 #x3D)      ; \e$(B'=\e(B
+    (chinese-gb2312            #x27 #x3D)      ; \e$(A'=\e(B
+    (japanese-jisx0208         #x27 #x3D)      ; \e$(B'=\e(B
+    (korean-ksc5601            #x2C #x3D)      ; \e$(C,=\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER SOFT SIGN")
+    (ucs               . #x042C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x044C)
+    (cyrillic-iso8859-5 #x4C)  ; \e-LÌ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER SOFT SIGN")
+    (->ucs             . #x042C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x042C)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER SOFT SIGN")))
+    (japanese-jisx0208-1978    #x27 #x3E)      ; \e$(B'>\e(B
+    (chinese-gb2312            #x27 #x3E)      ; \e$(A'>\e(B
+    (japanese-jisx0208         #x27 #x3E)      ; \e$(B'>\e(B
+    (korean-ksc5601            #x2C #x3E)      ; \e$(C,>\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER E")
+    (ucs               . #x042D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x044D)
+    (cyrillic-iso8859-5 #x4D)  ; \e-LÍ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER E")
+    (->ucs             . #x042D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x042D)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER E")))
+    (japanese-jisx0208-1978    #x27 #x3F)      ; \e$(B'?\e(B
+    (chinese-gb2312            #x27 #x3F)      ; \e$(A'?\e(B
+    (japanese-jisx0208         #x27 #x3F)      ; \e$(B'?\e(B
+    (korean-ksc5601            #x2C #x3F)      ; \e$(C,?\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER YU")
+    (ucs               . #x042E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x044E)
+    (cyrillic-iso8859-5 #x4E)  ; \e-LÎ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER YU")
+    (->ucs             . #x042E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x042E)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER YU")))
+    (japanese-jisx0208-1978    #x27 #x40)      ; \e$(B'@\e(B
+    (chinese-gb2312            #x27 #x40)      ; \e$(A'@\e(B
+    (japanese-jisx0208         #x27 #x40)      ; \e$(B'@\e(B
+    (korean-ksc5601            #x2C #x40)      ; \e$(C,@\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER YA")
+    (ucs               . #x042F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x044F)
+    (cyrillic-iso8859-5 #x4F)  ; \e-LÏ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC CAPITAL LETTER YA")
+    (->ucs             . #x042F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x042F)
+    (->lowercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER YA")))
+    (japanese-jisx0208-1978    #x27 #x41)      ; \e$(B'A\e(B
+    (chinese-gb2312            #x27 #x41)      ; \e$(A'A\e(B
+    (japanese-jisx0208         #x27 #x41)      ; \e$(B'A\e(B
+    (korean-ksc5601            #x2C #x41)      ; \e$(C,A\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER A")
+    (ucs               . #x0430)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0410)
+    (->titlecase       #x0410)
+    (cyrillic-iso8859-5 #x50)  ; \e-LÐ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER A")
+    (->ucs             . #x0430)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0430)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER A")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER A")))
+    (japanese-jisx0208-1978    #x27 #x51)      ; \e$(B'Q\e(B
+    (chinese-gb2312            #x27 #x51)      ; \e$(A'Q\e(B
+    (japanese-jisx0208         #x27 #x51)      ; \e$(B'Q\e(B
+    (korean-ksc5601            #x2C #x51)      ; \e$(C,Q\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER BE")
+    (ucs               . #x0431)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0411)
+    (->titlecase       #x0411)
+    (cyrillic-iso8859-5 #x51)  ; \e-LÑ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER BE")
+    (->ucs             . #x0431)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0431)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER BE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER BE")))
+    (japanese-jisx0208-1978    #x27 #x52)      ; \e$(B'R\e(B
+    (chinese-gb2312            #x27 #x52)      ; \e$(A'R\e(B
+    (japanese-jisx0208         #x27 #x52)      ; \e$(B'R\e(B
+    (korean-ksc5601            #x2C #x52)      ; \e$(C,R\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER VE")
+    (ucs               . #x0432)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0412)
+    (->titlecase       #x0412)
+    (cyrillic-iso8859-5 #x52)  ; \e-LÒ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER VE")
+    (->ucs             . #x0432)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0432)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER VE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER VE")))
+    (japanese-jisx0208-1978    #x27 #x53)      ; \e$(B'S\e(B
+    (chinese-gb2312            #x27 #x53)      ; \e$(A'S\e(B
+    (japanese-jisx0208         #x27 #x53)      ; \e$(B'S\e(B
+    (korean-ksc5601            #x2C #x53)      ; \e$(C,S\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER GHE")
+    (ucs               . #x0433)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0413)
+    (->titlecase       #x0413)
+    (cyrillic-iso8859-5 #x53)  ; \e-LÓ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER GHE")
+    (->ucs             . #x0433)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0433)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER GHE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER GHE")))
+    (japanese-jisx0208-1978    #x27 #x54)      ; \e$(B'T\e(B
+    (chinese-gb2312            #x27 #x54)      ; \e$(A'T\e(B
+    (japanese-jisx0208         #x27 #x54)      ; \e$(B'T\e(B
+    (korean-ksc5601            #x2C #x54)      ; \e$(C,T\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER DE")
+    (ucs               . #x0434)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0414)
+    (->titlecase       #x0414)
+    (cyrillic-iso8859-5 #x54)  ; \e-LÔ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER DE")
+    (->ucs             . #x0434)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0434)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER DE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER DE")))
+    (japanese-jisx0208-1978    #x27 #x55)      ; \e$(B'U\e(B
+    (chinese-gb2312            #x27 #x55)      ; \e$(A'U\e(B
+    (japanese-jisx0208         #x27 #x55)      ; \e$(B'U\e(B
+    (korean-ksc5601            #x2C #x55)      ; \e$(C,U\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER IE")
+    (ucs               . #x0435)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0415)
+    (->titlecase       #x0415)
+    (cyrillic-iso8859-5 #x55)  ; \e-LÕ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER IE")
+    (->ucs             . #x0435)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0435)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER IE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER IE")))
+    (japanese-jisx0208-1978    #x27 #x56)      ; \e$(B'V\e(B
+    (chinese-gb2312            #x27 #x56)      ; \e$(A'V\e(B
+    (japanese-jisx0208         #x27 #x56)      ; \e$(B'V\e(B
+    (korean-ksc5601            #x2C #x56)      ; \e$(C,V\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ZHE")
+    (ucs               . #x0436)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0416)
+    (->titlecase       #x0416)
+    (cyrillic-iso8859-5 #x56)  ; \e-LÖ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER ZHE")
+    (->ucs             . #x0436)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0436)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER ZHE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER ZHE")))
+    (japanese-jisx0208-1978    #x27 #x58)      ; \e$(B'X\e(B
+    (chinese-gb2312            #x27 #x58)      ; \e$(A'X\e(B
+    (japanese-jisx0208         #x27 #x58)      ; \e$(B'X\e(B
+    (korean-ksc5601            #x2C #x58)      ; \e$(C,X\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ZE")
+    (ucs               . #x0437)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0417)
+    (->titlecase       #x0417)
+    (cyrillic-iso8859-5 #x57)  ; \e-L×\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER ZE")
+    (->ucs             . #x0437)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0437)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER ZE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER ZE")))
+    (japanese-jisx0208-1978    #x27 #x59)      ; \e$(B'Y\e(B
+    (chinese-gb2312            #x27 #x59)      ; \e$(A'Y\e(B
+    (japanese-jisx0208         #x27 #x59)      ; \e$(B'Y\e(B
+    (korean-ksc5601            #x2C #x59)      ; \e$(C,Y\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER I")
+    (ucs               . #x0438)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0418)
+    (->titlecase       #x0418)
+    (cyrillic-iso8859-5 #x58)  ; \e-LØ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER I")
+    (->ucs             . #x0438)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0438)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER I")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER I")))
+    (japanese-jisx0208-1978    #x27 #x5A)      ; \e$(B'Z\e(B
+    (chinese-gb2312            #x27 #x5A)      ; \e$(A'Z\e(B
+    (japanese-jisx0208         #x27 #x5A)      ; \e$(B'Z\e(B
+    (korean-ksc5601            #x2C #x5A)      ; \e$(C,Z\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER SHORT I")
+    (ucs               . #x0439)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0438 #x0306)
+    (->uppercase       #x0419)
+    (->titlecase       #x0419)
+    (cyrillic-iso8859-5 #x59)  ; \e-LÙ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER SHORT I")
+    (->ucs             . #x0439)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0439)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SHORT I")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SHORT I")))
+    (japanese-jisx0208-1978    #x27 #x5B)      ; \e$(B'[\e(B
+    (chinese-gb2312            #x27 #x5B)      ; \e$(A'[\e(B
+    (japanese-jisx0208         #x27 #x5B)      ; \e$(B'[\e(B
+    (korean-ksc5601            #x2C #x5B)      ; \e$(C,[\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER KA")
+    (ucs               . #x043A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x041A)
+    (->titlecase       #x041A)
+    (cyrillic-iso8859-5 #x5A)  ; \e-LÚ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER KA")
+    (->ucs             . #x043A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x043A)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER KA")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER KA")))
+    (japanese-jisx0208-1978    #x27 #x5C)      ; \e$(B'\\e(B
+    (chinese-gb2312            #x27 #x5C)      ; \e$(A'\\e(B
+    (japanese-jisx0208         #x27 #x5C)      ; \e$(B'\\e(B
+    (korean-ksc5601            #x2C #x5C)      ; \e$(C,\\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER EL")
+    (ucs               . #x043B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x041B)
+    (->titlecase       #x041B)
+    (cyrillic-iso8859-5 #x5B)  ; \e-LÛ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER EL")
+    (->ucs             . #x043B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x043B)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER EL")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER EL")))
+    (japanese-jisx0208-1978    #x27 #x5D)      ; \e$(B']\e(B
+    (chinese-gb2312            #x27 #x5D)      ; \e$(A']\e(B
+    (japanese-jisx0208         #x27 #x5D)      ; \e$(B']\e(B
+    (korean-ksc5601            #x2C #x5D)      ; \e$(C,]\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER EM")
+    (ucs               . #x043C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x041C)
+    (->titlecase       #x041C)
+    (cyrillic-iso8859-5 #x5C)  ; \e-LÜ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER EM")
+    (->ucs             . #x043C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x043C)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER EM")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER EM")))
+    (japanese-jisx0208-1978    #x27 #x5E)      ; \e$(B'^\e(B
+    (chinese-gb2312            #x27 #x5E)      ; \e$(A'^\e(B
+    (japanese-jisx0208         #x27 #x5E)      ; \e$(B'^\e(B
+    (korean-ksc5601            #x2C #x5E)      ; \e$(C,^\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER EN")
+    (ucs               . #x043D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x041D)
+    (->titlecase       #x041D)
+    (cyrillic-iso8859-5 #x5D)  ; \e-LÝ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER EN")
+    (->ucs             . #x043D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x043D)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER EN")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER EN")))
+    (japanese-jisx0208-1978    #x27 #x5F)      ; \e$(B'_\e(B
+    (chinese-gb2312            #x27 #x5F)      ; \e$(A'_\e(B
+    (japanese-jisx0208         #x27 #x5F)      ; \e$(B'_\e(B
+    (korean-ksc5601            #x2C #x5F)      ; \e$(C,_\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER O")
+    (ucs               . #x043E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x041E)
+    (->titlecase       #x041E)
+    (cyrillic-iso8859-5 #x5E)  ; \e-LÞ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER O")
+    (->ucs             . #x043E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x043E)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER O")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER O")))
+    (japanese-jisx0208-1978    #x27 #x60)      ; \e$(B'`\e(B
+    (chinese-gb2312            #x27 #x60)      ; \e$(A'`\e(B
+    (japanese-jisx0208         #x27 #x60)      ; \e$(B'`\e(B
+    (korean-ksc5601            #x2C #x60)      ; \e$(C,`\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER PE")
+    (ucs               . #x043F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x041F)
+    (->titlecase       #x041F)
+    (cyrillic-iso8859-5 #x5F)  ; \e-Lß\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER PE")
+    (->ucs             . #x043F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x043F)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER PE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER PE")))
+    (japanese-jisx0208-1978    #x27 #x61)      ; \e$(B'a\e(B
+    (chinese-gb2312            #x27 #x61)      ; \e$(A'a\e(B
+    (japanese-jisx0208         #x27 #x61)      ; \e$(B'a\e(B
+    (korean-ksc5601            #x2C #x61)      ; \e$(C,a\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ER")
+    (ucs               . #x0440)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0420)
+    (->titlecase       #x0420)
+    (cyrillic-iso8859-5 #x60)  ; \e-Là\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER ER")
+    (->ucs             . #x0440)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0440)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER ER")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER ER")))
+    (japanese-jisx0208-1978    #x27 #x62)      ; \e$(B'b\e(B
+    (chinese-gb2312            #x27 #x62)      ; \e$(A'b\e(B
+    (japanese-jisx0208         #x27 #x62)      ; \e$(B'b\e(B
+    (korean-ksc5601            #x2C #x62)      ; \e$(C,b\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ES")
+    (ucs               . #x0441)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0421)
+    (->titlecase       #x0421)
+    (cyrillic-iso8859-5 #x61)  ; \e-Lá\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER ES")
+    (->ucs             . #x0441)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0441)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER ES")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER ES")))
+    (japanese-jisx0208-1978    #x27 #x63)      ; \e$(B'c\e(B
+    (chinese-gb2312            #x27 #x63)      ; \e$(A'c\e(B
+    (japanese-jisx0208         #x27 #x63)      ; \e$(B'c\e(B
+    (korean-ksc5601            #x2C #x63)      ; \e$(C,c\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER TE")
+    (ucs               . #x0442)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0422)
+    (->titlecase       #x0422)
+    (cyrillic-iso8859-5 #x62)  ; \e-Lâ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER TE")
+    (->ucs             . #x0442)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0442)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER TE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER TE")))
+    (japanese-jisx0208-1978    #x27 #x64)      ; \e$(B'd\e(B
+    (chinese-gb2312            #x27 #x64)      ; \e$(A'd\e(B
+    (japanese-jisx0208         #x27 #x64)      ; \e$(B'd\e(B
+    (korean-ksc5601            #x2C #x64)      ; \e$(C,d\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER U")
+    (ucs               . #x0443)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0423)
+    (->titlecase       #x0423)
+    (cyrillic-iso8859-5 #x63)  ; \e-Lã\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER U")
+    (->ucs             . #x0443)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0443)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER U")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER U")))
+    (japanese-jisx0208-1978    #x27 #x65)      ; \e$(B'e\e(B
+    (chinese-gb2312            #x27 #x65)      ; \e$(A'e\e(B
+    (japanese-jisx0208         #x27 #x65)      ; \e$(B'e\e(B
+    (korean-ksc5601            #x2C #x65)      ; \e$(C,e\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER EF")
+    (ucs               . #x0444)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0424)
+    (->titlecase       #x0424)
+    (cyrillic-iso8859-5 #x64)  ; \e-Lä\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER EF")
+    (->ucs             . #x0444)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0444)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER EF")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER EF")))
+    (japanese-jisx0208-1978    #x27 #x66)      ; \e$(B'f\e(B
+    (chinese-gb2312            #x27 #x66)      ; \e$(A'f\e(B
+    (japanese-jisx0208         #x27 #x66)      ; \e$(B'f\e(B
+    (korean-ksc5601            #x2C #x66)      ; \e$(C,f\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER HA")
+    (ucs               . #x0445)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0425)
+    (->titlecase       #x0425)
+    (cyrillic-iso8859-5 #x65)  ; \e-Lå\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER HA")
+    (->ucs             . #x0445)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0445)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER HA")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER HA")))
+    (japanese-jisx0208-1978    #x27 #x67)      ; \e$(B'g\e(B
+    (chinese-gb2312            #x27 #x67)      ; \e$(A'g\e(B
+    (japanese-jisx0208         #x27 #x67)      ; \e$(B'g\e(B
+    (korean-ksc5601            #x2C #x67)      ; \e$(C,g\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER TSE")
+    (ucs               . #x0446)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0426)
+    (->titlecase       #x0426)
+    (cyrillic-iso8859-5 #x66)  ; \e-Læ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER TSE")
+    (->ucs             . #x0446)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0446)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER TSE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER TSE")))
+    (japanese-jisx0208-1978    #x27 #x68)      ; \e$(B'h\e(B
+    (chinese-gb2312            #x27 #x68)      ; \e$(A'h\e(B
+    (japanese-jisx0208         #x27 #x68)      ; \e$(B'h\e(B
+    (korean-ksc5601            #x2C #x68)      ; \e$(C,h\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER CHE")
+    (ucs               . #x0447)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0427)
+    (->titlecase       #x0427)
+    (cyrillic-iso8859-5 #x67)  ; \e-Lç\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER CHE")
+    (->ucs             . #x0447)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0447)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER CHE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER CHE")))
+    (japanese-jisx0208-1978    #x27 #x69)      ; \e$(B'i\e(B
+    (chinese-gb2312            #x27 #x69)      ; \e$(A'i\e(B
+    (japanese-jisx0208         #x27 #x69)      ; \e$(B'i\e(B
+    (korean-ksc5601            #x2C #x69)      ; \e$(C,i\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER SHA")
+    (ucs               . #x0448)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0428)
+    (->titlecase       #x0428)
+    (cyrillic-iso8859-5 #x68)  ; \e-Lè\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER SHA")
+    (->ucs             . #x0448)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0448)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SHA")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SHA")))
+    (japanese-jisx0208-1978    #x27 #x6A)      ; \e$(B'j\e(B
+    (chinese-gb2312            #x27 #x6A)      ; \e$(A'j\e(B
+    (japanese-jisx0208         #x27 #x6A)      ; \e$(B'j\e(B
+    (korean-ksc5601            #x2C #x6A)      ; \e$(C,j\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER SHCHA")
+    (ucs               . #x0449)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0429)
+    (->titlecase       #x0429)
+    (cyrillic-iso8859-5 #x69)  ; \e-Lé\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER SHCHA")
+    (->ucs             . #x0449)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0449)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SHCHA")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SHCHA")))
+    (japanese-jisx0208-1978    #x27 #x6B)      ; \e$(B'k\e(B
+    (chinese-gb2312            #x27 #x6B)      ; \e$(A'k\e(B
+    (japanese-jisx0208         #x27 #x6B)      ; \e$(B'k\e(B
+    (korean-ksc5601            #x2C #x6B)      ; \e$(C,k\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER HARD SIGN")
+    (ucs               . #x044A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x042A)
+    (->titlecase       #x042A)
+    (cyrillic-iso8859-5 #x6A)  ; \e-Lê\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER HARD SIGN")
+    (->ucs             . #x044A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x044A)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER HARD SIGN")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER HARD SIGN")))
+    (japanese-jisx0208-1978    #x27 #x6C)      ; \e$(B'l\e(B
+    (chinese-gb2312            #x27 #x6C)      ; \e$(A'l\e(B
+    (japanese-jisx0208         #x27 #x6C)      ; \e$(B'l\e(B
+    (korean-ksc5601            #x2C #x6C)      ; \e$(C,l\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER YERU")
+    (ucs               . #x044B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x042B)
+    (->titlecase       #x042B)
+    (cyrillic-iso8859-5 #x6B)  ; \e-Lë\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER YERU")
+    (->ucs             . #x044B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x044B)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER YERU")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER YERU")))
+    (japanese-jisx0208-1978    #x27 #x6D)      ; \e$(B'm\e(B
+    (chinese-gb2312            #x27 #x6D)      ; \e$(A'm\e(B
+    (japanese-jisx0208         #x27 #x6D)      ; \e$(B'm\e(B
+    (korean-ksc5601            #x2C #x6D)      ; \e$(C,m\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER SOFT SIGN")
+    (ucs               . #x044C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x042C)
+    (->titlecase       #x042C)
+    (cyrillic-iso8859-5 #x6C)  ; \e-Lì\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER SOFT SIGN")
+    (->ucs             . #x044C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x044C)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SOFT SIGN")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SOFT SIGN")))
+    (japanese-jisx0208-1978    #x27 #x6E)      ; \e$(B'n\e(B
+    (chinese-gb2312            #x27 #x6E)      ; \e$(A'n\e(B
+    (japanese-jisx0208         #x27 #x6E)      ; \e$(B'n\e(B
+    (korean-ksc5601            #x2C #x6E)      ; \e$(C,n\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER E")
+    (ucs               . #x044D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x042D)
+    (->titlecase       #x042D)
+    (cyrillic-iso8859-5 #x6D)  ; \e-Lí\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER E")
+    (->ucs             . #x044D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x044D)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER E")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER E")))
+    (japanese-jisx0208-1978    #x27 #x6F)      ; \e$(B'o\e(B
+    (chinese-gb2312            #x27 #x6F)      ; \e$(A'o\e(B
+    (japanese-jisx0208         #x27 #x6F)      ; \e$(B'o\e(B
+    (korean-ksc5601            #x2C #x6F)      ; \e$(C,o\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER YU")
+    (ucs               . #x044E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x042E)
+    (->titlecase       #x042E)
+    (cyrillic-iso8859-5 #x6E)  ; \e-Lî\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER YU")
+    (->ucs             . #x044E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x044E)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER YU")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER YU")))
+    (japanese-jisx0208-1978    #x27 #x70)      ; \e$(B'p\e(B
+    (chinese-gb2312            #x27 #x70)      ; \e$(A'p\e(B
+    (japanese-jisx0208         #x27 #x70)      ; \e$(B'p\e(B
+    (korean-ksc5601            #x2C #x70)      ; \e$(C,p\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER YA")
+    (ucs               . #x044F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x042F)
+    (->titlecase       #x042F)
+    (cyrillic-iso8859-5 #x6F)  ; \e-Lï\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER YA")
+    (->ucs             . #x044F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x044F)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER YA")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER YA")))
+    (japanese-jisx0208-1978    #x27 #x71)      ; \e$(B'q\e(B
+    (chinese-gb2312            #x27 #x71)      ; \e$(A'q\e(B
+    (japanese-jisx0208         #x27 #x71)      ; \e$(B'q\e(B
+    (korean-ksc5601            #x2C #x71)      ; \e$(C,q\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER IE WITH GRAVE")
+    (ucs               . #x0450)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0435 #x0300)
+    (->uppercase       #x0400)
+    (->titlecase       #x0400)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER IO")
+    (ucs               . #x0451)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0435 #x0308)
+    (->uppercase       #x0401)
+    (->titlecase       #x0401)
+    (cyrillic-iso8859-5 #x71)  ; \e-Lñ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER IO")
+    (->ucs             . #x0451)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0451)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER IO")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER IO")))
+    (japanese-jisx0208-1978    #x27 #x57)      ; \e$(B'W\e(B
+    (chinese-gb2312            #x27 #x57)      ; \e$(A'W\e(B
+    (japanese-jisx0208         #x27 #x57)      ; \e$(B'W\e(B
+    (korean-ksc5601            #x2C #x57)      ; \e$(C,W\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER DJE")
+    (ucs               . #x0452)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Serbocroatian")
+    (->uppercase       #x0402)
+    (->titlecase       #x0402)
+    (cyrillic-iso8859-5 #x72)  ; \e-Lò\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER DJE")
+    (->ucs             . #x0452)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Serbocroatian")
+    (->decomposition   wide #x0452)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER DJE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER DJE")))
+    (japanese-jisx0212 #x27 #x72)      ; \e$(D'r\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER GJE")
+    (ucs               . #x0453)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0433 #x0301)
+    (->uppercase       #x0403)
+    (->titlecase       #x0403)
+    (cyrillic-iso8859-5 #x73)  ; \e-Ló\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER GJE")
+    (->ucs             . #x0453)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0453)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER GJE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER GJE")))
+    (japanese-jisx0212 #x27 #x73)      ; \e$(D's\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER UKRAINIAN IE")
+    (ucs               . #x0454)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0404)
+    (->titlecase       #x0404)
+    (cyrillic-iso8859-5 #x74)  ; \e-Lô\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER UKRAINIAN IE")
+    (->ucs             . #x0454)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0454)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER UKRAINIAN IE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER UKRAINIAN IE")))
+    (japanese-jisx0212 #x27 #x74)      ; \e$(D't\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER DZE")
+    (ucs               . #x0455)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0405)
+    (->titlecase       #x0405)
+    (cyrillic-iso8859-5 #x75)  ; \e-Lõ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER DZE")
+    (->ucs             . #x0455)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0455)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER DZE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER DZE")))
+    (japanese-jisx0212 #x27 #x75)      ; \e$(D'u\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I")
+    (ucs               . #x0456)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0406)
+    (->titlecase       #x0406)
+    (cyrillic-iso8859-5 #x76)  ; \e-Lö\e-A
+    ))
+(define-char
+  '((name . "FULLWIDTH CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I")
+    (->ucs             . #x0456)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0456)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I")))
+    (japanese-jisx0212 #x27 #x76)      ; \e$(D'v\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER YI")
+    (ucs               . #x0457)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Ukrainian")
+    (->decomposition   #x0456 #x0308)
+    (->uppercase       #x0407)
+    (->titlecase       #x0407)
+    (cyrillic-iso8859-5 #x77)  ; \e-L÷\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER YI")
+    (->ucs             . #x0457)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Ukrainian")
+    (->decomposition   wide #x0457)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER YI")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER YI")))
+    (japanese-jisx0212 #x27 #x77)      ; \e$(D'w\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER JE")
+    (ucs               . #x0458)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0408)
+    (->titlecase       #x0408)
+    (cyrillic-iso8859-5 #x78)  ; \e-Lø\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER JE")
+    (->ucs             . #x0458)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0458)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER JE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER JE")))
+    (japanese-jisx0212 #x27 #x78)      ; \e$(D'x\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER LJE")
+    (ucs               . #x0459)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0409)
+    (->titlecase       #x0409)
+    (cyrillic-iso8859-5 #x79)  ; \e-Lù\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER LJE")
+    (->ucs             . #x0459)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x0459)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER LJE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER LJE")))
+    (japanese-jisx0212 #x27 #x79)      ; \e$(D'y\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER NJE")
+    (ucs               . #x045A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x040A)
+    (->titlecase       #x040A)
+    (cyrillic-iso8859-5 #x7A)  ; \e-Lú\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER NJE")
+    (->ucs             . #x045A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x045A)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER NJE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER NJE")))
+    (japanese-jisx0212 #x27 #x7A)      ; \e$(D'z\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER TSHE")
+    (ucs               . #x045B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Serbocroatian")
+    (->uppercase       #x040B)
+    (->titlecase       #x040B)
+    (cyrillic-iso8859-5 #x7B)  ; \e-Lû\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER TSHE")
+    (->ucs             . #x045B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Serbocroatian")
+    (->decomposition   wide #x045B)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER TSHE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER TSHE")))
+    (japanese-jisx0212 #x27 #x7B)      ; \e$(D'{\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER KJE")
+    (ucs               . #x045C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x043A #x0301)
+    (->uppercase       #x040C)
+    (->titlecase       #x040C)
+    (cyrillic-iso8859-5 #x7C)  ; \e-Lü\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER KJE")
+    (->ucs             . #x045C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x045C)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER KJE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC SMALL LETTER KJE")))
+    (japanese-jisx0212 #x27 #x7C)      ; \e$(D'|\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER I WITH GRAVE")
+    (ucs               . #x045D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0438 #x0300)
+    (->uppercase       #x040D)
+    (->titlecase       #x040D)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER SHORT U")
+    (ucs               . #x045E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Byelorussian")
+    (->decomposition   #x0443 #x0306)
+    (->uppercase       #x040E)
+    (->titlecase       #x040E)
+    (cyrillic-iso8859-5 #x7E)  ; \e-Lþ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER SHORT U")
+    (->ucs             . #x045E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Byelorussian")
+    (->decomposition   wide #x045E)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SHORT U")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER SHORT U")))
+    (japanese-jisx0212 #x27 #x7D)      ; \e$(D'}\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER DZHE")
+    (ucs               . #x045F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x040F)
+    (->titlecase       #x040F)
+    (cyrillic-iso8859-5 #x7F)  ; \e-Lÿ\e-A
+    ))
+(define-char
+  '((name              . "FULLWIDTH CYRILLIC SMALL LETTER DZHE")
+    (->ucs             . #x045F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x045F)
+    (->uppercase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER DZHE")))
+    (->titlecase
+     ((name . "FULLWIDTH CYRILLIC CAPITAL LETTER DZHE")))
+    (japanese-jisx0212 #x27 #x7E)      ; \e$(D'~\e(B
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER OMEGA")
+    (ucs               . #x0460)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0461)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER OMEGA")
+    (ucs               . #x0461)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0460)
+    (->titlecase       #x0460)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER YAT")
+    (ucs               . #x0462)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0463)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER YAT")
+    (ucs               . #x0463)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0462)
+    (->titlecase       #x0462)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER IOTIFIED E")
+    (ucs               . #x0464)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0465)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER IOTIFIED E")
+    (ucs               . #x0465)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0464)
+    (->titlecase       #x0464)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER LITTLE YUS")
+    (ucs               . #x0466)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0467)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER LITTLE YUS")
+    (ucs               . #x0467)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0466)
+    (->titlecase       #x0466)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS")
+    (ucs               . #x0468)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0469)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS")
+    (ucs               . #x0469)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0468)
+    (->titlecase       #x0468)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER BIG YUS")
+    (ucs               . #x046A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x046B)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER BIG YUS")
+    (ucs               . #x046B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x046A)
+    (->titlecase       #x046A)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS")
+    (ucs               . #x046C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x046D)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER IOTIFIED BIG YUS")
+    (ucs               . #x046D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x046C)
+    (->titlecase       #x046C)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER KSI")
+    (ucs               . #x046E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x046F)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER KSI")
+    (ucs               . #x046F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x046E)
+    (->titlecase       #x046E)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER PSI")
+    (ucs               . #x0470)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0471)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER PSI")
+    (ucs               . #x0471)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0470)
+    (->titlecase       #x0470)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER FITA")
+    (ucs               . #x0472)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0473)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER FITA")
+    (ucs               . #x0473)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0472)
+    (->titlecase       #x0472)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER IZHITSA")
+    (ucs               . #x0474)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0475)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER IZHITSA")
+    (ucs               . #x0475)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0474)
+    (->titlecase       #x0474)
+    ))
+(define-char
+  '((name . "CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT")
+    (ucs               . #x0476)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0474 #x030F)
+    (->lowercase       #x0477)
+    ))
+(define-char
+  '((name . "CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT")
+    (ucs               . #x0477)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0475 #x030F)
+    (->uppercase       #x0476)
+    (->titlecase       #x0476)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER UK")
+    (ucs               . #x0478)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0479)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER UK")
+    (ucs               . #x0479)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0478)
+    (->titlecase       #x0478)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ROUND OMEGA")
+    (ucs               . #x047A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x047B)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ROUND OMEGA")
+    (ucs               . #x047B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x047A)
+    (->titlecase       #x047A)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER OMEGA WITH TITLO")
+    (ucs               . #x047C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x047D)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER OMEGA WITH TITLO")
+    (ucs               . #x047D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x047C)
+    (->titlecase       #x047C)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER OT")
+    (ucs               . #x047E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x047F)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER OT")
+    (ucs               . #x047F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x047E)
+    (->titlecase       #x047E)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER KOPPA")
+    (ucs               . #x0480)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0481)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER KOPPA")
+    (ucs               . #x0481)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0480)
+    (->titlecase       #x0480)
+    ))
+(define-char
+  '((name              . "CYRILLIC THOUSANDS SIGN")
+    (ucs               . #x0482)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CYRILLIC TITLO")
+    (ucs               . #x0483)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CYRILLIC PALATALIZATION")
+    (ucs               . #x0484)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CYRILLIC DASIA PNEUMATA")
+    (ucs               . #x0485)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CYRILLIC PSILI PNEUMATA")
+    (ucs               . #x0486)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CYRILLIC HUNDRED THOUSANDS SIGN")
+    (ucs               . #x0488)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CYRILLIC MILLIONS SIGN")
+    (ucs               . #x0489)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER SEMISOFT SIGN")
+    (ucs               . #x048C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x048D)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER SEMISOFT SIGN")
+    (ucs               . #x048D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x048C)
+    (->titlecase       #x048C)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ER WITH TICK")
+    (ucs               . #x048E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x048F)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ER WITH TICK")
+    (ucs               . #x048F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x048E)
+    (->titlecase       #x048E)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER GHE WITH UPTURN")
+    (ucs               . #x0490)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0491)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER GHE WITH UPTURN")
+    (ucs               . #x0491)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0490)
+    (->titlecase       #x0490)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER GHE WITH STROKE")
+    (ucs               . #x0492)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0493)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER GHE WITH STROKE")
+    (ucs               . #x0493)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0492)
+    (->titlecase       #x0492)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK")
+    (ucs               . #x0494)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0495)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK")
+    (ucs               . #x0495)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0494)
+    (->titlecase       #x0494)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER")
+    (ucs               . #x0496)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0497)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ZHE WITH DESCENDER")
+    (ucs               . #x0497)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0496)
+    (->titlecase       #x0496)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ZE WITH DESCENDER")
+    (ucs               . #x0498)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0499)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ZE WITH DESCENDER")
+    (ucs               . #x0499)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0498)
+    (->titlecase       #x0498)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER KA WITH DESCENDER")
+    (ucs               . #x049A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x049B)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER KA WITH DESCENDER")
+    (ucs               . #x049B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x049A)
+    (->titlecase       #x049A)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE")
+    (ucs               . #x049C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x049D)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE")
+    (ucs               . #x049D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x049C)
+    (->titlecase       #x049C)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER KA WITH STROKE")
+    (ucs               . #x049E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x049F)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER KA WITH STROKE")
+    (ucs               . #x049F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x049E)
+    (->titlecase       #x049E)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER BASHKIR KA")
+    (ucs               . #x04A0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04A1)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER BASHKIR KA")
+    (ucs               . #x04A1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04A0)
+    (->titlecase       #x04A0)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER EN WITH DESCENDER")
+    (ucs               . #x04A2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04A3)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER EN WITH DESCENDER")
+    (ucs               . #x04A3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04A2)
+    (->titlecase       #x04A2)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LIGATURE EN GHE")
+    (ucs               . #x04A4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04A5)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LIGATURE EN GHE")
+    (ucs               . #x04A5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04A4)
+    (->titlecase       #x04A4)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK")
+    (ucs               . #x04A6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Abkhasian")
+    (->lowercase       #x04A7)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK")
+    (ucs               . #x04A7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Abkhasian")
+    (->uppercase       #x04A6)
+    (->titlecase       #x04A6)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ABKHASIAN HA")
+    (ucs               . #x04A8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04A9)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ABKHASIAN HA")
+    (ucs               . #x04A9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04A8)
+    (->titlecase       #x04A8)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ES WITH DESCENDER")
+    (ucs               . #x04AA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04AB)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ES WITH DESCENDER")
+    (ucs               . #x04AB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04AA)
+    (->titlecase       #x04AA)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER TE WITH DESCENDER")
+    (ucs               . #x04AC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04AD)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER TE WITH DESCENDER")
+    (ucs               . #x04AD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04AC)
+    (->titlecase       #x04AC)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER STRAIGHT U")
+    (ucs               . #x04AE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04AF)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER STRAIGHT U")
+    (ucs               . #x04AF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04AE)
+    (->titlecase       #x04AE)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE")
+    (ucs               . #x04B0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04B1)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE")
+    (ucs               . #x04B1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04B0)
+    (->titlecase       #x04B0)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER HA WITH DESCENDER")
+    (ucs               . #x04B2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04B3)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER HA WITH DESCENDER")
+    (ucs               . #x04B3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04B2)
+    (->titlecase       #x04B2)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LIGATURE TE TSE")
+    (ucs               . #x04B4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Abkhasian")
+    (->lowercase       #x04B5)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LIGATURE TE TSE")
+    (ucs               . #x04B5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Abkhasian")
+    (->uppercase       #x04B4)
+    (->titlecase       #x04B4)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER CHE WITH DESCENDER")
+    (ucs               . #x04B6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04B7)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER CHE WITH DESCENDER")
+    (ucs               . #x04B7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04B6)
+    (->titlecase       #x04B6)
+    ))
+(define-char
+  '((name . "CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE")
+    (ucs               . #x04B8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04B9)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE")
+    (ucs               . #x04B9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04B8)
+    (->titlecase       #x04B8)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER SHHA")
+    (ucs               . #x04BA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04BB)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER SHHA")
+    (ucs               . #x04BB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04BA)
+    (->titlecase       #x04BA)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ABKHASIAN CHE")
+    (ucs               . #x04BC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04BD)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ABKHASIAN CHE")
+    (ucs               . #x04BD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04BC)
+    (->titlecase       #x04BC)
+    ))
+(define-char
+  '((name . "CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER")
+    (ucs               . #x04BE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04BF)
+    ))
+(define-char
+  '((name . "CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER")
+    (ucs               . #x04BF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04BE)
+    (->titlecase       #x04BE)
+    ))
+(define-char
+  '((name              . "CYRILLIC LETTER PALOCHKA")
+    (ucs               . #x04C0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ZHE WITH BREVE")
+    (ucs               . #x04C1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0416 #x0306)
+    (->lowercase       #x04C2)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ZHE WITH BREVE")
+    (ucs               . #x04C2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0436 #x0306)
+    (->uppercase       #x04C1)
+    (->titlecase       #x04C1)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER KA WITH HOOK")
+    (ucs               . #x04C3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04C4)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER KA WITH HOOK")
+    (ucs               . #x04C4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04C3)
+    (->titlecase       #x04C3)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER EN WITH HOOK")
+    (ucs               . #x04C7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04C8)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER EN WITH HOOK")
+    (ucs               . #x04C8)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04C7)
+    (->titlecase       #x04C7)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER KHAKASSIAN CHE")
+    (ucs               . #x04CB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04CC)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER KHAKASSIAN CHE")
+    (ucs               . #x04CC)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04CB)
+    (->titlecase       #x04CB)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER A WITH BREVE")
+    (ucs               . #x04D0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0410 #x0306)
+    (->lowercase       #x04D1)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER A WITH BREVE")
+    (ucs               . #x04D1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0430 #x0306)
+    (->uppercase       #x04D0)
+    (->titlecase       #x04D0)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER A WITH DIAERESIS")
+    (ucs               . #x04D2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0410 #x0308)
+    (->lowercase       #x04D3)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER A WITH DIAERESIS")
+    (ucs               . #x04D3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0430 #x0308)
+    (->uppercase       #x04D2)
+    (->titlecase       #x04D2)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LIGATURE A IE")
+    (ucs               . #x04D4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04D5)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LIGATURE A IE")
+    (ucs               . #x04D5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04D4)
+    (->titlecase       #x04D4)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER IE WITH BREVE")
+    (ucs               . #x04D6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0415 #x0306)
+    (->lowercase       #x04D7)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER IE WITH BREVE")
+    (ucs               . #x04D7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0435 #x0306)
+    (->uppercase       #x04D6)
+    (->titlecase       #x04D6)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER SCHWA")
+    (ucs               . #x04D8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04D9)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER SCHWA")
+    (ucs               . #x04D9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04D8)
+    (->titlecase       #x04D8)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS")
+    (ucs               . #x04DA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x04D8 #x0308)
+    (->lowercase       #x04DB)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS")
+    (ucs               . #x04DB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x04D9 #x0308)
+    (->uppercase       #x04DA)
+    (->titlecase       #x04DA)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS")
+    (ucs               . #x04DC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0416 #x0308)
+    (->lowercase       #x04DD)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ZHE WITH DIAERESIS")
+    (ucs               . #x04DD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0436 #x0308)
+    (->uppercase       #x04DC)
+    (->titlecase       #x04DC)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS")
+    (ucs               . #x04DE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0417 #x0308)
+    (->lowercase       #x04DF)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ZE WITH DIAERESIS")
+    (ucs               . #x04DF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0437 #x0308)
+    (->uppercase       #x04DE)
+    (->titlecase       #x04DE)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER ABKHASIAN DZE")
+    (ucs               . #x04E0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04E1)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER ABKHASIAN DZE")
+    (ucs               . #x04E1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04E0)
+    (->titlecase       #x04E0)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER I WITH MACRON")
+    (ucs               . #x04E2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0418 #x0304)
+    (->lowercase       #x04E3)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER I WITH MACRON")
+    (ucs               . #x04E3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0438 #x0304)
+    (->uppercase       #x04E2)
+    (->titlecase       #x04E2)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER I WITH DIAERESIS")
+    (ucs               . #x04E4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0418 #x0308)
+    (->lowercase       #x04E5)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER I WITH DIAERESIS")
+    (ucs               . #x04E5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0438 #x0308)
+    (->uppercase       #x04E4)
+    (->titlecase       #x04E4)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER O WITH DIAERESIS")
+    (ucs               . #x04E6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x041E #x0308)
+    (->lowercase       #x04E7)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER O WITH DIAERESIS")
+    (ucs               . #x04E7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x043E #x0308)
+    (->uppercase       #x04E6)
+    (->titlecase       #x04E6)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER BARRED O")
+    (ucs               . #x04E8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x04E9)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER BARRED O")
+    (ucs               . #x04E9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x04E8)
+    (->titlecase       #x04E8)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS")
+    (ucs               . #x04EA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x04E8 #x0308)
+    (->lowercase       #x04EB)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS")
+    (ucs               . #x04EB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x04E9 #x0308)
+    (->uppercase       #x04EA)
+    (->titlecase       #x04EA)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER E WITH DIAERESIS")
+    (ucs               . #x04EC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x042D #x0308)
+    (->lowercase       #x04ED)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER E WITH DIAERESIS")
+    (ucs               . #x04ED)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x044D #x0308)
+    (->uppercase       #x04EC)
+    (->titlecase       #x04EC)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER U WITH MACRON")
+    (ucs               . #x04EE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0423 #x0304)
+    (->lowercase       #x04EF)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER U WITH MACRON")
+    (ucs               . #x04EF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0443 #x0304)
+    (->uppercase       #x04EE)
+    (->titlecase       #x04EE)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER U WITH DIAERESIS")
+    (ucs               . #x04F0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0423 #x0308)
+    (->lowercase       #x04F1)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER U WITH DIAERESIS")
+    (ucs               . #x04F1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0443 #x0308)
+    (->uppercase       #x04F0)
+    (->titlecase       #x04F0)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE")
+    (ucs               . #x04F2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0423 #x030B)
+    (->lowercase       #x04F3)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE")
+    (ucs               . #x04F3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0443 #x030B)
+    (->uppercase       #x04F2)
+    (->titlecase       #x04F2)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS")
+    (ucs               . #x04F4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0427 #x0308)
+    (->lowercase       #x04F5)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER CHE WITH DIAERESIS")
+    (ucs               . #x04F5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0447 #x0308)
+    (->uppercase       #x04F4)
+    (->titlecase       #x04F4)
+    ))
+(define-char
+  '((name              . "CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS")
+    (ucs               . #x04F8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x042B #x0308)
+    (->lowercase       #x04F9)
+    ))
+(define-char
+  '((name              . "CYRILLIC SMALL LETTER YERU WITH DIAERESIS")
+    (ucs               . #x04F9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x044B #x0308)
+    (->uppercase       #x04F8)
+    (->titlecase       #x04F8)
+    ))
diff --git a/lisp/utf-2000/u00530-Armenian.el b/lisp/utf-2000/u00530-Armenian.el
new file mode 100644 (file)
index 0000000..cc7bcf1
--- /dev/null
@@ -0,0 +1,717 @@
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER AYB")
+    (ucs               . #x0531)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0561)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER BEN")
+    (ucs               . #x0532)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0562)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER GIM")
+    (ucs               . #x0533)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0563)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER DA")
+    (ucs               . #x0534)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0564)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER ECH")
+    (ucs               . #x0535)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0565)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER ZA")
+    (ucs               . #x0536)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0566)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER EH")
+    (ucs               . #x0537)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0567)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER ET")
+    (ucs               . #x0538)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0568)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER TO")
+    (ucs               . #x0539)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0569)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER ZHE")
+    (ucs               . #x053A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x056A)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER INI")
+    (ucs               . #x053B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x056B)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER LIWN")
+    (ucs               . #x053C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x056C)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER XEH")
+    (ucs               . #x053D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x056D)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER CA")
+    (ucs               . #x053E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x056E)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER KEN")
+    (ucs               . #x053F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x056F)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER HO")
+    (ucs               . #x0540)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0570)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER JA")
+    (ucs               . #x0541)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0571)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER GHAD")
+    (ucs               . #x0542)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0572)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER CHEH")
+    (ucs               . #x0543)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0573)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER MEN")
+    (ucs               . #x0544)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0574)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER YI")
+    (ucs               . #x0545)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0575)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER NOW")
+    (ucs               . #x0546)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0576)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER SHA")
+    (ucs               . #x0547)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0577)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER VO")
+    (ucs               . #x0548)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0578)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER CHA")
+    (ucs               . #x0549)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0579)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER PEH")
+    (ucs               . #x054A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x057A)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER JHEH")
+    (ucs               . #x054B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x057B)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER RA")
+    (ucs               . #x054C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x057C)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER SEH")
+    (ucs               . #x054D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x057D)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER VEW")
+    (ucs               . #x054E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x057E)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER TIWN")
+    (ucs               . #x054F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x057F)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER REH")
+    (ucs               . #x0550)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0580)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER CO")
+    (ucs               . #x0551)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0581)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER YIWN")
+    (ucs               . #x0552)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0582)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER PIWR")
+    (ucs               . #x0553)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0583)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER KEH")
+    (ucs               . #x0554)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0584)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER OH")
+    (ucs               . #x0555)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0585)
+    ))
+(define-char
+  '((name              . "ARMENIAN CAPITAL LETTER FEH")
+    (ucs               . #x0556)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->lowercase       #x0586)
+    ))
+(define-char
+  '((name              . "ARMENIAN MODIFIER LETTER LEFT HALF RING")
+    (ucs               . #x0559)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARMENIAN APOSTROPHE")
+    (ucs               . #x055A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARMENIAN EMPHASIS MARK")
+    (ucs               . #x055B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARMENIAN EXCLAMATION MARK")
+    (ucs               . #x055C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARMENIAN COMMA")
+    (ucs               . #x055D)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARMENIAN QUESTION MARK")
+    (ucs               . #x055E)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARMENIAN ABBREVIATION MARK")
+    (ucs               . #x055F)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER AYB")
+    (ucs               . #x0561)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0531)
+    (->titlecase       #x0531)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER BEN")
+    (ucs               . #x0562)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0532)
+    (->titlecase       #x0532)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER GIM")
+    (ucs               . #x0563)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0533)
+    (->titlecase       #x0533)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER DA")
+    (ucs               . #x0564)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0534)
+    (->titlecase       #x0534)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER ECH")
+    (ucs               . #x0565)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0535)
+    (->titlecase       #x0535)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER ZA")
+    (ucs               . #x0566)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0536)
+    (->titlecase       #x0536)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER EH")
+    (ucs               . #x0567)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0537)
+    (->titlecase       #x0537)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER ET")
+    (ucs               . #x0568)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0538)
+    (->titlecase       #x0538)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER TO")
+    (ucs               . #x0569)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0539)
+    (->titlecase       #x0539)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER ZHE")
+    (ucs               . #x056A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x053A)
+    (->titlecase       #x053A)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER INI")
+    (ucs               . #x056B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x053B)
+    (->titlecase       #x053B)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER LIWN")
+    (ucs               . #x056C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x053C)
+    (->titlecase       #x053C)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER XEH")
+    (ucs               . #x056D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x053D)
+    (->titlecase       #x053D)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER CA")
+    (ucs               . #x056E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x053E)
+    (->titlecase       #x053E)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER KEN")
+    (ucs               . #x056F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x053F)
+    (->titlecase       #x053F)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER HO")
+    (ucs               . #x0570)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0540)
+    (->titlecase       #x0540)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER JA")
+    (ucs               . #x0571)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0541)
+    (->titlecase       #x0541)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER GHAD")
+    (ucs               . #x0572)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0542)
+    (->titlecase       #x0542)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER CHEH")
+    (ucs               . #x0573)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0543)
+    (->titlecase       #x0543)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER MEN")
+    (ucs               . #x0574)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0544)
+    (->titlecase       #x0544)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER YI")
+    (ucs               . #x0575)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0545)
+    (->titlecase       #x0545)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER NOW")
+    (ucs               . #x0576)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0546)
+    (->titlecase       #x0546)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER SHA")
+    (ucs               . #x0577)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0547)
+    (->titlecase       #x0547)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER VO")
+    (ucs               . #x0578)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0548)
+    (->titlecase       #x0548)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER CHA")
+    (ucs               . #x0579)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0549)
+    (->titlecase       #x0549)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER PEH")
+    (ucs               . #x057A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x054A)
+    (->titlecase       #x054A)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER JHEH")
+    (ucs               . #x057B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x054B)
+    (->titlecase       #x054B)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER RA")
+    (ucs               . #x057C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x054C)
+    (->titlecase       #x054C)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER SEH")
+    (ucs               . #x057D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x054D)
+    (->titlecase       #x054D)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER VEW")
+    (ucs               . #x057E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x054E)
+    (->titlecase       #x054E)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER TIWN")
+    (ucs               . #x057F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x054F)
+    (->titlecase       #x054F)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER REH")
+    (ucs               . #x0580)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0550)
+    (->titlecase       #x0550)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER CO")
+    (ucs               . #x0581)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0551)
+    (->titlecase       #x0551)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER YIWN")
+    (ucs               . #x0582)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0552)
+    (->titlecase       #x0552)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER PIWR")
+    (ucs               . #x0583)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0553)
+    (->titlecase       #x0553)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER KEH")
+    (ucs               . #x0584)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0554)
+    (->titlecase       #x0554)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER OH")
+    (ucs               . #x0585)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0555)
+    (->titlecase       #x0555)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LETTER FEH")
+    (ucs               . #x0586)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->uppercase       #x0556)
+    (->titlecase       #x0556)
+    ))
+(define-char
+  '((name              . "ARMENIAN SMALL LIGATURE ECH YIWN")
+    (ucs               . #x0587)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0565 #x0582)
+    ))
+(define-char
+  '((name              . "ARMENIAN FULL STOP")
+    (ucs               . #x0589)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARMENIAN HYPHEN")
+    (ucs               . #x058A)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00590-Hebrew.el b/lisp/utf-2000/u00590-Hebrew.el
new file mode 100644 (file)
index 0000000..0102508
--- /dev/null
@@ -0,0 +1,610 @@
+(define-char
+  '((name              . "HEBREW ACCENT ETNAHTA")
+    (ucs               . #x0591)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT SEGOL")
+    (ucs               . #x0592)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT SHALSHELET")
+    (ucs               . #x0593)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT ZAQEF QATAN")
+    (ucs               . #x0594)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT ZAQEF GADOL")
+    (ucs               . #x0595)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT TIPEHA")
+    (ucs               . #x0596)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT REVIA")
+    (ucs               . #x0597)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT ZARQA")
+    (ucs               . #x0598)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT PASHTA")
+    (ucs               . #x0599)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT YETIV")
+    (ucs               . #x059A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT TEVIR")
+    (ucs               . #x059B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT GERESH")
+    (ucs               . #x059C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT GERESH MUQDAM")
+    (ucs               . #x059D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT GERSHAYIM")
+    (ucs               . #x059E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT QARNEY PARA")
+    (ucs               . #x059F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT TELISHA GEDOLA")
+    (ucs               . #x05A0)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT PAZER")
+    (ucs               . #x05A1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT MUNAH")
+    (ucs               . #x05A3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT MAHAPAKH")
+    (ucs               . #x05A4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT MERKHA")
+    (ucs               . #x05A5)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT MERKHA KEFULA")
+    (ucs               . #x05A6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT DARGA")
+    (ucs               . #x05A7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT QADMA")
+    (ucs               . #x05A8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT TELISHA QETANA")
+    (ucs               . #x05A9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT YERAH BEN YOMO")
+    (ucs               . #x05AA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT OLE")
+    (ucs               . #x05AB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT ILUY")
+    (ucs               . #x05AC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT DEHI")
+    (ucs               . #x05AD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW ACCENT ZINOR")
+    (ucs               . #x05AE)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW MARK MASORA CIRCLE")
+    (ucs               . #x05AF)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT SHEVA")
+    (ucs               . #x05B0)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT HATAF SEGOL")
+    (ucs               . #x05B1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT HATAF PATAH")
+    (ucs               . #x05B2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT HATAF QAMATS")
+    (ucs               . #x05B3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT HIRIQ")
+    (ucs               . #x05B4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT TSERE")
+    (ucs               . #x05B5)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT SEGOL")
+    (ucs               . #x05B6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT PATAH")
+    (ucs               . #x05B7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT QAMATS")
+    (ucs               . #x05B8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT HOLAM")
+    (ucs               . #x05B9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT QUBUTS")
+    (ucs               . #x05BB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT DAGESH OR MAPIQ")
+    (ucs               . #x05BC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "or shuruq")
+    ))
+(define-char
+  '((name              . "HEBREW POINT METEG")
+    (ucs               . #x05BD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "HEBREW PUNCTUATION MAQAF")
+    (ucs               . #x05BE)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT RAFE")
+    (ucs               . #x05BF)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW PUNCTUATION PASEQ")
+    (ucs               . #x05C0)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "HEBREW POINT SHIN DOT")
+    (ucs               . #x05C1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW POINT SIN DOT")
+    (ucs               . #x05C2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW PUNCTUATION SOF PASUQ")
+    (ucs               . #x05C3)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "HEBREW MARK UPPER DOT")
+    (ucs               . #x05C4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW LETTER ALEF")
+    (ucs               . #x05D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x60)   ; \9b2]\e-Hà\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER BET")
+    (ucs               . #x05D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x61)   ; \9b2]\e-Há\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER GIMEL")
+    (ucs               . #x05D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x62)   ; \9b2]\e-Hâ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER DALET")
+    (ucs               . #x05D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x63)   ; \9b2]\e-Hã\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER HE")
+    (ucs               . #x05D4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x64)   ; \9b2]\e-Hä\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER VAV")
+    (ucs               . #x05D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x65)   ; \9b2]\e-Hå\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER ZAYIN")
+    (ucs               . #x05D6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x66)   ; \9b2]\e-Hæ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER HET")
+    (ucs               . #x05D7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x67)   ; \9b2]\e-Hç\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER TET")
+    (ucs               . #x05D8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x68)   ; \9b2]\e-Hè\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER YOD")
+    (ucs               . #x05D9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x69)   ; \9b2]\e-Hé\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER FINAL KAF")
+    (ucs               . #x05DA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x6A)   ; \9b2]\e-Hê\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER KAF")
+    (ucs               . #x05DB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x6B)   ; \9b2]\e-Hë\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER LAMED")
+    (ucs               . #x05DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x6C)   ; \9b2]\e-Hì\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER FINAL MEM")
+    (ucs               . #x05DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x6D)   ; \9b2]\e-Hí\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER MEM")
+    (ucs               . #x05DE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x6E)   ; \9b2]\e-Hî\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER FINAL NUN")
+    (ucs               . #x05DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x6F)   ; \9b2]\e-Hï\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER NUN")
+    (ucs               . #x05E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x70)   ; \9b2]\e-Hð\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER SAMEKH")
+    (ucs               . #x05E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x71)   ; \9b2]\e-Hñ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER AYIN")
+    (ucs               . #x05E2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x72)   ; \9b2]\e-Hò\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER FINAL PE")
+    (ucs               . #x05E3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x73)   ; \9b2]\e-Hó\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER PE")
+    (ucs               . #x05E4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x74)   ; \9b2]\e-Hô\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER FINAL TSADI")
+    (ucs               . #x05E5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x75)   ; \9b2]\e-Hõ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER TSADI")
+    (ucs               . #x05E6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x76)   ; \9b2]\e-Hö\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER QOF")
+    (ucs               . #x05E7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x77)   ; \9b2]\e-H÷\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER RESH")
+    (ucs               . #x05E8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x78)   ; \9b2]\e-Hø\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER SHIN")
+    (ucs               . #x05E9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x79)   ; \9b2]\e-Hù\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LETTER TAV")
+    (ucs               . #x05EA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    (hebrew-iso8859-8  #x7A)   ; \9b2]\e-Hú\9b0]\e-A
+    ))
+(define-char
+  '((name              . "HEBREW LIGATURE YIDDISH DOUBLE VAV")
+    (ucs               . #x05F0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW LIGATURE YIDDISH VAV YOD")
+    (ucs               . #x05F1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW LIGATURE YIDDISH DOUBLE YOD")
+    (ucs               . #x05F2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW PUNCTUATION GERESH")
+    (ucs               . #x05F3)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEBREW PUNCTUATION GERSHAYIM")
+    (ucs               . #x05F4)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00600-Arabic.el b/lisp/utf-2000/u00600-Arabic.el
new file mode 100644 (file)
index 0000000..449870c
--- /dev/null
@@ -0,0 +1,1564 @@
+(define-char
+  '((name              . "ARABIC COMMA")
+    (ucs               . #x060C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "CS")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x2C)   ; \9b2]\e-G¬\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC SEMICOLON")
+    (ucs               . #x061B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x3B)   ; \9b2]\e-G»\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC QUESTION MARK")
+    (ucs               . #x061F)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x3F)   ; \9b2]\e-G¿\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HAMZA")
+    (ucs               . #x0621)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x41)   ; \9b2]\e-GÁ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ALEF WITH MADDA ABOVE")
+    (ucs               . #x0622)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   #x0627 #x0653)
+    (arabic-iso8859-6  #x42)   ; \9b2]\e-GÂ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ALEF WITH HAMZA ABOVE")
+    (ucs               . #x0623)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   #x0627 #x0654)
+    (arabic-iso8859-6  #x43)   ; \9b2]\e-GÃ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER WAW WITH HAMZA ABOVE")
+    (ucs               . #x0624)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   #x0648 #x0654)
+    (arabic-iso8859-6  #x44)   ; \9b2]\e-GÄ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ALEF WITH HAMZA BELOW")
+    (ucs               . #x0625)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   #x0627 #x0655)
+    (arabic-iso8859-6  #x45)   ; \9b2]\e-GÅ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER YEH WITH HAMZA ABOVE")
+    (ucs               . #x0626)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   #x064A #x0654)
+    (arabic-iso8859-6  #x46)   ; \9b2]\e-GÆ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ALEF")
+    (ucs               . #x0627)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x47)   ; \9b2]\e-GÇ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER BEH")
+    (ucs               . #x0628)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x48)   ; \9b2]\e-GÈ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TEH MARBUTA")
+    (ucs               . #x0629)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x49)   ; \9b2]\e-GÉ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TEH")
+    (ucs               . #x062A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x4A)   ; \9b2]\e-GÊ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER THEH")
+    (ucs               . #x062B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x4B)   ; \9b2]\e-GË\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER JEEM")
+    (ucs               . #x062C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x4C)   ; \9b2]\e-GÌ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HAH")
+    (ucs               . #x062D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x4D)   ; \9b2]\e-GÍ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER KHAH")
+    (ucs               . #x062E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x4E)   ; \9b2]\e-GÎ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DAL")
+    (ucs               . #x062F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x4F)   ; \9b2]\e-GÏ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER THAL")
+    (ucs               . #x0630)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x50)   ; \9b2]\e-GÐ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER REH")
+    (ucs               . #x0631)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x51)   ; \9b2]\e-GÑ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ZAIN")
+    (ucs               . #x0632)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x52)   ; \9b2]\e-GÒ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SEEN")
+    (ucs               . #x0633)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x53)   ; \9b2]\e-GÓ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SHEEN")
+    (ucs               . #x0634)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x54)   ; \9b2]\e-GÔ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SAD")
+    (ucs               . #x0635)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x55)   ; \9b2]\e-GÕ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DAD")
+    (ucs               . #x0636)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x56)   ; \9b2]\e-GÖ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TAH")
+    (ucs               . #x0637)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x57)   ; \9b2]\e-G×\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ZAH")
+    (ucs               . #x0638)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x58)   ; \9b2]\e-GØ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER AIN")
+    (ucs               . #x0639)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x59)   ; \9b2]\e-GÙ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER GHAIN")
+    (ucs               . #x063A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x5A)   ; \9b2]\e-GÚ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC TATWEEL")
+    (ucs               . #x0640)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x60)   ; \9b2]\e-Gà\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER FEH")
+    (ucs               . #x0641)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x61)   ; \9b2]\e-Gá\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER QAF")
+    (ucs               . #x0642)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x62)   ; \9b2]\e-Gâ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER KAF")
+    (ucs               . #x0643)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x63)   ; \9b2]\e-Gã\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER LAM")
+    (ucs               . #x0644)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x64)   ; \9b2]\e-Gä\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER MEEM")
+    (ucs               . #x0645)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x65)   ; \9b2]\e-Gå\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER NOON")
+    (ucs               . #x0646)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x66)   ; \9b2]\e-Gæ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HEH")
+    (ucs               . #x0647)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x67)   ; \9b2]\e-Gç\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER WAW")
+    (ucs               . #x0648)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x68)   ; \9b2]\e-Gè\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ALEF MAKSURA")
+    (ucs               . #x0649)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x69)   ; \9b2]\e-Gé\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC LETTER YEH")
+    (ucs               . #x064A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x6A)   ; \9b2]\e-Gê\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC FATHATAN")
+    (ucs               . #x064B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x6B)   ; \9b2]\e-Gë\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC DAMMATAN")
+    (ucs               . #x064C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x6C)   ; \9b2]\e-Gì\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC KASRATAN")
+    (ucs               . #x064D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x6D)   ; \9b2]\e-Gí\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC FATHA")
+    (ucs               . #x064E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x6E)   ; \9b2]\e-Gî\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC DAMMA")
+    (ucs               . #x064F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x6F)   ; \9b2]\e-Gï\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC KASRA")
+    (ucs               . #x0650)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x70)   ; \9b2]\e-Gð\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC SHADDA")
+    (ucs               . #x0651)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x71)   ; \9b2]\e-Gñ\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC SUKUN")
+    (ucs               . #x0652)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (arabic-iso8859-6  #x72)   ; \9b2]\e-Gò\9b0]\e-A
+    ))
+(define-char
+  '((name              . "ARABIC MADDAH ABOVE")
+    (ucs               . #x0653)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC HAMZA ABOVE")
+    (ucs               . #x0654)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC HAMZA BELOW")
+    (ucs               . #x0655)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT ZERO")
+    (ucs               . #x0660)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 0)
+    (digit-value        . 0)
+    (numeric-value      . 0)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT ONE")
+    (ucs               . #x0661)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT TWO")
+    (ucs               . #x0662)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT THREE")
+    (ucs               . #x0663)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT FOUR")
+    (ucs               . #x0664)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT FIVE")
+    (ucs               . #x0665)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT SIX")
+    (ucs               . #x0666)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT SEVEN")
+    (ucs               . #x0667)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT EIGHT")
+    (ucs               . #x0668)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    ))
+(define-char
+  '((name              . "ARABIC-INDIC DIGIT NINE")
+    (ucs               . #x0669)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    ))
+(define-char
+  '((name              . "ARABIC PERCENT SIGN")
+    (ucs               . #x066A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC DECIMAL SEPARATOR")
+    (ucs               . #x066B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC THOUSANDS SEPARATOR")
+    (ucs               . #x066C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC FIVE POINTED STAR")
+    (ucs               . #x066D)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SUPERSCRIPT ALEF")
+    (ucs               . #x0670)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ALEF WASLA")
+    (ucs               . #x0671)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE")
+    (ucs               . #x0672)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER ALEF WITH WAVY HAMZA BELOW")
+    (ucs               . #x0673)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HIGH HAMZA")
+    (ucs               . #x0674)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HIGH HAMZA ALEF")
+    (ucs               . #x0675)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   compat #x0627 #x0674)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HIGH HAMZA WAW")
+    (ucs               . #x0676)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   compat #x0648 #x0674)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER U WITH HAMZA ABOVE")
+    (ucs               . #x0677)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   compat #x06C7 #x0674)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HIGH HAMZA YEH")
+    (ucs               . #x0678)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   compat #x064A #x0674)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TTEH")
+    (ucs               . #x0679)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TTEHEH")
+    (ucs               . #x067A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER BEEH")
+    (ucs               . #x067B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TEH WITH RING")
+    (ucs               . #x067C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS")
+    (ucs               . #x067D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER PEH")
+    (ucs               . #x067E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TEHEH")
+    (ucs               . #x067F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER BEHEH")
+    (ucs               . #x0680)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HAH WITH HAMZA ABOVE")
+    (ucs               . #x0681)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE")
+    (ucs               . #x0682)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER NYEH")
+    (ucs               . #x0683)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DYEH")
+    (ucs               . #x0684)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HAH WITH THREE DOTS ABOVE")
+    (ucs               . #x0685)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TCHEH")
+    (ucs               . #x0686)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TCHEHEH")
+    (ucs               . #x0687)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DDAL")
+    (ucs               . #x0688)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DAL WITH RING")
+    (ucs               . #x0689)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DAL WITH DOT BELOW")
+    (ucs               . #x068A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH")
+    (ucs               . #x068B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DAHAL")
+    (ucs               . #x068C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DDAHAL")
+    (ucs               . #x068D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DUL")
+    (ucs               . #x068E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS")
+    (ucs               . #x068F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DAL WITH FOUR DOTS ABOVE")
+    (ucs               . #x0690)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER RREH")
+    (ucs               . #x0691)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER REH WITH SMALL V")
+    (ucs               . #x0692)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER REH WITH RING")
+    (ucs               . #x0693)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER REH WITH DOT BELOW")
+    (ucs               . #x0694)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER REH WITH SMALL V BELOW")
+    (ucs               . #x0695)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE")
+    (ucs               . #x0696)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER REH WITH TWO DOTS ABOVE")
+    (ucs               . #x0697)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER JEH")
+    (ucs               . #x0698)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER REH WITH FOUR DOTS ABOVE")
+    (ucs               . #x0699)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE")
+    (ucs               . #x069A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SEEN WITH THREE DOTS BELOW")
+    (ucs               . #x069B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE")
+    (ucs               . #x069C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SAD WITH TWO DOTS BELOW")
+    (ucs               . #x069D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SAD WITH THREE DOTS ABOVE")
+    (ucs               . #x069E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TAH WITH THREE DOTS ABOVE")
+    (ucs               . #x069F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER AIN WITH THREE DOTS ABOVE")
+    (ucs               . #x06A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DOTLESS FEH")
+    (ucs               . #x06A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER FEH WITH DOT MOVED BELOW")
+    (ucs               . #x06A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER FEH WITH DOT BELOW")
+    (ucs               . #x06A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER VEH")
+    (ucs               . #x06A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER FEH WITH THREE DOTS BELOW")
+    (ucs               . #x06A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER PEHEH")
+    (ucs               . #x06A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER QAF WITH DOT ABOVE")
+    (ucs               . #x06A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER QAF WITH THREE DOTS ABOVE")
+    (ucs               . #x06A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER KEHEH")
+    (ucs               . #x06A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SWASH KAF")
+    (ucs               . #x06AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER KAF WITH RING")
+    (ucs               . #x06AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER KAF WITH DOT ABOVE")
+    (ucs               . #x06AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER NG")
+    (ucs               . #x06AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER KAF WITH THREE DOTS BELOW")
+    (ucs               . #x06AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER GAF")
+    (ucs               . #x06AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "ARABIC LETTER GAF WITH RING")
+    (ucs               . #x06B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER NGOEH")
+    (ucs               . #x06B1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER GAF WITH TWO DOTS BELOW")
+    (ucs               . #x06B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER GUEH")
+    (ucs               . #x06B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER GAF WITH THREE DOTS ABOVE")
+    (ucs               . #x06B4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER LAM WITH SMALL V")
+    (ucs               . #x06B5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER LAM WITH DOT ABOVE")
+    (ucs               . #x06B6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER LAM WITH THREE DOTS ABOVE")
+    (ucs               . #x06B7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER LAM WITH THREE DOTS BELOW")
+    (ucs               . #x06B8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER NOON WITH DOT BELOW")
+    (ucs               . #x06B9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER NOON GHUNNA")
+    (ucs               . #x06BA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER RNOON")
+    (ucs               . #x06BB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER NOON WITH RING")
+    (ucs               . #x06BC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER NOON WITH THREE DOTS ABOVE")
+    (ucs               . #x06BD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HEH DOACHASHMEE")
+    (ucs               . #x06BE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TCHEH WITH DOT ABOVE")
+    (ucs               . #x06BF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HEH WITH YEH ABOVE")
+    (ucs               . #x06C0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   #x06D5 #x0654)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HEH GOAL")
+    (ucs               . #x06C1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER HEH GOAL WITH HAMZA ABOVE")
+    (ucs               . #x06C2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   #x06C1 #x0654)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER TEH MARBUTA GOAL")
+    (ucs               . #x06C3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER WAW WITH RING")
+    (ucs               . #x06C4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER KIRGHIZ OE")
+    (ucs               . #x06C5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER OE")
+    (ucs               . #x06C6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER U")
+    (ucs               . #x06C7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER YU")
+    (ucs               . #x06C8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER KIRGHIZ YU")
+    (ucs               . #x06C9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER WAW WITH TWO DOTS ABOVE")
+    (ucs               . #x06CA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER VE")
+    (ucs               . #x06CB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER FARSI YEH")
+    (ucs               . #x06CC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER YEH WITH TAIL")
+    (ucs               . #x06CD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER YEH WITH SMALL V")
+    (ucs               . #x06CE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER WAW WITH DOT ABOVE")
+    (ucs               . #x06CF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER E")
+    (ucs               . #x06D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "ARABIC LETTER YEH WITH THREE DOTS BELOW")
+    (ucs               . #x06D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER YEH BARREE")
+    (ucs               . #x06D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER YEH BARREE WITH HAMZA ABOVE")
+    (ucs               . #x06D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    (->decomposition   #x06D2 #x0654)
+    ))
+(define-char
+  '((name              . "ARABIC FULL STOP")
+    (ucs               . #x06D4)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER AE")
+    (ucs               . #x06D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA")
+    (ucs               . #x06D6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA")
+    (ucs               . #x06D7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH MEEM INITIAL FORM")
+    (ucs               . #x06D8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH LAM ALEF")
+    (ucs               . #x06D9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH JEEM")
+    (ucs               . #x06DA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH THREE DOTS")
+    (ucs               . #x06DB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH SEEN")
+    (ucs               . #x06DC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC END OF AYAH")
+    (ucs               . #x06DD)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC START OF RUB EL HIZB")
+    (ucs               . #x06DE)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH ROUNDED ZERO")
+    (ucs               . #x06DF)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO")
+    (ucs               . #x06E0)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH DOTLESS HEAD OF KHAH")
+    (ucs               . #x06E1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH MEEM ISOLATED FORM")
+    (ucs               . #x06E2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL LOW SEEN")
+    (ucs               . #x06E3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH MADDA")
+    (ucs               . #x06E4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL WAW")
+    (ucs               . #x06E5)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL YEH")
+    (ucs               . #x06E6)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH YEH")
+    (ucs               . #x06E7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL HIGH NOON")
+    (ucs               . #x06E8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC PLACE OF SAJDAH")
+    (ucs               . #x06E9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC EMPTY CENTRE LOW STOP")
+    (ucs               . #x06EA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC EMPTY CENTRE HIGH STOP")
+    (ucs               . #x06EB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE")
+    (ucs               . #x06EC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SMALL LOW MEEM")
+    (ucs               . #x06ED)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT ZERO")
+    (ucs               . #x06F0)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 0)
+    (digit-value        . 0)
+    (numeric-value      . 0)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT ONE")
+    (ucs               . #x06F1)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT TWO")
+    (ucs               . #x06F2)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT THREE")
+    (ucs               . #x06F3)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT FOUR")
+    (ucs               . #x06F4)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT FIVE")
+    (ucs               . #x06F5)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT SIX")
+    (ucs               . #x06F6)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT SEVEN")
+    (ucs               . #x06F7)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT EIGHT")
+    (ucs               . #x06F8)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    ))
+(define-char
+  '((name              . "EXTENDED ARABIC-INDIC DIGIT NINE")
+    (ucs               . #x06F9)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER SHEEN WITH DOT BELOW")
+    (ucs               . #x06FA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER DAD WITH DOT BELOW")
+    (ucs               . #x06FB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC LETTER GHAIN WITH DOT BELOW")
+    (ucs               . #x06FC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SIGN SINDHI AMPERSAND")
+    (ucs               . #x06FD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARABIC SIGN SINDHI POSTPOSITION MEN")
+    (ucs               . #x06FE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00700-Syriac.el b/lisp/utf-2000/u00700-Syriac.el
new file mode 100644 (file)
index 0000000..b51b9dc
--- /dev/null
@@ -0,0 +1,497 @@
+(define-char
+  '((name              . "SYRIAC END OF PARAGRAPH")
+    (ucs               . #x0700)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC SUPRALINEAR FULL STOP")
+    (ucs               . #x0701)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC SUBLINEAR FULL STOP")
+    (ucs               . #x0702)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC SUPRALINEAR COLON")
+    (ucs               . #x0703)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC SUBLINEAR COLON")
+    (ucs               . #x0704)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC HORIZONTAL COLON")
+    (ucs               . #x0705)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC COLON SKEWED LEFT")
+    (ucs               . #x0706)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC COLON SKEWED RIGHT")
+    (ucs               . #x0707)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC SUPRALINEAR COLON SKEWED LEFT")
+    (ucs               . #x0708)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC SUBLINEAR COLON SKEWED RIGHT")
+    (ucs               . #x0709)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC CONTRACTION")
+    (ucs               . #x070A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC HARKLEAN OBELUS")
+    (ucs               . #x070B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC HARKLEAN METOBELUS")
+    (ucs               . #x070C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC HARKLEAN ASTERISCUS")
+    (ucs               . #x070D)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC ABBREVIATION MARK")
+    (ucs               . #x070F)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER ALAPH")
+    (ucs               . #x0710)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER SUPERSCRIPT ALAPH")
+    (ucs               . #x0711)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER BETH")
+    (ucs               . #x0712)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER GAMAL")
+    (ucs               . #x0713)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER GAMAL GARSHUNI")
+    (ucs               . #x0714)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER DALATH")
+    (ucs               . #x0715)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER DOTLESS DALATH RISH")
+    (ucs               . #x0716)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER HE")
+    (ucs               . #x0717)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER WAW")
+    (ucs               . #x0718)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER ZAIN")
+    (ucs               . #x0719)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER HETH")
+    (ucs               . #x071A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER TETH")
+    (ucs               . #x071B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER TETH GARSHUNI")
+    (ucs               . #x071C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER YUDH")
+    (ucs               . #x071D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER YUDH HE")
+    (ucs               . #x071E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER KAPH")
+    (ucs               . #x071F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER LAMADH")
+    (ucs               . #x0720)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER MIM")
+    (ucs               . #x0721)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER NUN")
+    (ucs               . #x0722)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER SEMKATH")
+    (ucs               . #x0723)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER FINAL SEMKATH")
+    (ucs               . #x0724)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER E")
+    (ucs               . #x0725)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER PE")
+    (ucs               . #x0726)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER REVERSED PE")
+    (ucs               . #x0727)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER SADHE")
+    (ucs               . #x0728)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER QAPH")
+    (ucs               . #x0729)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER RISH")
+    (ucs               . #x072A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER SHIN")
+    (ucs               . #x072B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC LETTER TAW")
+    (ucs               . #x072C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC PTHAHA ABOVE")
+    (ucs               . #x0730)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC PTHAHA BELOW")
+    (ucs               . #x0731)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC PTHAHA DOTTED")
+    (ucs               . #x0732)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC ZQAPHA ABOVE")
+    (ucs               . #x0733)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC ZQAPHA BELOW")
+    (ucs               . #x0734)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC ZQAPHA DOTTED")
+    (ucs               . #x0735)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC RBASA ABOVE")
+    (ucs               . #x0736)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC RBASA BELOW")
+    (ucs               . #x0737)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC DOTTED ZLAMA HORIZONTAL")
+    (ucs               . #x0738)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC DOTTED ZLAMA ANGULAR")
+    (ucs               . #x0739)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC HBASA ABOVE")
+    (ucs               . #x073A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC HBASA BELOW")
+    (ucs               . #x073B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC HBASA-ESASA DOTTED")
+    (ucs               . #x073C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC ESASA ABOVE")
+    (ucs               . #x073D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC ESASA BELOW")
+    (ucs               . #x073E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC RWAHA")
+    (ucs               . #x073F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC FEMININE DOT")
+    (ucs               . #x0740)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC QUSHSHAYA")
+    (ucs               . #x0741)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC RUKKAKHA")
+    (ucs               . #x0742)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC TWO VERTICAL DOTS ABOVE")
+    (ucs               . #x0743)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC TWO VERTICAL DOTS BELOW")
+    (ucs               . #x0744)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC THREE DOTS ABOVE")
+    (ucs               . #x0745)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC THREE DOTS BELOW")
+    (ucs               . #x0746)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC OBLIQUE LINE ABOVE")
+    (ucs               . #x0747)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC OBLIQUE LINE BELOW")
+    (ucs               . #x0748)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC MUSIC")
+    (ucs               . #x0749)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYRIAC BARREKH")
+    (ucs               . #x074A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00780-Thaana.el b/lisp/utf-2000/u00780-Thaana.el
new file mode 100644 (file)
index 0000000..c6b9459
--- /dev/null
@@ -0,0 +1,343 @@
+(define-char
+  '((name              . "THAANA LETTER HAA")
+    (ucs               . #x0780)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER SHAVIYANI")
+    (ucs               . #x0781)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER NOONU")
+    (ucs               . #x0782)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER RAA")
+    (ucs               . #x0783)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER BAA")
+    (ucs               . #x0784)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER LHAVIYANI")
+    (ucs               . #x0785)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER KAAFU")
+    (ucs               . #x0786)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER ALIFU")
+    (ucs               . #x0787)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER VAAVU")
+    (ucs               . #x0788)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER MEEMU")
+    (ucs               . #x0789)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER FAAFU")
+    (ucs               . #x078A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER DHAALU")
+    (ucs               . #x078B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER THAA")
+    (ucs               . #x078C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER LAAMU")
+    (ucs               . #x078D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER GAAFU")
+    (ucs               . #x078E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER GNAVIYANI")
+    (ucs               . #x078F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER SEENU")
+    (ucs               . #x0790)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER DAVIYANI")
+    (ucs               . #x0791)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER ZAVIYANI")
+    (ucs               . #x0792)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER TAVIYANI")
+    (ucs               . #x0793)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER YAA")
+    (ucs               . #x0794)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER PAVIYANI")
+    (ucs               . #x0795)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER JAVIYANI")
+    (ucs               . #x0796)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER CHAVIYANI")
+    (ucs               . #x0797)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER TTAA")
+    (ucs               . #x0798)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER HHAA")
+    (ucs               . #x0799)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER KHAA")
+    (ucs               . #x079A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER THAALU")
+    (ucs               . #x079B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER ZAA")
+    (ucs               . #x079C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER SHEENU")
+    (ucs               . #x079D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER SAADHU")
+    (ucs               . #x079E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER DAADHU")
+    (ucs               . #x079F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER TO")
+    (ucs               . #x07A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER ZO")
+    (ucs               . #x07A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER AINU")
+    (ucs               . #x07A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER GHAINU")
+    (ucs               . #x07A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER QAAFU")
+    (ucs               . #x07A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA LETTER WAAVU")
+    (ucs               . #x07A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "AL")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA ABAFILI")
+    (ucs               . #x07A6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA AABAAFILI")
+    (ucs               . #x07A7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA IBIFILI")
+    (ucs               . #x07A8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA EEBEEFILI")
+    (ucs               . #x07A9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA UBUFILI")
+    (ucs               . #x07AA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA OOBOOFILI")
+    (ucs               . #x07AB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA EBEFILI")
+    (ucs               . #x07AC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA EYBEYFILI")
+    (ucs               . #x07AD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA OBOFILI")
+    (ucs               . #x07AE)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA OABOAFILI")
+    (ucs               . #x07AF)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THAANA SUKUN")
+    (ucs               . #x07B0)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00900-Devanagari.el b/lisp/utf-2000/u00900-Devanagari.el
new file mode 100644 (file)
index 0000000..e63012a
--- /dev/null
@@ -0,0 +1,769 @@
+(define-char
+  '((name              . "DEVANAGARI SIGN CANDRABINDU")
+    (ucs               . #x0901)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI SIGN ANUSVARA")
+    (ucs               . #x0902)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI SIGN VISARGA")
+    (ucs               . #x0903)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER A")
+    (ucs               . #x0905)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER AA")
+    (ucs               . #x0906)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER I")
+    (ucs               . #x0907)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER II")
+    (ucs               . #x0908)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER U")
+    (ucs               . #x0909)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER UU")
+    (ucs               . #x090A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER VOCALIC R")
+    (ucs               . #x090B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER VOCALIC L")
+    (ucs               . #x090C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER CANDRA E")
+    (ucs               . #x090D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER SHORT E")
+    (ucs               . #x090E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER E")
+    (ucs               . #x090F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER AI")
+    (ucs               . #x0910)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER CANDRA O")
+    (ucs               . #x0911)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER SHORT O")
+    (ucs               . #x0912)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER O")
+    (ucs               . #x0913)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER AU")
+    (ucs               . #x0914)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER KA")
+    (ucs               . #x0915)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER KHA")
+    (ucs               . #x0916)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER GA")
+    (ucs               . #x0917)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER GHA")
+    (ucs               . #x0918)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER NGA")
+    (ucs               . #x0919)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER CA")
+    (ucs               . #x091A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER CHA")
+    (ucs               . #x091B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER JA")
+    (ucs               . #x091C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER JHA")
+    (ucs               . #x091D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER NYA")
+    (ucs               . #x091E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER TTA")
+    (ucs               . #x091F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER TTHA")
+    (ucs               . #x0920)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER DDA")
+    (ucs               . #x0921)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER DDHA")
+    (ucs               . #x0922)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER NNA")
+    (ucs               . #x0923)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER TA")
+    (ucs               . #x0924)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER THA")
+    (ucs               . #x0925)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER DA")
+    (ucs               . #x0926)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER DHA")
+    (ucs               . #x0927)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER NA")
+    (ucs               . #x0928)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER NNNA")
+    (ucs               . #x0929)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0928 #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER PA")
+    (ucs               . #x092A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER PHA")
+    (ucs               . #x092B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER BA")
+    (ucs               . #x092C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER BHA")
+    (ucs               . #x092D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER MA")
+    (ucs               . #x092E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER YA")
+    (ucs               . #x092F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER RA")
+    (ucs               . #x0930)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER RRA")
+    (ucs               . #x0931)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0930 #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER LA")
+    (ucs               . #x0932)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER LLA")
+    (ucs               . #x0933)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER LLLA")
+    (ucs               . #x0934)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0933 #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER VA")
+    (ucs               . #x0935)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER SHA")
+    (ucs               . #x0936)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER SSA")
+    (ucs               . #x0937)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER SA")
+    (ucs               . #x0938)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER HA")
+    (ucs               . #x0939)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI SIGN NUKTA")
+    (ucs               . #x093C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI SIGN AVAGRAHA")
+    (ucs               . #x093D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN AA")
+    (ucs               . #x093E)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN I")
+    (ucs               . #x093F)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN II")
+    (ucs               . #x0940)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN U")
+    (ucs               . #x0941)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN UU")
+    (ucs               . #x0942)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN VOCALIC R")
+    (ucs               . #x0943)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN VOCALIC RR")
+    (ucs               . #x0944)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN CANDRA E")
+    (ucs               . #x0945)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN SHORT E")
+    (ucs               . #x0946)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN E")
+    (ucs               . #x0947)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN AI")
+    (ucs               . #x0948)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN CANDRA O")
+    (ucs               . #x0949)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN SHORT O")
+    (ucs               . #x094A)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN O")
+    (ucs               . #x094B)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN AU")
+    (ucs               . #x094C)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI SIGN VIRAMA")
+    (ucs               . #x094D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI OM")
+    (ucs               . #x0950)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI STRESS SIGN UDATTA")
+    (ucs               . #x0951)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI STRESS SIGN ANUDATTA")
+    (ucs               . #x0952)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI GRAVE ACCENT")
+    (ucs               . #x0953)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI ACUTE ACCENT")
+    (ucs               . #x0954)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER QA")
+    (ucs               . #x0958)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0915 #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER KHHA")
+    (ucs               . #x0959)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0916 #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER GHHA")
+    (ucs               . #x095A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0917 #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER ZA")
+    (ucs               . #x095B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x091C #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER DDDHA")
+    (ucs               . #x095C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0921 #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER RHA")
+    (ucs               . #x095D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0922 #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER FA")
+    (ucs               . #x095E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x092B #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER YYA")
+    (ucs               . #x095F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x092F #x093C)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER VOCALIC RR")
+    (ucs               . #x0960)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI LETTER VOCALIC LL")
+    (ucs               . #x0961)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN VOCALIC L")
+    (ucs               . #x0962)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI VOWEL SIGN VOCALIC LL")
+    (ucs               . #x0963)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DANDA")
+    (ucs               . #x0964)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DOUBLE DANDA")
+    (ucs               . #x0965)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT ZERO")
+    (ucs               . #x0966)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 0)
+    (digit-value        . 0)
+    (numeric-value      . 0)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT ONE")
+    (ucs               . #x0967)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT TWO")
+    (ucs               . #x0968)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT THREE")
+    (ucs               . #x0969)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT FOUR")
+    (ucs               . #x096A)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT FIVE")
+    (ucs               . #x096B)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT SIX")
+    (ucs               . #x096C)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT SEVEN")
+    (ucs               . #x096D)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT EIGHT")
+    (ucs               . #x096E)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    ))
+(define-char
+  '((name              . "DEVANAGARI DIGIT NINE")
+    (ucs               . #x096F)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    ))
+(define-char
+  '((name              . "DEVANAGARI ABBREVIATION SIGN")
+    (ucs               . #x0970)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00980-Bengali.el b/lisp/utf-2000/u00980-Bengali.el
new file mode 100644 (file)
index 0000000..6982e9d
--- /dev/null
@@ -0,0 +1,665 @@
+(define-char
+  '((name              . "BENGALI SIGN CANDRABINDU")
+    (ucs               . #x0981)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI SIGN ANUSVARA")
+    (ucs               . #x0982)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI SIGN VISARGA")
+    (ucs               . #x0983)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER A")
+    (ucs               . #x0985)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER AA")
+    (ucs               . #x0986)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER I")
+    (ucs               . #x0987)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER II")
+    (ucs               . #x0988)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER U")
+    (ucs               . #x0989)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER UU")
+    (ucs               . #x098A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER VOCALIC R")
+    (ucs               . #x098B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER VOCALIC L")
+    (ucs               . #x098C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER E")
+    (ucs               . #x098F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER AI")
+    (ucs               . #x0990)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER O")
+    (ucs               . #x0993)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER AU")
+    (ucs               . #x0994)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER KA")
+    (ucs               . #x0995)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER KHA")
+    (ucs               . #x0996)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER GA")
+    (ucs               . #x0997)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER GHA")
+    (ucs               . #x0998)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER NGA")
+    (ucs               . #x0999)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER CA")
+    (ucs               . #x099A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER CHA")
+    (ucs               . #x099B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER JA")
+    (ucs               . #x099C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER JHA")
+    (ucs               . #x099D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER NYA")
+    (ucs               . #x099E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER TTA")
+    (ucs               . #x099F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER TTHA")
+    (ucs               . #x09A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER DDA")
+    (ucs               . #x09A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER DDHA")
+    (ucs               . #x09A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER NNA")
+    (ucs               . #x09A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER TA")
+    (ucs               . #x09A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER THA")
+    (ucs               . #x09A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER DA")
+    (ucs               . #x09A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER DHA")
+    (ucs               . #x09A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER NA")
+    (ucs               . #x09A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER PA")
+    (ucs               . #x09AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER PHA")
+    (ucs               . #x09AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER BA")
+    (ucs               . #x09AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER BHA")
+    (ucs               . #x09AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER MA")
+    (ucs               . #x09AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER YA")
+    (ucs               . #x09AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER RA")
+    (ucs               . #x09B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER LA")
+    (ucs               . #x09B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER SHA")
+    (ucs               . #x09B6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER SSA")
+    (ucs               . #x09B7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER SA")
+    (ucs               . #x09B8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER HA")
+    (ucs               . #x09B9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI SIGN NUKTA")
+    (ucs               . #x09BC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN AA")
+    (ucs               . #x09BE)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN I")
+    (ucs               . #x09BF)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN II")
+    (ucs               . #x09C0)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN U")
+    (ucs               . #x09C1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN UU")
+    (ucs               . #x09C2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN VOCALIC R")
+    (ucs               . #x09C3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN VOCALIC RR")
+    (ucs               . #x09C4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN E")
+    (ucs               . #x09C7)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN AI")
+    (ucs               . #x09C8)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN O")
+    (ucs               . #x09CB)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x09C7 #x09BE)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN AU")
+    (ucs               . #x09CC)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x09C7 #x09D7)
+    ))
+(define-char
+  '((name              . "BENGALI SIGN VIRAMA")
+    (ucs               . #x09CD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI AU LENGTH MARK")
+    (ucs               . #x09D7)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER RRA")
+    (ucs               . #x09DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x09A1 #x09BC)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER RHA")
+    (ucs               . #x09DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x09A2 #x09BC)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER YYA")
+    (ucs               . #x09DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x09AF #x09BC)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER VOCALIC RR")
+    (ucs               . #x09E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER VOCALIC LL")
+    (ucs               . #x09E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN VOCALIC L")
+    (ucs               . #x09E2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI VOWEL SIGN VOCALIC LL")
+    (ucs               . #x09E3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT ZERO")
+    (ucs               . #x09E6)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 0)
+    (digit-value        . 0)
+    (numeric-value      . 0)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT ONE")
+    (ucs               . #x09E7)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT TWO")
+    (ucs               . #x09E8)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT THREE")
+    (ucs               . #x09E9)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT FOUR")
+    (ucs               . #x09EA)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT FIVE")
+    (ucs               . #x09EB)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT SIX")
+    (ucs               . #x09EC)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT SEVEN")
+    (ucs               . #x09ED)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT EIGHT")
+    (ucs               . #x09EE)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    ))
+(define-char
+  '((name              . "BENGALI DIGIT NINE")
+    (ucs               . #x09EF)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    ))
+(define-char
+  '((name              . "BENGALI LETTER RA WITH MIDDLE DIAGONAL")
+    (ucs               . #x09F0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Assamese")
+    ))
+(define-char
+  '((name              . "BENGALI LETTER RA WITH LOWER DIAGONAL")
+    (ucs               . #x09F1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Assamese")
+    ))
+(define-char
+  '((name              . "BENGALI RUPEE MARK")
+    (ucs               . #x09F2)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI RUPEE SIGN")
+    (ucs               . #x09F3)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI CURRENCY NUMERATOR ONE")
+    (ucs               . #x09F4)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 1)
+    ))
+(define-char
+  '((name              . "BENGALI CURRENCY NUMERATOR TWO")
+    (ucs               . #x09F5)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 2)
+    ))
+(define-char
+  '((name              . "BENGALI CURRENCY NUMERATOR THREE")
+    (ucs               . #x09F6)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 3)
+    ))
+(define-char
+  '((name              . "BENGALI CURRENCY NUMERATOR FOUR")
+    (ucs               . #x09F7)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 4)
+    ))
+(define-char
+  '((name . "BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR")
+    (ucs               . #x09F8)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENGALI CURRENCY DENOMINATOR SIXTEEN")
+    (ucs               . #x09F9)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 16)
+    ))
+(define-char
+  '((name              . "BENGALI ISSHAR")
+    (ucs               . #x09FA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00A00-Gurmukhi.el b/lisp/utf-2000/u00A00-Gurmukhi.el
new file mode 100644 (file)
index 0000000..bd8c443
--- /dev/null
@@ -0,0 +1,561 @@
+(define-char
+  '((name              . "GURMUKHI SIGN BINDI")
+    (ucs               . #x0A02)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER A")
+    (ucs               . #x0A05)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER AA")
+    (ucs               . #x0A06)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER I")
+    (ucs               . #x0A07)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER II")
+    (ucs               . #x0A08)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER U")
+    (ucs               . #x0A09)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER UU")
+    (ucs               . #x0A0A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER EE")
+    (ucs               . #x0A0F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER AI")
+    (ucs               . #x0A10)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER OO")
+    (ucs               . #x0A13)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER AU")
+    (ucs               . #x0A14)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER KA")
+    (ucs               . #x0A15)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER KHA")
+    (ucs               . #x0A16)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER GA")
+    (ucs               . #x0A17)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER GHA")
+    (ucs               . #x0A18)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER NGA")
+    (ucs               . #x0A19)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER CA")
+    (ucs               . #x0A1A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER CHA")
+    (ucs               . #x0A1B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER JA")
+    (ucs               . #x0A1C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER JHA")
+    (ucs               . #x0A1D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER NYA")
+    (ucs               . #x0A1E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER TTA")
+    (ucs               . #x0A1F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER TTHA")
+    (ucs               . #x0A20)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER DDA")
+    (ucs               . #x0A21)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER DDHA")
+    (ucs               . #x0A22)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER NNA")
+    (ucs               . #x0A23)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER TA")
+    (ucs               . #x0A24)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER THA")
+    (ucs               . #x0A25)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER DA")
+    (ucs               . #x0A26)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER DHA")
+    (ucs               . #x0A27)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER NA")
+    (ucs               . #x0A28)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER PA")
+    (ucs               . #x0A2A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER PHA")
+    (ucs               . #x0A2B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER BA")
+    (ucs               . #x0A2C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER BHA")
+    (ucs               . #x0A2D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER MA")
+    (ucs               . #x0A2E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER YA")
+    (ucs               . #x0A2F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER RA")
+    (ucs               . #x0A30)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER LA")
+    (ucs               . #x0A32)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER LLA")
+    (ucs               . #x0A33)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0A32 #x0A3C)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER VA")
+    (ucs               . #x0A35)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER SHA")
+    (ucs               . #x0A36)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0A38 #x0A3C)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER SA")
+    (ucs               . #x0A38)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER HA")
+    (ucs               . #x0A39)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI SIGN NUKTA")
+    (ucs               . #x0A3C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI VOWEL SIGN AA")
+    (ucs               . #x0A3E)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI VOWEL SIGN I")
+    (ucs               . #x0A3F)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI VOWEL SIGN II")
+    (ucs               . #x0A40)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI VOWEL SIGN U")
+    (ucs               . #x0A41)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI VOWEL SIGN UU")
+    (ucs               . #x0A42)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI VOWEL SIGN EE")
+    (ucs               . #x0A47)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI VOWEL SIGN AI")
+    (ucs               . #x0A48)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI VOWEL SIGN OO")
+    (ucs               . #x0A4B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI VOWEL SIGN AU")
+    (ucs               . #x0A4C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI SIGN VIRAMA")
+    (ucs               . #x0A4D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER KHHA")
+    (ucs               . #x0A59)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0A16 #x0A3C)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER GHHA")
+    (ucs               . #x0A5A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0A17 #x0A3C)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER ZA")
+    (ucs               . #x0A5B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0A1C #x0A3C)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER RRA")
+    (ucs               . #x0A5C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI LETTER FA")
+    (ucs               . #x0A5E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0A2B #x0A3C)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT ZERO")
+    (ucs               . #x0A66)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT ONE")
+    (ucs               . #x0A67)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT TWO")
+    (ucs               . #x0A68)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT THREE")
+    (ucs               . #x0A69)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT FOUR")
+    (ucs               . #x0A6A)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT FIVE")
+    (ucs               . #x0A6B)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT SIX")
+    (ucs               . #x0A6C)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT SEVEN")
+    (ucs               . #x0A6D)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT EIGHT")
+    (ucs               . #x0A6E)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI DIGIT NINE")
+    (ucs               . #x0A6F)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI TIPPI")
+    (ucs               . #x0A70)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI ADDAK")
+    (ucs               . #x0A71)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI IRI")
+    (ucs               . #x0A72)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI URA")
+    (ucs               . #x0A73)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GURMUKHI EK ONKAR")
+    (ucs               . #x0A74)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00A80-Gujarati.el b/lisp/utf-2000/u00A80-Gujarati.el
new file mode 100644 (file)
index 0000000..9585e19
--- /dev/null
@@ -0,0 +1,576 @@
+(define-char
+  '((name              . "GUJARATI SIGN CANDRABINDU")
+    (ucs               . #x0A81)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI SIGN ANUSVARA")
+    (ucs               . #x0A82)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI SIGN VISARGA")
+    (ucs               . #x0A83)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER A")
+    (ucs               . #x0A85)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER AA")
+    (ucs               . #x0A86)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER I")
+    (ucs               . #x0A87)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER II")
+    (ucs               . #x0A88)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER U")
+    (ucs               . #x0A89)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER UU")
+    (ucs               . #x0A8A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER VOCALIC R")
+    (ucs               . #x0A8B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL CANDRA E")
+    (ucs               . #x0A8D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER E")
+    (ucs               . #x0A8F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER AI")
+    (ucs               . #x0A90)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL CANDRA O")
+    (ucs               . #x0A91)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER O")
+    (ucs               . #x0A93)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER AU")
+    (ucs               . #x0A94)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER KA")
+    (ucs               . #x0A95)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER KHA")
+    (ucs               . #x0A96)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER GA")
+    (ucs               . #x0A97)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER GHA")
+    (ucs               . #x0A98)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER NGA")
+    (ucs               . #x0A99)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER CA")
+    (ucs               . #x0A9A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER CHA")
+    (ucs               . #x0A9B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER JA")
+    (ucs               . #x0A9C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER JHA")
+    (ucs               . #x0A9D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER NYA")
+    (ucs               . #x0A9E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER TTA")
+    (ucs               . #x0A9F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER TTHA")
+    (ucs               . #x0AA0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER DDA")
+    (ucs               . #x0AA1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER DDHA")
+    (ucs               . #x0AA2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER NNA")
+    (ucs               . #x0AA3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER TA")
+    (ucs               . #x0AA4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER THA")
+    (ucs               . #x0AA5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER DA")
+    (ucs               . #x0AA6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER DHA")
+    (ucs               . #x0AA7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER NA")
+    (ucs               . #x0AA8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER PA")
+    (ucs               . #x0AAA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER PHA")
+    (ucs               . #x0AAB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER BA")
+    (ucs               . #x0AAC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER BHA")
+    (ucs               . #x0AAD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER MA")
+    (ucs               . #x0AAE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER YA")
+    (ucs               . #x0AAF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER RA")
+    (ucs               . #x0AB0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER LA")
+    (ucs               . #x0AB2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER LLA")
+    (ucs               . #x0AB3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER VA")
+    (ucs               . #x0AB5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER SHA")
+    (ucs               . #x0AB6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER SSA")
+    (ucs               . #x0AB7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER SA")
+    (ucs               . #x0AB8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER HA")
+    (ucs               . #x0AB9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI SIGN NUKTA")
+    (ucs               . #x0ABC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI SIGN AVAGRAHA")
+    (ucs               . #x0ABD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN AA")
+    (ucs               . #x0ABE)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN I")
+    (ucs               . #x0ABF)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN II")
+    (ucs               . #x0AC0)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN U")
+    (ucs               . #x0AC1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN UU")
+    (ucs               . #x0AC2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN VOCALIC R")
+    (ucs               . #x0AC3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN VOCALIC RR")
+    (ucs               . #x0AC4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN CANDRA E")
+    (ucs               . #x0AC5)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN E")
+    (ucs               . #x0AC7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN AI")
+    (ucs               . #x0AC8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN CANDRA O")
+    (ucs               . #x0AC9)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN O")
+    (ucs               . #x0ACB)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI VOWEL SIGN AU")
+    (ucs               . #x0ACC)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI SIGN VIRAMA")
+    (ucs               . #x0ACD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI OM")
+    (ucs               . #x0AD0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI LETTER VOCALIC RR")
+    (ucs               . #x0AE0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT ZERO")
+    (ucs               . #x0AE6)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT ONE")
+    (ucs               . #x0AE7)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT TWO")
+    (ucs               . #x0AE8)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT THREE")
+    (ucs               . #x0AE9)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT FOUR")
+    (ucs               . #x0AEA)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT FIVE")
+    (ucs               . #x0AEB)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT SIX")
+    (ucs               . #x0AEC)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT SEVEN")
+    (ucs               . #x0AED)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT EIGHT")
+    (ucs               . #x0AEE)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GUJARATI DIGIT NINE")
+    (ucs               . #x0AEF)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00B00-Oriya.el b/lisp/utf-2000/u00B00-Oriya.el
new file mode 100644 (file)
index 0000000..db8ab22
--- /dev/null
@@ -0,0 +1,588 @@
+(define-char
+  '((name              . "ORIYA SIGN CANDRABINDU")
+    (ucs               . #x0B01)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA SIGN ANUSVARA")
+    (ucs               . #x0B02)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA SIGN VISARGA")
+    (ucs               . #x0B03)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER A")
+    (ucs               . #x0B05)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER AA")
+    (ucs               . #x0B06)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER I")
+    (ucs               . #x0B07)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER II")
+    (ucs               . #x0B08)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER U")
+    (ucs               . #x0B09)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER UU")
+    (ucs               . #x0B0A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER VOCALIC R")
+    (ucs               . #x0B0B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER VOCALIC L")
+    (ucs               . #x0B0C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER E")
+    (ucs               . #x0B0F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER AI")
+    (ucs               . #x0B10)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER O")
+    (ucs               . #x0B13)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER AU")
+    (ucs               . #x0B14)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER KA")
+    (ucs               . #x0B15)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER KHA")
+    (ucs               . #x0B16)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER GA")
+    (ucs               . #x0B17)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER GHA")
+    (ucs               . #x0B18)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER NGA")
+    (ucs               . #x0B19)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER CA")
+    (ucs               . #x0B1A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER CHA")
+    (ucs               . #x0B1B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER JA")
+    (ucs               . #x0B1C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER JHA")
+    (ucs               . #x0B1D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER NYA")
+    (ucs               . #x0B1E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER TTA")
+    (ucs               . #x0B1F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER TTHA")
+    (ucs               . #x0B20)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER DDA")
+    (ucs               . #x0B21)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER DDHA")
+    (ucs               . #x0B22)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER NNA")
+    (ucs               . #x0B23)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER TA")
+    (ucs               . #x0B24)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER THA")
+    (ucs               . #x0B25)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER DA")
+    (ucs               . #x0B26)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER DHA")
+    (ucs               . #x0B27)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER NA")
+    (ucs               . #x0B28)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER PA")
+    (ucs               . #x0B2A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER PHA")
+    (ucs               . #x0B2B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER BA")
+    (ucs               . #x0B2C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER BHA")
+    (ucs               . #x0B2D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER MA")
+    (ucs               . #x0B2E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER YA")
+    (ucs               . #x0B2F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER RA")
+    (ucs               . #x0B30)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER LA")
+    (ucs               . #x0B32)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER LLA")
+    (ucs               . #x0B33)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER SHA")
+    (ucs               . #x0B36)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER SSA")
+    (ucs               . #x0B37)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER SA")
+    (ucs               . #x0B38)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER HA")
+    (ucs               . #x0B39)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA SIGN NUKTA")
+    (ucs               . #x0B3C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA SIGN AVAGRAHA")
+    (ucs               . #x0B3D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN AA")
+    (ucs               . #x0B3E)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN I")
+    (ucs               . #x0B3F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN II")
+    (ucs               . #x0B40)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN U")
+    (ucs               . #x0B41)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN UU")
+    (ucs               . #x0B42)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN VOCALIC R")
+    (ucs               . #x0B43)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN E")
+    (ucs               . #x0B47)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN AI")
+    (ucs               . #x0B48)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0B47 #x0B56)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN O")
+    (ucs               . #x0B4B)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0B47 #x0B3E)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA VOWEL SIGN AU")
+    (ucs               . #x0B4C)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0B47 #x0B57)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA SIGN VIRAMA")
+    (ucs               . #x0B4D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA AI LENGTH MARK")
+    (ucs               . #x0B56)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA AU LENGTH MARK")
+    (ucs               . #x0B57)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER RRA")
+    (ucs               . #x0B5C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0B21 #x0B3C)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER RHA")
+    (ucs               . #x0B5D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0B22 #x0B3C)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER YYA")
+    (ucs               . #x0B5F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER VOCALIC RR")
+    (ucs               . #x0B60)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA LETTER VOCALIC LL")
+    (ucs               . #x0B61)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT ZERO")
+    (ucs               . #x0B66)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT ONE")
+    (ucs               . #x0B67)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT TWO")
+    (ucs               . #x0B68)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT THREE")
+    (ucs               . #x0B69)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT FOUR")
+    (ucs               . #x0B6A)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT FIVE")
+    (ucs               . #x0B6B)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT SIX")
+    (ucs               . #x0B6C)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT SEVEN")
+    (ucs               . #x0B6D)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT EIGHT")
+    (ucs               . #x0B6E)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA DIGIT NINE")
+    (ucs               . #x0B6F)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORIYA ISSHAR")
+    (ucs               . #x0B70)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00B80-Tamil.el b/lisp/utf-2000/u00B80-Tamil.el
new file mode 100644 (file)
index 0000000..67408d9
--- /dev/null
@@ -0,0 +1,461 @@
+(define-char
+  '((name              . "TAMIL SIGN ANUSVARA")
+    (ucs               . #x0B82)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL SIGN VISARGA")
+    (ucs               . #x0B83)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER A")
+    (ucs               . #x0B85)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER AA")
+    (ucs               . #x0B86)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER I")
+    (ucs               . #x0B87)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER II")
+    (ucs               . #x0B88)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER U")
+    (ucs               . #x0B89)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER UU")
+    (ucs               . #x0B8A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER E")
+    (ucs               . #x0B8E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER EE")
+    (ucs               . #x0B8F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER AI")
+    (ucs               . #x0B90)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER O")
+    (ucs               . #x0B92)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER OO")
+    (ucs               . #x0B93)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER AU")
+    (ucs               . #x0B94)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0B92 #x0BD7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER KA")
+    (ucs               . #x0B95)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER NGA")
+    (ucs               . #x0B99)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER CA")
+    (ucs               . #x0B9A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER JA")
+    (ucs               . #x0B9C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER NYA")
+    (ucs               . #x0B9E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER TTA")
+    (ucs               . #x0B9F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER NNA")
+    (ucs               . #x0BA3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER TA")
+    (ucs               . #x0BA4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER NA")
+    (ucs               . #x0BA8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER NNNA")
+    (ucs               . #x0BA9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER PA")
+    (ucs               . #x0BAA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER MA")
+    (ucs               . #x0BAE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER YA")
+    (ucs               . #x0BAF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER RA")
+    (ucs               . #x0BB0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER RRA")
+    (ucs               . #x0BB1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER LA")
+    (ucs               . #x0BB2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER LLA")
+    (ucs               . #x0BB3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER LLLA")
+    (ucs               . #x0BB4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER VA")
+    (ucs               . #x0BB5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER SSA")
+    (ucs               . #x0BB7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER SA")
+    (ucs               . #x0BB8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL LETTER HA")
+    (ucs               . #x0BB9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN AA")
+    (ucs               . #x0BBE)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN I")
+    (ucs               . #x0BBF)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN II")
+    (ucs               . #x0BC0)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN U")
+    (ucs               . #x0BC1)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN UU")
+    (ucs               . #x0BC2)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN E")
+    (ucs               . #x0BC6)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN EE")
+    (ucs               . #x0BC7)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN AI")
+    (ucs               . #x0BC8)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN O")
+    (ucs               . #x0BCA)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0BC6 #x0BBE)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN OO")
+    (ucs               . #x0BCB)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0BC7 #x0BBE)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL VOWEL SIGN AU")
+    (ucs               . #x0BCC)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0BC6 #x0BD7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL SIGN VIRAMA")
+    (ucs               . #x0BCD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL AU LENGTH MARK")
+    (ucs               . #x0BD7)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL DIGIT ONE")
+    (ucs               . #x0BE7)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL DIGIT TWO")
+    (ucs               . #x0BE8)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL DIGIT THREE")
+    (ucs               . #x0BE9)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL DIGIT FOUR")
+    (ucs               . #x0BEA)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL DIGIT FIVE")
+    (ucs               . #x0BEB)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL DIGIT SIX")
+    (ucs               . #x0BEC)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL DIGIT SEVEN")
+    (ucs               . #x0BED)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL DIGIT EIGHT")
+    (ucs               . #x0BEE)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL DIGIT NINE")
+    (ucs               . #x0BEF)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL NUMBER TEN")
+    (ucs               . #x0BF0)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (numeric-value     . 10)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL NUMBER ONE HUNDRED")
+    (ucs               . #x0BF1)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (numeric-value     . 100)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAMIL NUMBER ONE THOUSAND")
+    (ucs               . #x0BF2)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (numeric-value     . 1000)
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00C00-Telugu.el b/lisp/utf-2000/u00C00-Telugu.el
new file mode 100644 (file)
index 0000000..04e8102
--- /dev/null
@@ -0,0 +1,591 @@
+(define-char
+  '((name              . "TELUGU SIGN CANDRABINDU")
+    (ucs               . #x0C01)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU SIGN ANUSVARA")
+    (ucs               . #x0C02)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU SIGN VISARGA")
+    (ucs               . #x0C03)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER A")
+    (ucs               . #x0C05)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER AA")
+    (ucs               . #x0C06)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER I")
+    (ucs               . #x0C07)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER II")
+    (ucs               . #x0C08)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER U")
+    (ucs               . #x0C09)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER UU")
+    (ucs               . #x0C0A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER VOCALIC R")
+    (ucs               . #x0C0B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER VOCALIC L")
+    (ucs               . #x0C0C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER E")
+    (ucs               . #x0C0E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER EE")
+    (ucs               . #x0C0F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER AI")
+    (ucs               . #x0C10)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER O")
+    (ucs               . #x0C12)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER OO")
+    (ucs               . #x0C13)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER AU")
+    (ucs               . #x0C14)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER KA")
+    (ucs               . #x0C15)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER KHA")
+    (ucs               . #x0C16)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER GA")
+    (ucs               . #x0C17)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER GHA")
+    (ucs               . #x0C18)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER NGA")
+    (ucs               . #x0C19)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER CA")
+    (ucs               . #x0C1A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER CHA")
+    (ucs               . #x0C1B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER JA")
+    (ucs               . #x0C1C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER JHA")
+    (ucs               . #x0C1D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER NYA")
+    (ucs               . #x0C1E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER TTA")
+    (ucs               . #x0C1F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER TTHA")
+    (ucs               . #x0C20)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER DDA")
+    (ucs               . #x0C21)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER DDHA")
+    (ucs               . #x0C22)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER NNA")
+    (ucs               . #x0C23)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER TA")
+    (ucs               . #x0C24)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER THA")
+    (ucs               . #x0C25)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER DA")
+    (ucs               . #x0C26)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER DHA")
+    (ucs               . #x0C27)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER NA")
+    (ucs               . #x0C28)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER PA")
+    (ucs               . #x0C2A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER PHA")
+    (ucs               . #x0C2B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER BA")
+    (ucs               . #x0C2C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER BHA")
+    (ucs               . #x0C2D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER MA")
+    (ucs               . #x0C2E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER YA")
+    (ucs               . #x0C2F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER RA")
+    (ucs               . #x0C30)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER RRA")
+    (ucs               . #x0C31)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER LA")
+    (ucs               . #x0C32)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER LLA")
+    (ucs               . #x0C33)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER VA")
+    (ucs               . #x0C35)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER SHA")
+    (ucs               . #x0C36)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER SSA")
+    (ucs               . #x0C37)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER SA")
+    (ucs               . #x0C38)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER HA")
+    (ucs               . #x0C39)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN AA")
+    (ucs               . #x0C3E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN I")
+    (ucs               . #x0C3F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN II")
+    (ucs               . #x0C40)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN U")
+    (ucs               . #x0C41)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN UU")
+    (ucs               . #x0C42)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN VOCALIC R")
+    (ucs               . #x0C43)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN VOCALIC RR")
+    (ucs               . #x0C44)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN E")
+    (ucs               . #x0C46)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN EE")
+    (ucs               . #x0C47)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN AI")
+    (ucs               . #x0C48)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0C46 #x0C56)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN O")
+    (ucs               . #x0C4A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN OO")
+    (ucs               . #x0C4B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU VOWEL SIGN AU")
+    (ucs               . #x0C4C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU SIGN VIRAMA")
+    (ucs               . #x0C4D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LENGTH MARK")
+    (ucs               . #x0C55)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU AI LENGTH MARK")
+    (ucs               . #x0C56)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER VOCALIC RR")
+    (ucs               . #x0C60)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU LETTER VOCALIC LL")
+    (ucs               . #x0C61)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT ZERO")
+    (ucs               . #x0C66)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT ONE")
+    (ucs               . #x0C67)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT TWO")
+    (ucs               . #x0C68)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT THREE")
+    (ucs               . #x0C69)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT FOUR")
+    (ucs               . #x0C6A)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT FIVE")
+    (ucs               . #x0C6B)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT SIX")
+    (ucs               . #x0C6C)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT SEVEN")
+    (ucs               . #x0C6D)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT EIGHT")
+    (ucs               . #x0C6E)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELUGU DIGIT NINE")
+    (ucs               . #x0C6F)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00C80-Kannada.el b/lisp/utf-2000/u00C80-Kannada.el
new file mode 100644 (file)
index 0000000..914051b
--- /dev/null
@@ -0,0 +1,595 @@
+(define-char
+  '((name              . "KANNADA SIGN ANUSVARA")
+    (ucs               . #x0C82)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA SIGN VISARGA")
+    (ucs               . #x0C83)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER A")
+    (ucs               . #x0C85)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER AA")
+    (ucs               . #x0C86)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER I")
+    (ucs               . #x0C87)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER II")
+    (ucs               . #x0C88)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER U")
+    (ucs               . #x0C89)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER UU")
+    (ucs               . #x0C8A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER VOCALIC R")
+    (ucs               . #x0C8B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER VOCALIC L")
+    (ucs               . #x0C8C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER E")
+    (ucs               . #x0C8E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER EE")
+    (ucs               . #x0C8F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER AI")
+    (ucs               . #x0C90)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER O")
+    (ucs               . #x0C92)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER OO")
+    (ucs               . #x0C93)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER AU")
+    (ucs               . #x0C94)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER KA")
+    (ucs               . #x0C95)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER KHA")
+    (ucs               . #x0C96)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER GA")
+    (ucs               . #x0C97)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER GHA")
+    (ucs               . #x0C98)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER NGA")
+    (ucs               . #x0C99)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER CA")
+    (ucs               . #x0C9A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER CHA")
+    (ucs               . #x0C9B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER JA")
+    (ucs               . #x0C9C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER JHA")
+    (ucs               . #x0C9D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER NYA")
+    (ucs               . #x0C9E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER TTA")
+    (ucs               . #x0C9F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER TTHA")
+    (ucs               . #x0CA0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER DDA")
+    (ucs               . #x0CA1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER DDHA")
+    (ucs               . #x0CA2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER NNA")
+    (ucs               . #x0CA3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER TA")
+    (ucs               . #x0CA4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER THA")
+    (ucs               . #x0CA5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER DA")
+    (ucs               . #x0CA6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER DHA")
+    (ucs               . #x0CA7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER NA")
+    (ucs               . #x0CA8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER PA")
+    (ucs               . #x0CAA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER PHA")
+    (ucs               . #x0CAB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER BA")
+    (ucs               . #x0CAC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER BHA")
+    (ucs               . #x0CAD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER MA")
+    (ucs               . #x0CAE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER YA")
+    (ucs               . #x0CAF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER RA")
+    (ucs               . #x0CB0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER RRA")
+    (ucs               . #x0CB1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER LA")
+    (ucs               . #x0CB2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER LLA")
+    (ucs               . #x0CB3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER VA")
+    (ucs               . #x0CB5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER SHA")
+    (ucs               . #x0CB6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER SSA")
+    (ucs               . #x0CB7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER SA")
+    (ucs               . #x0CB8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER HA")
+    (ucs               . #x0CB9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN AA")
+    (ucs               . #x0CBE)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN I")
+    (ucs               . #x0CBF)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN II")
+    (ucs               . #x0CC0)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0CBF #x0CD5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN U")
+    (ucs               . #x0CC1)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN UU")
+    (ucs               . #x0CC2)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN VOCALIC R")
+    (ucs               . #x0CC3)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN VOCALIC RR")
+    (ucs               . #x0CC4)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN E")
+    (ucs               . #x0CC6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN EE")
+    (ucs               . #x0CC7)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0CC6 #x0CD5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN AI")
+    (ucs               . #x0CC8)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0CC6 #x0CD6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN O")
+    (ucs               . #x0CCA)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0CC6 #x0CC2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN OO")
+    (ucs               . #x0CCB)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0CCA #x0CD5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA VOWEL SIGN AU")
+    (ucs               . #x0CCC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA SIGN VIRAMA")
+    (ucs               . #x0CCD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LENGTH MARK")
+    (ucs               . #x0CD5)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA AI LENGTH MARK")
+    (ucs               . #x0CD6)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER FA")
+    (ucs               . #x0CDE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER VOCALIC RR")
+    (ucs               . #x0CE0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA LETTER VOCALIC LL")
+    (ucs               . #x0CE1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT ZERO")
+    (ucs               . #x0CE6)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT ONE")
+    (ucs               . #x0CE7)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT TWO")
+    (ucs               . #x0CE8)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT THREE")
+    (ucs               . #x0CE9)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT FOUR")
+    (ucs               . #x0CEA)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT FIVE")
+    (ucs               . #x0CEB)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT SIX")
+    (ucs               . #x0CEC)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT SEVEN")
+    (ucs               . #x0CED)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT EIGHT")
+    (ucs               . #x0CEE)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KANNADA DIGIT NINE")
+    (ucs               . #x0CEF)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00D00-Malayalam.el b/lisp/utf-2000/u00D00-Malayalam.el
new file mode 100644 (file)
index 0000000..dd6dfc6
--- /dev/null
@@ -0,0 +1,579 @@
+(define-char
+  '((name              . "MALAYALAM SIGN ANUSVARA")
+    (ucs               . #x0D02)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM SIGN VISARGA")
+    (ucs               . #x0D03)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER A")
+    (ucs               . #x0D05)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER AA")
+    (ucs               . #x0D06)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER I")
+    (ucs               . #x0D07)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER II")
+    (ucs               . #x0D08)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER U")
+    (ucs               . #x0D09)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER UU")
+    (ucs               . #x0D0A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER VOCALIC R")
+    (ucs               . #x0D0B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER VOCALIC L")
+    (ucs               . #x0D0C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER E")
+    (ucs               . #x0D0E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER EE")
+    (ucs               . #x0D0F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER AI")
+    (ucs               . #x0D10)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER O")
+    (ucs               . #x0D12)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER OO")
+    (ucs               . #x0D13)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER AU")
+    (ucs               . #x0D14)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER KA")
+    (ucs               . #x0D15)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER KHA")
+    (ucs               . #x0D16)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER GA")
+    (ucs               . #x0D17)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER GHA")
+    (ucs               . #x0D18)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER NGA")
+    (ucs               . #x0D19)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER CA")
+    (ucs               . #x0D1A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER CHA")
+    (ucs               . #x0D1B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER JA")
+    (ucs               . #x0D1C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER JHA")
+    (ucs               . #x0D1D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER NYA")
+    (ucs               . #x0D1E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER TTA")
+    (ucs               . #x0D1F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER TTHA")
+    (ucs               . #x0D20)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER DDA")
+    (ucs               . #x0D21)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER DDHA")
+    (ucs               . #x0D22)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER NNA")
+    (ucs               . #x0D23)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER TA")
+    (ucs               . #x0D24)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER THA")
+    (ucs               . #x0D25)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER DA")
+    (ucs               . #x0D26)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER DHA")
+    (ucs               . #x0D27)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER NA")
+    (ucs               . #x0D28)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER PA")
+    (ucs               . #x0D2A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER PHA")
+    (ucs               . #x0D2B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER BA")
+    (ucs               . #x0D2C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER BHA")
+    (ucs               . #x0D2D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER MA")
+    (ucs               . #x0D2E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER YA")
+    (ucs               . #x0D2F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER RA")
+    (ucs               . #x0D30)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER RRA")
+    (ucs               . #x0D31)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER LA")
+    (ucs               . #x0D32)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER LLA")
+    (ucs               . #x0D33)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER LLLA")
+    (ucs               . #x0D34)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER VA")
+    (ucs               . #x0D35)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER SHA")
+    (ucs               . #x0D36)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER SSA")
+    (ucs               . #x0D37)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER SA")
+    (ucs               . #x0D38)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER HA")
+    (ucs               . #x0D39)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN AA")
+    (ucs               . #x0D3E)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN I")
+    (ucs               . #x0D3F)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN II")
+    (ucs               . #x0D40)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN U")
+    (ucs               . #x0D41)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN UU")
+    (ucs               . #x0D42)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN VOCALIC R")
+    (ucs               . #x0D43)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN E")
+    (ucs               . #x0D46)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN EE")
+    (ucs               . #x0D47)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN AI")
+    (ucs               . #x0D48)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN O")
+    (ucs               . #x0D4A)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0D46 #x0D3E)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN OO")
+    (ucs               . #x0D4B)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0D47 #x0D3E)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM VOWEL SIGN AU")
+    (ucs               . #x0D4C)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0D46 #x0D57)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM SIGN VIRAMA")
+    (ucs               . #x0D4D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM AU LENGTH MARK")
+    (ucs               . #x0D57)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER VOCALIC RR")
+    (ucs               . #x0D60)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM LETTER VOCALIC LL")
+    (ucs               . #x0D61)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT ZERO")
+    (ucs               . #x0D66)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT ONE")
+    (ucs               . #x0D67)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT TWO")
+    (ucs               . #x0D68)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT THREE")
+    (ucs               . #x0D69)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT FOUR")
+    (ucs               . #x0D6A)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT FIVE")
+    (ucs               . #x0D6B)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT SIX")
+    (ucs               . #x0D6C)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT SEVEN")
+    (ucs               . #x0D6D)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT EIGHT")
+    (ucs               . #x0D6E)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALAYALAM DIGIT NINE")
+    (ucs               . #x0D6F)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00D80-Sinhala.el b/lisp/utf-2000/u00D80-Sinhala.el
new file mode 100644 (file)
index 0000000..55e6494
--- /dev/null
@@ -0,0 +1,564 @@
+(define-char
+  '((name              . "SINHALA SIGN ANUSVARAYA")
+    (ucs               . #x0D82)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA SIGN VISARGAYA")
+    (ucs               . #x0D83)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER AYANNA")
+    (ucs               . #x0D85)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER AAYANNA")
+    (ucs               . #x0D86)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER AEYANNA")
+    (ucs               . #x0D87)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER AEEYANNA")
+    (ucs               . #x0D88)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER IYANNA")
+    (ucs               . #x0D89)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER IIYANNA")
+    (ucs               . #x0D8A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER UYANNA")
+    (ucs               . #x0D8B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER UUYANNA")
+    (ucs               . #x0D8C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER IRUYANNA")
+    (ucs               . #x0D8D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER IRUUYANNA")
+    (ucs               . #x0D8E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ILUYANNA")
+    (ucs               . #x0D8F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ILUUYANNA")
+    (ucs               . #x0D90)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER EYANNA")
+    (ucs               . #x0D91)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER EEYANNA")
+    (ucs               . #x0D92)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER AIYANNA")
+    (ucs               . #x0D93)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER OYANNA")
+    (ucs               . #x0D94)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER OOYANNA")
+    (ucs               . #x0D95)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER AUYANNA")
+    (ucs               . #x0D96)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA KAYANNA")
+    (ucs               . #x0D9A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA KAYANNA")
+    (ucs               . #x0D9B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA GAYANNA")
+    (ucs               . #x0D9C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA GAYANNA")
+    (ucs               . #x0D9D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER KANTAJA NAASIKYAYA")
+    (ucs               . #x0D9E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER SANYAKA GAYANNA")
+    (ucs               . #x0D9F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA CAYANNA")
+    (ucs               . #x0DA0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA CAYANNA")
+    (ucs               . #x0DA1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA JAYANNA")
+    (ucs               . #x0DA2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA JAYANNA")
+    (ucs               . #x0DA3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER TAALUJA NAASIKYAYA")
+    (ucs               . #x0DA4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA")
+    (ucs               . #x0DA5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER SANYAKA JAYANNA")
+    (ucs               . #x0DA6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA TTAYANNA")
+    (ucs               . #x0DA7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA TTAYANNA")
+    (ucs               . #x0DA8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA DDAYANNA")
+    (ucs               . #x0DA9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA DDAYANNA")
+    (ucs               . #x0DAA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MUURDHAJA NAYANNA")
+    (ucs               . #x0DAB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER SANYAKA DDAYANNA")
+    (ucs               . #x0DAC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA TAYANNA")
+    (ucs               . #x0DAD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA TAYANNA")
+    (ucs               . #x0DAE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA DAYANNA")
+    (ucs               . #x0DAF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA DAYANNA")
+    (ucs               . #x0DB0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER DANTAJA NAYANNA")
+    (ucs               . #x0DB1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER SANYAKA DAYANNA")
+    (ucs               . #x0DB3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA PAYANNA")
+    (ucs               . #x0DB4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA PAYANNA")
+    (ucs               . #x0DB5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER ALPAPRAANA BAYANNA")
+    (ucs               . #x0DB6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAHAAPRAANA BAYANNA")
+    (ucs               . #x0DB7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MAYANNA")
+    (ucs               . #x0DB8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER AMBA BAYANNA")
+    (ucs               . #x0DB9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER YAYANNA")
+    (ucs               . #x0DBA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER RAYANNA")
+    (ucs               . #x0DBB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER DANTAJA LAYANNA")
+    (ucs               . #x0DBD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER VAYANNA")
+    (ucs               . #x0DC0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER TAALUJA SAYANNA")
+    (ucs               . #x0DC1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MUURDHAJA SAYANNA")
+    (ucs               . #x0DC2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER DANTAJA SAYANNA")
+    (ucs               . #x0DC3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER HAYANNA")
+    (ucs               . #x0DC4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER MUURDHAJA LAYANNA")
+    (ucs               . #x0DC5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA LETTER FAYANNA")
+    (ucs               . #x0DC6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA SIGN AL-LAKUNA")
+    (ucs               . #x0DCA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN AELA-PILLA")
+    (ucs               . #x0DCF)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN KETTI AEDA-PILLA")
+    (ucs               . #x0DD0)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN DIGA AEDA-PILLA")
+    (ucs               . #x0DD1)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN KETTI IS-PILLA")
+    (ucs               . #x0DD2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN DIGA IS-PILLA")
+    (ucs               . #x0DD3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN KETTI PAA-PILLA")
+    (ucs               . #x0DD4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN DIGA PAA-PILLA")
+    (ucs               . #x0DD6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN GAETTA-PILLA")
+    (ucs               . #x0DD8)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN KOMBUVA")
+    (ucs               . #x0DD9)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN DIGA KOMBUVA")
+    (ucs               . #x0DDA)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0DD9 #x0DCA)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN KOMBU DEKA")
+    (ucs               . #x0DDB)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA")
+    (ucs               . #x0DDC)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0DD9 #x0DCF)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA")
+    (ucs               . #x0DDD)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0DDC #x0DCA)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA")
+    (ucs               . #x0DDE)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0DD9 #x0DDF)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN GAYANUKITTA")
+    (ucs               . #x0DDF)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN DIGA GAETTA-PILLA")
+    (ucs               . #x0DF2)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA VOWEL SIGN DIGA GAYANUKITTA")
+    (ucs               . #x0DF3)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINHALA PUNCTUATION KUNDDALIYA")
+    (ucs               . #x0DF4)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u00E00-Thai.el b/lisp/utf-2000/u00E00-Thai.el
new file mode 100644 (file)
index 0000000..d222433
--- /dev/null
@@ -0,0 +1,735 @@
+(define-char
+  '((name              . "THAI CHARACTER KO KAI")
+    (ucs               . #x0E01)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x21)   ; \e-T¡\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER KHO KHAI")
+    (ucs               . #x0E02)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x22)   ; \e-T¢\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER KHO KHUAT")
+    (ucs               . #x0E03)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x23)   ; \e-T£\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER KHO KHWAI")
+    (ucs               . #x0E04)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x24)   ; \e-T¤\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER KHO KHON")
+    (ucs               . #x0E05)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x25)   ; \e-T¥\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER KHO RAKHANG")
+    (ucs               . #x0E06)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x26)   ; \e-T¦\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER NGO NGU")
+    (ucs               . #x0E07)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x27)   ; \e-T§\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER CHO CHAN")
+    (ucs               . #x0E08)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x28)   ; \e-T¨\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER CHO CHING")
+    (ucs               . #x0E09)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x29)   ; \e-T©\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER CHO CHANG")
+    (ucs               . #x0E0A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x2A)   ; \e-Tª\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SO SO")
+    (ucs               . #x0E0B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x2B)   ; \e-T«\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER CHO CHOE")
+    (ucs               . #x0E0C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x2C)   ; \e-T¬\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER YO YING")
+    (ucs               . #x0E0D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x2D)   ; \e-T­\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER DO CHADA")
+    (ucs               . #x0E0E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x2E)   ; \e-T®\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER TO PATAK")
+    (ucs               . #x0E0F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x2F)   ; \e-T¯\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER THO THAN")
+    (ucs               . #x0E10)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x30)   ; \e-T°\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER THO NANGMONTHO")
+    (ucs               . #x0E11)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x31)   ; \e-T±\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER THO PHUTHAO")
+    (ucs               . #x0E12)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x32)   ; \e-T²\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER NO NEN")
+    (ucs               . #x0E13)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x33)   ; \e-T³\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER DO DEK")
+    (ucs               . #x0E14)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x34)   ; \e-T´\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER TO TAO")
+    (ucs               . #x0E15)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x35)   ; \e-Tµ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER THO THUNG")
+    (ucs               . #x0E16)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x36)   ; \e-T¶\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER THO THAHAN")
+    (ucs               . #x0E17)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x37)   ; \e-T·\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER THO THONG")
+    (ucs               . #x0E18)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x38)   ; \e-T¸\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER NO NU")
+    (ucs               . #x0E19)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x39)   ; \e-T¹\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER BO BAIMAI")
+    (ucs               . #x0E1A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x3A)   ; \e-Tº\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER PO PLA")
+    (ucs               . #x0E1B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x3B)   ; \e-T»\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER PHO PHUNG")
+    (ucs               . #x0E1C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x3C)   ; \e-T¼\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER FO FA")
+    (ucs               . #x0E1D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x3D)   ; \e-T½\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER PHO PHAN")
+    (ucs               . #x0E1E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x3E)   ; \e-T¾\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER FO FAN")
+    (ucs               . #x0E1F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x3F)   ; \e-T¿\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER PHO SAMPHAO")
+    (ucs               . #x0E20)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x40)   ; \e-TÀ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER MO MA")
+    (ucs               . #x0E21)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x41)   ; \e-TÁ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER YO YAK")
+    (ucs               . #x0E22)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x42)   ; \e-TÂ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER RO RUA")
+    (ucs               . #x0E23)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x43)   ; \e-TÃ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER RU")
+    (ucs               . #x0E24)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x44)   ; \e-TÄ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER LO LING")
+    (ucs               . #x0E25)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x45)   ; \e-TÅ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER LU")
+    (ucs               . #x0E26)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x46)   ; \e-TÆ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER WO WAEN")
+    (ucs               . #x0E27)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x47)   ; \e-TÇ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SO SALA")
+    (ucs               . #x0E28)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x48)   ; \e-TÈ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SO RUSI")
+    (ucs               . #x0E29)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x49)   ; \e-TÉ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SO SUA")
+    (ucs               . #x0E2A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x4A)   ; \e-TÊ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER HO HIP")
+    (ucs               . #x0E2B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x4B)   ; \e-TË\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER LO CHULA")
+    (ucs               . #x0E2C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x4C)   ; \e-TÌ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER O ANG")
+    (ucs               . #x0E2D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x4D)   ; \e-TÍ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER HO NOKHUK")
+    (ucs               . #x0E2E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x4E)   ; \e-TÎ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER PAIYANNOI")
+    (ucs               . #x0E2F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "paiyan noi")
+    (thai-tis620       #x4F)   ; \e-TÏ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA A")
+    (ucs               . #x0E30)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x50)   ; \e-TÐ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER MAI HAN-AKAT")
+    (ucs               . #x0E31)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x51)   ; \e-TÑ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA AA")
+    (ucs               . #x0E32)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x52)   ; \e-TÒ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA AM")
+    (ucs               . #x0E33)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0E4D #x0E32)
+    (thai-tis620       #x53)   ; \e-TÓ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA I")
+    (ucs               . #x0E34)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x54)   ; \e-TÔ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA II")
+    (ucs               . #x0E35)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x55)   ; \e-TÕ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA UE")
+    (ucs               . #x0E36)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x56)   ; \e-TÖ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA UEE")
+    (ucs               . #x0E37)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "sara uue")
+    (thai-tis620       #x57)   ; \e-T×\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA U")
+    (ucs               . #x0E38)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x58)   ; \e-TØ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA UU")
+    (ucs               . #x0E39)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x59)   ; \e-TÙ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER PHINTHU")
+    (ucs               . #x0E3A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x5A)   ; \e-TÚ\e-A
+    ))
+(define-char
+  '((name              . "THAI CURRENCY SYMBOL BAHT")
+    (ucs               . #x0E3F)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (thai-tis620       #x5F)   ; \e-Tß\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA E")
+    (ucs               . #x0E40)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x60)   ; \e-Tà\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA AE")
+    (ucs               . #x0E41)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x61)   ; \e-Tá\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA O")
+    (ucs               . #x0E42)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x62)   ; \e-Tâ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA AI MAIMUAN")
+    (ucs               . #x0E43)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "sara ai mai muan")
+    (thai-tis620       #x63)   ; \e-Tã\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER SARA AI MAIMALAI")
+    (ucs               . #x0E44)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "sara ai mai malai")
+    (thai-tis620       #x64)   ; \e-Tä\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER LAKKHANGYAO")
+    (ucs               . #x0E45)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "lakkhang yao")
+    (thai-tis620       #x65)   ; \e-Tå\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER MAIYAMOK")
+    (ucs               . #x0E46)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "mai yamok")
+    (thai-tis620       #x66)   ; \e-Tæ\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER MAITAIKHU")
+    (ucs               . #x0E47)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "mai taikhu")
+    (thai-tis620       #x67)   ; \e-Tç\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER MAI EK")
+    (ucs               . #x0E48)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x68)   ; \e-Tè\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER MAI THO")
+    (ucs               . #x0E49)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x69)   ; \e-Té\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER MAI TRI")
+    (ucs               . #x0E4A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x6A)   ; \e-Tê\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER MAI CHATTAWA")
+    (ucs               . #x0E4B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x6B)   ; \e-Të\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER THANTHAKHAT")
+    (ucs               . #x0E4C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x6C)   ; \e-Tì\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER NIKHAHIT")
+    (ucs               . #x0E4D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "nikkhahit")
+    (thai-tis620       #x6D)   ; \e-Tí\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER YAMAKKAN")
+    (ucs               . #x0E4E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (thai-tis620       #x6E)   ; \e-Tî\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER FONGMAN")
+    (ucs               . #x0E4F)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x6F)   ; \e-Tï\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT ZERO")
+    (ucs               . #x0E50)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 0)
+    (digit-value        . 0)
+    (numeric-value      . 0)
+    (thai-tis620       #x70)   ; \e-Tð\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT ONE")
+    (ucs               . #x0E51)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    (thai-tis620       #x71)   ; \e-Tñ\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT TWO")
+    (ucs               . #x0E52)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    (thai-tis620       #x72)   ; \e-Tò\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT THREE")
+    (ucs               . #x0E53)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    (thai-tis620       #x73)   ; \e-Tó\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT FOUR")
+    (ucs               . #x0E54)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    (thai-tis620       #x74)   ; \e-Tô\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT FIVE")
+    (ucs               . #x0E55)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    (thai-tis620       #x75)   ; \e-Tõ\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT SIX")
+    (ucs               . #x0E56)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    (thai-tis620       #x76)   ; \e-Tö\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT SEVEN")
+    (ucs               . #x0E57)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    (thai-tis620       #x77)   ; \e-T÷\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT EIGHT")
+    (ucs               . #x0E58)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    (thai-tis620       #x78)   ; \e-Tø\e-A
+    ))
+(define-char
+  '((name              . "THAI DIGIT NINE")
+    (ucs               . #x0E59)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    (thai-tis620       #x79)   ; \e-Tù\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER ANGKHANKHU")
+    (ucs               . #x0E5A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x7A)   ; \e-Tú\e-A
+    ))
+(define-char
+  '((name              . "THAI CHARACTER KHOMUT")
+    (ucs               . #x0E5B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (thai-tis620       #x7B)   ; \e-Tû\e-A
+    ))
diff --git a/lisp/utf-2000/u00E80-Lao.el b/lisp/utf-2000/u00E80-Lao.el
new file mode 100644 (file)
index 0000000..b06a513
--- /dev/null
@@ -0,0 +1,553 @@
+(define-char
+  '((name              . "LAO LETTER KO")
+    (ucs               . #x0E81)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x21)   ; \e)1¡\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER KHO SUNG")
+    (ucs               . #x0E82)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x22)   ; \e)1¢\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER KHO TAM")
+    (ucs               . #x0E84)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x24)   ; \e)1¤\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER NGO")
+    (ucs               . #x0E87)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x27)   ; \e)1§\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER CO")
+    (ucs               . #x0E88)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x28)   ; \e)1¨\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER SO TAM")
+    (ucs               . #x0E8A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x2A)   ; \e)1ª\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER NYO")
+    (ucs               . #x0E8D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x2D)   ; \e)1­\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER DO")
+    (ucs               . #x0E94)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x34)   ; \e)1´\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER TO")
+    (ucs               . #x0E95)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x35)   ; \e)1µ\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER THO SUNG")
+    (ucs               . #x0E96)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x36)   ; \e)1¶\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER THO TAM")
+    (ucs               . #x0E97)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x37)   ; \e)1·\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER NO")
+    (ucs               . #x0E99)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x39)   ; \e)1¹\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER BO")
+    (ucs               . #x0E9A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x3A)   ; \e)1º\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER PO")
+    (ucs               . #x0E9B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x3B)   ; \e)1»\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER PHO SUNG")
+    (ucs               . #x0E9C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x3C)   ; \e)1¼\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER FO TAM")
+    (ucs               . #x0E9D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x3D)   ; \e)1½\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER PHO TAM")
+    (ucs               . #x0E9E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x3E)   ; \e)1¾\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER FO SUNG")
+    (ucs               . #x0E9F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x3F)   ; \e)1¿\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER MO")
+    (ucs               . #x0EA1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x41)   ; \e)1Á\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER YO")
+    (ucs               . #x0EA2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x42)   ; \e)1Â\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER LO LING")
+    (ucs               . #x0EA3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x43)   ; \e)1Ã\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER LO LOOT")
+    (ucs               . #x0EA5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x45)   ; \e)1Å\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER WO")
+    (ucs               . #x0EA7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x47)   ; \e)1Ç\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER SO SUNG")
+    (ucs               . #x0EAA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x4A)   ; \e)1Ê\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER HO SUNG")
+    (ucs               . #x0EAB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x4B)   ; \e)1Ë\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER O")
+    (ucs               . #x0EAD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x4D)   ; \e)1Í\e-A
+    ))
+(define-char
+  '((name              . "LAO LETTER HO TAM")
+    (ucs               . #x0EAE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x4E)   ; \e)1Î\e-A
+    ))
+(define-char
+  '((name              . "LAO ELLIPSIS")
+    (ucs               . #x0EAF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x4F)   ; \e)1Ï\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN A")
+    (ucs               . #x0EB0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x50)   ; \e)1Ð\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN MAI KAN")
+    (ucs               . #x0EB1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x51)   ; \e)1Ñ\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN AA")
+    (ucs               . #x0EB2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x52)   ; \e)1Ò\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN AM")
+    (ucs               . #x0EB3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0ECD #x0EB2)
+    (lao               #x53)   ; \e)1Ó\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN I")
+    (ucs               . #x0EB4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x54)   ; \e)1Ô\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN II")
+    (ucs               . #x0EB5)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x55)   ; \e)1Õ\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN Y")
+    (ucs               . #x0EB6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x56)   ; \e)1Ö\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN YY")
+    (ucs               . #x0EB7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x57)   ; \e)1×\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN U")
+    (ucs               . #x0EB8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x58)   ; \e)1Ø\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN UU")
+    (ucs               . #x0EB9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x59)   ; \e)1Ù\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN MAI KON")
+    (ucs               . #x0EBB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x5B)   ; \e)1Û\e-A
+    ))
+(define-char
+  '((name              . "LAO SEMIVOWEL SIGN LO")
+    (ucs               . #x0EBC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x5C)   ; \e)1Ü\e-A
+    ))
+(define-char
+  '((name              . "LAO SEMIVOWEL SIGN NYO")
+    (ucs               . #x0EBD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x5D)   ; \e)1Ý\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN E")
+    (ucs               . #x0EC0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x60)   ; \e)1à\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN EI")
+    (ucs               . #x0EC1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x61)   ; \e)1á\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN O")
+    (ucs               . #x0EC2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x62)   ; \e)1â\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN AY")
+    (ucs               . #x0EC3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x63)   ; \e)1ã\e-A
+    ))
+(define-char
+  '((name              . "LAO VOWEL SIGN AI")
+    (ucs               . #x0EC4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x64)   ; \e)1ä\e-A
+    ))
+(define-char
+  '((name              . "LAO KO LA")
+    (ucs               . #x0EC6)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (lao               #x66)   ; \e)1æ\e-A
+    ))
+(define-char
+  '((name              . "LAO TONE MAI EK")
+    (ucs               . #x0EC8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x68)   ; \e)1è\e-A
+    ))
+(define-char
+  '((name              . "LAO TONE MAI THO")
+    (ucs               . #x0EC9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x69)   ; \e)1é\e-A
+    ))
+(define-char
+  '((name              . "LAO TONE MAI TI")
+    (ucs               . #x0ECA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x6A)   ; \e)1ê\e-A
+    ))
+(define-char
+  '((name              . "LAO TONE MAI CATAWA")
+    (ucs               . #x0ECB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x6B)   ; \e)1ë\e-A
+    ))
+(define-char
+  '((name              . "LAO CANCELLATION MARK")
+    (ucs               . #x0ECC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x6C)   ; \e)1ì\e-A
+    ))
+(define-char
+  '((name              . "LAO NIGGAHITA")
+    (ucs               . #x0ECD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (lao               #x6D)   ; \e)1í\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT ZERO")
+    (ucs               . #x0ED0)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 0)
+    (digit-value        . 0)
+    (numeric-value      . 0)
+    (lao               #x70)   ; \e)1ð\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT ONE")
+    (ucs               . #x0ED1)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    (lao               #x71)   ; \e)1ñ\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT TWO")
+    (ucs               . #x0ED2)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    (lao               #x72)   ; \e)1ò\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT THREE")
+    (ucs               . #x0ED3)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    (lao               #x73)   ; \e)1ó\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT FOUR")
+    (ucs               . #x0ED4)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    (lao               #x74)   ; \e)1ô\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT FIVE")
+    (ucs               . #x0ED5)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    (lao               #x75)   ; \e)1õ\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT SIX")
+    (ucs               . #x0ED6)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    (lao               #x76)   ; \e)1ö\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT SEVEN")
+    (ucs               . #x0ED7)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    (lao               #x77)   ; \e)1÷\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT EIGHT")
+    (ucs               . #x0ED8)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    (lao               #x78)   ; \e)1ø\e-A
+    ))
+(define-char
+  '((name              . "LAO DIGIT NINE")
+    (ucs               . #x0ED9)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    (lao               #x79)   ; \e)1ù\e-A
+    ))
+(define-char
+  '((name              . "LAO HO NO")
+    (ucs               . #x0EDC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0EAB #x0E99)
+    (lao               #x7C)   ; \e)1ü\e-A
+    ))
+(define-char
+  '((name              . "LAO HO MO")
+    (ucs               . #x0EDD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0EAB #x0EA1)
+    (lao               #x7D)   ; \e)1ý\e-A
+    ))
diff --git a/lisp/utf-2000/u00F00-Tibetan.el b/lisp/utf-2000/u00F00-Tibetan.el
new file mode 100644 (file)
index 0000000..8a0c803
--- /dev/null
@@ -0,0 +1,1475 @@
+(define-char
+  '((name              . "TIBETAN SYLLABLE OM")
+    (ucs               . #x0F00)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN MARK GTER YIG MGO TRUNCATED A")
+    (ucs               . #x0F01)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ter yik go a thung")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA")
+    (ucs               . #x0F02)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ter yik go wum nam chey ma")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA")
+    (ucs               . #x0F03)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ter yik go wum ter tsek ma")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK INITIAL YIG MGO MDUN MA")
+    (ucs               . #x0F04)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "yik go dun ma")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK CLOSING YIG MGO SGAB MA")
+    (ucs               . #x0F05)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "yik go kab ma")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK CARET YIG MGO PHUR SHAD MA")
+    (ucs               . #x0F06)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "yik go pur shey ma")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK YIG MGO TSHEG SHAD MA")
+    (ucs               . #x0F07)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "yik go tsek shey ma")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK SBRUL SHAD")
+    (ucs               . #x0F08)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "drul shey")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK BSKUR YIG MGO")
+    (ucs               . #x0F09)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "kur yik go")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK BKA- SHOG YIG MGO")
+    (ucs               . #x0F0A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ka sho yik go")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK INTERSYLLABIC TSHEG")
+    (ucs               . #x0F0B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "tsek")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK DELIMITER TSHEG BSTAR")
+    (ucs               . #x0F0C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   noBreak #x0F0B)
+    (mirrored          . nil)
+    (iso-10646-comment . "tsek tar")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK SHAD")
+    (ucs               . #x0F0D)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "shey")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK NYIS SHAD")
+    (ucs               . #x0F0E)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "nyi shey")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK TSHEG SHAD")
+    (ucs               . #x0F0F)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "tsek shey")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK NYIS TSHEG SHAD")
+    (ucs               . #x0F10)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "nyi tsek shey")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK RIN CHEN SPUNGS SHAD")
+    (ucs               . #x0F11)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "rinchen pung shey")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK RGYA GRAM SHAD")
+    (ucs               . #x0F12)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "gya tram shey")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN")
+    (ucs               . #x0F13)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "dzu ta me long chen")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK GTER TSHEG")
+    (ucs               . #x0F14)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ter tsek")
+    ))
+(define-char
+  '((name              . "TIBETAN LOGOTYPE SIGN CHAD RTAGS")
+    (ucs               . #x0F15)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "che ta")
+    ))
+(define-char
+  '((name              . "TIBETAN LOGOTYPE SIGN LHAG RTAGS")
+    (ucs               . #x0F16)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "hlak ta")
+    ))
+(define-char
+  '((name              . "TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS")
+    (ucs               . #x0F17)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "trachen char ta")
+    ))
+(define-char
+  '((name              . "TIBETAN ASTROLOGICAL SIGN -KHYUD PA")
+    (ucs               . #x0F18)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "kyu pa")
+    ))
+(define-char
+  '((name              . "TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS")
+    (ucs               . #x0F19)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "dong tsu")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN RDEL DKAR GCIG")
+    (ucs               . #x0F1A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "deka chig")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN RDEL DKAR GNYIS")
+    (ucs               . #x0F1B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "deka nyi")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN RDEL DKAR GSUM")
+    (ucs               . #x0F1C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "deka sum")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN RDEL NAG GCIG")
+    (ucs               . #x0F1D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "dena chig")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN RDEL NAG GNYIS")
+    (ucs               . #x0F1E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "dena nyi")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN RDEL DKAR RDEL NAG")
+    (ucs               . #x0F1F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "deka dena")
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT ZERO")
+    (ucs               . #x0F20)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT ONE")
+    (ucs               . #x0F21)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT TWO")
+    (ucs               . #x0F22)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT THREE")
+    (ucs               . #x0F23)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT FOUR")
+    (ucs               . #x0F24)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT FIVE")
+    (ucs               . #x0F25)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT SIX")
+    (ucs               . #x0F26)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT SEVEN")
+    (ucs               . #x0F27)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT EIGHT")
+    (ucs               . #x0F28)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT NINE")
+    (ucs               . #x0F29)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF ONE")
+    (ucs               . #x0F2A)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF TWO")
+    (ucs               . #x0F2B)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF THREE")
+    (ucs               . #x0F2C)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF FOUR")
+    (ucs               . #x0F2D)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF FIVE")
+    (ucs               . #x0F2E)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF SIX")
+    (ucs               . #x0F2F)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF SEVEN")
+    (ucs               . #x0F30)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF EIGHT")
+    (ucs               . #x0F31)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF NINE")
+    (ucs               . #x0F32)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN DIGIT HALF ZERO")
+    (ucs               . #x0F33)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN MARK BSDUS RTAGS")
+    (ucs               . #x0F34)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "du ta")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK NGAS BZUNG NYI ZLA")
+    (ucs               . #x0F35)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "nge zung nyi da")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN")
+    (ucs               . #x0F36)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "dzu ta shi mig chen")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK NGAS BZUNG SGOR RTAGS")
+    (ucs               . #x0F37)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "nge zung gor ta")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK CHE MGO")
+    (ucs               . #x0F38)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "che go")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK TSA -PHRU")
+    (ucs               . #x0F39)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "tsa tru")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK GUG RTAGS GYON")
+    (ucs               . #x0F3A)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "gug ta yun")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK GUG RTAGS GYAS")
+    (ucs               . #x0F3B)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "gug ta ye")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK ANG KHANG GYON")
+    (ucs               . #x0F3C)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "ang kang yun")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK ANG KHANG GYAS")
+    (ucs               . #x0F3D)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "ang kang ye")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN YAR TSHES")
+    (ucs               . #x0F3E)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "yar tse")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN MAR TSHES")
+    (ucs               . #x0F3F)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "mar tse")
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER KA")
+    (ucs               . #x0F40)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER KHA")
+    (ucs               . #x0F41)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER GA")
+    (ucs               . #x0F42)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER GHA")
+    (ucs               . #x0F43)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0F42 #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER NGA")
+    (ucs               . #x0F44)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER CA")
+    (ucs               . #x0F45)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER CHA")
+    (ucs               . #x0F46)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER JA")
+    (ucs               . #x0F47)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER NYA")
+    (ucs               . #x0F49)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER TTA")
+    (ucs               . #x0F4A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER TTHA")
+    (ucs               . #x0F4B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER DDA")
+    (ucs               . #x0F4C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER DDHA")
+    (ucs               . #x0F4D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0F4C #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER NNA")
+    (ucs               . #x0F4E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER TA")
+    (ucs               . #x0F4F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER THA")
+    (ucs               . #x0F50)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER DA")
+    (ucs               . #x0F51)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER DHA")
+    (ucs               . #x0F52)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0F51 #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER NA")
+    (ucs               . #x0F53)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER PA")
+    (ucs               . #x0F54)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER PHA")
+    (ucs               . #x0F55)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER BA")
+    (ucs               . #x0F56)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER BHA")
+    (ucs               . #x0F57)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0F56 #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER MA")
+    (ucs               . #x0F58)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER TSA")
+    (ucs               . #x0F59)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER TSHA")
+    (ucs               . #x0F5A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER DZA")
+    (ucs               . #x0F5B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER DZHA")
+    (ucs               . #x0F5C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0F5B #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER WA")
+    (ucs               . #x0F5D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER ZHA")
+    (ucs               . #x0F5E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER ZA")
+    (ucs               . #x0F5F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER -A")
+    (ucs               . #x0F60)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER YA")
+    (ucs               . #x0F61)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER RA")
+    (ucs               . #x0F62)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER LA")
+    (ucs               . #x0F63)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER SHA")
+    (ucs               . #x0F64)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER SSA")
+    (ucs               . #x0F65)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER SA")
+    (ucs               . #x0F66)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER HA")
+    (ucs               . #x0F67)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER A")
+    (ucs               . #x0F68)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER KSSA")
+    (ucs               . #x0F69)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0F40 #x0FB5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN LETTER FIXED-FORM RA")
+    (ucs               . #x0F6A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN AA")
+    (ucs               . #x0F71)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN I")
+    (ucs               . #x0F72)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN II")
+    (ucs               . #x0F73)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0F71 #x0F72)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN U")
+    (ucs               . #x0F74)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN UU")
+    (ucs               . #x0F75)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0F71 #x0F74)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN VOCALIC R")
+    (ucs               . #x0F76)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0FB2 #x0F80)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN VOCALIC RR")
+    (ucs               . #x0F77)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   compat #x0FB2 #x0F81)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN VOCALIC L")
+    (ucs               . #x0F78)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0FB3 #x0F80)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN VOCALIC LL")
+    (ucs               . #x0F79)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   compat #x0FB3 #x0F81)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN E")
+    (ucs               . #x0F7A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN EE")
+    (ucs               . #x0F7B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN O")
+    (ucs               . #x0F7C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN OO")
+    (ucs               . #x0F7D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN RJES SU NGA RO")
+    (ucs               . #x0F7E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "je su nga ro")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN RNAM BCAD")
+    (ucs               . #x0F7F)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "nam chey")
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN REVERSED I")
+    (ucs               . #x0F80)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN VOWEL SIGN REVERSED II")
+    (ucs               . #x0F81)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0F71 #x0F80)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN NYI ZLA NAA DA")
+    (ucs               . #x0F82)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "nyi da na da")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN SNA LDAN")
+    (ucs               . #x0F83)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "nan de")
+    ))
+(define-char
+  '((name              . "TIBETAN MARK HALANTA")
+    (ucs               . #x0F84)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN MARK PALUTA")
+    (ucs               . #x0F85)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN LCI RTAGS")
+    (ucs               . #x0F86)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "ji ta")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN YANG RTAGS")
+    (ucs               . #x0F87)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "yang ta")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN LCE TSA CAN")
+    (ucs               . #x0F88)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "che tsa chen")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN MCHU CAN")
+    (ucs               . #x0F89)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "chu chen")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN GRU CAN RGYINGS")
+    (ucs               . #x0F8A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "tru chen ging")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN GRU MED RGYINGS")
+    (ucs               . #x0F8B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "tru me ging")
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER KA")
+    (ucs               . #x0F90)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER KHA")
+    (ucs               . #x0F91)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER GA")
+    (ucs               . #x0F92)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER GHA")
+    (ucs               . #x0F93)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0F92 #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER NGA")
+    (ucs               . #x0F94)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER CA")
+    (ucs               . #x0F95)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER CHA")
+    (ucs               . #x0F96)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER JA")
+    (ucs               . #x0F97)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER NYA")
+    (ucs               . #x0F99)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER TTA")
+    (ucs               . #x0F9A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER TTHA")
+    (ucs               . #x0F9B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER DDA")
+    (ucs               . #x0F9C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER DDHA")
+    (ucs               . #x0F9D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0F9C #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER NNA")
+    (ucs               . #x0F9E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER TA")
+    (ucs               . #x0F9F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER THA")
+    (ucs               . #x0FA0)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER DA")
+    (ucs               . #x0FA1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER DHA")
+    (ucs               . #x0FA2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0FA1 #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER NA")
+    (ucs               . #x0FA3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER PA")
+    (ucs               . #x0FA4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER PHA")
+    (ucs               . #x0FA5)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER BA")
+    (ucs               . #x0FA6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER BHA")
+    (ucs               . #x0FA7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0FA6 #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER MA")
+    (ucs               . #x0FA8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER TSA")
+    (ucs               . #x0FA9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER TSHA")
+    (ucs               . #x0FAA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER DZA")
+    (ucs               . #x0FAB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER DZHA")
+    (ucs               . #x0FAC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0FAB #x0FB7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER WA")
+    (ucs               . #x0FAD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER ZHA")
+    (ucs               . #x0FAE)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER ZA")
+    (ucs               . #x0FAF)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER -A")
+    (ucs               . #x0FB0)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER YA")
+    (ucs               . #x0FB1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER RA")
+    (ucs               . #x0FB2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER LA")
+    (ucs               . #x0FB3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER SHA")
+    (ucs               . #x0FB4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER SSA")
+    (ucs               . #x0FB5)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER SA")
+    (ucs               . #x0FB6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER HA")
+    (ucs               . #x0FB7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER A")
+    (ucs               . #x0FB8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER KSSA")
+    (ucs               . #x0FB9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (->decomposition   #x0F90 #x0FB5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER FIXED-FORM WA")
+    (ucs               . #x0FBA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER FIXED-FORM YA")
+    (ucs               . #x0FBB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "TIBETAN SUBJOINED LETTER FIXED-FORM RA")
+    (ucs               . #x0FBC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "TIBETAN KU RU KHA")
+    (ucs               . #x0FBE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "kuruka")
+    ))
+(define-char
+  '((name              . "TIBETAN KU RU KHA BZHI MIG CAN")
+    (ucs               . #x0FBF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "kuruka shi mik chen")
+    ))
+(define-char
+  '((name              . "TIBETAN CANTILLATION SIGN HEAVY BEAT")
+    (ucs               . #x0FC0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN CANTILLATION SIGN LIGHT BEAT")
+    (ucs               . #x0FC1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIBETAN CANTILLATION SIGN CANG TE-U")
+    (ucs               . #x0FC2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "chang tyu")
+    ))
+(define-char
+  '((name              . "TIBETAN CANTILLATION SIGN SBUB -CHAL")
+    (ucs               . #x0FC3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "bub chey")
+    ))
+(define-char
+  '((name              . "TIBETAN SYMBOL DRIL BU")
+    (ucs               . #x0FC4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "drilbu")
+    ))
+(define-char
+  '((name              . "TIBETAN SYMBOL RDO RJE")
+    (ucs               . #x0FC5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "dorje")
+    ))
+(define-char
+  '((name              . "TIBETAN SYMBOL PADMA GDAN")
+    (ucs               . #x0FC6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    (iso-10646-comment . "pema den")
+    ))
+(define-char
+  '((name              . "TIBETAN SYMBOL RDO RJE RGYA GRAM")
+    (ucs               . #x0FC7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "dorje gya dram")
+    ))
+(define-char
+  '((name              . "TIBETAN SYMBOL PHUR PA")
+    (ucs               . #x0FC8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "phurba")
+    ))
+(define-char
+  '((name              . "TIBETAN SYMBOL NOR BU")
+    (ucs               . #x0FC9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "norbu")
+    ))
+(define-char
+  '((name              . "TIBETAN SYMBOL NOR BU NYIS -KHYIL")
+    (ucs               . #x0FCA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "norbu nyi khyi")
+    ))
+(define-char
+  '((name              . "TIBETAN SYMBOL NOR BU GSUM -KHYIL")
+    (ucs               . #x0FCB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "norbu sum khyi")
+    ))
+(define-char
+  '((name              . "TIBETAN SYMBOL NOR BU BZHI -KHYIL")
+    (ucs               . #x0FCC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "norbu shi khyi")
+    ))
+(define-char
+  '((name              . "TIBETAN SIGN RDEL NAG GSUM")
+    (ucs               . #x0FCF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u01000-Myanmar.el b/lisp/utf-2000/u01000-Myanmar.el
new file mode 100644 (file)
index 0000000..f1329e7
--- /dev/null
@@ -0,0 +1,577 @@
+(define-char
+  '((name              . "MYANMAR LETTER KA")
+    (ucs               . #x1000)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER KHA")
+    (ucs               . #x1001)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER GA")
+    (ucs               . #x1002)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER GHA")
+    (ucs               . #x1003)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER NGA")
+    (ucs               . #x1004)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER CA")
+    (ucs               . #x1005)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER CHA")
+    (ucs               . #x1006)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER JA")
+    (ucs               . #x1007)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER JHA")
+    (ucs               . #x1008)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER NYA")
+    (ucs               . #x1009)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER NNYA")
+    (ucs               . #x100A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER TTA")
+    (ucs               . #x100B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER TTHA")
+    (ucs               . #x100C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER DDA")
+    (ucs               . #x100D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER DDHA")
+    (ucs               . #x100E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER NNA")
+    (ucs               . #x100F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER TA")
+    (ucs               . #x1010)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER THA")
+    (ucs               . #x1011)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER DA")
+    (ucs               . #x1012)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER DHA")
+    (ucs               . #x1013)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER NA")
+    (ucs               . #x1014)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER PA")
+    (ucs               . #x1015)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER PHA")
+    (ucs               . #x1016)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER BA")
+    (ucs               . #x1017)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER BHA")
+    (ucs               . #x1018)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER MA")
+    (ucs               . #x1019)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER YA")
+    (ucs               . #x101A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER RA")
+    (ucs               . #x101B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER LA")
+    (ucs               . #x101C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER WA")
+    (ucs               . #x101D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER SA")
+    (ucs               . #x101E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER HA")
+    (ucs               . #x101F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER LLA")
+    (ucs               . #x1020)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER A")
+    (ucs               . #x1021)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER I")
+    (ucs               . #x1023)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER II")
+    (ucs               . #x1024)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER U")
+    (ucs               . #x1025)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER UU")
+    (ucs               . #x1026)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1025 #x102E)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER E")
+    (ucs               . #x1027)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER O")
+    (ucs               . #x1029)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER AU")
+    (ucs               . #x102A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN AA")
+    (ucs               . #x102C)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN I")
+    (ucs               . #x102D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN II")
+    (ucs               . #x102E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN U")
+    (ucs               . #x102F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN UU")
+    (ucs               . #x1030)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN E")
+    (ucs               . #x1031)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN AI")
+    (ucs               . #x1032)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SIGN ANUSVARA")
+    (ucs               . #x1036)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SIGN DOT BELOW")
+    (ucs               . #x1037)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SIGN VISARGA")
+    (ucs               . #x1038)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SIGN VIRAMA")
+    (ucs               . #x1039)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT ZERO")
+    (ucs               . #x1040)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT ONE")
+    (ucs               . #x1041)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT TWO")
+    (ucs               . #x1042)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT THREE")
+    (ucs               . #x1043)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT FOUR")
+    (ucs               . #x1044)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT FIVE")
+    (ucs               . #x1045)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT SIX")
+    (ucs               . #x1046)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT SEVEN")
+    (ucs               . #x1047)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT EIGHT")
+    (ucs               . #x1048)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR DIGIT NINE")
+    (ucs               . #x1049)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SIGN LITTLE SECTION")
+    (ucs               . #x104A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SIGN SECTION")
+    (ucs               . #x104B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SYMBOL LOCATIVE")
+    (ucs               . #x104C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SYMBOL COMPLETED")
+    (ucs               . #x104D)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SYMBOL AFOREMENTIONED")
+    (ucs               . #x104E)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR SYMBOL GENITIVE")
+    (ucs               . #x104F)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER SHA")
+    (ucs               . #x1050)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER SSA")
+    (ucs               . #x1051)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER VOCALIC R")
+    (ucs               . #x1052)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER VOCALIC RR")
+    (ucs               . #x1053)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER VOCALIC L")
+    (ucs               . #x1054)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR LETTER VOCALIC LL")
+    (ucs               . #x1055)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN VOCALIC R")
+    (ucs               . #x1056)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN VOCALIC RR")
+    (ucs               . #x1057)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN VOCALIC L")
+    (ucs               . #x1058)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MYANMAR VOWEL SIGN VOCALIC LL")
+    (ucs               . #x1059)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u010A0-Georgian.el b/lisp/utf-2000/u010A0-Georgian.el
new file mode 100644 (file)
index 0000000..2a4adbf
--- /dev/null
@@ -0,0 +1,584 @@
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER AN")
+    (ucs               . #x10A0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER BAN")
+    (ucs               . #x10A1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER GAN")
+    (ucs               . #x10A2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER DON")
+    (ucs               . #x10A3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER EN")
+    (ucs               . #x10A4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER VIN")
+    (ucs               . #x10A5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER ZEN")
+    (ucs               . #x10A6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER TAN")
+    (ucs               . #x10A7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER IN")
+    (ucs               . #x10A8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER KAN")
+    (ucs               . #x10A9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER LAS")
+    (ucs               . #x10AA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER MAN")
+    (ucs               . #x10AB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER NAR")
+    (ucs               . #x10AC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER ON")
+    (ucs               . #x10AD)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER PAR")
+    (ucs               . #x10AE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER ZHAR")
+    (ucs               . #x10AF)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER RAE")
+    (ucs               . #x10B0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER SAN")
+    (ucs               . #x10B1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER TAR")
+    (ucs               . #x10B2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER UN")
+    (ucs               . #x10B3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER PHAR")
+    (ucs               . #x10B4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER KHAR")
+    (ucs               . #x10B5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER GHAN")
+    (ucs               . #x10B6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER QAR")
+    (ucs               . #x10B7)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER SHIN")
+    (ucs               . #x10B8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER CHIN")
+    (ucs               . #x10B9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER CAN")
+    (ucs               . #x10BA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER JIL")
+    (ucs               . #x10BB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER CIL")
+    (ucs               . #x10BC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER CHAR")
+    (ucs               . #x10BD)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER XAN")
+    (ucs               . #x10BE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER JHAN")
+    (ucs               . #x10BF)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER HAE")
+    (ucs               . #x10C0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER HE")
+    (ucs               . #x10C1)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER HIE")
+    (ucs               . #x10C2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER WE")
+    (ucs               . #x10C3)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER HAR")
+    (ucs               . #x10C4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN CAPITAL LETTER HOE")
+    (ucs               . #x10C5)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Khutsuri")
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER AN")
+    (ucs               . #x10D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER BAN")
+    (ucs               . #x10D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER GAN")
+    (ucs               . #x10D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER DON")
+    (ucs               . #x10D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER EN")
+    (ucs               . #x10D4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER VIN")
+    (ucs               . #x10D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER ZEN")
+    (ucs               . #x10D6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER TAN")
+    (ucs               . #x10D7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER IN")
+    (ucs               . #x10D8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER KAN")
+    (ucs               . #x10D9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER LAS")
+    (ucs               . #x10DA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER MAN")
+    (ucs               . #x10DB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER NAR")
+    (ucs               . #x10DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER ON")
+    (ucs               . #x10DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER PAR")
+    (ucs               . #x10DE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER ZHAR")
+    (ucs               . #x10DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER RAE")
+    (ucs               . #x10E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER SAN")
+    (ucs               . #x10E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER TAR")
+    (ucs               . #x10E2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER UN")
+    (ucs               . #x10E3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER PHAR")
+    (ucs               . #x10E4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER KHAR")
+    (ucs               . #x10E5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER GHAN")
+    (ucs               . #x10E6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER QAR")
+    (ucs               . #x10E7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER SHIN")
+    (ucs               . #x10E8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER CHIN")
+    (ucs               . #x10E9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER CAN")
+    (ucs               . #x10EA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER JIL")
+    (ucs               . #x10EB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER CIL")
+    (ucs               . #x10EC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER CHAR")
+    (ucs               . #x10ED)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER XAN")
+    (ucs               . #x10EE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER JHAN")
+    (ucs               . #x10EF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER HAE")
+    (ucs               . #x10F0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER HE")
+    (ucs               . #x10F1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER HIE")
+    (ucs               . #x10F2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER WE")
+    (ucs               . #x10F3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER HAR")
+    (ucs               . #x10F4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER HOE")
+    (ucs               . #x10F5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN LETTER FI")
+    (ucs               . #x10F6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEORGIAN PARAGRAPH SEPARATOR")
+    (ucs               . #x10FB)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u01100-Hangul-Jamo.el b/lisp/utf-2000/u01100-Hangul-Jamo.el
new file mode 100644 (file)
index 0000000..7ca0827
--- /dev/null
@@ -0,0 +1,1725 @@
+(define-char
+  '((name              . "HANGUL CHOSEONG KIYEOK")
+    (ucs               . #x1100)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "g *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SSANGKIYEOK")
+    (ucs               . #x1101)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "gg *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG NIEUN")
+    (ucs               . #x1102)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "n *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG TIKEUT")
+    (ucs               . #x1103)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "d *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SSANGTIKEUT")
+    (ucs               . #x1104)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "dd *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG RIEUL")
+    (ucs               . #x1105)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "r *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG MIEUM")
+    (ucs               . #x1106)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "m *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP")
+    (ucs               . #x1107)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "b *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SSANGPIEUP")
+    (ucs               . #x1108)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "bb *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS")
+    (ucs               . #x1109)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "s *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SSANGSIOS")
+    (ucs               . #x110A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ss *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG")
+    (ucs               . #x110B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CIEUC")
+    (ucs               . #x110C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "j *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SSANGCIEUC")
+    (ucs               . #x110D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "jj *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CHIEUCH")
+    (ucs               . #x110E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "c *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG KHIEUKH")
+    (ucs               . #x110F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "k *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG THIEUTH")
+    (ucs               . #x1110)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "t *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PHIEUPH")
+    (ucs               . #x1111)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "p *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG HIEUH")
+    (ucs               . #x1112)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "h *")
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG NIEUN-KIYEOK")
+    (ucs               . #x1113)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SSANGNIEUN")
+    (ucs               . #x1114)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG NIEUN-TIKEUT")
+    (ucs               . #x1115)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG NIEUN-PIEUP")
+    (ucs               . #x1116)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG TIKEUT-KIYEOK")
+    (ucs               . #x1117)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG RIEUL-NIEUN")
+    (ucs               . #x1118)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SSANGRIEUL")
+    (ucs               . #x1119)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG RIEUL-HIEUH")
+    (ucs               . #x111A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG KAPYEOUNRIEUL")
+    (ucs               . #x111B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG MIEUM-PIEUP")
+    (ucs               . #x111C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG KAPYEOUNMIEUM")
+    (ucs               . #x111D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-KIYEOK")
+    (ucs               . #x111E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-NIEUN")
+    (ucs               . #x111F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-TIKEUT")
+    (ucs               . #x1120)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-SIOS")
+    (ucs               . #x1121)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-SIOS-KIYEOK")
+    (ucs               . #x1122)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-SIOS-TIKEUT")
+    (ucs               . #x1123)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-SIOS-PIEUP")
+    (ucs               . #x1124)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-SSANGSIOS")
+    (ucs               . #x1125)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-SIOS-CIEUC")
+    (ucs               . #x1126)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-CIEUC")
+    (ucs               . #x1127)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-CHIEUCH")
+    (ucs               . #x1128)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-THIEUTH")
+    (ucs               . #x1129)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PIEUP-PHIEUPH")
+    (ucs               . #x112A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG KAPYEOUNPIEUP")
+    (ucs               . #x112B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG KAPYEOUNSSANGPIEUP")
+    (ucs               . #x112C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-KIYEOK")
+    (ucs               . #x112D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-NIEUN")
+    (ucs               . #x112E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-TIKEUT")
+    (ucs               . #x112F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-RIEUL")
+    (ucs               . #x1130)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-MIEUM")
+    (ucs               . #x1131)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-PIEUP")
+    (ucs               . #x1132)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-PIEUP-KIYEOK")
+    (ucs               . #x1133)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-SSANGSIOS")
+    (ucs               . #x1134)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-IEUNG")
+    (ucs               . #x1135)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-CIEUC")
+    (ucs               . #x1136)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-CHIEUCH")
+    (ucs               . #x1137)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-KHIEUKH")
+    (ucs               . #x1138)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-THIEUTH")
+    (ucs               . #x1139)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-PHIEUPH")
+    (ucs               . #x113A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SIOS-HIEUH")
+    (ucs               . #x113B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CHITUEUMSIOS")
+    (ucs               . #x113C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CHITUEUMSSANGSIOS")
+    (ucs               . #x113D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CEONGCHIEUMSIOS")
+    (ucs               . #x113E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS")
+    (ucs               . #x113F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PANSIOS")
+    (ucs               . #x1140)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-KIYEOK")
+    (ucs               . #x1141)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-TIKEUT")
+    (ucs               . #x1142)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-MIEUM")
+    (ucs               . #x1143)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-PIEUP")
+    (ucs               . #x1144)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-SIOS")
+    (ucs               . #x1145)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-PANSIOS")
+    (ucs               . #x1146)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SSANGIEUNG")
+    (ucs               . #x1147)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-CIEUC")
+    (ucs               . #x1148)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-CHIEUCH")
+    (ucs               . #x1149)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-THIEUTH")
+    (ucs               . #x114A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG IEUNG-PHIEUPH")
+    (ucs               . #x114B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG YESIEUNG")
+    (ucs               . #x114C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CIEUC-IEUNG")
+    (ucs               . #x114D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CHITUEUMCIEUC")
+    (ucs               . #x114E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CHITUEUMSSANGCIEUC")
+    (ucs               . #x114F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CEONGCHIEUMCIEUC")
+    (ucs               . #x1150)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC")
+    (ucs               . #x1151)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CHIEUCH-KHIEUKH")
+    (ucs               . #x1152)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CHIEUCH-HIEUH")
+    (ucs               . #x1153)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CHITUEUMCHIEUCH")
+    (ucs               . #x1154)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG CEONGCHIEUMCHIEUCH")
+    (ucs               . #x1155)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG PHIEUPH-PIEUP")
+    (ucs               . #x1156)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG KAPYEOUNPHIEUPH")
+    (ucs               . #x1157)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG SSANGHIEUH")
+    (ucs               . #x1158)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG YEORINHIEUH")
+    (ucs               . #x1159)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL CHOSEONG FILLER")
+    (ucs               . #x115F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG FILLER")
+    (ucs               . #x1160)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG A")
+    (ucs               . #x1161)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG AE")
+    (ucs               . #x1162)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YA")
+    (ucs               . #x1163)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YAE")
+    (ucs               . #x1164)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG EO")
+    (ucs               . #x1165)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG E")
+    (ucs               . #x1166)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YEO")
+    (ucs               . #x1167)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YE")
+    (ucs               . #x1168)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG O")
+    (ucs               . #x1169)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG WA")
+    (ucs               . #x116A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG WAE")
+    (ucs               . #x116B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG OE")
+    (ucs               . #x116C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YO")
+    (ucs               . #x116D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG U")
+    (ucs               . #x116E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG WEO")
+    (ucs               . #x116F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG WE")
+    (ucs               . #x1170)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG WI")
+    (ucs               . #x1171)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YU")
+    (ucs               . #x1172)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG EU")
+    (ucs               . #x1173)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YI")
+    (ucs               . #x1174)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG I")
+    (ucs               . #x1175)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG A-O")
+    (ucs               . #x1176)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG A-U")
+    (ucs               . #x1177)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YA-O")
+    (ucs               . #x1178)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YA-YO")
+    (ucs               . #x1179)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG EO-O")
+    (ucs               . #x117A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG EO-U")
+    (ucs               . #x117B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG EO-EU")
+    (ucs               . #x117C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YEO-O")
+    (ucs               . #x117D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YEO-U")
+    (ucs               . #x117E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG O-EO")
+    (ucs               . #x117F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG O-E")
+    (ucs               . #x1180)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG O-YE")
+    (ucs               . #x1181)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG O-O")
+    (ucs               . #x1182)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG O-U")
+    (ucs               . #x1183)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YO-YA")
+    (ucs               . #x1184)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YO-YAE")
+    (ucs               . #x1185)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YO-YEO")
+    (ucs               . #x1186)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YO-O")
+    (ucs               . #x1187)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YO-I")
+    (ucs               . #x1188)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG U-A")
+    (ucs               . #x1189)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG U-AE")
+    (ucs               . #x118A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG U-EO-EU")
+    (ucs               . #x118B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG U-YE")
+    (ucs               . #x118C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG U-U")
+    (ucs               . #x118D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YU-A")
+    (ucs               . #x118E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YU-EO")
+    (ucs               . #x118F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YU-E")
+    (ucs               . #x1190)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YU-YEO")
+    (ucs               . #x1191)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YU-YE")
+    (ucs               . #x1192)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YU-U")
+    (ucs               . #x1193)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YU-I")
+    (ucs               . #x1194)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG EU-U")
+    (ucs               . #x1195)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG EU-EU")
+    (ucs               . #x1196)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG YI-U")
+    (ucs               . #x1197)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG I-A")
+    (ucs               . #x1198)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG I-YA")
+    (ucs               . #x1199)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG I-O")
+    (ucs               . #x119A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG I-U")
+    (ucs               . #x119B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG I-EU")
+    (ucs               . #x119C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG I-ARAEA")
+    (ucs               . #x119D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG ARAEA")
+    (ucs               . #x119E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG ARAEA-EO")
+    (ucs               . #x119F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG ARAEA-U")
+    (ucs               . #x11A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG ARAEA-I")
+    (ucs               . #x11A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JUNGSEONG SSANGARAEA")
+    (ucs               . #x11A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG KIYEOK")
+    (ucs               . #x11A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "g *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG SSANGKIYEOK")
+    (ucs               . #x11A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "gg *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG KIYEOK-SIOS")
+    (ucs               . #x11AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "gs *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG NIEUN")
+    (ucs               . #x11AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "n *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG NIEUN-CIEUC")
+    (ucs               . #x11AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "nj *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG NIEUN-HIEUH")
+    (ucs               . #x11AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "nh *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG TIKEUT")
+    (ucs               . #x11AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "d *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL")
+    (ucs               . #x11AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "l *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-KIYEOK")
+    (ucs               . #x11B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "lg *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-MIEUM")
+    (ucs               . #x11B1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "lm *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-PIEUP")
+    (ucs               . #x11B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "lb *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-SIOS")
+    (ucs               . #x11B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ls *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-THIEUTH")
+    (ucs               . #x11B4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "lt *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-PHIEUPH")
+    (ucs               . #x11B5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "lp *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-HIEUH")
+    (ucs               . #x11B6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "lh *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG MIEUM")
+    (ucs               . #x11B7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "m *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG PIEUP")
+    (ucs               . #x11B8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "b *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG PIEUP-SIOS")
+    (ucs               . #x11B9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "bs *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG SIOS")
+    (ucs               . #x11BA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "s *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG SSANGSIOS")
+    (ucs               . #x11BB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ss *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG IEUNG")
+    (ucs               . #x11BC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "ng *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG CIEUC")
+    (ucs               . #x11BD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "j *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG CHIEUCH")
+    (ucs               . #x11BE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "c *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG KHIEUKH")
+    (ucs               . #x11BF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "k *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG THIEUTH")
+    (ucs               . #x11C0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "t *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG PHIEUPH")
+    (ucs               . #x11C1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "p *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG HIEUH")
+    (ucs               . #x11C2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "h *")
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG KIYEOK-RIEUL")
+    (ucs               . #x11C3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK")
+    (ucs               . #x11C4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG NIEUN-KIYEOK")
+    (ucs               . #x11C5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG NIEUN-TIKEUT")
+    (ucs               . #x11C6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG NIEUN-SIOS")
+    (ucs               . #x11C7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG NIEUN-PANSIOS")
+    (ucs               . #x11C8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG NIEUN-THIEUTH")
+    (ucs               . #x11C9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG TIKEUT-KIYEOK")
+    (ucs               . #x11CA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG TIKEUT-RIEUL")
+    (ucs               . #x11CB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-KIYEOK-SIOS")
+    (ucs               . #x11CC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-NIEUN")
+    (ucs               . #x11CD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-TIKEUT")
+    (ucs               . #x11CE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH")
+    (ucs               . #x11CF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG SSANGRIEUL")
+    (ucs               . #x11D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK")
+    (ucs               . #x11D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-MIEUM-SIOS")
+    (ucs               . #x11D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-PIEUP-SIOS")
+    (ucs               . #x11D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-PIEUP-HIEUH")
+    (ucs               . #x11D4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP")
+    (ucs               . #x11D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-SSANGSIOS")
+    (ucs               . #x11D6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-PANSIOS")
+    (ucs               . #x11D7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-KHIEUKH")
+    (ucs               . #x11D8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG RIEUL-YEORINHIEUH")
+    (ucs               . #x11D9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG MIEUM-KIYEOK")
+    (ucs               . #x11DA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG MIEUM-RIEUL")
+    (ucs               . #x11DB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG MIEUM-PIEUP")
+    (ucs               . #x11DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG MIEUM-SIOS")
+    (ucs               . #x11DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG MIEUM-SSANGSIOS")
+    (ucs               . #x11DE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG MIEUM-PANSIOS")
+    (ucs               . #x11DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG MIEUM-CHIEUCH")
+    (ucs               . #x11E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG MIEUM-HIEUH")
+    (ucs               . #x11E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG KAPYEOUNMIEUM")
+    (ucs               . #x11E2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG PIEUP-RIEUL")
+    (ucs               . #x11E3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG PIEUP-PHIEUPH")
+    (ucs               . #x11E4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG PIEUP-HIEUH")
+    (ucs               . #x11E5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG KAPYEOUNPIEUP")
+    (ucs               . #x11E6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG SIOS-KIYEOK")
+    (ucs               . #x11E7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG SIOS-TIKEUT")
+    (ucs               . #x11E8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG SIOS-RIEUL")
+    (ucs               . #x11E9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG SIOS-PIEUP")
+    (ucs               . #x11EA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG PANSIOS")
+    (ucs               . #x11EB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG IEUNG-KIYEOK")
+    (ucs               . #x11EC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG IEUNG-SSANGKIYEOK")
+    (ucs               . #x11ED)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG SSANGIEUNG")
+    (ucs               . #x11EE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG IEUNG-KHIEUKH")
+    (ucs               . #x11EF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG YESIEUNG")
+    (ucs               . #x11F0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG YESIEUNG-SIOS")
+    (ucs               . #x11F1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG YESIEUNG-PANSIOS")
+    (ucs               . #x11F2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG PHIEUPH-PIEUP")
+    (ucs               . #x11F3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG KAPYEOUNPHIEUPH")
+    (ucs               . #x11F4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG HIEUH-NIEUN")
+    (ucs               . #x11F5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG HIEUH-RIEUL")
+    (ucs               . #x11F6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG HIEUH-MIEUM")
+    (ucs               . #x11F7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG HIEUH-PIEUP")
+    (ucs               . #x11F8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL JONGSEONG YEORINHIEUH")
+    (ucs               . #x11F9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u01200-Ethiopic.el b/lisp/utf-2000/u01200-Ethiopic.el
new file mode 100644 (file)
index 0000000..6c1ba8b
--- /dev/null
@@ -0,0 +1,3143 @@
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HA")
+    (ucs               . #x1200)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x21)      ; \e$(3!!\e(B
+    (ethiopic-ucs      #x12 #x00)      ; \e$(3!!\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HU")
+    (ucs               . #x1201)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x22)      ; \e$(3!"\e(B
+    (ethiopic-ucs      #x12 #x01)      ; \e$(3!"\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HI")
+    (ucs               . #x1202)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x23)      ; \e$(3!#\e(B
+    (ethiopic-ucs      #x12 #x02)      ; \e$(3!#\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HAA")
+    (ucs               . #x1203)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x24)      ; \e$(3!$\e(B
+    (ethiopic-ucs      #x12 #x03)      ; \e$(3!$\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HEE")
+    (ucs               . #x1204)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x25)      ; \e$(3!%\e(B
+    (ethiopic-ucs      #x12 #x04)      ; \e$(3!%\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HE")
+    (ucs               . #x1205)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x26)      ; \e$(3!&\e(B
+    (ethiopic-ucs      #x12 #x05)      ; \e$(3!&\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HO")
+    (ucs               . #x1206)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x27)      ; \e$(3!'\e(B
+    (ethiopic-ucs      #x12 #x06)      ; \e$(3!'\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE LA")
+    (ucs               . #x1208)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x29)      ; \e$(3!)\e(B
+    (ethiopic-ucs      #x12 #x08)      ; \e$(3!)\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE LU")
+    (ucs               . #x1209)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x2A)      ; \e$(3!*\e(B
+    (ethiopic-ucs      #x12 #x09)      ; \e$(3!*\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE LI")
+    (ucs               . #x120A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x2B)      ; \e$(3!+\e(B
+    (ethiopic-ucs      #x12 #x0A)      ; \e$(3!+\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE LAA")
+    (ucs               . #x120B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x2C)      ; \e$(3!,\e(B
+    (ethiopic-ucs      #x12 #x0B)      ; \e$(3!,\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE LEE")
+    (ucs               . #x120C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x2D)      ; \e$(3!-\e(B
+    (ethiopic-ucs      #x12 #x0C)      ; \e$(3!-\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE LE")
+    (ucs               . #x120D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x2E)      ; \e$(3!.\e(B
+    (ethiopic-ucs      #x12 #x0D)      ; \e$(3!.\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE LO")
+    (ucs               . #x120E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x2F)      ; \e$(3!/\e(B
+    (ethiopic-ucs      #x12 #x0E)      ; \e$(3!/\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE LWA")
+    (ucs               . #x120F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x30)      ; \e$(3!0\e(B
+    (ethiopic-ucs      #x12 #x0F)      ; \e$(3!0\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HHA")
+    (ucs               . #x1210)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x31)      ; \e$(3!1\e(B
+    (ethiopic-ucs      #x12 #x10)      ; \e$(3!1\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HHU")
+    (ucs               . #x1211)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x32)      ; \e$(3!2\e(B
+    (ethiopic-ucs      #x12 #x11)      ; \e$(3!2\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HHI")
+    (ucs               . #x1212)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x33)      ; \e$(3!3\e(B
+    (ethiopic-ucs      #x12 #x12)      ; \e$(3!3\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HHAA")
+    (ucs               . #x1213)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x34)      ; \e$(3!4\e(B
+    (ethiopic-ucs      #x12 #x13)      ; \e$(3!4\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HHEE")
+    (ucs               . #x1214)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x35)      ; \e$(3!5\e(B
+    (ethiopic-ucs      #x12 #x14)      ; \e$(3!5\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HHE")
+    (ucs               . #x1215)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x36)      ; \e$(3!6\e(B
+    (ethiopic-ucs      #x12 #x15)      ; \e$(3!6\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HHO")
+    (ucs               . #x1216)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x37)      ; \e$(3!7\e(B
+    (ethiopic-ucs      #x12 #x16)      ; \e$(3!7\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE HHWA")
+    (ucs               . #x1217)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x38)      ; \e$(3!8\e(B
+    (ethiopic-ucs      #x12 #x17)      ; \e$(3!8\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE MA")
+    (ucs               . #x1218)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x39)      ; \e$(3!9\e(B
+    (ethiopic-ucs      #x12 #x18)      ; \e$(3!9\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE MU")
+    (ucs               . #x1219)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x3A)      ; \e$(3!:\e(B
+    (ethiopic-ucs      #x12 #x19)      ; \e$(3!:\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE MI")
+    (ucs               . #x121A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x3B)      ; \e$(3!;\e(B
+    (ethiopic-ucs      #x12 #x1A)      ; \e$(3!;\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE MAA")
+    (ucs               . #x121B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x3C)      ; \e$(3!<\e(B
+    (ethiopic-ucs      #x12 #x1B)      ; \e$(3!<\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE MEE")
+    (ucs               . #x121C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x3D)      ; \e$(3!=\e(B
+    (ethiopic-ucs      #x12 #x1C)      ; \e$(3!=\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ME")
+    (ucs               . #x121D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x3E)      ; \e$(3!>\e(B
+    (ethiopic-ucs      #x12 #x1D)      ; \e$(3!>\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE MO")
+    (ucs               . #x121E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x3F)      ; \e$(3!?\e(B
+    (ethiopic-ucs      #x12 #x1E)      ; \e$(3!?\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE MWA")
+    (ucs               . #x121F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x40)      ; \e$(3!@\e(B
+    (ethiopic-ucs      #x12 #x1F)      ; \e$(3!@\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SZA")
+    (ucs               . #x1220)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x41)      ; \e$(3!A\e(B
+    (ethiopic-ucs      #x12 #x20)      ; \e$(3!A\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SZU")
+    (ucs               . #x1221)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x42)      ; \e$(3!B\e(B
+    (ethiopic-ucs      #x12 #x21)      ; \e$(3!B\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SZI")
+    (ucs               . #x1222)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x43)      ; \e$(3!C\e(B
+    (ethiopic-ucs      #x12 #x22)      ; \e$(3!C\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SZAA")
+    (ucs               . #x1223)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x44)      ; \e$(3!D\e(B
+    (ethiopic-ucs      #x12 #x23)      ; \e$(3!D\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SZEE")
+    (ucs               . #x1224)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x45)      ; \e$(3!E\e(B
+    (ethiopic-ucs      #x12 #x24)      ; \e$(3!E\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SZE")
+    (ucs               . #x1225)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x46)      ; \e$(3!F\e(B
+    (ethiopic-ucs      #x12 #x25)      ; \e$(3!F\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SZO")
+    (ucs               . #x1226)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x47)      ; \e$(3!G\e(B
+    (ethiopic-ucs      #x12 #x26)      ; \e$(3!G\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SZWA")
+    (ucs               . #x1227)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x48)      ; \e$(3!H\e(B
+    (ethiopic-ucs      #x12 #x27)      ; \e$(3!H\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE RA")
+    (ucs               . #x1228)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x49)      ; \e$(3!I\e(B
+    (ethiopic-ucs      #x12 #x28)      ; \e$(3!I\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE RU")
+    (ucs               . #x1229)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x4A)      ; \e$(3!J\e(B
+    (ethiopic-ucs      #x12 #x29)      ; \e$(3!J\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE RI")
+    (ucs               . #x122A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x4B)      ; \e$(3!K\e(B
+    (ethiopic-ucs      #x12 #x2A)      ; \e$(3!K\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE RAA")
+    (ucs               . #x122B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x4C)      ; \e$(3!L\e(B
+    (ethiopic-ucs      #x12 #x2B)      ; \e$(3!L\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE REE")
+    (ucs               . #x122C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x4D)      ; \e$(3!M\e(B
+    (ethiopic-ucs      #x12 #x2C)      ; \e$(3!M\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE RE")
+    (ucs               . #x122D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x4E)      ; \e$(3!N\e(B
+    (ethiopic-ucs      #x12 #x2D)      ; \e$(3!N\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE RO")
+    (ucs               . #x122E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x4F)      ; \e$(3!O\e(B
+    (ethiopic-ucs      #x12 #x2E)      ; \e$(3!O\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE RWA")
+    (ucs               . #x122F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x50)      ; \e$(3!P\e(B
+    (ethiopic-ucs      #x12 #x2F)      ; \e$(3!P\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SA")
+    (ucs               . #x1230)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x51)      ; \e$(3!Q\e(B
+    (ethiopic-ucs      #x12 #x30)      ; \e$(3!Q\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SU")
+    (ucs               . #x1231)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x52)      ; \e$(3!R\e(B
+    (ethiopic-ucs      #x12 #x31)      ; \e$(3!R\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SI")
+    (ucs               . #x1232)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x53)      ; \e$(3!S\e(B
+    (ethiopic-ucs      #x12 #x32)      ; \e$(3!S\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SAA")
+    (ucs               . #x1233)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x54)      ; \e$(3!T\e(B
+    (ethiopic-ucs      #x12 #x33)      ; \e$(3!T\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SEE")
+    (ucs               . #x1234)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x55)      ; \e$(3!U\e(B
+    (ethiopic-ucs      #x12 #x34)      ; \e$(3!U\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SE")
+    (ucs               . #x1235)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x56)      ; \e$(3!V\e(B
+    (ethiopic-ucs      #x12 #x35)      ; \e$(3!V\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SO")
+    (ucs               . #x1236)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x57)      ; \e$(3!W\e(B
+    (ethiopic-ucs      #x12 #x36)      ; \e$(3!W\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SWA")
+    (ucs               . #x1237)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x58)      ; \e$(3!X\e(B
+    (ethiopic-ucs      #x12 #x37)      ; \e$(3!X\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SHA")
+    (ucs               . #x1238)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x59)      ; \e$(3!Y\e(B
+    (ethiopic-ucs      #x12 #x38)      ; \e$(3!Y\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SHU")
+    (ucs               . #x1239)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x5A)      ; \e$(3!Z\e(B
+    (ethiopic-ucs      #x12 #x39)      ; \e$(3!Z\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SHI")
+    (ucs               . #x123A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x5B)      ; \e$(3![\e(B
+    (ethiopic-ucs      #x12 #x3A)      ; \e$(3![\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SHAA")
+    (ucs               . #x123B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x5C)      ; \e$(3!\\e(B
+    (ethiopic-ucs      #x12 #x3B)      ; \e$(3!\\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SHEE")
+    (ucs               . #x123C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x5D)      ; \e$(3!]\e(B
+    (ethiopic-ucs      #x12 #x3C)      ; \e$(3!]\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SHE")
+    (ucs               . #x123D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x5E)      ; \e$(3!^\e(B
+    (ethiopic-ucs      #x12 #x3D)      ; \e$(3!^\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SHO")
+    (ucs               . #x123E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x5F)      ; \e$(3!_\e(B
+    (ethiopic-ucs      #x12 #x3E)      ; \e$(3!_\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE SHWA")
+    (ucs               . #x123F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x60)      ; \e$(3!`\e(B
+    (ethiopic-ucs      #x12 #x3F)      ; \e$(3!`\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QA")
+    (ucs               . #x1240)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x61)      ; \e$(3!a\e(B
+    (ethiopic-ucs      #x12 #x40)      ; \e$(3!a\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QU")
+    (ucs               . #x1241)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x62)      ; \e$(3!b\e(B
+    (ethiopic-ucs      #x12 #x41)      ; \e$(3!b\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QI")
+    (ucs               . #x1242)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x63)      ; \e$(3!c\e(B
+    (ethiopic-ucs      #x12 #x42)      ; \e$(3!c\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QAA")
+    (ucs               . #x1243)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x64)      ; \e$(3!d\e(B
+    (ethiopic-ucs      #x12 #x43)      ; \e$(3!d\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QEE")
+    (ucs               . #x1244)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x65)      ; \e$(3!e\e(B
+    (ethiopic-ucs      #x12 #x44)      ; \e$(3!e\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QE")
+    (ucs               . #x1245)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x66)      ; \e$(3!f\e(B
+    (ethiopic-ucs      #x12 #x45)      ; \e$(3!f\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QO")
+    (ucs               . #x1246)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x67)      ; \e$(3!g\e(B
+    (ethiopic-ucs      #x12 #x46)      ; \e$(3!g\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QWA")
+    (ucs               . #x1248)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x69)      ; \e$(3!i\e(B
+    (ethiopic-ucs      #x12 #x48)      ; \e$(3!i\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QWI")
+    (ucs               . #x124A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x6B)      ; \e$(3!k\e(B
+    (ethiopic-ucs      #x12 #x4A)      ; \e$(3!k\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QWAA")
+    (ucs               . #x124B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x6C)      ; \e$(3!l\e(B
+    (ethiopic-ucs      #x12 #x4B)      ; \e$(3!l\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QWEE")
+    (ucs               . #x124C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x6D)      ; \e$(3!m\e(B
+    (ethiopic-ucs      #x12 #x4C)      ; \e$(3!m\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QWE")
+    (ucs               . #x124D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x6E)      ; \e$(3!n\e(B
+    (ethiopic-ucs      #x12 #x4D)      ; \e$(3!n\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHA")
+    (ucs               . #x1250)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x71)      ; \e$(3!q\e(B
+    (ethiopic-ucs      #x12 #x50)      ; \e$(3!q\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHU")
+    (ucs               . #x1251)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x72)      ; \e$(3!r\e(B
+    (ethiopic-ucs      #x12 #x51)      ; \e$(3!r\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHI")
+    (ucs               . #x1252)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x73)      ; \e$(3!s\e(B
+    (ethiopic-ucs      #x12 #x52)      ; \e$(3!s\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHAA")
+    (ucs               . #x1253)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x74)      ; \e$(3!t\e(B
+    (ethiopic-ucs      #x12 #x53)      ; \e$(3!t\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHEE")
+    (ucs               . #x1254)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x75)      ; \e$(3!u\e(B
+    (ethiopic-ucs      #x12 #x54)      ; \e$(3!u\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHE")
+    (ucs               . #x1255)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x76)      ; \e$(3!v\e(B
+    (ethiopic-ucs      #x12 #x55)      ; \e$(3!v\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHO")
+    (ucs               . #x1256)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x77)      ; \e$(3!w\e(B
+    (ethiopic-ucs      #x12 #x56)      ; \e$(3!w\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHWA")
+    (ucs               . #x1258)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x79)      ; \e$(3!y\e(B
+    (ethiopic-ucs      #x12 #x58)      ; \e$(3!y\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHWI")
+    (ucs               . #x125A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x7B)      ; \e$(3!{\e(B
+    (ethiopic-ucs      #x12 #x5A)      ; \e$(3!{\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHWAA")
+    (ucs               . #x125B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x7C)      ; \e$(3!|\e(B
+    (ethiopic-ucs      #x12 #x5B)      ; \e$(3!|\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHWEE")
+    (ucs               . #x125C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x7D)      ; \e$(3!}\e(B
+    (ethiopic-ucs      #x12 #x5C)      ; \e$(3!}\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE QHWE")
+    (ucs               . #x125D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x21 #x7E)      ; \e$(3!~\e(B
+    (ethiopic-ucs      #x12 #x5D)      ; \e$(3!~\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE BA")
+    (ucs               . #x1260)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x23)      ; \e$(3"#\e(B
+    (ethiopic-ucs      #x12 #x60)      ; \e$(3"#\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE BU")
+    (ucs               . #x1261)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x24)      ; \e$(3"$\e(B
+    (ethiopic-ucs      #x12 #x61)      ; \e$(3"$\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE BI")
+    (ucs               . #x1262)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x25)      ; \e$(3"%\e(B
+    (ethiopic-ucs      #x12 #x62)      ; \e$(3"%\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE BAA")
+    (ucs               . #x1263)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x26)      ; \e$(3"&\e(B
+    (ethiopic-ucs      #x12 #x63)      ; \e$(3"&\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE BEE")
+    (ucs               . #x1264)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x27)      ; \e$(3"'\e(B
+    (ethiopic-ucs      #x12 #x64)      ; \e$(3"'\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE BE")
+    (ucs               . #x1265)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x28)      ; \e$(3"(\e(B
+    (ethiopic-ucs      #x12 #x65)      ; \e$(3"(\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE BO")
+    (ucs               . #x1266)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x29)      ; \e$(3")\e(B
+    (ethiopic-ucs      #x12 #x66)      ; \e$(3")\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE BWA")
+    (ucs               . #x1267)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x2A)      ; \e$(3"*\e(B
+    (ethiopic-ucs      #x12 #x67)      ; \e$(3"*\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE VA")
+    (ucs               . #x1268)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x2B)      ; \e$(3"+\e(B
+    (ethiopic-ucs      #x12 #x68)      ; \e$(3"+\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE VU")
+    (ucs               . #x1269)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x2C)      ; \e$(3",\e(B
+    (ethiopic-ucs      #x12 #x69)      ; \e$(3",\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE VI")
+    (ucs               . #x126A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x2D)      ; \e$(3"-\e(B
+    (ethiopic-ucs      #x12 #x6A)      ; \e$(3"-\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE VAA")
+    (ucs               . #x126B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x2E)      ; \e$(3".\e(B
+    (ethiopic-ucs      #x12 #x6B)      ; \e$(3".\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE VEE")
+    (ucs               . #x126C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x2F)      ; \e$(3"/\e(B
+    (ethiopic-ucs      #x12 #x6C)      ; \e$(3"/\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE VE")
+    (ucs               . #x126D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x30)      ; \e$(3"0\e(B
+    (ethiopic-ucs      #x12 #x6D)      ; \e$(3"0\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE VO")
+    (ucs               . #x126E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x31)      ; \e$(3"1\e(B
+    (ethiopic-ucs      #x12 #x6E)      ; \e$(3"1\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE VWA")
+    (ucs               . #x126F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x32)      ; \e$(3"2\e(B
+    (ethiopic-ucs      #x12 #x6F)      ; \e$(3"2\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TA")
+    (ucs               . #x1270)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x33)      ; \e$(3"3\e(B
+    (ethiopic-ucs      #x12 #x70)      ; \e$(3"3\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TU")
+    (ucs               . #x1271)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x34)      ; \e$(3"4\e(B
+    (ethiopic-ucs      #x12 #x71)      ; \e$(3"4\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TI")
+    (ucs               . #x1272)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x35)      ; \e$(3"5\e(B
+    (ethiopic-ucs      #x12 #x72)      ; \e$(3"5\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TAA")
+    (ucs               . #x1273)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x36)      ; \e$(3"6\e(B
+    (ethiopic-ucs      #x12 #x73)      ; \e$(3"6\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TEE")
+    (ucs               . #x1274)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x37)      ; \e$(3"7\e(B
+    (ethiopic-ucs      #x12 #x74)      ; \e$(3"7\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TE")
+    (ucs               . #x1275)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x38)      ; \e$(3"8\e(B
+    (ethiopic-ucs      #x12 #x75)      ; \e$(3"8\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TO")
+    (ucs               . #x1276)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x39)      ; \e$(3"9\e(B
+    (ethiopic-ucs      #x12 #x76)      ; \e$(3"9\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TWA")
+    (ucs               . #x1277)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x3A)      ; \e$(3":\e(B
+    (ethiopic-ucs      #x12 #x77)      ; \e$(3":\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CA")
+    (ucs               . #x1278)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x3B)      ; \e$(3";\e(B
+    (ethiopic-ucs      #x12 #x78)      ; \e$(3";\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CU")
+    (ucs               . #x1279)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x3C)      ; \e$(3"<\e(B
+    (ethiopic-ucs      #x12 #x79)      ; \e$(3"<\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CI")
+    (ucs               . #x127A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x3D)      ; \e$(3"=\e(B
+    (ethiopic-ucs      #x12 #x7A)      ; \e$(3"=\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CAA")
+    (ucs               . #x127B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x3E)      ; \e$(3">\e(B
+    (ethiopic-ucs      #x12 #x7B)      ; \e$(3">\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CEE")
+    (ucs               . #x127C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x3F)      ; \e$(3"?\e(B
+    (ethiopic-ucs      #x12 #x7C)      ; \e$(3"?\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CE")
+    (ucs               . #x127D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x40)      ; \e$(3"@\e(B
+    (ethiopic-ucs      #x12 #x7D)      ; \e$(3"@\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CO")
+    (ucs               . #x127E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x41)      ; \e$(3"A\e(B
+    (ethiopic-ucs      #x12 #x7E)      ; \e$(3"A\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CWA")
+    (ucs               . #x127F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x42)      ; \e$(3"B\e(B
+    (ethiopic-ucs      #x12 #x7F)      ; \e$(3"B\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XA")
+    (ucs               . #x1280)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x43)      ; \e$(3"C\e(B
+    (ethiopic-ucs      #x12 #x80)      ; \e$(3"C\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XU")
+    (ucs               . #x1281)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x44)      ; \e$(3"D\e(B
+    (ethiopic-ucs      #x12 #x81)      ; \e$(3"D\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XI")
+    (ucs               . #x1282)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x45)      ; \e$(3"E\e(B
+    (ethiopic-ucs      #x12 #x82)      ; \e$(3"E\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XAA")
+    (ucs               . #x1283)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x46)      ; \e$(3"F\e(B
+    (ethiopic-ucs      #x12 #x83)      ; \e$(3"F\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XEE")
+    (ucs               . #x1284)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x47)      ; \e$(3"G\e(B
+    (ethiopic-ucs      #x12 #x84)      ; \e$(3"G\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XE")
+    (ucs               . #x1285)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x48)      ; \e$(3"H\e(B
+    (ethiopic-ucs      #x12 #x85)      ; \e$(3"H\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XO")
+    (ucs               . #x1286)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x49)      ; \e$(3"I\e(B
+    (ethiopic-ucs      #x12 #x86)      ; \e$(3"I\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XWA")
+    (ucs               . #x1288)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x4B)      ; \e$(3"K\e(B
+    (ethiopic-ucs      #x12 #x88)      ; \e$(3"K\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XWI")
+    (ucs               . #x128A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x4D)      ; \e$(3"M\e(B
+    (ethiopic-ucs      #x12 #x8A)      ; \e$(3"M\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XWAA")
+    (ucs               . #x128B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x4E)      ; \e$(3"N\e(B
+    (ethiopic-ucs      #x12 #x8B)      ; \e$(3"N\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XWEE")
+    (ucs               . #x128C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x4F)      ; \e$(3"O\e(B
+    (ethiopic-ucs      #x12 #x8C)      ; \e$(3"O\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE XWE")
+    (ucs               . #x128D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x50)      ; \e$(3"P\e(B
+    (ethiopic-ucs      #x12 #x8D)      ; \e$(3"P\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NA")
+    (ucs               . #x1290)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x53)      ; \e$(3"S\e(B
+    (ethiopic-ucs      #x12 #x90)      ; \e$(3"S\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NU")
+    (ucs               . #x1291)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x54)      ; \e$(3"T\e(B
+    (ethiopic-ucs      #x12 #x91)      ; \e$(3"T\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NI")
+    (ucs               . #x1292)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x55)      ; \e$(3"U\e(B
+    (ethiopic-ucs      #x12 #x92)      ; \e$(3"U\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NAA")
+    (ucs               . #x1293)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x56)      ; \e$(3"V\e(B
+    (ethiopic-ucs      #x12 #x93)      ; \e$(3"V\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NEE")
+    (ucs               . #x1294)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x57)      ; \e$(3"W\e(B
+    (ethiopic-ucs      #x12 #x94)      ; \e$(3"W\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NE")
+    (ucs               . #x1295)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x58)      ; \e$(3"X\e(B
+    (ethiopic-ucs      #x12 #x95)      ; \e$(3"X\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NO")
+    (ucs               . #x1296)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x59)      ; \e$(3"Y\e(B
+    (ethiopic-ucs      #x12 #x96)      ; \e$(3"Y\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NWA")
+    (ucs               . #x1297)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x5A)      ; \e$(3"Z\e(B
+    (ethiopic-ucs      #x12 #x97)      ; \e$(3"Z\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NYA")
+    (ucs               . #x1298)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x5B)      ; \e$(3"[\e(B
+    (ethiopic-ucs      #x12 #x98)      ; \e$(3"[\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NYU")
+    (ucs               . #x1299)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x5C)      ; \e$(3"\\e(B
+    (ethiopic-ucs      #x12 #x99)      ; \e$(3"\\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NYI")
+    (ucs               . #x129A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x5D)      ; \e$(3"]\e(B
+    (ethiopic-ucs      #x12 #x9A)      ; \e$(3"]\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NYAA")
+    (ucs               . #x129B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x5E)      ; \e$(3"^\e(B
+    (ethiopic-ucs      #x12 #x9B)      ; \e$(3"^\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NYEE")
+    (ucs               . #x129C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x5F)      ; \e$(3"_\e(B
+    (ethiopic-ucs      #x12 #x9C)      ; \e$(3"_\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NYE")
+    (ucs               . #x129D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x60)      ; \e$(3"`\e(B
+    (ethiopic-ucs      #x12 #x9D)      ; \e$(3"`\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NYO")
+    (ucs               . #x129E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x61)      ; \e$(3"a\e(B
+    (ethiopic-ucs      #x12 #x9E)      ; \e$(3"a\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE NYWA")
+    (ucs               . #x129F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x62)      ; \e$(3"b\e(B
+    (ethiopic-ucs      #x12 #x9F)      ; \e$(3"b\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GLOTTAL A")
+    (ucs               . #x12A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x63)      ; \e$(3"c\e(B
+    (ethiopic-ucs      #x12 #xA0)      ; \e$(3"c\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GLOTTAL U")
+    (ucs               . #x12A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x64)      ; \e$(3"d\e(B
+    (ethiopic-ucs      #x12 #xA1)      ; \e$(3"d\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GLOTTAL I")
+    (ucs               . #x12A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x65)      ; \e$(3"e\e(B
+    (ethiopic-ucs      #x12 #xA2)      ; \e$(3"e\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GLOTTAL AA")
+    (ucs               . #x12A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x66)      ; \e$(3"f\e(B
+    (ethiopic-ucs      #x12 #xA3)      ; \e$(3"f\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GLOTTAL EE")
+    (ucs               . #x12A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x67)      ; \e$(3"g\e(B
+    (ethiopic-ucs      #x12 #xA4)      ; \e$(3"g\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GLOTTAL E")
+    (ucs               . #x12A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x68)      ; \e$(3"h\e(B
+    (ethiopic-ucs      #x12 #xA5)      ; \e$(3"h\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GLOTTAL O")
+    (ucs               . #x12A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x69)      ; \e$(3"i\e(B
+    (ethiopic-ucs      #x12 #xA6)      ; \e$(3"i\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GLOTTAL WA")
+    (ucs               . #x12A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x6A)      ; \e$(3"j\e(B
+    (ethiopic-ucs      #x12 #xA7)      ; \e$(3"j\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KA")
+    (ucs               . #x12A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x6B)      ; \e$(3"k\e(B
+    (ethiopic-ucs      #x12 #xA8)      ; \e$(3"k\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KU")
+    (ucs               . #x12A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x6C)      ; \e$(3"l\e(B
+    (ethiopic-ucs      #x12 #xA9)      ; \e$(3"l\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KI")
+    (ucs               . #x12AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x6D)      ; \e$(3"m\e(B
+    (ethiopic-ucs      #x12 #xAA)      ; \e$(3"m\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KAA")
+    (ucs               . #x12AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x6E)      ; \e$(3"n\e(B
+    (ethiopic-ucs      #x12 #xAB)      ; \e$(3"n\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KEE")
+    (ucs               . #x12AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x6F)      ; \e$(3"o\e(B
+    (ethiopic-ucs      #x12 #xAC)      ; \e$(3"o\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KE")
+    (ucs               . #x12AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x70)      ; \e$(3"p\e(B
+    (ethiopic-ucs      #x12 #xAD)      ; \e$(3"p\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KO")
+    (ucs               . #x12AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x71)      ; \e$(3"q\e(B
+    (ethiopic-ucs      #x12 #xAE)      ; \e$(3"q\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KWA")
+    (ucs               . #x12B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x73)      ; \e$(3"s\e(B
+    (ethiopic-ucs      #x12 #xB0)      ; \e$(3"s\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KWI")
+    (ucs               . #x12B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x75)      ; \e$(3"u\e(B
+    (ethiopic-ucs      #x12 #xB2)      ; \e$(3"u\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KWAA")
+    (ucs               . #x12B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x76)      ; \e$(3"v\e(B
+    (ethiopic-ucs      #x12 #xB3)      ; \e$(3"v\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KWEE")
+    (ucs               . #x12B4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x77)      ; \e$(3"w\e(B
+    (ethiopic-ucs      #x12 #xB4)      ; \e$(3"w\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KWE")
+    (ucs               . #x12B5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x78)      ; \e$(3"x\e(B
+    (ethiopic-ucs      #x12 #xB5)      ; \e$(3"x\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXA")
+    (ucs               . #x12B8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x7B)      ; \e$(3"{\e(B
+    (ethiopic-ucs      #x12 #xB8)      ; \e$(3"{\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXU")
+    (ucs               . #x12B9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x7C)      ; \e$(3"|\e(B
+    (ethiopic-ucs      #x12 #xB9)      ; \e$(3"|\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXI")
+    (ucs               . #x12BA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x7D)      ; \e$(3"}\e(B
+    (ethiopic-ucs      #x12 #xBA)      ; \e$(3"}\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXAA")
+    (ucs               . #x12BB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x22 #x7E)      ; \e$(3"~\e(B
+    (ethiopic-ucs      #x12 #xBB)      ; \e$(3"~\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXEE")
+    (ucs               . #x12BC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x21)      ; \e$(3#!\e(B
+    (ethiopic-ucs      #x12 #xBC)      ; \e$(3#!\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXE")
+    (ucs               . #x12BD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x22)      ; \e$(3#"\e(B
+    (ethiopic-ucs      #x12 #xBD)      ; \e$(3#"\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXO")
+    (ucs               . #x12BE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x23)      ; \e$(3##\e(B
+    (ethiopic-ucs      #x12 #xBE)      ; \e$(3##\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXWA")
+    (ucs               . #x12C0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x25)      ; \e$(3#%\e(B
+    (ethiopic-ucs      #x12 #xC0)      ; \e$(3#%\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXWI")
+    (ucs               . #x12C2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x27)      ; \e$(3#'\e(B
+    (ethiopic-ucs      #x12 #xC2)      ; \e$(3#'\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXWAA")
+    (ucs               . #x12C3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x28)      ; \e$(3#(\e(B
+    (ethiopic-ucs      #x12 #xC3)      ; \e$(3#(\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXWEE")
+    (ucs               . #x12C4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x29)      ; \e$(3#)\e(B
+    (ethiopic-ucs      #x12 #xC4)      ; \e$(3#)\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE KXWE")
+    (ucs               . #x12C5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x2A)      ; \e$(3#*\e(B
+    (ethiopic-ucs      #x12 #xC5)      ; \e$(3#*\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE WA")
+    (ucs               . #x12C8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x2D)      ; \e$(3#-\e(B
+    (ethiopic-ucs      #x12 #xC8)      ; \e$(3#-\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE WU")
+    (ucs               . #x12C9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x2E)      ; \e$(3#.\e(B
+    (ethiopic-ucs      #x12 #xC9)      ; \e$(3#.\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE WI")
+    (ucs               . #x12CA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x2F)      ; \e$(3#/\e(B
+    (ethiopic-ucs      #x12 #xCA)      ; \e$(3#/\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE WAA")
+    (ucs               . #x12CB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x30)      ; \e$(3#0\e(B
+    (ethiopic-ucs      #x12 #xCB)      ; \e$(3#0\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE WEE")
+    (ucs               . #x12CC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x31)      ; \e$(3#1\e(B
+    (ethiopic-ucs      #x12 #xCC)      ; \e$(3#1\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE WE")
+    (ucs               . #x12CD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x32)      ; \e$(3#2\e(B
+    (ethiopic-ucs      #x12 #xCD)      ; \e$(3#2\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE WO")
+    (ucs               . #x12CE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x33)      ; \e$(3#3\e(B
+    (ethiopic-ucs      #x12 #xCE)      ; \e$(3#3\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHARYNGEAL A")
+    (ucs               . #x12D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x35)      ; \e$(3#5\e(B
+    (ethiopic-ucs      #x12 #xD0)      ; \e$(3#5\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHARYNGEAL U")
+    (ucs               . #x12D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x36)      ; \e$(3#6\e(B
+    (ethiopic-ucs      #x12 #xD1)      ; \e$(3#6\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHARYNGEAL I")
+    (ucs               . #x12D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x37)      ; \e$(3#7\e(B
+    (ethiopic-ucs      #x12 #xD2)      ; \e$(3#7\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHARYNGEAL AA")
+    (ucs               . #x12D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x38)      ; \e$(3#8\e(B
+    (ethiopic-ucs      #x12 #xD3)      ; \e$(3#8\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHARYNGEAL EE")
+    (ucs               . #x12D4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x39)      ; \e$(3#9\e(B
+    (ethiopic-ucs      #x12 #xD4)      ; \e$(3#9\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHARYNGEAL E")
+    (ucs               . #x12D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x3A)      ; \e$(3#:\e(B
+    (ethiopic-ucs      #x12 #xD5)      ; \e$(3#:\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHARYNGEAL O")
+    (ucs               . #x12D6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x3B)      ; \e$(3#;\e(B
+    (ethiopic-ucs      #x12 #xD6)      ; \e$(3#;\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZA")
+    (ucs               . #x12D8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x3D)      ; \e$(3#=\e(B
+    (ethiopic-ucs      #x12 #xD8)      ; \e$(3#=\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZU")
+    (ucs               . #x12D9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x3E)      ; \e$(3#>\e(B
+    (ethiopic-ucs      #x12 #xD9)      ; \e$(3#>\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZI")
+    (ucs               . #x12DA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x3F)      ; \e$(3#?\e(B
+    (ethiopic-ucs      #x12 #xDA)      ; \e$(3#?\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZAA")
+    (ucs               . #x12DB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x40)      ; \e$(3#@\e(B
+    (ethiopic-ucs      #x12 #xDB)      ; \e$(3#@\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZEE")
+    (ucs               . #x12DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x41)      ; \e$(3#A\e(B
+    (ethiopic-ucs      #x12 #xDC)      ; \e$(3#A\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZE")
+    (ucs               . #x12DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x42)      ; \e$(3#B\e(B
+    (ethiopic-ucs      #x12 #xDD)      ; \e$(3#B\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZO")
+    (ucs               . #x12DE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x43)      ; \e$(3#C\e(B
+    (ethiopic-ucs      #x12 #xDE)      ; \e$(3#C\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZWA")
+    (ucs               . #x12DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x44)      ; \e$(3#D\e(B
+    (ethiopic-ucs      #x12 #xDF)      ; \e$(3#D\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZHA")
+    (ucs               . #x12E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x45)      ; \e$(3#E\e(B
+    (ethiopic-ucs      #x12 #xE0)      ; \e$(3#E\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZHU")
+    (ucs               . #x12E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x46)      ; \e$(3#F\e(B
+    (ethiopic-ucs      #x12 #xE1)      ; \e$(3#F\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZHI")
+    (ucs               . #x12E2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x47)      ; \e$(3#G\e(B
+    (ethiopic-ucs      #x12 #xE2)      ; \e$(3#G\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZHAA")
+    (ucs               . #x12E3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x48)      ; \e$(3#H\e(B
+    (ethiopic-ucs      #x12 #xE3)      ; \e$(3#H\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZHEE")
+    (ucs               . #x12E4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x49)      ; \e$(3#I\e(B
+    (ethiopic-ucs      #x12 #xE4)      ; \e$(3#I\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZHE")
+    (ucs               . #x12E5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x4A)      ; \e$(3#J\e(B
+    (ethiopic-ucs      #x12 #xE5)      ; \e$(3#J\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZHO")
+    (ucs               . #x12E6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x4B)      ; \e$(3#K\e(B
+    (ethiopic-ucs      #x12 #xE6)      ; \e$(3#K\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE ZHWA")
+    (ucs               . #x12E7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x4C)      ; \e$(3#L\e(B
+    (ethiopic-ucs      #x12 #xE7)      ; \e$(3#L\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE YA")
+    (ucs               . #x12E8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x4D)      ; \e$(3#M\e(B
+    (ethiopic-ucs      #x12 #xE8)      ; \e$(3#M\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE YU")
+    (ucs               . #x12E9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x4E)      ; \e$(3#N\e(B
+    (ethiopic-ucs      #x12 #xE9)      ; \e$(3#N\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE YI")
+    (ucs               . #x12EA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x4F)      ; \e$(3#O\e(B
+    (ethiopic-ucs      #x12 #xEA)      ; \e$(3#O\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE YAA")
+    (ucs               . #x12EB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x50)      ; \e$(3#P\e(B
+    (ethiopic-ucs      #x12 #xEB)      ; \e$(3#P\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE YEE")
+    (ucs               . #x12EC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x51)      ; \e$(3#Q\e(B
+    (ethiopic-ucs      #x12 #xEC)      ; \e$(3#Q\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE YE")
+    (ucs               . #x12ED)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x52)      ; \e$(3#R\e(B
+    (ethiopic-ucs      #x12 #xED)      ; \e$(3#R\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE YO")
+    (ucs               . #x12EE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x53)      ; \e$(3#S\e(B
+    (ethiopic-ucs      #x12 #xEE)      ; \e$(3#S\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DA")
+    (ucs               . #x12F0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x55)      ; \e$(3#U\e(B
+    (ethiopic-ucs      #x12 #xF0)      ; \e$(3#U\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DU")
+    (ucs               . #x12F1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x56)      ; \e$(3#V\e(B
+    (ethiopic-ucs      #x12 #xF1)      ; \e$(3#V\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DI")
+    (ucs               . #x12F2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x57)      ; \e$(3#W\e(B
+    (ethiopic-ucs      #x12 #xF2)      ; \e$(3#W\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DAA")
+    (ucs               . #x12F3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x58)      ; \e$(3#X\e(B
+    (ethiopic-ucs      #x12 #xF3)      ; \e$(3#X\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DEE")
+    (ucs               . #x12F4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x59)      ; \e$(3#Y\e(B
+    (ethiopic-ucs      #x12 #xF4)      ; \e$(3#Y\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DE")
+    (ucs               . #x12F5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x5A)      ; \e$(3#Z\e(B
+    (ethiopic-ucs      #x12 #xF5)      ; \e$(3#Z\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DO")
+    (ucs               . #x12F6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x5B)      ; \e$(3#[\e(B
+    (ethiopic-ucs      #x12 #xF6)      ; \e$(3#[\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DWA")
+    (ucs               . #x12F7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x5C)      ; \e$(3#\\e(B
+    (ethiopic-ucs      #x12 #xF7)      ; \e$(3#\\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DDA")
+    (ucs               . #x12F8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x5D)      ; \e$(3#]\e(B
+    (ethiopic-ucs      #x12 #xF8)      ; \e$(3#]\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DDU")
+    (ucs               . #x12F9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x5E)      ; \e$(3#^\e(B
+    (ethiopic-ucs      #x12 #xF9)      ; \e$(3#^\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DDI")
+    (ucs               . #x12FA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x5F)      ; \e$(3#_\e(B
+    (ethiopic-ucs      #x12 #xFA)      ; \e$(3#_\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DDAA")
+    (ucs               . #x12FB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x60)      ; \e$(3#`\e(B
+    (ethiopic-ucs      #x12 #xFB)      ; \e$(3#`\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DDEE")
+    (ucs               . #x12FC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x61)      ; \e$(3#a\e(B
+    (ethiopic-ucs      #x12 #xFC)      ; \e$(3#a\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DDE")
+    (ucs               . #x12FD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x62)      ; \e$(3#b\e(B
+    (ethiopic-ucs      #x12 #xFD)      ; \e$(3#b\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DDO")
+    (ucs               . #x12FE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x63)      ; \e$(3#c\e(B
+    (ethiopic-ucs      #x12 #xFE)      ; \e$(3#c\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE DDWA")
+    (ucs               . #x12FF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x64)      ; \e$(3#d\e(B
+    (ethiopic-ucs      #x12 #xFF)      ; \e$(3#d\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE JA")
+    (ucs               . #x1300)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x65)      ; \e$(3#e\e(B
+    (ethiopic-ucs      #x13 #x00)      ; \e$(3#e\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE JU")
+    (ucs               . #x1301)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x66)      ; \e$(3#f\e(B
+    (ethiopic-ucs      #x13 #x01)      ; \e$(3#f\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE JI")
+    (ucs               . #x1302)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x67)      ; \e$(3#g\e(B
+    (ethiopic-ucs      #x13 #x02)      ; \e$(3#g\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE JAA")
+    (ucs               . #x1303)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x68)      ; \e$(3#h\e(B
+    (ethiopic-ucs      #x13 #x03)      ; \e$(3#h\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE JEE")
+    (ucs               . #x1304)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x69)      ; \e$(3#i\e(B
+    (ethiopic-ucs      #x13 #x04)      ; \e$(3#i\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE JE")
+    (ucs               . #x1305)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x6A)      ; \e$(3#j\e(B
+    (ethiopic-ucs      #x13 #x05)      ; \e$(3#j\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE JO")
+    (ucs               . #x1306)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x6B)      ; \e$(3#k\e(B
+    (ethiopic-ucs      #x13 #x06)      ; \e$(3#k\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE JWA")
+    (ucs               . #x1307)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x6C)      ; \e$(3#l\e(B
+    (ethiopic-ucs      #x13 #x07)      ; \e$(3#l\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GA")
+    (ucs               . #x1308)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x6D)      ; \e$(3#m\e(B
+    (ethiopic-ucs      #x13 #x08)      ; \e$(3#m\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GU")
+    (ucs               . #x1309)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x6E)      ; \e$(3#n\e(B
+    (ethiopic-ucs      #x13 #x09)      ; \e$(3#n\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GI")
+    (ucs               . #x130A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x6F)      ; \e$(3#o\e(B
+    (ethiopic-ucs      #x13 #x0A)      ; \e$(3#o\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GAA")
+    (ucs               . #x130B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x70)      ; \e$(3#p\e(B
+    (ethiopic-ucs      #x13 #x0B)      ; \e$(3#p\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GEE")
+    (ucs               . #x130C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x71)      ; \e$(3#q\e(B
+    (ethiopic-ucs      #x13 #x0C)      ; \e$(3#q\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GE")
+    (ucs               . #x130D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x72)      ; \e$(3#r\e(B
+    (ethiopic-ucs      #x13 #x0D)      ; \e$(3#r\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GO")
+    (ucs               . #x130E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x73)      ; \e$(3#s\e(B
+    (ethiopic-ucs      #x13 #x0E)      ; \e$(3#s\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GWA")
+    (ucs               . #x1310)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x75)      ; \e$(3#u\e(B
+    (ethiopic-ucs      #x13 #x10)      ; \e$(3#u\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GWI")
+    (ucs               . #x1312)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x77)      ; \e$(3#w\e(B
+    (ethiopic-ucs      #x13 #x12)      ; \e$(3#w\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GWAA")
+    (ucs               . #x1313)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x78)      ; \e$(3#x\e(B
+    (ethiopic-ucs      #x13 #x13)      ; \e$(3#x\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GWEE")
+    (ucs               . #x1314)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x79)      ; \e$(3#y\e(B
+    (ethiopic-ucs      #x13 #x14)      ; \e$(3#y\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GWE")
+    (ucs               . #x1315)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x7A)      ; \e$(3#z\e(B
+    (ethiopic-ucs      #x13 #x15)      ; \e$(3#z\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GGA")
+    (ucs               . #x1318)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x7D)      ; \e$(3#}\e(B
+    (ethiopic-ucs      #x13 #x18)      ; \e$(3#}\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GGU")
+    (ucs               . #x1319)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x23 #x7E)      ; \e$(3#~\e(B
+    (ethiopic-ucs      #x13 #x19)      ; \e$(3#~\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GGI")
+    (ucs               . #x131A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x21)      ; \e$(3$!\e(B
+    (ethiopic-ucs      #x13 #x1A)      ; \e$(3$!\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GGAA")
+    (ucs               . #x131B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x22)      ; \e$(3$"\e(B
+    (ethiopic-ucs      #x13 #x1B)      ; \e$(3$"\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GGEE")
+    (ucs               . #x131C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x23)      ; \e$(3$#\e(B
+    (ethiopic-ucs      #x13 #x1C)      ; \e$(3$#\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GGE")
+    (ucs               . #x131D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x24)      ; \e$(3$$\e(B
+    (ethiopic-ucs      #x13 #x1D)      ; \e$(3$$\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE GGO")
+    (ucs               . #x131E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x25)      ; \e$(3$%\e(B
+    (ethiopic-ucs      #x13 #x1E)      ; \e$(3$%\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE THA")
+    (ucs               . #x1320)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x27)      ; \e$(3$'\e(B
+    (ethiopic-ucs      #x13 #x20)      ; \e$(3$'\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE THU")
+    (ucs               . #x1321)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x28)      ; \e$(3$(\e(B
+    (ethiopic-ucs      #x13 #x21)      ; \e$(3$(\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE THI")
+    (ucs               . #x1322)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x29)      ; \e$(3$)\e(B
+    (ethiopic-ucs      #x13 #x22)      ; \e$(3$)\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE THAA")
+    (ucs               . #x1323)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x2A)      ; \e$(3$*\e(B
+    (ethiopic-ucs      #x13 #x23)      ; \e$(3$*\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE THEE")
+    (ucs               . #x1324)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x2B)      ; \e$(3$+\e(B
+    (ethiopic-ucs      #x13 #x24)      ; \e$(3$+\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE THE")
+    (ucs               . #x1325)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x2C)      ; \e$(3$,\e(B
+    (ethiopic-ucs      #x13 #x25)      ; \e$(3$,\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE THO")
+    (ucs               . #x1326)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x2D)      ; \e$(3$-\e(B
+    (ethiopic-ucs      #x13 #x26)      ; \e$(3$-\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE THWA")
+    (ucs               . #x1327)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x2E)      ; \e$(3$.\e(B
+    (ethiopic-ucs      #x13 #x27)      ; \e$(3$.\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CHA")
+    (ucs               . #x1328)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x2F)      ; \e$(3$/\e(B
+    (ethiopic-ucs      #x13 #x28)      ; \e$(3$/\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CHU")
+    (ucs               . #x1329)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x30)      ; \e$(3$0\e(B
+    (ethiopic-ucs      #x13 #x29)      ; \e$(3$0\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CHI")
+    (ucs               . #x132A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x31)      ; \e$(3$1\e(B
+    (ethiopic-ucs      #x13 #x2A)      ; \e$(3$1\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CHAA")
+    (ucs               . #x132B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x32)      ; \e$(3$2\e(B
+    (ethiopic-ucs      #x13 #x2B)      ; \e$(3$2\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CHEE")
+    (ucs               . #x132C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x33)      ; \e$(3$3\e(B
+    (ethiopic-ucs      #x13 #x2C)      ; \e$(3$3\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CHE")
+    (ucs               . #x132D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x34)      ; \e$(3$4\e(B
+    (ethiopic-ucs      #x13 #x2D)      ; \e$(3$4\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CHO")
+    (ucs               . #x132E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x35)      ; \e$(3$5\e(B
+    (ethiopic-ucs      #x13 #x2E)      ; \e$(3$5\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE CHWA")
+    (ucs               . #x132F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x36)      ; \e$(3$6\e(B
+    (ethiopic-ucs      #x13 #x2F)      ; \e$(3$6\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHA")
+    (ucs               . #x1330)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x37)      ; \e$(3$7\e(B
+    (ethiopic-ucs      #x13 #x30)      ; \e$(3$7\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHU")
+    (ucs               . #x1331)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x38)      ; \e$(3$8\e(B
+    (ethiopic-ucs      #x13 #x31)      ; \e$(3$8\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHI")
+    (ucs               . #x1332)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x39)      ; \e$(3$9\e(B
+    (ethiopic-ucs      #x13 #x32)      ; \e$(3$9\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHAA")
+    (ucs               . #x1333)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x3A)      ; \e$(3$:\e(B
+    (ethiopic-ucs      #x13 #x33)      ; \e$(3$:\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHEE")
+    (ucs               . #x1334)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x3B)      ; \e$(3$;\e(B
+    (ethiopic-ucs      #x13 #x34)      ; \e$(3$;\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHE")
+    (ucs               . #x1335)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x3C)      ; \e$(3$<\e(B
+    (ethiopic-ucs      #x13 #x35)      ; \e$(3$<\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHO")
+    (ucs               . #x1336)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x3D)      ; \e$(3$=\e(B
+    (ethiopic-ucs      #x13 #x36)      ; \e$(3$=\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PHWA")
+    (ucs               . #x1337)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x3E)      ; \e$(3$>\e(B
+    (ethiopic-ucs      #x13 #x37)      ; \e$(3$>\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TSA")
+    (ucs               . #x1338)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x3F)      ; \e$(3$?\e(B
+    (ethiopic-ucs      #x13 #x38)      ; \e$(3$?\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TSU")
+    (ucs               . #x1339)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x40)      ; \e$(3$@\e(B
+    (ethiopic-ucs      #x13 #x39)      ; \e$(3$@\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TSI")
+    (ucs               . #x133A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x41)      ; \e$(3$A\e(B
+    (ethiopic-ucs      #x13 #x3A)      ; \e$(3$A\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TSAA")
+    (ucs               . #x133B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x42)      ; \e$(3$B\e(B
+    (ethiopic-ucs      #x13 #x3B)      ; \e$(3$B\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TSEE")
+    (ucs               . #x133C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x43)      ; \e$(3$C\e(B
+    (ethiopic-ucs      #x13 #x3C)      ; \e$(3$C\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TSE")
+    (ucs               . #x133D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x44)      ; \e$(3$D\e(B
+    (ethiopic-ucs      #x13 #x3D)      ; \e$(3$D\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TSO")
+    (ucs               . #x133E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x45)      ; \e$(3$E\e(B
+    (ethiopic-ucs      #x13 #x3E)      ; \e$(3$E\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TSWA")
+    (ucs               . #x133F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x46)      ; \e$(3$F\e(B
+    (ethiopic-ucs      #x13 #x3F)      ; \e$(3$F\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TZA")
+    (ucs               . #x1340)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x47)      ; \e$(3$G\e(B
+    (ethiopic-ucs      #x13 #x40)      ; \e$(3$G\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TZU")
+    (ucs               . #x1341)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x48)      ; \e$(3$H\e(B
+    (ethiopic-ucs      #x13 #x41)      ; \e$(3$H\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TZI")
+    (ucs               . #x1342)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x49)      ; \e$(3$I\e(B
+    (ethiopic-ucs      #x13 #x42)      ; \e$(3$I\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TZAA")
+    (ucs               . #x1343)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x4A)      ; \e$(3$J\e(B
+    (ethiopic-ucs      #x13 #x43)      ; \e$(3$J\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TZEE")
+    (ucs               . #x1344)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x4B)      ; \e$(3$K\e(B
+    (ethiopic-ucs      #x13 #x44)      ; \e$(3$K\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TZE")
+    (ucs               . #x1345)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x4C)      ; \e$(3$L\e(B
+    (ethiopic-ucs      #x13 #x45)      ; \e$(3$L\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE TZO")
+    (ucs               . #x1346)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x4D)      ; \e$(3$M\e(B
+    (ethiopic-ucs      #x13 #x46)      ; \e$(3$M\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE FA")
+    (ucs               . #x1348)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x4F)      ; \e$(3$O\e(B
+    (ethiopic-ucs      #x13 #x48)      ; \e$(3$O\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE FU")
+    (ucs               . #x1349)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x50)      ; \e$(3$P\e(B
+    (ethiopic-ucs      #x13 #x49)      ; \e$(3$P\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE FI")
+    (ucs               . #x134A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x51)      ; \e$(3$Q\e(B
+    (ethiopic-ucs      #x13 #x4A)      ; \e$(3$Q\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE FAA")
+    (ucs               . #x134B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x52)      ; \e$(3$R\e(B
+    (ethiopic-ucs      #x13 #x4B)      ; \e$(3$R\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE FEE")
+    (ucs               . #x134C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x53)      ; \e$(3$S\e(B
+    (ethiopic-ucs      #x13 #x4C)      ; \e$(3$S\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE FE")
+    (ucs               . #x134D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x54)      ; \e$(3$T\e(B
+    (ethiopic-ucs      #x13 #x4D)      ; \e$(3$T\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE FO")
+    (ucs               . #x134E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x55)      ; \e$(3$U\e(B
+    (ethiopic-ucs      #x13 #x4E)      ; \e$(3$U\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE FWA")
+    (ucs               . #x134F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x56)      ; \e$(3$V\e(B
+    (ethiopic-ucs      #x13 #x4F)      ; \e$(3$V\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PA")
+    (ucs               . #x1350)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x57)      ; \e$(3$W\e(B
+    (ethiopic-ucs      #x13 #x50)      ; \e$(3$W\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PU")
+    (ucs               . #x1351)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x58)      ; \e$(3$X\e(B
+    (ethiopic-ucs      #x13 #x51)      ; \e$(3$X\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PI")
+    (ucs               . #x1352)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x59)      ; \e$(3$Y\e(B
+    (ethiopic-ucs      #x13 #x52)      ; \e$(3$Y\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PAA")
+    (ucs               . #x1353)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x5A)      ; \e$(3$Z\e(B
+    (ethiopic-ucs      #x13 #x53)      ; \e$(3$Z\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PEE")
+    (ucs               . #x1354)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x5B)      ; \e$(3$[\e(B
+    (ethiopic-ucs      #x13 #x54)      ; \e$(3$[\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PE")
+    (ucs               . #x1355)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x5C)      ; \e$(3$\\e(B
+    (ethiopic-ucs      #x13 #x55)      ; \e$(3$\\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PO")
+    (ucs               . #x1356)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x5D)      ; \e$(3$]\e(B
+    (ethiopic-ucs      #x13 #x56)      ; \e$(3$]\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE PWA")
+    (ucs               . #x1357)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x5E)      ; \e$(3$^\e(B
+    (ethiopic-ucs      #x13 #x57)      ; \e$(3$^\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE RYA")
+    (ucs               . #x1358)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x5F)      ; \e$(3$_\e(B
+    (ethiopic-ucs      #x13 #x58)      ; \e$(3$_\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE MYA")
+    (ucs               . #x1359)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x60)      ; \e$(3$`\e(B
+    (ethiopic-ucs      #x13 #x59)      ; \e$(3$`\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SYLLABLE FYA")
+    (ucs               . #x135A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x61)      ; \e$(3$a\e(B
+    (ethiopic-ucs      #x13 #x5A)      ; \e$(3$a\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC WORDSPACE")
+    (ucs               . #x1361)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x68)      ; \e$(3$h\e(B
+    (ethiopic-ucs      #x13 #x61)      ; \e$(3$h\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC FULL STOP")
+    (ucs               . #x1362)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x69)      ; \e$(3$i\e(B
+    (ethiopic-ucs      #x13 #x62)      ; \e$(3$i\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC COMMA")
+    (ucs               . #x1363)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x6A)      ; \e$(3$j\e(B
+    (ethiopic-ucs      #x13 #x63)      ; \e$(3$j\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC SEMICOLON")
+    (ucs               . #x1364)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x6B)      ; \e$(3$k\e(B
+    (ethiopic-ucs      #x13 #x64)      ; \e$(3$k\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC COLON")
+    (ucs               . #x1365)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x6C)      ; \e$(3$l\e(B
+    (ethiopic-ucs      #x13 #x65)      ; \e$(3$l\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC PREFACE COLON")
+    (ucs               . #x1366)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x6D)      ; \e$(3$m\e(B
+    (ethiopic-ucs      #x13 #x66)      ; \e$(3$m\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC QUESTION MARK")
+    (ucs               . #x1367)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x6E)      ; \e$(3$n\e(B
+    (ethiopic-ucs      #x13 #x67)      ; \e$(3$n\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC PARAGRAPH SEPARATOR")
+    (ucs               . #x1368)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (ethiopic          #x24 #x6F)      ; \e$(3$o\e(B
+    (ethiopic-ucs      #x13 #x68)      ; \e$(3$o\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC DIGIT ONE")
+    (ucs               . #x1369)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    (ethiopic          #x24 #x70)      ; \e$(3$p\e(B
+    (ethiopic-ucs      #x13 #x69)      ; \e$(3$p\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC DIGIT TWO")
+    (ucs               . #x136A)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    (ethiopic          #x24 #x71)      ; \e$(3$q\e(B
+    (ethiopic-ucs      #x13 #x6A)      ; \e$(3$q\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC DIGIT THREE")
+    (ucs               . #x136B)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    (ethiopic          #x24 #x72)      ; \e$(3$r\e(B
+    (ethiopic-ucs      #x13 #x6B)      ; \e$(3$r\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC DIGIT FOUR")
+    (ucs               . #x136C)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    (ethiopic          #x24 #x73)      ; \e$(3$s\e(B
+    (ethiopic-ucs      #x13 #x6C)      ; \e$(3$s\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC DIGIT FIVE")
+    (ucs               . #x136D)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    (ethiopic          #x24 #x74)      ; \e$(3$t\e(B
+    (ethiopic-ucs      #x13 #x6D)      ; \e$(3$t\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC DIGIT SIX")
+    (ucs               . #x136E)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    (ethiopic          #x24 #x75)      ; \e$(3$u\e(B
+    (ethiopic-ucs      #x13 #x6E)      ; \e$(3$u\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC DIGIT SEVEN")
+    (ucs               . #x136F)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    (ethiopic          #x24 #x76)      ; \e$(3$v\e(B
+    (ethiopic-ucs      #x13 #x6F)      ; \e$(3$v\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC DIGIT EIGHT")
+    (ucs               . #x1370)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    (ethiopic          #x24 #x77)      ; \e$(3$w\e(B
+    (ethiopic-ucs      #x13 #x70)      ; \e$(3$w\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC DIGIT NINE")
+    (ucs               . #x1371)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    (ethiopic          #x24 #x78)      ; \e$(3$x\e(B
+    (ethiopic-ucs      #x13 #x71)      ; \e$(3$x\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER TEN")
+    (ucs               . #x1372)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    (ethiopic          #x24 #x79)      ; \e$(3$y\e(B
+    (ethiopic-ucs      #x13 #x72)      ; \e$(3$y\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER TWENTY")
+    (ucs               . #x1373)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 20)
+    (ethiopic          #x24 #x7A)      ; \e$(3$z\e(B
+    (ethiopic-ucs      #x13 #x73)      ; \e$(3$z\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER THIRTY")
+    (ucs               . #x1374)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 30)
+    (ethiopic          #x24 #x7B)      ; \e$(3${\e(B
+    (ethiopic-ucs      #x13 #x74)      ; \e$(3${\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER FORTY")
+    (ucs               . #x1375)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 40)
+    (ethiopic          #x24 #x7C)      ; \e$(3$|\e(B
+    (ethiopic-ucs      #x13 #x75)      ; \e$(3$|\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER FIFTY")
+    (ucs               . #x1376)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 50)
+    (ethiopic          #x24 #x7D)      ; \e$(3$}\e(B
+    (ethiopic-ucs      #x13 #x76)      ; \e$(3$}\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER SIXTY")
+    (ucs               . #x1377)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 60)
+    (ethiopic          #x24 #x7E)      ; \e$(3$~\e(B
+    (ethiopic-ucs      #x13 #x77)      ; \e$(3$~\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER SEVENTY")
+    (ucs               . #x1378)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 70)
+    (ethiopic          #x25 #x21)      ; \e$(3%!\e(B
+    (ethiopic-ucs      #x13 #x78)      ; \e$(3%!\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER EIGHTY")
+    (ucs               . #x1379)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 80)
+    (ethiopic          #x25 #x22)      ; \e$(3%"\e(B
+    (ethiopic-ucs      #x13 #x79)      ; \e$(3%"\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER NINETY")
+    (ucs               . #x137A)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 90)
+    (ethiopic          #x25 #x23)      ; \e$(3%#\e(B
+    (ethiopic-ucs      #x13 #x7A)      ; \e$(3%#\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER HUNDRED")
+    (ucs               . #x137B)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 100)
+    (ethiopic          #x25 #x24)      ; \e$(3%$\e(B
+    (ethiopic-ucs      #x13 #x7B)      ; \e$(3%$\e(B
+    ))
+(define-char
+  '((name              . "ETHIOPIC NUMBER TEN THOUSAND")
+    (ucs               . #x137C)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 10000)
+    (ethiopic          #x25 #x25)      ; \e$(3%%\e(B
+    (ethiopic-ucs      #x13 #x7C)      ; \e$(3%%\e(B
+    ))
diff --git a/lisp/utf-2000/u013A0-Cherokee.el b/lisp/utf-2000/u013A0-Cherokee.el
new file mode 100644 (file)
index 0000000..617969c
--- /dev/null
@@ -0,0 +1,595 @@
+(define-char
+  '((name              . "CHEROKEE LETTER A")
+    (ucs               . #x13A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER E")
+    (ucs               . #x13A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER I")
+    (ucs               . #x13A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER O")
+    (ucs               . #x13A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER U")
+    (ucs               . #x13A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER V")
+    (ucs               . #x13A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER GA")
+    (ucs               . #x13A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER KA")
+    (ucs               . #x13A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER GE")
+    (ucs               . #x13A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER GI")
+    (ucs               . #x13A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER GO")
+    (ucs               . #x13AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER GU")
+    (ucs               . #x13AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER GV")
+    (ucs               . #x13AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER HA")
+    (ucs               . #x13AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER HE")
+    (ucs               . #x13AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER HI")
+    (ucs               . #x13AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER HO")
+    (ucs               . #x13B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER HU")
+    (ucs               . #x13B1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER HV")
+    (ucs               . #x13B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER LA")
+    (ucs               . #x13B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER LE")
+    (ucs               . #x13B4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER LI")
+    (ucs               . #x13B5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER LO")
+    (ucs               . #x13B6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER LU")
+    (ucs               . #x13B7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER LV")
+    (ucs               . #x13B8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER MA")
+    (ucs               . #x13B9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER ME")
+    (ucs               . #x13BA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER MI")
+    (ucs               . #x13BB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER MO")
+    (ucs               . #x13BC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER MU")
+    (ucs               . #x13BD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER NA")
+    (ucs               . #x13BE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER HNA")
+    (ucs               . #x13BF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER NAH")
+    (ucs               . #x13C0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER NE")
+    (ucs               . #x13C1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER NI")
+    (ucs               . #x13C2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER NO")
+    (ucs               . #x13C3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER NU")
+    (ucs               . #x13C4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER NV")
+    (ucs               . #x13C5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER QUA")
+    (ucs               . #x13C6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER QUE")
+    (ucs               . #x13C7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER QUI")
+    (ucs               . #x13C8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER QUO")
+    (ucs               . #x13C9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER QUU")
+    (ucs               . #x13CA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER QUV")
+    (ucs               . #x13CB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER SA")
+    (ucs               . #x13CC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER S")
+    (ucs               . #x13CD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER SE")
+    (ucs               . #x13CE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER SI")
+    (ucs               . #x13CF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER SO")
+    (ucs               . #x13D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER SU")
+    (ucs               . #x13D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER SV")
+    (ucs               . #x13D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER DA")
+    (ucs               . #x13D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TA")
+    (ucs               . #x13D4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER DE")
+    (ucs               . #x13D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TE")
+    (ucs               . #x13D6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER DI")
+    (ucs               . #x13D7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TI")
+    (ucs               . #x13D8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER DO")
+    (ucs               . #x13D9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER DU")
+    (ucs               . #x13DA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER DV")
+    (ucs               . #x13DB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER DLA")
+    (ucs               . #x13DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TLA")
+    (ucs               . #x13DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TLE")
+    (ucs               . #x13DE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TLI")
+    (ucs               . #x13DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TLO")
+    (ucs               . #x13E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TLU")
+    (ucs               . #x13E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TLV")
+    (ucs               . #x13E2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TSA")
+    (ucs               . #x13E3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TSE")
+    (ucs               . #x13E4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TSI")
+    (ucs               . #x13E5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TSO")
+    (ucs               . #x13E6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TSU")
+    (ucs               . #x13E7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER TSV")
+    (ucs               . #x13E8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER WA")
+    (ucs               . #x13E9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER WE")
+    (ucs               . #x13EA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER WI")
+    (ucs               . #x13EB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER WO")
+    (ucs               . #x13EC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER WU")
+    (ucs               . #x13ED)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER WV")
+    (ucs               . #x13EE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER YA")
+    (ucs               . #x13EF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER YE")
+    (ucs               . #x13F0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER YI")
+    (ucs               . #x13F1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER YO")
+    (ucs               . #x13F2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER YU")
+    (ucs               . #x13F3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHEROKEE LETTER YV")
+    (ucs               . #x13F4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u01400-Canadian.el b/lisp/utf-2000/u01400-Canadian.el
new file mode 100644 (file)
index 0000000..9cad551
--- /dev/null
@@ -0,0 +1,4410 @@
+(define-char
+  '((name              . "CANADIAN SYLLABICS E")
+    (ucs               . #x1401)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS AAI")
+    (ucs               . #x1402)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS I")
+    (ucs               . #x1403)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS II")
+    (ucs               . #x1404)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS O")
+    (ucs               . #x1405)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS OO")
+    (ucs               . #x1406)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE OO")
+    (ucs               . #x1407)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER EE")
+    (ucs               . #x1408)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER I")
+    (ucs               . #x1409)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS A")
+    (ucs               . #x140A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS AA")
+    (ucs               . #x140B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WE")
+    (ucs               . #x140C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE WE")
+    (ucs               . #x140D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WI")
+    (ucs               . #x140E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE WI")
+    (ucs               . #x140F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WII")
+    (ucs               . #x1410)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE WII")
+    (ucs               . #x1411)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WO")
+    (ucs               . #x1412)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE WO")
+    (ucs               . #x1413)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WOO")
+    (ucs               . #x1414)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE WOO")
+    (ucs               . #x1415)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI WOO")
+    (ucs               . #x1416)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WA")
+    (ucs               . #x1417)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE WA")
+    (ucs               . #x1418)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WAA")
+    (ucs               . #x1419)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE WAA")
+    (ucs               . #x141A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI WAA")
+    (ucs               . #x141B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS AI")
+    (ucs               . #x141C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE W")
+    (ucs               . #x141D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS GLOTTAL STOP")
+    (ucs               . #x141E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL ACUTE")
+    (ucs               . #x141F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL GRAVE")
+    (ucs               . #x1420)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL BOTTOM HALF RING")
+    (ucs               . #x1421)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL TOP HALF RING")
+    (ucs               . #x1422)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL RIGHT HALF RING")
+    (ucs               . #x1423)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL RING")
+    (ucs               . #x1424)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL DOUBLE ACUTE")
+    (ucs               . #x1425)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES")
+    (ucs  . #x1426)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL MIDDLE DOT")
+    (ucs               . #x1427)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE")
+    (ucs  . #x1428)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL PLUS")
+    (ucs               . #x1429)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FINAL DOWN TACK")
+    (ucs               . #x142A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS EN")
+    (ucs               . #x142B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS IN")
+    (ucs               . #x142C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS ON")
+    (ucs               . #x142D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS AN")
+    (ucs               . #x142E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PE")
+    (ucs               . #x142F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PAAI")
+    (ucs               . #x1430)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PI")
+    (ucs               . #x1431)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PII")
+    (ucs               . #x1432)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PO")
+    (ucs               . #x1433)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS POO")
+    (ucs               . #x1434)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE POO")
+    (ucs               . #x1435)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER HEE")
+    (ucs               . #x1436)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER HI")
+    (ucs               . #x1437)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PA")
+    (ucs               . #x1438)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PAA")
+    (ucs               . #x1439)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PWE")
+    (ucs               . #x143A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE PWE")
+    (ucs               . #x143B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PWI")
+    (ucs               . #x143C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE PWI")
+    (ucs               . #x143D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PWII")
+    (ucs               . #x143E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE PWII")
+    (ucs               . #x143F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PWO")
+    (ucs               . #x1440)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE PWO")
+    (ucs               . #x1441)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PWOO")
+    (ucs               . #x1442)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE PWOO")
+    (ucs               . #x1443)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PWA")
+    (ucs               . #x1444)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE PWA")
+    (ucs               . #x1445)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS PWAA")
+    (ucs               . #x1446)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE PWAA")
+    (ucs               . #x1447)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE PWAA")
+    (ucs               . #x1448)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS P")
+    (ucs               . #x1449)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE P")
+    (ucs               . #x144A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER H")
+    (ucs               . #x144B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TE")
+    (ucs               . #x144C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TAAI")
+    (ucs               . #x144D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TI")
+    (ucs               . #x144E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TII")
+    (ucs               . #x144F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TO")
+    (ucs               . #x1450)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TOO")
+    (ucs               . #x1451)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE TOO")
+    (ucs               . #x1452)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DEE")
+    (ucs               . #x1453)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DI")
+    (ucs               . #x1454)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TA")
+    (ucs               . #x1455)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TAA")
+    (ucs               . #x1456)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TWE")
+    (ucs               . #x1457)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE TWE")
+    (ucs               . #x1458)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TWI")
+    (ucs               . #x1459)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE TWI")
+    (ucs               . #x145A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TWII")
+    (ucs               . #x145B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE TWII")
+    (ucs               . #x145C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TWO")
+    (ucs               . #x145D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE TWO")
+    (ucs               . #x145E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TWOO")
+    (ucs               . #x145F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE TWOO")
+    (ucs               . #x1460)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TWA")
+    (ucs               . #x1461)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE TWA")
+    (ucs               . #x1462)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TWAA")
+    (ucs               . #x1463)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE TWAA")
+    (ucs               . #x1464)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI TWAA")
+    (ucs               . #x1465)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS T")
+    (ucs               . #x1466)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TTE")
+    (ucs               . #x1467)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TTI")
+    (ucs               . #x1468)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TTO")
+    (ucs               . #x1469)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TTA")
+    (ucs               . #x146A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KE")
+    (ucs               . #x146B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KAAI")
+    (ucs               . #x146C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KI")
+    (ucs               . #x146D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KII")
+    (ucs               . #x146E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KO")
+    (ucs               . #x146F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KOO")
+    (ucs               . #x1470)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE KOO")
+    (ucs               . #x1471)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KA")
+    (ucs               . #x1472)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KAA")
+    (ucs               . #x1473)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KWE")
+    (ucs               . #x1474)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE KWE")
+    (ucs               . #x1475)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KWI")
+    (ucs               . #x1476)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE KWI")
+    (ucs               . #x1477)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KWII")
+    (ucs               . #x1478)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE KWII")
+    (ucs               . #x1479)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KWO")
+    (ucs               . #x147A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE KWO")
+    (ucs               . #x147B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KWOO")
+    (ucs               . #x147C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE KWOO")
+    (ucs               . #x147D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KWA")
+    (ucs               . #x147E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE KWA")
+    (ucs               . #x147F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KWAA")
+    (ucs               . #x1480)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE KWAA")
+    (ucs               . #x1481)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI KWAA")
+    (ucs               . #x1482)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS K")
+    (ucs               . #x1483)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS KW")
+    (ucs               . #x1484)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SOUTH-SLAVEY KEH")
+    (ucs               . #x1485)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SOUTH-SLAVEY KIH")
+    (ucs               . #x1486)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SOUTH-SLAVEY KOH")
+    (ucs               . #x1487)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SOUTH-SLAVEY KAH")
+    (ucs               . #x1488)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CE")
+    (ucs               . #x1489)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CAAI")
+    (ucs               . #x148A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CI")
+    (ucs               . #x148B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CII")
+    (ucs               . #x148C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CO")
+    (ucs               . #x148D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS COO")
+    (ucs               . #x148E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE COO")
+    (ucs               . #x148F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CA")
+    (ucs               . #x1490)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CAA")
+    (ucs               . #x1491)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CWE")
+    (ucs               . #x1492)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE CWE")
+    (ucs               . #x1493)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CWI")
+    (ucs               . #x1494)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE CWI")
+    (ucs               . #x1495)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CWII")
+    (ucs               . #x1496)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE CWII")
+    (ucs               . #x1497)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CWO")
+    (ucs               . #x1498)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE CWO")
+    (ucs               . #x1499)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CWOO")
+    (ucs               . #x149A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE CWOO")
+    (ucs               . #x149B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CWA")
+    (ucs               . #x149C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE CWA")
+    (ucs               . #x149D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CWAA")
+    (ucs               . #x149E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE CWAA")
+    (ucs               . #x149F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI CWAA")
+    (ucs               . #x14A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS C")
+    (ucs               . #x14A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI TH")
+    (ucs               . #x14A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS ME")
+    (ucs               . #x14A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MAAI")
+    (ucs               . #x14A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MI")
+    (ucs               . #x14A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MII")
+    (ucs               . #x14A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MO")
+    (ucs               . #x14A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MOO")
+    (ucs               . #x14A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE MOO")
+    (ucs               . #x14A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MA")
+    (ucs               . #x14AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MAA")
+    (ucs               . #x14AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MWE")
+    (ucs               . #x14AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE MWE")
+    (ucs               . #x14AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MWI")
+    (ucs               . #x14AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE MWI")
+    (ucs               . #x14AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MWII")
+    (ucs               . #x14B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE MWII")
+    (ucs               . #x14B1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MWO")
+    (ucs               . #x14B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE MWO")
+    (ucs               . #x14B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MWOO")
+    (ucs               . #x14B4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE MWOO")
+    (ucs               . #x14B5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MWA")
+    (ucs               . #x14B6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE MWA")
+    (ucs               . #x14B7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MWAA")
+    (ucs               . #x14B8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE MWAA")
+    (ucs               . #x14B9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI MWAA")
+    (ucs               . #x14BA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS M")
+    (ucs               . #x14BB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE M")
+    (ucs               . #x14BC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MH")
+    (ucs               . #x14BD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS ATHAPASCAN M")
+    (ucs               . #x14BE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI M")
+    (ucs               . #x14BF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NE")
+    (ucs               . #x14C0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NAAI")
+    (ucs               . #x14C1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NI")
+    (ucs               . #x14C2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NII")
+    (ucs               . #x14C3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NO")
+    (ucs               . #x14C4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NOO")
+    (ucs               . #x14C5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE NOO")
+    (ucs               . #x14C6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NA")
+    (ucs               . #x14C7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NAA")
+    (ucs               . #x14C8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NWE")
+    (ucs               . #x14C9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE NWE")
+    (ucs               . #x14CA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NWA")
+    (ucs               . #x14CB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE NWA")
+    (ucs               . #x14CC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NWAA")
+    (ucs               . #x14CD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE NWAA")
+    (ucs               . #x14CE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI NWAA")
+    (ucs               . #x14CF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS N")
+    (ucs               . #x14D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER NG")
+    (ucs               . #x14D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NH")
+    (ucs               . #x14D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LE")
+    (ucs               . #x14D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LAAI")
+    (ucs               . #x14D4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LI")
+    (ucs               . #x14D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LII")
+    (ucs               . #x14D6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LO")
+    (ucs               . #x14D7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LOO")
+    (ucs               . #x14D8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE LOO")
+    (ucs               . #x14D9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LA")
+    (ucs               . #x14DA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LAA")
+    (ucs               . #x14DB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LWE")
+    (ucs               . #x14DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LWE")
+    (ucs               . #x14DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LWI")
+    (ucs               . #x14DE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LWI")
+    (ucs               . #x14DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LWII")
+    (ucs               . #x14E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LWII")
+    (ucs               . #x14E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LWO")
+    (ucs               . #x14E2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LWO")
+    (ucs               . #x14E3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LWOO")
+    (ucs               . #x14E4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LWOO")
+    (ucs               . #x14E5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LWA")
+    (ucs               . #x14E6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LWA")
+    (ucs               . #x14E7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LWAA")
+    (ucs               . #x14E8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LWAA")
+    (ucs               . #x14E9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS L")
+    (ucs               . #x14EA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE L")
+    (ucs               . #x14EB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MEDIAL L")
+    (ucs               . #x14EC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SE")
+    (ucs               . #x14ED)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAAI")
+    (ucs               . #x14EE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SI")
+    (ucs               . #x14EF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SII")
+    (ucs               . #x14F0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SO")
+    (ucs               . #x14F1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SOO")
+    (ucs               . #x14F2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE SOO")
+    (ucs               . #x14F3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SA")
+    (ucs               . #x14F4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAA")
+    (ucs               . #x14F5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SWE")
+    (ucs               . #x14F6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SWE")
+    (ucs               . #x14F7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SWI")
+    (ucs               . #x14F8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SWI")
+    (ucs               . #x14F9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SWII")
+    (ucs               . #x14FA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SWII")
+    (ucs               . #x14FB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SWO")
+    (ucs               . #x14FC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SWO")
+    (ucs               . #x14FD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SWOO")
+    (ucs               . #x14FE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SWOO")
+    (ucs               . #x14FF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SWA")
+    (ucs               . #x1500)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SWA")
+    (ucs               . #x1501)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SWAA")
+    (ucs               . #x1502)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SWAA")
+    (ucs               . #x1503)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI SWAA")
+    (ucs               . #x1504)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS S")
+    (ucs               . #x1505)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS ATHAPASCAN S")
+    (ucs               . #x1506)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SW")
+    (ucs               . #x1507)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT S")
+    (ucs               . #x1508)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MOOSE-CREE SK")
+    (ucs               . #x1509)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI SKW")
+    (ucs               . #x150A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI S-W")
+    (ucs               . #x150B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI SPWA")
+    (ucs               . #x150C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI STWA")
+    (ucs               . #x150D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI SKWA")
+    (ucs               . #x150E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI SCWA")
+    (ucs               . #x150F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHE")
+    (ucs               . #x1510)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHI")
+    (ucs               . #x1511)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHII")
+    (ucs               . #x1512)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHO")
+    (ucs               . #x1513)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHOO")
+    (ucs               . #x1514)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHA")
+    (ucs               . #x1515)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHAA")
+    (ucs               . #x1516)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHWE")
+    (ucs               . #x1517)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SHWE")
+    (ucs               . #x1518)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHWI")
+    (ucs               . #x1519)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SHWI")
+    (ucs               . #x151A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHWII")
+    (ucs               . #x151B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SHWII")
+    (ucs               . #x151C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHWO")
+    (ucs               . #x151D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SHWO")
+    (ucs               . #x151E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHWOO")
+    (ucs               . #x151F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SHWOO")
+    (ucs               . #x1520)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHWA")
+    (ucs               . #x1521)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SHWA")
+    (ucs               . #x1522)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SHWAA")
+    (ucs               . #x1523)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE SHWAA")
+    (ucs               . #x1524)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SH")
+    (ucs               . #x1525)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YE")
+    (ucs               . #x1526)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YAAI")
+    (ucs               . #x1527)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YI")
+    (ucs               . #x1528)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YII")
+    (ucs               . #x1529)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YO")
+    (ucs               . #x152A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YOO")
+    (ucs               . #x152B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y-CREE YOO")
+    (ucs               . #x152C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YA")
+    (ucs               . #x152D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YAA")
+    (ucs               . #x152E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YWE")
+    (ucs               . #x152F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE YWE")
+    (ucs               . #x1530)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YWI")
+    (ucs               . #x1531)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE YWI")
+    (ucs               . #x1532)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YWII")
+    (ucs               . #x1533)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE YWII")
+    (ucs               . #x1534)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YWO")
+    (ucs               . #x1535)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE YWO")
+    (ucs               . #x1536)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YWOO")
+    (ucs               . #x1537)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE YWOO")
+    (ucs               . #x1538)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YWA")
+    (ucs               . #x1539)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE YWA")
+    (ucs               . #x153A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS YWAA")
+    (ucs               . #x153B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE YWAA")
+    (ucs               . #x153C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NASKAPI YWAA")
+    (ucs               . #x153D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Y")
+    (ucs               . #x153E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BIBLE-CREE Y")
+    (ucs               . #x153F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE Y")
+    (ucs               . #x1540)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI YI")
+    (ucs               . #x1541)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS RE")
+    (ucs               . #x1542)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS R-CREE RE")
+    (ucs               . #x1543)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LE")
+    (ucs               . #x1544)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS RAAI")
+    (ucs               . #x1545)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS RI")
+    (ucs               . #x1546)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS RII")
+    (ucs               . #x1547)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS RO")
+    (ucs               . #x1548)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS ROO")
+    (ucs               . #x1549)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LO")
+    (ucs               . #x154A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS RA")
+    (ucs               . #x154B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS RAA")
+    (ucs               . #x154C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE LA")
+    (ucs               . #x154D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS RWAA")
+    (ucs               . #x154E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE RWAA")
+    (ucs               . #x154F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS R")
+    (ucs               . #x1550)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE R")
+    (ucs               . #x1551)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS MEDIAL R")
+    (ucs               . #x1552)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FE")
+    (ucs               . #x1553)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FAAI")
+    (ucs               . #x1554)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FI")
+    (ucs               . #x1555)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FII")
+    (ucs               . #x1556)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FO")
+    (ucs               . #x1557)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FOO")
+    (ucs               . #x1558)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FA")
+    (ucs               . #x1559)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FAA")
+    (ucs               . #x155A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FWAA")
+    (ucs               . #x155B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE FWAA")
+    (ucs               . #x155C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS F")
+    (ucs               . #x155D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS THE")
+    (ucs               . #x155E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS N-CREE THE")
+    (ucs               . #x155F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS THI")
+    (ucs               . #x1560)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS N-CREE THI")
+    (ucs               . #x1561)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS THII")
+    (ucs               . #x1562)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS N-CREE THII")
+    (ucs               . #x1563)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS THO")
+    (ucs               . #x1564)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS THOO")
+    (ucs               . #x1565)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS THA")
+    (ucs               . #x1566)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS THAA")
+    (ucs               . #x1567)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS THWAA")
+    (ucs               . #x1568)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE THWAA")
+    (ucs               . #x1569)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TH")
+    (ucs               . #x156A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TTHE")
+    (ucs               . #x156B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TTHI")
+    (ucs               . #x156C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TTHO")
+    (ucs               . #x156D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TTHA")
+    (ucs               . #x156E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TTH")
+    (ucs               . #x156F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TYE")
+    (ucs               . #x1570)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TYI")
+    (ucs               . #x1571)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TYO")
+    (ucs               . #x1572)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TYA")
+    (ucs               . #x1573)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NUNAVIK HE")
+    (ucs               . #x1574)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NUNAVIK HI")
+    (ucs               . #x1575)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NUNAVIK HII")
+    (ucs               . #x1576)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NUNAVIK HO")
+    (ucs               . #x1577)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NUNAVIK HOO")
+    (ucs               . #x1578)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NUNAVIK HA")
+    (ucs               . #x1579)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NUNAVIK HAA")
+    (ucs               . #x157A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NUNAVIK H")
+    (ucs               . #x157B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NUNAVUT H")
+    (ucs               . #x157C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS HK")
+    (ucs               . #x157D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS QAAI")
+    (ucs               . #x157E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS QI")
+    (ucs               . #x157F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS QII")
+    (ucs               . #x1580)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS QO")
+    (ucs               . #x1581)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS QOO")
+    (ucs               . #x1582)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS QA")
+    (ucs               . #x1583)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS QAA")
+    (ucs               . #x1584)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS Q")
+    (ucs               . #x1585)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TLHE")
+    (ucs               . #x1586)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TLHI")
+    (ucs               . #x1587)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TLHO")
+    (ucs               . #x1588)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TLHA")
+    (ucs               . #x1589)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE RE")
+    (ucs               . #x158A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE RI")
+    (ucs               . #x158B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE RO")
+    (ucs               . #x158C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WEST-CREE RA")
+    (ucs               . #x158D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NGAAI")
+    (ucs               . #x158E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NGI")
+    (ucs               . #x158F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NGII")
+    (ucs               . #x1590)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NGO")
+    (ucs               . #x1591)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NGOO")
+    (ucs               . #x1592)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NGA")
+    (ucs               . #x1593)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NGAA")
+    (ucs               . #x1594)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NG")
+    (ucs               . #x1595)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NNG")
+    (ucs               . #x1596)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI SHE")
+    (ucs               . #x1597)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI SHI")
+    (ucs               . #x1598)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI SHO")
+    (ucs               . #x1599)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI SHA")
+    (ucs               . #x159A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WOODS-CREE THE")
+    (ucs               . #x159B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WOODS-CREE THI")
+    (ucs               . #x159C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WOODS-CREE THO")
+    (ucs               . #x159D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WOODS-CREE THA")
+    (ucs               . #x159E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS WOODS-CREE TH")
+    (ucs               . #x159F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LHI")
+    (ucs               . #x15A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LHII")
+    (ucs               . #x15A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LHO")
+    (ucs               . #x15A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LHOO")
+    (ucs               . #x15A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LHA")
+    (ucs               . #x15A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LHAA")
+    (ucs               . #x15A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS LH")
+    (ucs               . #x15A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TH-CREE THE")
+    (ucs               . #x15A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TH-CREE THI")
+    (ucs               . #x15A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TH-CREE THII")
+    (ucs               . #x15A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TH-CREE THO")
+    (ucs               . #x15AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TH-CREE THOO")
+    (ucs               . #x15AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TH-CREE THA")
+    (ucs               . #x15AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TH-CREE THAA")
+    (ucs               . #x15AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS TH-CREE TH")
+    (ucs               . #x15AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS AIVILIK B")
+    (ucs               . #x15AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT E")
+    (ucs               . #x15B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT I")
+    (ucs               . #x15B1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT O")
+    (ucs               . #x15B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT A")
+    (ucs               . #x15B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT WE")
+    (ucs               . #x15B4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT WI")
+    (ucs               . #x15B5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT WO")
+    (ucs               . #x15B6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT WA")
+    (ucs               . #x15B7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT NE")
+    (ucs               . #x15B8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT NI")
+    (ucs               . #x15B9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT NO")
+    (ucs               . #x15BA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT NA")
+    (ucs               . #x15BB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT KE")
+    (ucs               . #x15BC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT KI")
+    (ucs               . #x15BD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT KO")
+    (ucs               . #x15BE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS BLACKFOOT KA")
+    (ucs               . #x15BF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI HE")
+    (ucs               . #x15C0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI HI")
+    (ucs               . #x15C1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI HO")
+    (ucs               . #x15C2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI HA")
+    (ucs               . #x15C3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GHU")
+    (ucs               . #x15C4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GHO")
+    (ucs               . #x15C5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GHE")
+    (ucs               . #x15C6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GHEE")
+    (ucs               . #x15C7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GHI")
+    (ucs               . #x15C8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GHA")
+    (ucs               . #x15C9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER RU")
+    (ucs               . #x15CA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER RO")
+    (ucs               . #x15CB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER RE")
+    (ucs               . #x15CC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER REE")
+    (ucs               . #x15CD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER RI")
+    (ucs               . #x15CE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER RA")
+    (ucs               . #x15CF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER WU")
+    (ucs               . #x15D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER WO")
+    (ucs               . #x15D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER WE")
+    (ucs               . #x15D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER WEE")
+    (ucs               . #x15D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER WI")
+    (ucs               . #x15D4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER WA")
+    (ucs               . #x15D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER HWU")
+    (ucs               . #x15D6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER HWO")
+    (ucs               . #x15D7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER HWE")
+    (ucs               . #x15D8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER HWEE")
+    (ucs               . #x15D9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER HWI")
+    (ucs               . #x15DA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER HWA")
+    (ucs               . #x15DB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER THU")
+    (ucs               . #x15DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER THO")
+    (ucs               . #x15DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER THE")
+    (ucs               . #x15DE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER THEE")
+    (ucs               . #x15DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER THI")
+    (ucs               . #x15E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER THA")
+    (ucs               . #x15E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTU")
+    (ucs               . #x15E2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTO")
+    (ucs               . #x15E3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTE")
+    (ucs               . #x15E4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTEE")
+    (ucs               . #x15E5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTI")
+    (ucs               . #x15E6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTA")
+    (ucs               . #x15E7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER PU")
+    (ucs               . #x15E8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER PO")
+    (ucs               . #x15E9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER PE")
+    (ucs               . #x15EA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER PEE")
+    (ucs               . #x15EB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER PI")
+    (ucs               . #x15EC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER PA")
+    (ucs               . #x15ED)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER P")
+    (ucs               . #x15EE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GU")
+    (ucs               . #x15EF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GO")
+    (ucs               . #x15F0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GE")
+    (ucs               . #x15F1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GEE")
+    (ucs               . #x15F2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GI")
+    (ucs               . #x15F3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER GA")
+    (ucs               . #x15F4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KHU")
+    (ucs               . #x15F5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KHO")
+    (ucs               . #x15F6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KHE")
+    (ucs               . #x15F7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KHEE")
+    (ucs               . #x15F8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KHI")
+    (ucs               . #x15F9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KHA")
+    (ucs               . #x15FA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KKU")
+    (ucs               . #x15FB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KKO")
+    (ucs               . #x15FC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KKE")
+    (ucs               . #x15FD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KKEE")
+    (ucs               . #x15FE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KKI")
+    (ucs               . #x15FF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KKA")
+    (ucs               . #x1600)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER KK")
+    (ucs               . #x1601)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER NU")
+    (ucs               . #x1602)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER NO")
+    (ucs               . #x1603)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER NE")
+    (ucs               . #x1604)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER NEE")
+    (ucs               . #x1605)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER NI")
+    (ucs               . #x1606)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER NA")
+    (ucs               . #x1607)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER MU")
+    (ucs               . #x1608)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER MO")
+    (ucs               . #x1609)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER ME")
+    (ucs               . #x160A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER MEE")
+    (ucs               . #x160B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER MI")
+    (ucs               . #x160C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER MA")
+    (ucs               . #x160D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER YU")
+    (ucs               . #x160E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER YO")
+    (ucs               . #x160F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER YE")
+    (ucs               . #x1610)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER YEE")
+    (ucs               . #x1611)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER YI")
+    (ucs               . #x1612)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER YA")
+    (ucs               . #x1613)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JU")
+    (ucs               . #x1614)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI JU")
+    (ucs               . #x1615)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JO")
+    (ucs               . #x1616)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JE")
+    (ucs               . #x1617)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JEE")
+    (ucs               . #x1618)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JI")
+    (ucs               . #x1619)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS SAYISI JI")
+    (ucs               . #x161A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JA")
+    (ucs               . #x161B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JJU")
+    (ucs               . #x161C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JJO")
+    (ucs               . #x161D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JJE")
+    (ucs               . #x161E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JJEE")
+    (ucs               . #x161F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JJI")
+    (ucs               . #x1620)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER JJA")
+    (ucs               . #x1621)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LU")
+    (ucs               . #x1622)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LO")
+    (ucs               . #x1623)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LE")
+    (ucs               . #x1624)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LEE")
+    (ucs               . #x1625)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LI")
+    (ucs               . #x1626)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LA")
+    (ucs               . #x1627)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DLU")
+    (ucs               . #x1628)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DLO")
+    (ucs               . #x1629)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DLE")
+    (ucs               . #x162A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DLEE")
+    (ucs               . #x162B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DLI")
+    (ucs               . #x162C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DLA")
+    (ucs               . #x162D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LHU")
+    (ucs               . #x162E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LHO")
+    (ucs               . #x162F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LHE")
+    (ucs               . #x1630)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LHEE")
+    (ucs               . #x1631)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LHI")
+    (ucs               . #x1632)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER LHA")
+    (ucs               . #x1633)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLHU")
+    (ucs               . #x1634)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLHO")
+    (ucs               . #x1635)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLHE")
+    (ucs               . #x1636)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLHEE")
+    (ucs               . #x1637)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLHI")
+    (ucs               . #x1638)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLHA")
+    (ucs               . #x1639)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLU")
+    (ucs               . #x163A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLO")
+    (ucs               . #x163B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLE")
+    (ucs               . #x163C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLEE")
+    (ucs               . #x163D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLI")
+    (ucs               . #x163E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TLA")
+    (ucs               . #x163F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER ZU")
+    (ucs               . #x1640)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER ZO")
+    (ucs               . #x1641)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER ZE")
+    (ucs               . #x1642)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER ZEE")
+    (ucs               . #x1643)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER ZI")
+    (ucs               . #x1644)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER ZA")
+    (ucs               . #x1645)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER Z")
+    (ucs               . #x1646)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER INITIAL Z")
+    (ucs               . #x1647)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DZU")
+    (ucs               . #x1648)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DZO")
+    (ucs               . #x1649)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DZE")
+    (ucs               . #x164A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DZEE")
+    (ucs               . #x164B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DZI")
+    (ucs               . #x164C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER DZA")
+    (ucs               . #x164D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SU")
+    (ucs               . #x164E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SO")
+    (ucs               . #x164F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SE")
+    (ucs               . #x1650)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SEE")
+    (ucs               . #x1651)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SI")
+    (ucs               . #x1652)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SA")
+    (ucs               . #x1653)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SHU")
+    (ucs               . #x1654)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SHO")
+    (ucs               . #x1655)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SHE")
+    (ucs               . #x1656)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SHEE")
+    (ucs               . #x1657)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SHI")
+    (ucs               . #x1658)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SHA")
+    (ucs               . #x1659)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER SH")
+    (ucs               . #x165A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TSU")
+    (ucs               . #x165B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TSO")
+    (ucs               . #x165C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TSE")
+    (ucs               . #x165D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TSEE")
+    (ucs               . #x165E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TSI")
+    (ucs               . #x165F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TSA")
+    (ucs               . #x1660)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER CHU")
+    (ucs               . #x1661)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER CHO")
+    (ucs               . #x1662)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER CHE")
+    (ucs               . #x1663)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER CHEE")
+    (ucs               . #x1664)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER CHI")
+    (ucs               . #x1665)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER CHA")
+    (ucs               . #x1666)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTSU")
+    (ucs               . #x1667)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTSO")
+    (ucs               . #x1668)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTSE")
+    (ucs               . #x1669)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTSEE")
+    (ucs               . #x166A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTSI")
+    (ucs               . #x166B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CARRIER TTSA")
+    (ucs               . #x166C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS CHI SIGN")
+    (ucs               . #x166D)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS FULL STOP")
+    (ucs               . #x166E)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS QAI")
+    (ucs               . #x166F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NGAI")
+    (ucs               . #x1670)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NNGI")
+    (ucs               . #x1671)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NNGII")
+    (ucs               . #x1672)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NNGO")
+    (ucs               . #x1673)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NNGOO")
+    (ucs               . #x1674)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NNGA")
+    (ucs               . #x1675)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANADIAN SYLLABICS NNGAA")
+    (ucs               . #x1676)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u01680-Ogham.el b/lisp/utf-2000/u01680-Ogham.el
new file mode 100644 (file)
index 0000000..1f3203f
--- /dev/null
@@ -0,0 +1,203 @@
+(define-char
+  '((name              . "OGHAM SPACE MARK")
+    (ucs               . #x1680)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER BEITH")
+    (ucs               . #x1681)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER LUIS")
+    (ucs               . #x1682)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER FEARN")
+    (ucs               . #x1683)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER SAIL")
+    (ucs               . #x1684)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER NION")
+    (ucs               . #x1685)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER UATH")
+    (ucs               . #x1686)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER DAIR")
+    (ucs               . #x1687)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER TINNE")
+    (ucs               . #x1688)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER COLL")
+    (ucs               . #x1689)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER CEIRT")
+    (ucs               . #x168A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER MUIN")
+    (ucs               . #x168B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER GORT")
+    (ucs               . #x168C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER NGEADAL")
+    (ucs               . #x168D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER STRAIF")
+    (ucs               . #x168E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER RUIS")
+    (ucs               . #x168F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER AILM")
+    (ucs               . #x1690)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER ONN")
+    (ucs               . #x1691)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER UR")
+    (ucs               . #x1692)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER EADHADH")
+    (ucs               . #x1693)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER IODHADH")
+    (ucs               . #x1694)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER EABHADH")
+    (ucs               . #x1695)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER OR")
+    (ucs               . #x1696)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER UILLEANN")
+    (ucs               . #x1697)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER IFIN")
+    (ucs               . #x1698)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER EAMHANCHOLL")
+    (ucs               . #x1699)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM LETTER PEITH")
+    (ucs               . #x169A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM FEATHER MARK")
+    (ucs               . #x169B)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OGHAM REVERSED FEATHER MARK")
+    (ucs               . #x169C)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u016A0-Runic.el b/lisp/utf-2000/u016A0-Runic.el
new file mode 100644 (file)
index 0000000..9392bc7
--- /dev/null
@@ -0,0 +1,573 @@
+(define-char
+  '((name              . "RUNIC LETTER FEHU FEOH FE F")
+    (ucs               . #x16A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER V")
+    (ucs               . #x16A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER URUZ UR U")
+    (ucs               . #x16A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER YR")
+    (ucs               . #x16A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER Y")
+    (ucs               . #x16A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER W")
+    (ucs               . #x16A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER THURISAZ THURS THORN")
+    (ucs               . #x16A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER ETH")
+    (ucs               . #x16A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER ANSUZ A")
+    (ucs               . #x16A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER OS O")
+    (ucs               . #x16A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER AC A")
+    (ucs               . #x16AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER AESC")
+    (ucs               . #x16AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER LONG-BRANCH-OSS O")
+    (ucs               . #x16AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SHORT-TWIG-OSS O")
+    (ucs               . #x16AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER O")
+    (ucs               . #x16AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER OE")
+    (ucs               . #x16AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER ON")
+    (ucs               . #x16B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER RAIDO RAD REID R")
+    (ucs               . #x16B1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER KAUNA")
+    (ucs               . #x16B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER CEN")
+    (ucs               . #x16B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER KAUN K")
+    (ucs               . #x16B4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER G")
+    (ucs               . #x16B5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER ENG")
+    (ucs               . #x16B6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER GEBO GYFU G")
+    (ucs               . #x16B7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER GAR")
+    (ucs               . #x16B8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER WUNJO WYNN W")
+    (ucs               . #x16B9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER HAGLAZ H")
+    (ucs               . #x16BA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER HAEGL H")
+    (ucs               . #x16BB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER LONG-BRANCH-HAGALL H")
+    (ucs               . #x16BC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SHORT-TWIG-HAGALL H")
+    (ucs               . #x16BD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER NAUDIZ NYD NAUD N")
+    (ucs               . #x16BE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SHORT-TWIG-NAUD N")
+    (ucs               . #x16BF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER DOTTED-N")
+    (ucs               . #x16C0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER ISAZ IS ISS I")
+    (ucs               . #x16C1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER E")
+    (ucs               . #x16C2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER JERAN J")
+    (ucs               . #x16C3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER GER")
+    (ucs               . #x16C4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER LONG-BRANCH-AR AE")
+    (ucs               . #x16C5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SHORT-TWIG-AR A")
+    (ucs               . #x16C6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER IWAZ EOH")
+    (ucs               . #x16C7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER PERTHO PEORTH P")
+    (ucs               . #x16C8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER ALGIZ EOLHX")
+    (ucs               . #x16C9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SOWILO S")
+    (ucs               . #x16CA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SIGEL LONG-BRANCH-SOL S")
+    (ucs               . #x16CB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SHORT-TWIG-SOL S")
+    (ucs               . #x16CC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER C")
+    (ucs               . #x16CD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER Z")
+    (ucs               . #x16CE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER TIWAZ TIR TYR T")
+    (ucs               . #x16CF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SHORT-TWIG-TYR T")
+    (ucs               . #x16D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER D")
+    (ucs               . #x16D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER BERKANAN BEORC BJARKAN B")
+    (ucs               . #x16D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SHORT-TWIG-BJARKAN B")
+    (ucs               . #x16D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER DOTTED-P")
+    (ucs               . #x16D4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER OPEN-P")
+    (ucs               . #x16D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER EHWAZ EH E")
+    (ucs               . #x16D6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER MANNAZ MAN M")
+    (ucs               . #x16D7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER LONG-BRANCH-MADR M")
+    (ucs               . #x16D8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SHORT-TWIG-MADR M")
+    (ucs               . #x16D9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER LAUKAZ LAGU LOGR L")
+    (ucs               . #x16DA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER DOTTED-L")
+    (ucs               . #x16DB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER INGWAZ")
+    (ucs               . #x16DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER ING")
+    (ucs               . #x16DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER DAGAZ DAEG D")
+    (ucs               . #x16DE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER OTHALAN ETHEL O")
+    (ucs               . #x16DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER EAR")
+    (ucs               . #x16E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER IOR")
+    (ucs               . #x16E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER CWEORTH")
+    (ucs               . #x16E2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER CALC")
+    (ucs               . #x16E3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER CEALC")
+    (ucs               . #x16E4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER STAN")
+    (ucs               . #x16E5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER LONG-BRANCH-YR")
+    (ucs               . #x16E6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER SHORT-TWIG-YR")
+    (ucs               . #x16E7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER ICELANDIC-YR")
+    (ucs               . #x16E8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER Q")
+    (ucs               . #x16E9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC LETTER X")
+    (ucs               . #x16EA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC SINGLE PUNCTUATION")
+    (ucs               . #x16EB)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC MULTIPLE PUNCTUATION")
+    (ucs               . #x16EC)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC CROSS PUNCTUATION")
+    (ucs               . #x16ED)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUNIC ARLAUG SYMBOL")
+    (ucs               . #x16EE)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (numeric-value     . 17)
+    (mirrored          . nil)
+    (iso-10646-comment . "golden number 17")
+    ))
+(define-char
+  '((name              . "RUNIC TVIMADUR SYMBOL")
+    (ucs               . #x16EF)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (numeric-value     . 18)
+    (mirrored          . nil)
+    (iso-10646-comment . "golden number 18")
+    ))
+(define-char
+  '((name              . "RUNIC BELGTHOR SYMBOL")
+    (ucs               . #x16F0)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (numeric-value     . 19)
+    (mirrored          . nil)
+    (iso-10646-comment . "golden number 19")
+    ))
diff --git a/lisp/utf-2000/u01780-Khmer.el b/lisp/utf-2000/u01780-Khmer.el
new file mode 100644 (file)
index 0000000..5bbd101
--- /dev/null
@@ -0,0 +1,751 @@
+(define-char
+  '((name              . "KHMER LETTER KA")
+    (ucs               . #x1780)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER KHA")
+    (ucs               . #x1781)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER KO")
+    (ucs               . #x1782)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER KHO")
+    (ucs               . #x1783)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER NGO")
+    (ucs               . #x1784)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER CA")
+    (ucs               . #x1785)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER CHA")
+    (ucs               . #x1786)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER CO")
+    (ucs               . #x1787)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER CHO")
+    (ucs               . #x1788)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER NYO")
+    (ucs               . #x1789)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER DA")
+    (ucs               . #x178A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER TTHA")
+    (ucs               . #x178B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER DO")
+    (ucs               . #x178C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER TTHO")
+    (ucs               . #x178D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER NNO")
+    (ucs               . #x178E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER TA")
+    (ucs               . #x178F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER THA")
+    (ucs               . #x1790)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER TO")
+    (ucs               . #x1791)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER THO")
+    (ucs               . #x1792)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER NO")
+    (ucs               . #x1793)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER BA")
+    (ucs               . #x1794)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER PHA")
+    (ucs               . #x1795)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER PO")
+    (ucs               . #x1796)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER PHO")
+    (ucs               . #x1797)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER MO")
+    (ucs               . #x1798)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER YO")
+    (ucs               . #x1799)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER RO")
+    (ucs               . #x179A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER LO")
+    (ucs               . #x179B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER VO")
+    (ucs               . #x179C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER SHA")
+    (ucs               . #x179D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER SSO")
+    (ucs               . #x179E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER SA")
+    (ucs               . #x179F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER HA")
+    (ucs               . #x17A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER LA")
+    (ucs               . #x17A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER LETTER QA")
+    (ucs               . #x17A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QAQ")
+    (ucs               . #x17A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QAA")
+    (ucs               . #x17A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QI")
+    (ucs               . #x17A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QII")
+    (ucs               . #x17A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QU")
+    (ucs               . #x17A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QUK")
+    (ucs               . #x17A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QUU")
+    (ucs               . #x17A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QUUV")
+    (ucs               . #x17AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL RY")
+    (ucs               . #x17AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL RYY")
+    (ucs               . #x17AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL LY")
+    (ucs               . #x17AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL LYY")
+    (ucs               . #x17AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QE")
+    (ucs               . #x17AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QAI")
+    (ucs               . #x17B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QOO TYPE ONE")
+    (ucs               . #x17B1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QOO TYPE TWO")
+    (ucs               . #x17B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER INDEPENDENT VOWEL QAU")
+    (ucs               . #x17B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL INHERENT AQ")
+    (ucs               . #x17B4)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL INHERENT AA")
+    (ucs               . #x17B5)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN AA")
+    (ucs               . #x17B6)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN I")
+    (ucs               . #x17B7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN II")
+    (ucs               . #x17B8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN Y")
+    (ucs               . #x17B9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN YY")
+    (ucs               . #x17BA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN U")
+    (ucs               . #x17BB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN UU")
+    (ucs               . #x17BC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN UA")
+    (ucs               . #x17BD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN OE")
+    (ucs               . #x17BE)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN YA")
+    (ucs               . #x17BF)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN IE")
+    (ucs               . #x17C0)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN E")
+    (ucs               . #x17C1)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN AE")
+    (ucs               . #x17C2)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN AI")
+    (ucs               . #x17C3)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN OO")
+    (ucs               . #x17C4)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER VOWEL SIGN AU")
+    (ucs               . #x17C5)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN NIKAHIT")
+    (ucs               . #x17C6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN REAHMUK")
+    (ucs               . #x17C7)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN YUUKALEAPINTU")
+    (ucs               . #x17C8)
+    (general-category  mark spacing-combining) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN MUUSIKATOAN")
+    (ucs               . #x17C9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN TRIISAP")
+    (ucs               . #x17CA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN BANTOC")
+    (ucs               . #x17CB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN ROBAT")
+    (ucs               . #x17CC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN TOANDAKHIAT")
+    (ucs               . #x17CD)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN KAKABAT")
+    (ucs               . #x17CE)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN AHSDA")
+    (ucs               . #x17CF)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN SAMYOK SANNYA")
+    (ucs               . #x17D0)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN VIRIAM")
+    (ucs               . #x17D1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN COENG")
+    (ucs               . #x17D2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN BATHAMASAT")
+    (ucs               . #x17D3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN KHAN")
+    (ucs               . #x17D4)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN BARIYOOSAN")
+    (ucs               . #x17D5)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN CAMNUC PII KUUH")
+    (ucs               . #x17D6)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN LEK TOO")
+    (ucs               . #x17D7)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN BEYYAL")
+    (ucs               . #x17D8)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN PHNAEK MUAN")
+    (ucs               . #x17D9)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN KOOMUUT")
+    (ucs               . #x17DA)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER CURRENCY SYMBOL RIEL")
+    (ucs               . #x17DB)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER SIGN AVAKRAHASANYA")
+    (ucs               . #x17DC)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT ZERO")
+    (ucs               . #x17E0)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT ONE")
+    (ucs               . #x17E1)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT TWO")
+    (ucs               . #x17E2)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT THREE")
+    (ucs               . #x17E3)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT FOUR")
+    (ucs               . #x17E4)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT FIVE")
+    (ucs               . #x17E5)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT SIX")
+    (ucs               . #x17E6)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT SEVEN")
+    (ucs               . #x17E7)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT EIGHT")
+    (ucs               . #x17E8)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KHMER DIGIT NINE")
+    (ucs               . #x17E9)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u01800-Mongolian.el b/lisp/utf-2000/u01800-Mongolian.el
new file mode 100644 (file)
index 0000000..3865dd6
--- /dev/null
@@ -0,0 +1,1115 @@
+(define-char
+  '((name              . "MONGOLIAN BIRGA")
+    (ucs               . #x1800)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN ELLIPSIS")
+    (ucs               . #x1801)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN COMMA")
+    (ucs               . #x1802)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN FULL STOP")
+    (ucs               . #x1803)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN COLON")
+    (ucs               . #x1804)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN FOUR DOTS")
+    (ucs               . #x1805)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN TODO SOFT HYPHEN")
+    (ucs               . #x1806)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER")
+    (ucs               . #x1807)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN MANCHU COMMA")
+    (ucs               . #x1808)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN MANCHU FULL STOP")
+    (ucs               . #x1809)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN NIRUGU")
+    (ucs               . #x180A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN FREE VARIATION SELECTOR ONE")
+    (ucs               . #x180B)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN FREE VARIATION SELECTOR TWO")
+    (ucs               . #x180C)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN FREE VARIATION SELECTOR THREE")
+    (ucs               . #x180D)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN VOWEL SEPARATOR")
+    (ucs               . #x180E)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT ZERO")
+    (ucs               . #x1810)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 0)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT ONE")
+    (ucs               . #x1811)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 1)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT TWO")
+    (ucs               . #x1812)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 2)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT THREE")
+    (ucs               . #x1813)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 3)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT FOUR")
+    (ucs               . #x1814)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 4)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT FIVE")
+    (ucs               . #x1815)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 5)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT SIX")
+    (ucs               . #x1816)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 6)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT SEVEN")
+    (ucs               . #x1817)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 7)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT EIGHT")
+    (ucs               . #x1818)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 8)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN DIGIT NINE")
+    (ucs               . #x1819)
+    (general-category  number decimal-digit) ; Normative Category
+    (bidi-category     . "L")
+    (decimal-digit-value . 9)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER A")
+    (ucs               . #x1820)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER E")
+    (ucs               . #x1821)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER I")
+    (ucs               . #x1822)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER O")
+    (ucs               . #x1823)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER U")
+    (ucs               . #x1824)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER OE")
+    (ucs               . #x1825)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER UE")
+    (ucs               . #x1826)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER EE")
+    (ucs               . #x1827)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER NA")
+    (ucs               . #x1828)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ANG")
+    (ucs               . #x1829)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER BA")
+    (ucs               . #x182A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER PA")
+    (ucs               . #x182B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER QA")
+    (ucs               . #x182C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER GA")
+    (ucs               . #x182D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MA")
+    (ucs               . #x182E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER LA")
+    (ucs               . #x182F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SA")
+    (ucs               . #x1830)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SHA")
+    (ucs               . #x1831)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TA")
+    (ucs               . #x1832)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER DA")
+    (ucs               . #x1833)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER CHA")
+    (ucs               . #x1834)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER JA")
+    (ucs               . #x1835)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER YA")
+    (ucs               . #x1836)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER RA")
+    (ucs               . #x1837)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER WA")
+    (ucs               . #x1838)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER FA")
+    (ucs               . #x1839)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER KA")
+    (ucs               . #x183A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER KHA")
+    (ucs               . #x183B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TSA")
+    (ucs               . #x183C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ZA")
+    (ucs               . #x183D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER HAA")
+    (ucs               . #x183E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ZRA")
+    (ucs               . #x183F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER LHA")
+    (ucs               . #x1840)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ZHI")
+    (ucs               . #x1841)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER CHI")
+    (ucs               . #x1842)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO LONG VOWEL SIGN")
+    (ucs               . #x1843)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO E")
+    (ucs               . #x1844)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO I")
+    (ucs               . #x1845)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO O")
+    (ucs               . #x1846)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO U")
+    (ucs               . #x1847)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO OE")
+    (ucs               . #x1848)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO UE")
+    (ucs               . #x1849)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO ANG")
+    (ucs               . #x184A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO BA")
+    (ucs               . #x184B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO PA")
+    (ucs               . #x184C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO QA")
+    (ucs               . #x184D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO GA")
+    (ucs               . #x184E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO MA")
+    (ucs               . #x184F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO TA")
+    (ucs               . #x1850)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO DA")
+    (ucs               . #x1851)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO CHA")
+    (ucs               . #x1852)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO JA")
+    (ucs               . #x1853)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO TSA")
+    (ucs               . #x1854)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO YA")
+    (ucs               . #x1855)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO WA")
+    (ucs               . #x1856)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO KA")
+    (ucs               . #x1857)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO GAA")
+    (ucs               . #x1858)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO HAA")
+    (ucs               . #x1859)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO JIA")
+    (ucs               . #x185A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO NIA")
+    (ucs               . #x185B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO DZA")
+    (ucs               . #x185C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE E")
+    (ucs               . #x185D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE I")
+    (ucs               . #x185E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE IY")
+    (ucs               . #x185F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE UE")
+    (ucs               . #x1860)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE U")
+    (ucs               . #x1861)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE ANG")
+    (ucs               . #x1862)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE KA")
+    (ucs               . #x1863)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE GA")
+    (ucs               . #x1864)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE HA")
+    (ucs               . #x1865)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE PA")
+    (ucs               . #x1866)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE SHA")
+    (ucs               . #x1867)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE TA")
+    (ucs               . #x1868)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE DA")
+    (ucs               . #x1869)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE JA")
+    (ucs               . #x186A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE FA")
+    (ucs               . #x186B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE GAA")
+    (ucs               . #x186C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE HAA")
+    (ucs               . #x186D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE TSA")
+    (ucs               . #x186E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE ZA")
+    (ucs               . #x186F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE RAA")
+    (ucs               . #x1870)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE CHA")
+    (ucs               . #x1871)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER SIBE ZHA")
+    (ucs               . #x1872)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU I")
+    (ucs               . #x1873)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU KA")
+    (ucs               . #x1874)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU RA")
+    (ucs               . #x1875)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU FA")
+    (ucs               . #x1876)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ZHA")
+    (ucs               . #x1877)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI ANUSVARA ONE")
+    (ucs               . #x1880)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI VISARGA ONE")
+    (ucs               . #x1881)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI DAMARU")
+    (ucs               . #x1882)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI UBADAMA")
+    (ucs               . #x1883)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI INVERTED UBADAMA")
+    (ucs               . #x1884)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI BALUDA")
+    (ucs               . #x1885)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI THREE BALUDA")
+    (ucs               . #x1886)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI A")
+    (ucs               . #x1887)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI I")
+    (ucs               . #x1888)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI KA")
+    (ucs               . #x1889)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI NGA")
+    (ucs               . #x188A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI CA")
+    (ucs               . #x188B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI TTA")
+    (ucs               . #x188C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI TTHA")
+    (ucs               . #x188D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI DDA")
+    (ucs               . #x188E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI NNA")
+    (ucs               . #x188F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI TA")
+    (ucs               . #x1890)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI DA")
+    (ucs               . #x1891)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI PA")
+    (ucs               . #x1892)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI PHA")
+    (ucs               . #x1893)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI SSA")
+    (ucs               . #x1894)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI ZHA")
+    (ucs               . #x1895)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI ZA")
+    (ucs               . #x1896)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI AH")
+    (ucs               . #x1897)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO ALI GALI TA")
+    (ucs               . #x1898)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER TODO ALI GALI ZHA")
+    (ucs               . #x1899)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI GHA")
+    (ucs               . #x189A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI NGA")
+    (ucs               . #x189B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI CA")
+    (ucs               . #x189C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI JHA")
+    (ucs               . #x189D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI TTA")
+    (ucs               . #x189E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI DDHA")
+    (ucs               . #x189F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI TA")
+    (ucs               . #x18A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI DHA")
+    (ucs               . #x18A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI SSA")
+    (ucs               . #x18A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI CYA")
+    (ucs               . #x18A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI ZHA")
+    (ucs               . #x18A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI ZA")
+    (ucs               . #x18A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI HALF U")
+    (ucs               . #x18A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI HALF YA")
+    (ucs               . #x18A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER MANCHU ALI GALI BHA")
+    (ucs               . #x18A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONGOLIAN LETTER ALI GALI DAGALGA")
+    (ucs               . #x18A9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u01E00-Latin-Extended-Additional.el b/lisp/utf-2000/u01E00-Latin-Extended-Additional.el
new file mode 100644 (file)
index 0000000..475a87c
--- /dev/null
@@ -0,0 +1,2510 @@
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH RING BELOW")
+    (ucs               . #x1E00)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0325)
+    (->lowercase       #x1E01)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH RING BELOW")
+    (ucs               . #x1E01)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0325)
+    (->uppercase       #x1E00)
+    (->titlecase       #x1E00)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER B WITH DOT ABOVE")
+    (ucs               . #x1E02)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0042 #x0307)
+    (->lowercase       #x1E03)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER B WITH DOT ABOVE")
+    (ucs               . #x1E03)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0062 #x0307)
+    (->uppercase       #x1E02)
+    (->titlecase       #x1E02)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER B WITH DOT BELOW")
+    (ucs               . #x1E04)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0042 #x0323)
+    (->lowercase       #x1E05)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER B WITH DOT BELOW")
+    (ucs               . #x1E05)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0062 #x0323)
+    (->uppercase       #x1E04)
+    (->titlecase       #x1E04)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER B WITH LINE BELOW")
+    (ucs               . #x1E06)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0042 #x0331)
+    (->lowercase       #x1E07)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER B WITH LINE BELOW")
+    (ucs               . #x1E07)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0062 #x0331)
+    (->uppercase       #x1E06)
+    (->titlecase       #x1E06)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE")
+    (ucs               . #x1E08)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00C7 #x0301)
+    (->lowercase       #x1E09)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER C WITH CEDILLA AND ACUTE")
+    (ucs               . #x1E09)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00E7 #x0301)
+    (->uppercase       #x1E08)
+    (->titlecase       #x1E08)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH DOT ABOVE")
+    (ucs               . #x1E0A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0044 #x0307)
+    (->lowercase       #x1E0B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH DOT ABOVE")
+    (ucs               . #x1E0B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0064 #x0307)
+    (->uppercase       #x1E0A)
+    (->titlecase       #x1E0A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH DOT BELOW")
+    (ucs               . #x1E0C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0044 #x0323)
+    (->lowercase       #x1E0D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH DOT BELOW")
+    (ucs               . #x1E0D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0064 #x0323)
+    (->uppercase       #x1E0C)
+    (->titlecase       #x1E0C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH LINE BELOW")
+    (ucs               . #x1E0E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0044 #x0331)
+    (->lowercase       #x1E0F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH LINE BELOW")
+    (ucs               . #x1E0F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0064 #x0331)
+    (->uppercase       #x1E0E)
+    (->titlecase       #x1E0E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH CEDILLA")
+    (ucs               . #x1E10)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0044 #x0327)
+    (->lowercase       #x1E11)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH CEDILLA")
+    (ucs               . #x1E11)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0064 #x0327)
+    (->uppercase       #x1E10)
+    (->titlecase       #x1E10)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E12)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0044 #x032D)
+    (->lowercase       #x1E13)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E13)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0064 #x032D)
+    (->uppercase       #x1E12)
+    (->titlecase       #x1E12)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH MACRON AND GRAVE")
+    (ucs               . #x1E14)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0112 #x0300)
+    (->lowercase       #x1E15)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH MACRON AND GRAVE")
+    (ucs               . #x1E15)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0113 #x0300)
+    (->uppercase       #x1E14)
+    (->titlecase       #x1E14)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH MACRON AND ACUTE")
+    (ucs               . #x1E16)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0112 #x0301)
+    (->lowercase       #x1E17)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH MACRON AND ACUTE")
+    (ucs               . #x1E17)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0113 #x0301)
+    (->uppercase       #x1E16)
+    (->titlecase       #x1E16)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E18)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x032D)
+    (->lowercase       #x1E19)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E19)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x032D)
+    (->uppercase       #x1E18)
+    (->titlecase       #x1E18)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH TILDE BELOW")
+    (ucs               . #x1E1A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0330)
+    (->lowercase       #x1E1B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH TILDE BELOW")
+    (ucs               . #x1E1B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0330)
+    (->uppercase       #x1E1A)
+    (->titlecase       #x1E1A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE")
+    (ucs               . #x1E1C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0228 #x0306)
+    (->lowercase       #x1E1D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH CEDILLA AND BREVE")
+    (ucs               . #x1E1D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0229 #x0306)
+    (->uppercase       #x1E1C)
+    (->titlecase       #x1E1C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER F WITH DOT ABOVE")
+    (ucs               . #x1E1E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0046 #x0307)
+    (->lowercase       #x1E1F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER F WITH DOT ABOVE")
+    (ucs               . #x1E1F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0066 #x0307)
+    (->uppercase       #x1E1E)
+    (->titlecase       #x1E1E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER G WITH MACRON")
+    (ucs               . #x1E20)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0047 #x0304)
+    (->lowercase       #x1E21)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER G WITH MACRON")
+    (ucs               . #x1E21)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0067 #x0304)
+    (->uppercase       #x1E20)
+    (->titlecase       #x1E20)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER H WITH DOT ABOVE")
+    (ucs               . #x1E22)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0048 #x0307)
+    (->lowercase       #x1E23)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH DOT ABOVE")
+    (ucs               . #x1E23)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0068 #x0307)
+    (->uppercase       #x1E22)
+    (->titlecase       #x1E22)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER H WITH DOT BELOW")
+    (ucs               . #x1E24)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0048 #x0323)
+    (->lowercase       #x1E25)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH DOT BELOW")
+    (ucs               . #x1E25)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0068 #x0323)
+    (->uppercase       #x1E24)
+    (->titlecase       #x1E24)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER H WITH DIAERESIS")
+    (ucs               . #x1E26)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0048 #x0308)
+    (->lowercase       #x1E27)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH DIAERESIS")
+    (ucs               . #x1E27)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0068 #x0308)
+    (->uppercase       #x1E26)
+    (->titlecase       #x1E26)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER H WITH CEDILLA")
+    (ucs               . #x1E28)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0048 #x0327)
+    (->lowercase       #x1E29)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH CEDILLA")
+    (ucs               . #x1E29)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0068 #x0327)
+    (->uppercase       #x1E28)
+    (->titlecase       #x1E28)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER H WITH BREVE BELOW")
+    (ucs               . #x1E2A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0048 #x032E)
+    (->lowercase       #x1E2B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH BREVE BELOW")
+    (ucs               . #x1E2B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0068 #x032E)
+    (->uppercase       #x1E2A)
+    (->titlecase       #x1E2A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH TILDE BELOW")
+    (ucs               . #x1E2C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0330)
+    (->lowercase       #x1E2D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH TILDE BELOW")
+    (ucs               . #x1E2D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0330)
+    (->uppercase       #x1E2C)
+    (->titlecase       #x1E2C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE")
+    (ucs               . #x1E2E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00CF #x0301)
+    (->lowercase       #x1E2F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE")
+    (ucs               . #x1E2F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00EF #x0301)
+    (->uppercase       #x1E2E)
+    (->titlecase       #x1E2E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER K WITH ACUTE")
+    (ucs               . #x1E30)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004B #x0301)
+    (->lowercase       #x1E31)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER K WITH ACUTE")
+    (ucs               . #x1E31)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006B #x0301)
+    (->uppercase       #x1E30)
+    (->titlecase       #x1E30)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER K WITH DOT BELOW")
+    (ucs               . #x1E32)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004B #x0323)
+    (->lowercase       #x1E33)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER K WITH DOT BELOW")
+    (ucs               . #x1E33)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006B #x0323)
+    (->uppercase       #x1E32)
+    (->titlecase       #x1E32)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER K WITH LINE BELOW")
+    (ucs               . #x1E34)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004B #x0331)
+    (->lowercase       #x1E35)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER K WITH LINE BELOW")
+    (ucs               . #x1E35)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006B #x0331)
+    (->uppercase       #x1E34)
+    (->titlecase       #x1E34)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L WITH DOT BELOW")
+    (ucs               . #x1E36)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004C #x0323)
+    (->lowercase       #x1E37)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH DOT BELOW")
+    (ucs               . #x1E37)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006C #x0323)
+    (->uppercase       #x1E36)
+    (->titlecase       #x1E36)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON")
+    (ucs               . #x1E38)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1E36 #x0304)
+    (->lowercase       #x1E39)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH DOT BELOW AND MACRON")
+    (ucs               . #x1E39)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1E37 #x0304)
+    (->uppercase       #x1E38)
+    (->titlecase       #x1E38)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L WITH LINE BELOW")
+    (ucs               . #x1E3A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004C #x0331)
+    (->lowercase       #x1E3B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH LINE BELOW")
+    (ucs               . #x1E3B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006C #x0331)
+    (->uppercase       #x1E3A)
+    (->titlecase       #x1E3A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E3C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004C #x032D)
+    (->lowercase       #x1E3D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E3D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006C #x032D)
+    (->uppercase       #x1E3C)
+    (->titlecase       #x1E3C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER M WITH ACUTE")
+    (ucs               . #x1E3E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004D #x0301)
+    (->lowercase       #x1E3F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER M WITH ACUTE")
+    (ucs               . #x1E3F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006D #x0301)
+    (->uppercase       #x1E3E)
+    (->titlecase       #x1E3E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER M WITH DOT ABOVE")
+    (ucs               . #x1E40)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004D #x0307)
+    (->lowercase       #x1E41)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER M WITH DOT ABOVE")
+    (ucs               . #x1E41)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006D #x0307)
+    (->uppercase       #x1E40)
+    (->titlecase       #x1E40)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER M WITH DOT BELOW")
+    (ucs               . #x1E42)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004D #x0323)
+    (->lowercase       #x1E43)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER M WITH DOT BELOW")
+    (ucs               . #x1E43)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006D #x0323)
+    (->uppercase       #x1E42)
+    (->titlecase       #x1E42)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH DOT ABOVE")
+    (ucs               . #x1E44)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004E #x0307)
+    (->lowercase       #x1E45)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH DOT ABOVE")
+    (ucs               . #x1E45)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006E #x0307)
+    (->uppercase       #x1E44)
+    (->titlecase       #x1E44)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH DOT BELOW")
+    (ucs               . #x1E46)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004E #x0323)
+    (->lowercase       #x1E47)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH DOT BELOW")
+    (ucs               . #x1E47)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006E #x0323)
+    (->uppercase       #x1E46)
+    (->titlecase       #x1E46)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH LINE BELOW")
+    (ucs               . #x1E48)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004E #x0331)
+    (->lowercase       #x1E49)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH LINE BELOW")
+    (ucs               . #x1E49)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006E #x0331)
+    (->uppercase       #x1E48)
+    (->titlecase       #x1E48)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E4A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004E #x032D)
+    (->lowercase       #x1E4B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E4B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006E #x032D)
+    (->uppercase       #x1E4A)
+    (->titlecase       #x1E4A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH TILDE AND ACUTE")
+    (ucs               . #x1E4C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00D5 #x0301)
+    (->lowercase       #x1E4D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH TILDE AND ACUTE")
+    (ucs               . #x1E4D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00F5 #x0301)
+    (->uppercase       #x1E4C)
+    (->titlecase       #x1E4C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS")
+    (ucs               . #x1E4E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00D5 #x0308)
+    (->lowercase       #x1E4F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH TILDE AND DIAERESIS")
+    (ucs               . #x1E4F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00F5 #x0308)
+    (->uppercase       #x1E4E)
+    (->titlecase       #x1E4E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH MACRON AND GRAVE")
+    (ucs               . #x1E50)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x014C #x0300)
+    (->lowercase       #x1E51)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH MACRON AND GRAVE")
+    (ucs               . #x1E51)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x014D #x0300)
+    (->uppercase       #x1E50)
+    (->titlecase       #x1E50)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH MACRON AND ACUTE")
+    (ucs               . #x1E52)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x014C #x0301)
+    (->lowercase       #x1E53)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH MACRON AND ACUTE")
+    (ucs               . #x1E53)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x014D #x0301)
+    (->uppercase       #x1E52)
+    (->titlecase       #x1E52)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER P WITH ACUTE")
+    (ucs               . #x1E54)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0050 #x0301)
+    (->lowercase       #x1E55)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER P WITH ACUTE")
+    (ucs               . #x1E55)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0070 #x0301)
+    (->uppercase       #x1E54)
+    (->titlecase       #x1E54)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER P WITH DOT ABOVE")
+    (ucs               . #x1E56)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0050 #x0307)
+    (->lowercase       #x1E57)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER P WITH DOT ABOVE")
+    (ucs               . #x1E57)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0070 #x0307)
+    (->uppercase       #x1E56)
+    (->titlecase       #x1E56)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER R WITH DOT ABOVE")
+    (ucs               . #x1E58)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0052 #x0307)
+    (->lowercase       #x1E59)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH DOT ABOVE")
+    (ucs               . #x1E59)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0072 #x0307)
+    (->uppercase       #x1E58)
+    (->titlecase       #x1E58)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER R WITH DOT BELOW")
+    (ucs               . #x1E5A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0052 #x0323)
+    (->lowercase       #x1E5B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH DOT BELOW")
+    (ucs               . #x1E5B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0072 #x0323)
+    (->uppercase       #x1E5A)
+    (->titlecase       #x1E5A)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON")
+    (ucs               . #x1E5C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1E5A #x0304)
+    (->lowercase       #x1E5D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH DOT BELOW AND MACRON")
+    (ucs               . #x1E5D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1E5B #x0304)
+    (->uppercase       #x1E5C)
+    (->titlecase       #x1E5C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER R WITH LINE BELOW")
+    (ucs               . #x1E5E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0052 #x0331)
+    (->lowercase       #x1E5F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER R WITH LINE BELOW")
+    (ucs               . #x1E5F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0072 #x0331)
+    (->uppercase       #x1E5E)
+    (->titlecase       #x1E5E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S WITH DOT ABOVE")
+    (ucs               . #x1E60)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0053 #x0307)
+    (->lowercase       #x1E61)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH DOT ABOVE")
+    (ucs               . #x1E61)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0073 #x0307)
+    (->uppercase       #x1E60)
+    (->titlecase       #x1E60)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S WITH DOT BELOW")
+    (ucs               . #x1E62)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0053 #x0323)
+    (->lowercase       #x1E63)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH DOT BELOW")
+    (ucs               . #x1E63)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0073 #x0323)
+    (->uppercase       #x1E62)
+    (->titlecase       #x1E62)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE")
+    (ucs               . #x1E64)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x015A #x0307)
+    (->lowercase       #x1E65)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE")
+    (ucs               . #x1E65)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x015B #x0307)
+    (->uppercase       #x1E64)
+    (->titlecase       #x1E64)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE")
+    (ucs               . #x1E66)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0160 #x0307)
+    (->lowercase       #x1E67)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER S WITH CARON AND DOT ABOVE")
+    (ucs               . #x1E67)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0161 #x0307)
+    (->uppercase       #x1E66)
+    (->titlecase       #x1E66)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE")
+    (ucs               . #x1E68)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1E62 #x0307)
+    (->lowercase       #x1E69)
+    ))
+(define-char
+  '((name . "LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE")
+    (ucs               . #x1E69)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1E63 #x0307)
+    (->uppercase       #x1E68)
+    (->titlecase       #x1E68)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH DOT ABOVE")
+    (ucs               . #x1E6A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0054 #x0307)
+    (->lowercase       #x1E6B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH DOT ABOVE")
+    (ucs               . #x1E6B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0074 #x0307)
+    (->uppercase       #x1E6A)
+    (->titlecase       #x1E6A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH DOT BELOW")
+    (ucs               . #x1E6C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0054 #x0323)
+    (->lowercase       #x1E6D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH DOT BELOW")
+    (ucs               . #x1E6D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0074 #x0323)
+    (->uppercase       #x1E6C)
+    (->titlecase       #x1E6C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH LINE BELOW")
+    (ucs               . #x1E6E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0054 #x0331)
+    (->lowercase       #x1E6F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH LINE BELOW")
+    (ucs               . #x1E6F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0074 #x0331)
+    (->uppercase       #x1E6E)
+    (->titlecase       #x1E6E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E70)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0054 #x032D)
+    (->lowercase       #x1E71)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E71)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0074 #x032D)
+    (->uppercase       #x1E70)
+    (->titlecase       #x1E70)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH DIAERESIS BELOW")
+    (ucs               . #x1E72)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0324)
+    (->lowercase       #x1E73)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH DIAERESIS BELOW")
+    (ucs               . #x1E73)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0324)
+    (->uppercase       #x1E72)
+    (->titlecase       #x1E72)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH TILDE BELOW")
+    (ucs               . #x1E74)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0330)
+    (->lowercase       #x1E75)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH TILDE BELOW")
+    (ucs               . #x1E75)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0330)
+    (->uppercase       #x1E74)
+    (->titlecase       #x1E74)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E76)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x032D)
+    (->lowercase       #x1E77)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW")
+    (ucs               . #x1E77)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x032D)
+    (->uppercase       #x1E76)
+    (->titlecase       #x1E76)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH TILDE AND ACUTE")
+    (ucs               . #x1E78)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0168 #x0301)
+    (->lowercase       #x1E79)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH TILDE AND ACUTE")
+    (ucs               . #x1E79)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0169 #x0301)
+    (->uppercase       #x1E78)
+    (->titlecase       #x1E78)
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS")
+    (ucs               . #x1E7A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x016A #x0308)
+    (->lowercase       #x1E7B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH MACRON AND DIAERESIS")
+    (ucs               . #x1E7B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x016B #x0308)
+    (->uppercase       #x1E7A)
+    (->titlecase       #x1E7A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER V WITH TILDE")
+    (ucs               . #x1E7C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0056 #x0303)
+    (->lowercase       #x1E7D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER V WITH TILDE")
+    (ucs               . #x1E7D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0076 #x0303)
+    (->uppercase       #x1E7C)
+    (->titlecase       #x1E7C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER V WITH DOT BELOW")
+    (ucs               . #x1E7E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0056 #x0323)
+    (->lowercase       #x1E7F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER V WITH DOT BELOW")
+    (ucs               . #x1E7F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0076 #x0323)
+    (->uppercase       #x1E7E)
+    (->titlecase       #x1E7E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER W WITH GRAVE")
+    (ucs               . #x1E80)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0057 #x0300)
+    (->lowercase       #x1E81)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER W WITH GRAVE")
+    (ucs               . #x1E81)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0077 #x0300)
+    (->uppercase       #x1E80)
+    (->titlecase       #x1E80)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER W WITH ACUTE")
+    (ucs               . #x1E82)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0057 #x0301)
+    (->lowercase       #x1E83)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER W WITH ACUTE")
+    (ucs               . #x1E83)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0077 #x0301)
+    (->uppercase       #x1E82)
+    (->titlecase       #x1E82)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER W WITH DIAERESIS")
+    (ucs               . #x1E84)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0057 #x0308)
+    (->lowercase       #x1E85)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER W WITH DIAERESIS")
+    (ucs               . #x1E85)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0077 #x0308)
+    (->uppercase       #x1E84)
+    (->titlecase       #x1E84)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER W WITH DOT ABOVE")
+    (ucs               . #x1E86)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0057 #x0307)
+    (->lowercase       #x1E87)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER W WITH DOT ABOVE")
+    (ucs               . #x1E87)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0077 #x0307)
+    (->uppercase       #x1E86)
+    (->titlecase       #x1E86)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER W WITH DOT BELOW")
+    (ucs               . #x1E88)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0057 #x0323)
+    (->lowercase       #x1E89)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER W WITH DOT BELOW")
+    (ucs               . #x1E89)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0077 #x0323)
+    (->uppercase       #x1E88)
+    (->titlecase       #x1E88)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER X WITH DOT ABOVE")
+    (ucs               . #x1E8A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0058 #x0307)
+    (->lowercase       #x1E8B)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER X WITH DOT ABOVE")
+    (ucs               . #x1E8B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0078 #x0307)
+    (->uppercase       #x1E8A)
+    (->titlecase       #x1E8A)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER X WITH DIAERESIS")
+    (ucs               . #x1E8C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0058 #x0308)
+    (->lowercase       #x1E8D)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER X WITH DIAERESIS")
+    (ucs               . #x1E8D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0078 #x0308)
+    (->uppercase       #x1E8C)
+    (->titlecase       #x1E8C)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH DOT ABOVE")
+    (ucs               . #x1E8E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0059 #x0307)
+    (->lowercase       #x1E8F)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH DOT ABOVE")
+    (ucs               . #x1E8F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x0307)
+    (->uppercase       #x1E8E)
+    (->titlecase       #x1E8E)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Z WITH CIRCUMFLEX")
+    (ucs               . #x1E90)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x005A #x0302)
+    (->lowercase       #x1E91)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH CIRCUMFLEX")
+    (ucs               . #x1E91)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x007A #x0302)
+    (->uppercase       #x1E90)
+    (->titlecase       #x1E90)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Z WITH DOT BELOW")
+    (ucs               . #x1E92)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x005A #x0323)
+    (->lowercase       #x1E93)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH DOT BELOW")
+    (ucs               . #x1E93)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x007A #x0323)
+    (->uppercase       #x1E92)
+    (->titlecase       #x1E92)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Z WITH LINE BELOW")
+    (ucs               . #x1E94)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x005A #x0331)
+    (->lowercase       #x1E95)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Z WITH LINE BELOW")
+    (ucs               . #x1E95)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x007A #x0331)
+    (->uppercase       #x1E94)
+    (->titlecase       #x1E94)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER H WITH LINE BELOW")
+    (ucs               . #x1E96)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0068 #x0331)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER T WITH DIAERESIS")
+    (ucs               . #x1E97)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0074 #x0308)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER W WITH RING ABOVE")
+    (ucs               . #x1E98)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0077 #x030A)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH RING ABOVE")
+    (ucs               . #x1E99)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x030A)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH RIGHT HALF RING")
+    (ucs               . #x1E9A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0061 #x02BE)
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER LONG S WITH DOT ABOVE")
+    (ucs               . #x1E9B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x017F #x0307)
+    (->uppercase       #x1E60)
+    (->titlecase       #x1E60)
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH DOT BELOW")
+    (ucs               . #x1EA0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0323)
+    (->lowercase       #x1EA1)
+    (latin-viscii-upper #xD5)  ; \e-2Õ\e-A
+    (latin-viscii      #x80)   ; \e-2Õ\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH DOT BELOW")
+    (ucs               . #x1EA1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0323)
+    (->uppercase       #x1EA0)
+    (->titlecase       #x1EA0)
+    (latin-viscii-lower #xD5)  ; \e-1Õ\e-A
+    (latin-viscii      #xD5)   ; \e-1Õ\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH HOOK ABOVE")
+    (ucs               . #x1EA2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0041 #x0309)
+    (->lowercase       #x1EA3)
+    (latin-viscii-upper #xE4)  ; \e-2ä\e-A
+    (latin-viscii      #xC4)   ; \e-2ä\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH HOOK ABOVE")
+    (ucs               . #x1EA3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0061 #x0309)
+    (->uppercase       #x1EA2)
+    (->titlecase       #x1EA2)
+    (latin-viscii-lower #xE4)  ; \e-1ä\e-A
+    (latin-viscii      #xE4)   ; \e-1ä\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE")
+    (ucs               . #x1EA4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00C2 #x0301)
+    (->lowercase       #x1EA5)
+    (latin-viscii-upper #xA4)  ; \e-2¤\e-A
+    (latin-viscii      #x84)   ; \e-2¤\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE")
+    (ucs               . #x1EA5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00E2 #x0301)
+    (->uppercase       #x1EA4)
+    (->titlecase       #x1EA4)
+    (latin-viscii-lower #xA4)  ; \e-1¤\e-A
+    (latin-viscii      #xA4)   ; \e-1¤\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE")
+    (ucs               . #x1EA6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00C2 #x0300)
+    (->lowercase       #x1EA7)
+    (latin-viscii-upper #xA5)  ; \e-2¥\e-A
+    (latin-viscii      #x85)   ; \e-2¥\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE")
+    (ucs               . #x1EA7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00E2 #x0300)
+    (->uppercase       #x1EA6)
+    (->titlecase       #x1EA6)
+    (latin-viscii-lower #xA5)  ; \e-1¥\e-A
+    (latin-viscii      #xA5)   ; \e-1¥\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE")
+    (ucs               . #x1EA8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00C2 #x0309)
+    (->lowercase       #x1EA9)
+    (latin-viscii-upper #xA6)  ; \e-2¦\e-A
+    (latin-viscii      #x86)   ; \e-2¦\e-A
+    ))
+(define-char
+  '((name . "LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE")
+    (ucs               . #x1EA9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00E2 #x0309)
+    (->uppercase       #x1EA8)
+    (->titlecase       #x1EA8)
+    (latin-viscii-lower #xA6)  ; \e-1¦\e-A
+    (latin-viscii      #xA6)   ; \e-1¦\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE")
+    (ucs               . #x1EAA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00C2 #x0303)
+    (->lowercase       #x1EAB)
+    (latin-viscii-upper #xE7)  ; \e-2ç\e-A
+    (latin-viscii      #x06)   ; \e-2ç\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE")
+    (ucs               . #x1EAB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00E2 #x0303)
+    (->uppercase       #x1EAA)
+    (->titlecase       #x1EAA)
+    (latin-viscii-lower #xE7)  ; \e-1ç\e-A
+    (latin-viscii      #xE7)   ; \e-1ç\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW")
+    (ucs               . #x1EAC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1EA0 #x0302)
+    (->lowercase       #x1EAD)
+    (latin-viscii-upper #xA7)  ; \e-2§\e-A
+    (latin-viscii      #x87)   ; \e-2§\e-A
+    ))
+(define-char
+  '((name . "LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW")
+    (ucs               . #x1EAD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1EA1 #x0302)
+    (->uppercase       #x1EAC)
+    (->titlecase       #x1EAC)
+    (latin-viscii-lower #xA7)  ; \e-1§\e-A
+    (latin-viscii      #xA7)   ; \e-1§\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH BREVE AND ACUTE")
+    (ucs               . #x1EAE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0102 #x0301)
+    (->lowercase       #x1EAF)
+    (latin-viscii-upper #xA1)  ; \e-2¡\e-A
+    (latin-viscii      #x81)   ; \e-2¡\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH BREVE AND ACUTE")
+    (ucs               . #x1EAF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0103 #x0301)
+    (->uppercase       #x1EAE)
+    (->titlecase       #x1EAE)
+    (latin-viscii-lower #xA1)  ; \e-1¡\e-A
+    (latin-viscii      #xA1)   ; \e-1¡\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH BREVE AND GRAVE")
+    (ucs               . #x1EB0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0102 #x0300)
+    (->lowercase       #x1EB1)
+    (latin-viscii-upper #xA2)  ; \e-2¢\e-A
+    (latin-viscii      #x82)   ; \e-2¢\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH BREVE AND GRAVE")
+    (ucs               . #x1EB1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0103 #x0300)
+    (->uppercase       #x1EB0)
+    (->titlecase       #x1EB0)
+    (latin-viscii-lower #xA2)  ; \e-1¢\e-A
+    (latin-viscii      #xA2)   ; \e-1¢\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE")
+    (ucs               . #x1EB2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0102 #x0309)
+    (->lowercase       #x1EB3)
+    (latin-viscii-upper #xC6)  ; \e-2Æ\e-A
+    (latin-viscii      #x02)   ; \e-2Æ\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE")
+    (ucs               . #x1EB3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0103 #x0309)
+    (->uppercase       #x1EB2)
+    (->titlecase       #x1EB2)
+    (latin-viscii-lower #xC6)  ; \e-1Æ\e-A
+    (latin-viscii      #xC6)   ; \e-1Æ\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH BREVE AND TILDE")
+    (ucs               . #x1EB4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0102 #x0303)
+    (->lowercase       #x1EB5)
+    (latin-viscii-upper #xC7)  ; \e-2Ç\e-A
+    (latin-viscii      #x05)   ; \e-2Ç\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH BREVE AND TILDE")
+    (ucs               . #x1EB5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0103 #x0303)
+    (->uppercase       #x1EB4)
+    (->titlecase       #x1EB4)
+    (latin-viscii-lower #xC7)  ; \e-1Ç\e-A
+    (latin-viscii      #xC7)   ; \e-1Ç\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW")
+    (ucs               . #x1EB6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1EA0 #x0306)
+    (->lowercase       #x1EB7)
+    (latin-viscii-upper #xA3)  ; \e-2£\e-A
+    (latin-viscii      #x83)   ; \e-2£\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER A WITH BREVE AND DOT BELOW")
+    (ucs               . #x1EB7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1EA1 #x0306)
+    (->uppercase       #x1EB6)
+    (->titlecase       #x1EB6)
+    (latin-viscii-lower #xA3)  ; \e-1£\e-A
+    (latin-viscii      #xA3)   ; \e-1£\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH DOT BELOW")
+    (ucs               . #x1EB8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0323)
+    (->lowercase       #x1EB9)
+    (latin-viscii-upper #xA9)  ; \e-2©\e-A
+    (latin-viscii      #x89)   ; \e-2©\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH DOT BELOW")
+    (ucs               . #x1EB9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0323)
+    (->uppercase       #x1EB8)
+    (->titlecase       #x1EB8)
+    (latin-viscii-lower #xA9)  ; \e-1©\e-A
+    (latin-viscii      #xA9)   ; \e-1©\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH HOOK ABOVE")
+    (ucs               . #x1EBA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0309)
+    (->lowercase       #x1EBB)
+    (latin-viscii-upper #xEB)  ; \e-2ë\e-A
+    (latin-viscii      #xCB)   ; \e-2ë\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH HOOK ABOVE")
+    (ucs               . #x1EBB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0309)
+    (->uppercase       #x1EBA)
+    (->titlecase       #x1EBA)
+    (latin-viscii-lower #xEB)  ; \e-1ë\e-A
+    (latin-viscii      #xEB)   ; \e-1ë\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER E WITH TILDE")
+    (ucs               . #x1EBC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0045 #x0303)
+    (->lowercase       #x1EBD)
+    (latin-viscii-upper #xA8)  ; \e-2¨\e-A
+    (latin-viscii      #x88)   ; \e-2¨\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH TILDE")
+    (ucs               . #x1EBD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0065 #x0303)
+    (->uppercase       #x1EBC)
+    (->titlecase       #x1EBC)
+    (latin-viscii-lower #xA8)  ; \e-1¨\e-A
+    (latin-viscii      #xA8)   ; \e-1¨\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE")
+    (ucs               . #x1EBE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00CA #x0301)
+    (->lowercase       #x1EBF)
+    (latin-viscii-upper #xAA)  ; \e-2ª\e-A
+    (latin-viscii      #x8A)   ; \e-2ª\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE")
+    (ucs               . #x1EBF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00EA #x0301)
+    (->uppercase       #x1EBE)
+    (->titlecase       #x1EBE)
+    (latin-viscii-lower #xAA)  ; \e-1ª\e-A
+    (latin-viscii      #xAA)   ; \e-1ª\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE")
+    (ucs               . #x1EC0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00CA #x0300)
+    (->lowercase       #x1EC1)
+    (latin-viscii-upper #xAB)  ; \e-2«\e-A
+    (latin-viscii      #x8B)   ; \e-2«\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE")
+    (ucs               . #x1EC1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00EA #x0300)
+    (->uppercase       #x1EC0)
+    (->titlecase       #x1EC0)
+    (latin-viscii-lower #xAB)  ; \e-1«\e-A
+    (latin-viscii      #xAB)   ; \e-1«\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE")
+    (ucs               . #x1EC2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00CA #x0309)
+    (->lowercase       #x1EC3)
+    (latin-viscii-upper #xAC)  ; \e-2¬\e-A
+    (latin-viscii      #x8C)   ; \e-2¬\e-A
+    ))
+(define-char
+  '((name . "LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE")
+    (ucs               . #x1EC3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00EA #x0309)
+    (->uppercase       #x1EC2)
+    (->titlecase       #x1EC2)
+    (latin-viscii-lower #xAC)  ; \e-1¬\e-A
+    (latin-viscii      #xAC)   ; \e-1¬\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE")
+    (ucs               . #x1EC4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00CA #x0303)
+    (->lowercase       #x1EC5)
+    (latin-viscii-upper #xAD)  ; \e-2­\e-A
+    (latin-viscii      #x8D)   ; \e-2­\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE")
+    (ucs               . #x1EC5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00EA #x0303)
+    (->uppercase       #x1EC4)
+    (->titlecase       #x1EC4)
+    (latin-viscii-lower #xAD)  ; \e-1­\e-A
+    (latin-viscii      #xAD)   ; \e-1­\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW")
+    (ucs               . #x1EC6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1EB8 #x0302)
+    (->lowercase       #x1EC7)
+    (latin-viscii-upper #xAE)  ; \e-2®\e-A
+    (latin-viscii      #x8E)   ; \e-2®\e-A
+    ))
+(define-char
+  '((name . "LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW")
+    (ucs               . #x1EC7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1EB9 #x0302)
+    (->uppercase       #x1EC6)
+    (->titlecase       #x1EC6)
+    (latin-viscii-lower #xAE)  ; \e-1®\e-A
+    (latin-viscii      #xAE)   ; \e-1®\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH HOOK ABOVE")
+    (ucs               . #x1EC8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0309)
+    (->lowercase       #x1EC9)
+    (latin-viscii-upper #xEF)  ; \e-2ï\e-A
+    (latin-viscii      #x9B)   ; \e-2ï\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH HOOK ABOVE")
+    (ucs               . #x1EC9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0309)
+    (->uppercase       #x1EC8)
+    (->titlecase       #x1EC8)
+    (latin-viscii-lower #xEF)  ; \e-1ï\e-A
+    (latin-viscii      #xEF)   ; \e-1ï\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER I WITH DOT BELOW")
+    (ucs               . #x1ECA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0049 #x0323)
+    (->lowercase       #x1ECB)
+    (latin-viscii-upper #xB8)  ; \e-2¸\e-A
+    (latin-viscii      #x98)   ; \e-2¸\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER I WITH DOT BELOW")
+    (ucs               . #x1ECB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0069 #x0323)
+    (->uppercase       #x1ECA)
+    (->titlecase       #x1ECA)
+    (latin-viscii-lower #xB8)  ; \e-1¸\e-A
+    (latin-viscii      #xB8)   ; \e-1¸\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH DOT BELOW")
+    (ucs               . #x1ECC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0323)
+    (->lowercase       #x1ECD)
+    (latin-viscii-upper #xF7)  ; \e-2÷\e-A
+    (latin-viscii      #x9A)   ; \e-2÷\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH DOT BELOW")
+    (ucs               . #x1ECD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0323)
+    (->uppercase       #x1ECC)
+    (->titlecase       #x1ECC)
+    (latin-viscii-lower #xF7)  ; \e-1÷\e-A
+    (latin-viscii      #xF7)   ; \e-1÷\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH HOOK ABOVE")
+    (ucs               . #x1ECE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004F #x0309)
+    (->lowercase       #x1ECF)
+    (latin-viscii-upper #xF6)  ; \e-2ö\e-A
+    (latin-viscii      #x99)   ; \e-2ö\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH HOOK ABOVE")
+    (ucs               . #x1ECF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x006F #x0309)
+    (->uppercase       #x1ECE)
+    (->titlecase       #x1ECE)
+    (latin-viscii-lower #xF6)  ; \e-1ö\e-A
+    (latin-viscii      #xF6)   ; \e-1ö\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE")
+    (ucs               . #x1ED0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00D4 #x0301)
+    (->lowercase       #x1ED1)
+    (latin-viscii-upper #xAF)  ; \e-2¯\e-A
+    (latin-viscii      #x8F)   ; \e-2¯\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE")
+    (ucs               . #x1ED1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00F4 #x0301)
+    (->uppercase       #x1ED0)
+    (->titlecase       #x1ED0)
+    (latin-viscii-lower #xAF)  ; \e-1¯\e-A
+    (latin-viscii      #xAF)   ; \e-1¯\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE")
+    (ucs               . #x1ED2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00D4 #x0300)
+    (->lowercase       #x1ED3)
+    (latin-viscii-upper #xB0)  ; \e-2°\e-A
+    (latin-viscii      #x90)   ; \e-2°\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE")
+    (ucs               . #x1ED3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00F4 #x0300)
+    (->uppercase       #x1ED2)
+    (->titlecase       #x1ED2)
+    (latin-viscii-lower #xB0)  ; \e-1°\e-A
+    (latin-viscii      #xB0)   ; \e-1°\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE")
+    (ucs               . #x1ED4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00D4 #x0309)
+    (->lowercase       #x1ED5)
+    (latin-viscii-upper #xB1)  ; \e-2±\e-A
+    (latin-viscii      #x91)   ; \e-2±\e-A
+    ))
+(define-char
+  '((name . "LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE")
+    (ucs               . #x1ED5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00F4 #x0309)
+    (->uppercase       #x1ED4)
+    (->titlecase       #x1ED4)
+    (latin-viscii-lower #xB1)  ; \e-1±\e-A
+    (latin-viscii      #xB1)   ; \e-1±\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE")
+    (ucs               . #x1ED6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00D4 #x0303)
+    (->lowercase       #x1ED7)
+    (latin-viscii-upper #xB2)  ; \e-2²\e-A
+    (latin-viscii      #x92)   ; \e-2²\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE")
+    (ucs               . #x1ED7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00F4 #x0303)
+    (->uppercase       #x1ED6)
+    (->titlecase       #x1ED6)
+    (latin-viscii-lower #xB2)  ; \e-1²\e-A
+    (latin-viscii      #xB2)   ; \e-1²\e-A
+    ))
+(define-char
+  '((name . "LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW")
+    (ucs               . #x1ED8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1ECC #x0302)
+    (->lowercase       #x1ED9)
+    (latin-viscii-upper #xB5)  ; \e-2µ\e-A
+    (latin-viscii      #x93)   ; \e-2µ\e-A
+    ))
+(define-char
+  '((name . "LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW")
+    (ucs               . #x1ED9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x1ECD #x0302)
+    (->uppercase       #x1ED8)
+    (->titlecase       #x1ED8)
+    (latin-viscii-lower #xB5)  ; \e-1µ\e-A
+    (latin-viscii      #xB5)   ; \e-1µ\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH HORN AND ACUTE")
+    (ucs               . #x1EDA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A0 #x0301)
+    (->lowercase       #x1EDB)
+    (latin-viscii-upper #xBE)  ; \e-2¾\e-A
+    (latin-viscii      #x95)   ; \e-2¾\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH HORN AND ACUTE")
+    (ucs               . #x1EDB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A1 #x0301)
+    (->uppercase       #x1EDA)
+    (->titlecase       #x1EDA)
+    (latin-viscii-lower #xBE)  ; \e-1¾\e-A
+    (latin-viscii      #xBE)   ; \e-1¾\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH HORN AND GRAVE")
+    (ucs               . #x1EDC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A0 #x0300)
+    (->lowercase       #x1EDD)
+    (latin-viscii-upper #xB6)  ; \e-2¶\e-A
+    (latin-viscii      #x96)   ; \e-2¶\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH HORN AND GRAVE")
+    (ucs               . #x1EDD)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A1 #x0300)
+    (->uppercase       #x1EDC)
+    (->titlecase       #x1EDC)
+    (latin-viscii-lower #xB6)  ; \e-1¶\e-A
+    (latin-viscii      #xB6)   ; \e-1¶\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE")
+    (ucs               . #x1EDE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A0 #x0309)
+    (->lowercase       #x1EDF)
+    (latin-viscii-upper #xB7)  ; \e-2·\e-A
+    (latin-viscii      #x97)   ; \e-2·\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE")
+    (ucs               . #x1EDF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A1 #x0309)
+    (->uppercase       #x1EDE)
+    (->titlecase       #x1EDE)
+    (latin-viscii-lower #xB7)  ; \e-1·\e-A
+    (latin-viscii      #xB7)   ; \e-1·\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH HORN AND TILDE")
+    (ucs               . #x1EE0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A0 #x0303)
+    (->lowercase       #x1EE1)
+    (latin-viscii-upper #xDE)  ; \e-2Þ\e-A
+    (latin-viscii      #xB3)   ; \e-2Þ\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH HORN AND TILDE")
+    (ucs               . #x1EE1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A1 #x0303)
+    (->uppercase       #x1EE0)
+    (->titlecase       #x1EE0)
+    (latin-viscii-lower #xDE)  ; \e-1Þ\e-A
+    (latin-viscii      #xDE)   ; \e-1Þ\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW")
+    (ucs               . #x1EE2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A0 #x0323)
+    (->lowercase       #x1EE3)
+    (latin-viscii-upper #xFE)  ; \e-2þ\e-A
+    (latin-viscii      #x94)   ; \e-2þ\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER O WITH HORN AND DOT BELOW")
+    (ucs               . #x1EE3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01A1 #x0323)
+    (->uppercase       #x1EE2)
+    (->titlecase       #x1EE2)
+    (latin-viscii-lower #xFE)  ; \e-1þ\e-A
+    (latin-viscii      #xFE)   ; \e-1þ\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH DOT BELOW")
+    (ucs               . #x1EE4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0323)
+    (->lowercase       #x1EE5)
+    (latin-viscii-upper #xF8)  ; \e-2ø\e-A
+    (latin-viscii      #x9E)   ; \e-2ø\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH DOT BELOW")
+    (ucs               . #x1EE5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0323)
+    (->uppercase       #x1EE4)
+    (->titlecase       #x1EE4)
+    (latin-viscii-lower #xF8)  ; \e-1ø\e-A
+    (latin-viscii      #xF8)   ; \e-1ø\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH HOOK ABOVE")
+    (ucs               . #x1EE6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0055 #x0309)
+    (->lowercase       #x1EE7)
+    (latin-viscii-upper #xFC)  ; \e-2ü\e-A
+    (latin-viscii      #x9C)   ; \e-2ü\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH HOOK ABOVE")
+    (ucs               . #x1EE7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0075 #x0309)
+    (->uppercase       #x1EE6)
+    (->titlecase       #x1EE6)
+    (latin-viscii-lower #xFC)  ; \e-1ü\e-A
+    (latin-viscii      #xFC)   ; \e-1ü\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH HORN AND ACUTE")
+    (ucs               . #x1EE8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01AF #x0301)
+    (->lowercase       #x1EE9)
+    (latin-viscii-upper #xD1)  ; \e-2Ñ\e-A
+    (latin-viscii      #xBA)   ; \e-2Ñ\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH HORN AND ACUTE")
+    (ucs               . #x1EE9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01B0 #x0301)
+    (->uppercase       #x1EE8)
+    (->titlecase       #x1EE8)
+    (latin-viscii-lower #xD1)  ; \e-1Ñ\e-A
+    (latin-viscii      #xD1)   ; \e-1Ñ\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH HORN AND GRAVE")
+    (ucs               . #x1EEA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01AF #x0300)
+    (->lowercase       #x1EEB)
+    (latin-viscii-upper #xD7)  ; \e-2×\e-A
+    (latin-viscii      #xBB)   ; \e-2×\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH HORN AND GRAVE")
+    (ucs               . #x1EEB)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01B0 #x0300)
+    (->uppercase       #x1EEA)
+    (->titlecase       #x1EEA)
+    (latin-viscii-lower #xD7)  ; \e-1×\e-A
+    (latin-viscii      #xD7)   ; \e-1×\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE")
+    (ucs               . #x1EEC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01AF #x0309)
+    (->lowercase       #x1EED)
+    (latin-viscii-upper #xD8)  ; \e-2Ø\e-A
+    (latin-viscii      #xBC)   ; \e-2Ø\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE")
+    (ucs               . #x1EED)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01B0 #x0309)
+    (->uppercase       #x1EEC)
+    (->titlecase       #x1EEC)
+    (latin-viscii-lower #xD8)  ; \e-1Ø\e-A
+    (latin-viscii      #xD8)   ; \e-1Ø\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH HORN AND TILDE")
+    (ucs               . #x1EEE)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01AF #x0303)
+    (->lowercase       #x1EEF)
+    (latin-viscii-upper #xE6)  ; \e-2æ\e-A
+    (latin-viscii      #xFF)   ; \e-2æ\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH HORN AND TILDE")
+    (ucs               . #x1EEF)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01B0 #x0303)
+    (->uppercase       #x1EEE)
+    (->titlecase       #x1EEE)
+    (latin-viscii-lower #xE6)  ; \e-1æ\e-A
+    (latin-viscii      #xE6)   ; \e-1æ\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW")
+    (ucs               . #x1EF0)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01AF #x0323)
+    (->lowercase       #x1EF1)
+    (latin-viscii-upper #xF1)  ; \e-2ñ\e-A
+    (latin-viscii      #xB9)   ; \e-2ñ\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER U WITH HORN AND DOT BELOW")
+    (ucs               . #x1EF1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x01B0 #x0323)
+    (->uppercase       #x1EF0)
+    (->titlecase       #x1EF0)
+    (latin-viscii-lower #xF1)  ; \e-1ñ\e-A
+    (latin-viscii      #xF1)   ; \e-1ñ\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH GRAVE")
+    (ucs               . #x1EF2)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0059 #x0300)
+    (->lowercase       #x1EF3)
+    (latin-viscii-upper #xCF)  ; \e-2Ï\e-A
+    (latin-viscii      #x9F)   ; \e-2Ï\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH GRAVE")
+    (ucs               . #x1EF3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x0300)
+    (->uppercase       #x1EF2)
+    (->titlecase       #x1EF2)
+    (latin-viscii-lower #xCF)  ; \e-1Ï\e-A
+    (latin-viscii      #xCF)   ; \e-1Ï\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH DOT BELOW")
+    (ucs               . #x1EF4)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0059 #x0323)
+    (->lowercase       #x1EF5)
+    (latin-viscii-upper #xDC)  ; \e-2Ü\e-A
+    (latin-viscii      #x1E)   ; \e-2Ü\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH DOT BELOW")
+    (ucs               . #x1EF5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x0323)
+    (->uppercase       #x1EF4)
+    (->titlecase       #x1EF4)
+    (latin-viscii-lower #xDC)  ; \e-1Ü\e-A
+    (latin-viscii      #xDC)   ; \e-1Ü\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH HOOK ABOVE")
+    (ucs               . #x1EF6)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0059 #x0309)
+    (->lowercase       #x1EF7)
+    (latin-viscii-upper #xD6)  ; \e-2Ö\e-A
+    (latin-viscii      #x14)   ; \e-2Ö\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH HOOK ABOVE")
+    (ucs               . #x1EF7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x0309)
+    (->uppercase       #x1EF6)
+    (->titlecase       #x1EF6)
+    (latin-viscii-lower #xD6)  ; \e-1Ö\e-A
+    (latin-viscii      #xD6)   ; \e-1Ö\e-A
+    ))
+(define-char
+  '((name              . "LATIN CAPITAL LETTER Y WITH TILDE")
+    (ucs               . #x1EF8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0059 #x0303)
+    (->lowercase       #x1EF9)
+    (latin-viscii-upper #xDB)  ; \e-2Û\e-A
+    (latin-viscii      #x19)   ; \e-2Û\e-A
+    ))
+(define-char
+  '((name              . "LATIN SMALL LETTER Y WITH TILDE")
+    (ucs               . #x1EF9)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x0079 #x0303)
+    (->uppercase       #x1EF8)
+    (->titlecase       #x1EF8)
+    (latin-viscii-lower #xDB)  ; \e-1Û\e-A
+    (latin-viscii      #xDB)   ; \e-1Û\e-A
+    ))
diff --git a/lisp/utf-2000/u01F00-Greek-Extended.el b/lisp/utf-2000/u01F00-Greek-Extended.el
new file mode 100644 (file)
index 0000000..bc3bf41
--- /dev/null
@@ -0,0 +1,2154 @@
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH PSILI")
+    (ucs               . #x1F00)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B1 #x0313)
+    (mirrored          . nil)
+    (->uppercase       #x1F08)
+    (->titlecase       #x1F08)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH DASIA")
+    (ucs               . #x1F01)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B1 #x0314)
+    (mirrored          . nil)
+    (->uppercase       #x1F09)
+    (->titlecase       #x1F09)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA")
+    (ucs               . #x1F02)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F00 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F0A)
+    (->titlecase       #x1F0A)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA")
+    (ucs               . #x1F03)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F01 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F0B)
+    (->titlecase       #x1F0B)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA")
+    (ucs               . #x1F04)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F00 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F0C)
+    (->titlecase       #x1F0C)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA")
+    (ucs               . #x1F05)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F01 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F0D)
+    (->titlecase       #x1F0D)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI")
+    (ucs  . #x1F06)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F00 #x0342)
+    (mirrored          . nil)
+    (->uppercase       #x1F0E)
+    (->titlecase       #x1F0E)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F07)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F01 #x0342)
+    (mirrored          . nil)
+    (->uppercase       #x1F0F)
+    (->titlecase       #x1F0F)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH PSILI")
+    (ucs               . #x1F08)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0391 #x0313)
+    (mirrored          . nil)
+    (->lowercase       #x1F00)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH DASIA")
+    (ucs               . #x1F09)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0391 #x0314)
+    (mirrored          . nil)
+    (->lowercase       #x1F01)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA")
+    (ucs               . #x1F0A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F08 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F02)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA")
+    (ucs               . #x1F0B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F09 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F03)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA")
+    (ucs               . #x1F0C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F08 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F04)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA")
+    (ucs               . #x1F0D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F09 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F05)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI")
+    (ucs  . #x1F0E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F08 #x0342)
+    (mirrored          . nil)
+    (->lowercase       #x1F06)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F0F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F09 #x0342)
+    (mirrored          . nil)
+    (->lowercase       #x1F07)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON WITH PSILI")
+    (ucs               . #x1F10)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B5 #x0313)
+    (mirrored          . nil)
+    (->uppercase       #x1F18)
+    (->titlecase       #x1F18)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON WITH DASIA")
+    (ucs               . #x1F11)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B5 #x0314)
+    (mirrored          . nil)
+    (->uppercase       #x1F19)
+    (->titlecase       #x1F19)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA")
+    (ucs               . #x1F12)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F10 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F1A)
+    (->titlecase       #x1F1A)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA")
+    (ucs               . #x1F13)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F11 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F1B)
+    (->titlecase       #x1F1B)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA")
+    (ucs               . #x1F14)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F10 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F1C)
+    (->titlecase       #x1F1C)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA")
+    (ucs               . #x1F15)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F11 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F1D)
+    (->titlecase       #x1F1D)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER EPSILON WITH PSILI")
+    (ucs               . #x1F18)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0395 #x0313)
+    (mirrored          . nil)
+    (->lowercase       #x1F10)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER EPSILON WITH DASIA")
+    (ucs               . #x1F19)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0395 #x0314)
+    (mirrored          . nil)
+    (->lowercase       #x1F11)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA")
+    (ucs  . #x1F1A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F18 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F12)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA")
+    (ucs  . #x1F1B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F19 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F13)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA")
+    (ucs  . #x1F1C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F18 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F14)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA")
+    (ucs  . #x1F1D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F19 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F15)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH PSILI")
+    (ucs               . #x1F20)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B7 #x0313)
+    (mirrored          . nil)
+    (->uppercase       #x1F28)
+    (->titlecase       #x1F28)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH DASIA")
+    (ucs               . #x1F21)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B7 #x0314)
+    (mirrored          . nil)
+    (->uppercase       #x1F29)
+    (->titlecase       #x1F29)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH PSILI AND VARIA")
+    (ucs               . #x1F22)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F20 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F2A)
+    (->titlecase       #x1F2A)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH DASIA AND VARIA")
+    (ucs               . #x1F23)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F21 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F2B)
+    (->titlecase       #x1F2B)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH PSILI AND OXIA")
+    (ucs               . #x1F24)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F20 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F2C)
+    (->titlecase       #x1F2C)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH DASIA AND OXIA")
+    (ucs               . #x1F25)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F21 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F2D)
+    (->titlecase       #x1F2D)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI")
+    (ucs  . #x1F26)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F20 #x0342)
+    (mirrored          . nil)
+    (->uppercase       #x1F2E)
+    (->titlecase       #x1F2E)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F27)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F21 #x0342)
+    (mirrored          . nil)
+    (->uppercase       #x1F2F)
+    (->titlecase       #x1F2F)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH PSILI")
+    (ucs               . #x1F28)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0397 #x0313)
+    (mirrored          . nil)
+    (->lowercase       #x1F20)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH DASIA")
+    (ucs               . #x1F29)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0397 #x0314)
+    (mirrored          . nil)
+    (->lowercase       #x1F21)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA")
+    (ucs               . #x1F2A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F28 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F22)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA")
+    (ucs               . #x1F2B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F29 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F23)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA")
+    (ucs               . #x1F2C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F28 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F24)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA")
+    (ucs               . #x1F2D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F29 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F25)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI")
+    (ucs  . #x1F2E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F28 #x0342)
+    (mirrored          . nil)
+    (->lowercase       #x1F26)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F2F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F29 #x0342)
+    (mirrored          . nil)
+    (->lowercase       #x1F27)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH PSILI")
+    (ucs               . #x1F30)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B9 #x0313)
+    (mirrored          . nil)
+    (->uppercase       #x1F38)
+    (->titlecase       #x1F38)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH DASIA")
+    (ucs               . #x1F31)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B9 #x0314)
+    (mirrored          . nil)
+    (->uppercase       #x1F39)
+    (->titlecase       #x1F39)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH PSILI AND VARIA")
+    (ucs               . #x1F32)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F30 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F3A)
+    (->titlecase       #x1F3A)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH DASIA AND VARIA")
+    (ucs               . #x1F33)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F31 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F3B)
+    (->titlecase       #x1F3B)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH PSILI AND OXIA")
+    (ucs               . #x1F34)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F30 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F3C)
+    (->titlecase       #x1F3C)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH DASIA AND OXIA")
+    (ucs               . #x1F35)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F31 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F3D)
+    (->titlecase       #x1F3D)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI")
+    (ucs  . #x1F36)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F30 #x0342)
+    (mirrored          . nil)
+    (->uppercase       #x1F3E)
+    (->titlecase       #x1F3E)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F37)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F31 #x0342)
+    (mirrored          . nil)
+    (->uppercase       #x1F3F)
+    (->titlecase       #x1F3F)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH PSILI")
+    (ucs               . #x1F38)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0399 #x0313)
+    (mirrored          . nil)
+    (->lowercase       #x1F30)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH DASIA")
+    (ucs               . #x1F39)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0399 #x0314)
+    (mirrored          . nil)
+    (->lowercase       #x1F31)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA")
+    (ucs               . #x1F3A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F38 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F32)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA")
+    (ucs               . #x1F3B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F39 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F33)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA")
+    (ucs               . #x1F3C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F38 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F34)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA")
+    (ucs               . #x1F3D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F39 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F35)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI")
+    (ucs  . #x1F3E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F38 #x0342)
+    (mirrored          . nil)
+    (->lowercase       #x1F36)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F3F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F39 #x0342)
+    (mirrored          . nil)
+    (->lowercase       #x1F37)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON WITH PSILI")
+    (ucs               . #x1F40)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03BF #x0313)
+    (mirrored          . nil)
+    (->uppercase       #x1F48)
+    (->titlecase       #x1F48)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON WITH DASIA")
+    (ucs               . #x1F41)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03BF #x0314)
+    (mirrored          . nil)
+    (->uppercase       #x1F49)
+    (->titlecase       #x1F49)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA")
+    (ucs               . #x1F42)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F40 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F4A)
+    (->titlecase       #x1F4A)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA")
+    (ucs               . #x1F43)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F41 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F4B)
+    (->titlecase       #x1F4B)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA")
+    (ucs               . #x1F44)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F40 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F4C)
+    (->titlecase       #x1F4C)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA")
+    (ucs               . #x1F45)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F41 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F4D)
+    (->titlecase       #x1F4D)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMICRON WITH PSILI")
+    (ucs               . #x1F48)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x039F #x0313)
+    (mirrored          . nil)
+    (->lowercase       #x1F40)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMICRON WITH DASIA")
+    (ucs               . #x1F49)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x039F #x0314)
+    (mirrored          . nil)
+    (->lowercase       #x1F41)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA")
+    (ucs  . #x1F4A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F48 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F42)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA")
+    (ucs  . #x1F4B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F49 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F43)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA")
+    (ucs  . #x1F4C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F48 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F44)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA")
+    (ucs  . #x1F4D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F49 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F45)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH PSILI")
+    (ucs               . #x1F50)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C5 #x0313)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH DASIA")
+    (ucs               . #x1F51)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C5 #x0314)
+    (mirrored          . nil)
+    (->uppercase       #x1F59)
+    (->titlecase       #x1F59)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA")
+    (ucs               . #x1F52)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F50 #x0300)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA")
+    (ucs               . #x1F53)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F51 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F5B)
+    (->titlecase       #x1F5B)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA")
+    (ucs               . #x1F54)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F50 #x0301)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA")
+    (ucs               . #x1F55)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F51 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F5D)
+    (->titlecase       #x1F5D)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI")
+    (ucs  . #x1F56)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F50 #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F57)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F51 #x0342)
+    (mirrored          . nil)
+    (->uppercase       #x1F5F)
+    (->titlecase       #x1F5F)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER UPSILON WITH DASIA")
+    (ucs               . #x1F59)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03A5 #x0314)
+    (mirrored          . nil)
+    (->lowercase       #x1F51)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA")
+    (ucs  . #x1F5B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F59 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F53)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA")
+    (ucs  . #x1F5D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F59 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F55)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F5F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F59 #x0342)
+    (mirrored          . nil)
+    (->lowercase       #x1F57)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH PSILI")
+    (ucs               . #x1F60)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C9 #x0313)
+    (mirrored          . nil)
+    (->uppercase       #x1F68)
+    (->titlecase       #x1F68)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH DASIA")
+    (ucs               . #x1F61)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C9 #x0314)
+    (mirrored          . nil)
+    (->uppercase       #x1F69)
+    (->titlecase       #x1F69)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA")
+    (ucs               . #x1F62)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F60 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F6A)
+    (->titlecase       #x1F6A)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA")
+    (ucs               . #x1F63)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F61 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1F6B)
+    (->titlecase       #x1F6B)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA")
+    (ucs               . #x1F64)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F60 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F6C)
+    (->titlecase       #x1F6C)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA")
+    (ucs               . #x1F65)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F61 #x0301)
+    (mirrored          . nil)
+    (->uppercase       #x1F6D)
+    (->titlecase       #x1F6D)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI")
+    (ucs  . #x1F66)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F60 #x0342)
+    (mirrored          . nil)
+    (->uppercase       #x1F6E)
+    (->titlecase       #x1F6E)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F67)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F61 #x0342)
+    (mirrored          . nil)
+    (->uppercase       #x1F6F)
+    (->titlecase       #x1F6F)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH PSILI")
+    (ucs               . #x1F68)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03A9 #x0313)
+    (mirrored          . nil)
+    (->lowercase       #x1F60)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH DASIA")
+    (ucs               . #x1F69)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03A9 #x0314)
+    (mirrored          . nil)
+    (->lowercase       #x1F61)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA")
+    (ucs               . #x1F6A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F68 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F62)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA")
+    (ucs               . #x1F6B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F69 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F63)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA")
+    (ucs               . #x1F6C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F68 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F64)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA")
+    (ucs               . #x1F6D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F69 #x0301)
+    (mirrored          . nil)
+    (->lowercase       #x1F65)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI")
+    (ucs  . #x1F6E)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F68 #x0342)
+    (mirrored          . nil)
+    (->lowercase       #x1F66)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI")
+    (ucs  . #x1F6F)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F69 #x0342)
+    (mirrored          . nil)
+    (->lowercase       #x1F67)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH VARIA")
+    (ucs               . #x1F70)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B1 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1FBA)
+    (->titlecase       #x1FBA)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH OXIA")
+    (ucs               . #x1F71)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03AC)
+    (mirrored          . nil)
+    (->uppercase       #x1FBB)
+    (->titlecase       #x1FBB)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON WITH VARIA")
+    (ucs               . #x1F72)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B5 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1FC8)
+    (->titlecase       #x1FC8)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER EPSILON WITH OXIA")
+    (ucs               . #x1F73)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03AD)
+    (mirrored          . nil)
+    (->uppercase       #x1FC9)
+    (->titlecase       #x1FC9)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH VARIA")
+    (ucs               . #x1F74)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B7 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1FCA)
+    (->titlecase       #x1FCA)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH OXIA")
+    (ucs               . #x1F75)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03AE)
+    (mirrored          . nil)
+    (->uppercase       #x1FCB)
+    (->titlecase       #x1FCB)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH VARIA")
+    (ucs               . #x1F76)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B9 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1FDA)
+    (->titlecase       #x1FDA)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH OXIA")
+    (ucs               . #x1F77)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03AF)
+    (mirrored          . nil)
+    (->uppercase       #x1FDB)
+    (->titlecase       #x1FDB)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON WITH VARIA")
+    (ucs               . #x1F78)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03BF #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1FF8)
+    (->titlecase       #x1FF8)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMICRON WITH OXIA")
+    (ucs               . #x1F79)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03CC)
+    (mirrored          . nil)
+    (->uppercase       #x1FF9)
+    (->titlecase       #x1FF9)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH VARIA")
+    (ucs               . #x1F7A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C5 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1FEA)
+    (->titlecase       #x1FEA)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH OXIA")
+    (ucs               . #x1F7B)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03CD)
+    (mirrored          . nil)
+    (->uppercase       #x1FEB)
+    (->titlecase       #x1FEB)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH VARIA")
+    (ucs               . #x1F7C)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C9 #x0300)
+    (mirrored          . nil)
+    (->uppercase       #x1FFA)
+    (->titlecase       #x1FFA)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH OXIA")
+    (ucs               . #x1F7D)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03CE)
+    (mirrored          . nil)
+    (->uppercase       #x1FFB)
+    (->titlecase       #x1FFB)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI")
+    (ucs  . #x1F80)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F00 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F88)
+    (->titlecase       #x1F88)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F81)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F01 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F89)
+    (->titlecase       #x1F89)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F82)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F02 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F8A)
+    (->titlecase       #x1F8A)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F83)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F03 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F8B)
+    (->titlecase       #x1F8B)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F84)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F04 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F8C)
+    (->titlecase       #x1F8C)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F85)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F05 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F8D)
+    (->titlecase       #x1F8D)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI")
+    (ucs  . #x1F86)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F06 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F8E)
+    (->titlecase       #x1F8E)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI")
+    (ucs  . #x1F87)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F07 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F8F)
+    (->titlecase       #x1F8F)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI")
+    (ucs  . #x1F88)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F08 #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F80)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F89)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F09 #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F81)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F8A)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F0A #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F82)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F8B)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F0B #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F83)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F8C)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F0C #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F84)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F8D)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F0D #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F85)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI")
+    (ucs  . #x1F8E)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F0E #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F86)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI")
+    (ucs  . #x1F8F)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F0F #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F87)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI")
+    (ucs  . #x1F90)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F20 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F98)
+    (->titlecase       #x1F98)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F91)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F21 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F99)
+    (->titlecase       #x1F99)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F92)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F22 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F9A)
+    (->titlecase       #x1F9A)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F93)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F23 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F9B)
+    (->titlecase       #x1F9B)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F94)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F24 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F9C)
+    (->titlecase       #x1F9C)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI")
+    (ucs  . #x1F95)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F25 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F9D)
+    (->titlecase       #x1F9D)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI")
+    (ucs  . #x1F96)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F26 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F9E)
+    (->titlecase       #x1F9E)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI")
+    (ucs  . #x1F97)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F27 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1F9F)
+    (->titlecase       #x1F9F)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI")
+    (ucs  . #x1F98)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F28 #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F90)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F99)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F29 #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F91)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F9A)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F2A #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F92)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F9B)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F2B #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F93)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F9C)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F2C #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F94)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI")
+    (ucs  . #x1F9D)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F2D #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F95)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI")
+    (ucs  . #x1F9E)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F2E #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F96)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI")
+    (ucs  . #x1F9F)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F2F #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1F97)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI")
+    (ucs  . #x1FA0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F60 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FA8)
+    (->titlecase       #x1FA8)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FA1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F61 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FA9)
+    (->titlecase       #x1FA9)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FA2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F62 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FAA)
+    (->titlecase       #x1FAA)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FA3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F63 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FAB)
+    (->titlecase       #x1FAB)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FA4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F64 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FAC)
+    (->titlecase       #x1FAC)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FA5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F65 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FAD)
+    (->titlecase       #x1FAD)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI")
+    (ucs  . #x1FA6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F66 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FAE)
+    (->titlecase       #x1FAE)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI")
+    (ucs  . #x1FA7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F67 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FAF)
+    (->titlecase       #x1FAF)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI")
+    (ucs  . #x1FA8)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F68 #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FA0)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI")
+    (ucs  . #x1FA9)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F69 #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FA1)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI")
+    (ucs  . #x1FAA)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F6A #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FA2)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI")
+    (ucs  . #x1FAB)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F6B #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FA3)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI")
+    (ucs  . #x1FAC)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F6C #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FA4)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI")
+    (ucs  . #x1FAD)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F6D #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FA5)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI")
+    (ucs  . #x1FAE)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F6E #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FA6)
+    ))
+(define-char
+  '((name . "GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI")
+    (ucs  . #x1FAF)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F6F #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FA7)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH VRACHY")
+    (ucs               . #x1FB0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B1 #x0306)
+    (mirrored          . nil)
+    (->uppercase       #x1FB8)
+    (->titlecase       #x1FB8)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH MACRON")
+    (ucs               . #x1FB1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B1 #x0304)
+    (mirrored          . nil)
+    (->uppercase       #x1FB9)
+    (->titlecase       #x1FB9)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FB2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F70 #x0345)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI")
+    (ucs               . #x1FB3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B1 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FBC)
+    (->titlecase       #x1FBC)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FB4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03AC #x0345)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ALPHA WITH PERISPOMENI")
+    (ucs               . #x1FB6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B1 #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI")
+    (ucs  . #x1FB7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1FB6 #x0345)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH VRACHY")
+    (ucs               . #x1FB8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0391 #x0306)
+    (mirrored          . nil)
+    (->lowercase       #x1FB0)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH MACRON")
+    (ucs               . #x1FB9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0391 #x0304)
+    (mirrored          . nil)
+    (->lowercase       #x1FB1)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH VARIA")
+    (ucs               . #x1FBA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0391 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F70)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH OXIA")
+    (ucs               . #x1FBB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0386)
+    (mirrored          . nil)
+    (->lowercase       #x1F71)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI")
+    (ucs               . #x1FBC)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0391 #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FB3)
+    ))
+(define-char
+  '((name              . "GREEK KORONIS")
+    (ucs               . #x1FBD)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   compat #x0020 #x0313)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK PROSGEGRAMMENI")
+    (ucs               . #x1FBE)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B9)
+    (mirrored          . nil)
+    (->uppercase       #x0399)
+    (->titlecase       #x0399)
+    ))
+(define-char
+  '((name              . "GREEK PSILI")
+    (ucs               . #x1FBF)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   compat #x0020 #x0313)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK PERISPOMENI")
+    (ucs               . #x1FC0)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   compat #x0020 #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK DIALYTIKA AND PERISPOMENI")
+    (ucs               . #x1FC1)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x00A8 #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FC2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F74 #x0345)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI")
+    (ucs               . #x1FC3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B7 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FCC)
+    (->titlecase       #x1FCC)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FC4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03AE #x0345)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER ETA WITH PERISPOMENI")
+    (ucs               . #x1FC6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B7 #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI")
+    (ucs  . #x1FC7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1FC6 #x0345)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER EPSILON WITH VARIA")
+    (ucs               . #x1FC8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0395 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F72)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER EPSILON WITH OXIA")
+    (ucs               . #x1FC9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0388)
+    (mirrored          . nil)
+    (->lowercase       #x1F73)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH VARIA")
+    (ucs               . #x1FCA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0397 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F74)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH OXIA")
+    (ucs               . #x1FCB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0389)
+    (mirrored          . nil)
+    (->lowercase       #x1F75)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI")
+    (ucs               . #x1FCC)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0397 #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FC3)
+    ))
+(define-char
+  '((name              . "GREEK PSILI AND VARIA")
+    (ucs               . #x1FCD)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x1FBF #x0300)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK PSILI AND OXIA")
+    (ucs               . #x1FCE)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x1FBF #x0301)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK PSILI AND PERISPOMENI")
+    (ucs               . #x1FCF)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x1FBF #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH VRACHY")
+    (ucs               . #x1FD0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B9 #x0306)
+    (mirrored          . nil)
+    (->uppercase       #x1FD8)
+    (->titlecase       #x1FD8)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH MACRON")
+    (ucs               . #x1FD1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B9 #x0304)
+    (mirrored          . nil)
+    (->uppercase       #x1FD9)
+    (->titlecase       #x1FD9)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA")
+    (ucs  . #x1FD2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03CA #x0300)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA")
+    (ucs               . #x1FD3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0390)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER IOTA WITH PERISPOMENI")
+    (ucs               . #x1FD6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B9 #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI")
+    (ucs  . #x1FD7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03CA #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH VRACHY")
+    (ucs               . #x1FD8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0399 #x0306)
+    (mirrored          . nil)
+    (->lowercase       #x1FD0)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH MACRON")
+    (ucs               . #x1FD9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0399 #x0304)
+    (mirrored          . nil)
+    (->lowercase       #x1FD1)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH VARIA")
+    (ucs               . #x1FDA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x0399 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F76)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER IOTA WITH OXIA")
+    (ucs               . #x1FDB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x038A)
+    (mirrored          . nil)
+    (->lowercase       #x1F77)
+    ))
+(define-char
+  '((name              . "GREEK DASIA AND VARIA")
+    (ucs               . #x1FDD)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x1FFE #x0300)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK DASIA AND OXIA")
+    (ucs               . #x1FDE)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x1FFE #x0301)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK DASIA AND PERISPOMENI")
+    (ucs               . #x1FDF)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x1FFE #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH VRACHY")
+    (ucs               . #x1FE0)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C5 #x0306)
+    (mirrored          . nil)
+    (->uppercase       #x1FE8)
+    (->titlecase       #x1FE8)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH MACRON")
+    (ucs               . #x1FE1)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C5 #x0304)
+    (mirrored          . nil)
+    (->uppercase       #x1FE9)
+    (->titlecase       #x1FE9)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA")
+    (ucs  . #x1FE2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03CB #x0300)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA")
+    (ucs  . #x1FE3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03B0)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER RHO WITH PSILI")
+    (ucs               . #x1FE4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C1 #x0313)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER RHO WITH DASIA")
+    (ucs               . #x1FE5)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C1 #x0314)
+    (mirrored          . nil)
+    (->uppercase       #x1FEC)
+    (->titlecase       #x1FEC)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER UPSILON WITH PERISPOMENI")
+    (ucs               . #x1FE6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C5 #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI")
+    (ucs  . #x1FE7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03CB #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER UPSILON WITH VRACHY")
+    (ucs               . #x1FE8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03A5 #x0306)
+    (mirrored          . nil)
+    (->lowercase       #x1FE0)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER UPSILON WITH MACRON")
+    (ucs               . #x1FE9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03A5 #x0304)
+    (mirrored          . nil)
+    (->lowercase       #x1FE1)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER UPSILON WITH VARIA")
+    (ucs               . #x1FEA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03A5 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F7A)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER UPSILON WITH OXIA")
+    (ucs               . #x1FEB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x038E)
+    (mirrored          . nil)
+    (->lowercase       #x1F7B)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER RHO WITH DASIA")
+    (ucs               . #x1FEC)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03A1 #x0314)
+    (mirrored          . nil)
+    (->lowercase       #x1FE5)
+    ))
+(define-char
+  '((name              . "GREEK DIALYTIKA AND VARIA")
+    (ucs               . #x1FED)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x00A8 #x0300)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK DIALYTIKA AND OXIA")
+    (ucs               . #x1FEE)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x0385)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK VARIA")
+    (ucs               . #x1FEF)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x0060)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FF2)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1F7C #x0345)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI")
+    (ucs               . #x1FF3)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C9 #x0345)
+    (mirrored          . nil)
+    (->uppercase       #x1FFC)
+    (->titlecase       #x1FFC)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI")
+    (ucs  . #x1FF4)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03CE #x0345)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK SMALL LETTER OMEGA WITH PERISPOMENI")
+    (ucs               . #x1FF6)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03C9 #x0342)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI")
+    (ucs  . #x1FF7)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x1FF6 #x0345)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMICRON WITH VARIA")
+    (ucs               . #x1FF8)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x039F #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F78)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMICRON WITH OXIA")
+    (ucs               . #x1FF9)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x038C)
+    (mirrored          . nil)
+    (->lowercase       #x1F79)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH VARIA")
+    (ucs               . #x1FFA)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03A9 #x0300)
+    (mirrored          . nil)
+    (->lowercase       #x1F7C)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH OXIA")
+    (ucs               . #x1FFB)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x038F)
+    (mirrored          . nil)
+    (->lowercase       #x1F7D)
+    ))
+(define-char
+  '((name              . "GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI")
+    (ucs               . #x1FFC)
+    (general-category  letter titlecase) ; Normative Category
+    (bidi-category     . "L")
+    (->decomposition   #x03A9 #x0345)
+    (mirrored          . nil)
+    (->lowercase       #x1FF3)
+    ))
+(define-char
+  '((name              . "GREEK OXIA")
+    (ucs               . #x1FFD)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   #x00B4)
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GREEK DASIA")
+    (ucs               . #x1FFE)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (->decomposition   compat #x0020 #x0314)
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02000-General-Punctuation.el b/lisp/utf-2000/u02000-General-Punctuation.el
new file mode 100644 (file)
index 0000000..3524625
--- /dev/null
@@ -0,0 +1,697 @@
+(define-char
+  '((name              . "EN QUAD")
+    (ucs               . #x2000)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   #x2002)
+    ))
+(define-char
+  '((name              . "EM QUAD")
+    (ucs               . #x2001)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   #x2003)
+    ))
+(define-char
+  '((name              . "EN SPACE")
+    (ucs               . #x2002)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020)
+    ))
+(define-char
+  '((name              . "EM SPACE")
+    (ucs               . #x2003)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020)
+    (chinese-cns11643-1 #x25 #x6D)     ; \e$(G%m\e(B
+    ))
+(define-char
+  '((name              . "THREE-PER-EM SPACE")
+    (ucs               . #x2004)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020)
+    ))
+(define-char
+  '((name              . "FOUR-PER-EM SPACE")
+    (ucs               . #x2005)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020)
+    ))
+(define-char
+  '((name              . "SIX-PER-EM SPACE")
+    (ucs               . #x2006)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020)
+    ))
+(define-char
+  '((name              . "FIGURE SPACE")
+    (ucs               . #x2007)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   noBreak #x0020)
+    ))
+(define-char
+  '((name              . "PUNCTUATION SPACE")
+    (ucs               . #x2008)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020)
+    ))
+(define-char
+  '((name              . "THIN SPACE")
+    (ucs               . #x2009)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020)
+    ))
+(define-char
+  '((name              . "HAIR SPACE")
+    (ucs               . #x200A)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020)
+    ))
+(define-char
+  '((name              . "ZERO WIDTH SPACE")
+    (ucs               . #x200B)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ZERO WIDTH NON-JOINER")
+    (ucs               . #x200C)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ZERO WIDTH JOINER")
+    (ucs               . #x200D)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT-TO-RIGHT MARK")
+    (ucs               . #x200E)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHT-TO-LEFT MARK")
+    (ucs               . #x200F)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "R")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HYPHEN")
+    (ucs               . #x2010)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x3E)      ; \e$(@!>\e(B
+    (japanese-jisx0208         #x21 #x3E)      ; \e$(B!>\e(B
+    ))
+(define-char
+  '((name              . "NON-BREAKING HYPHEN")
+    (ucs               . #x2011)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   noBreak #x2010)
+    ))
+(define-char
+  '((name              . "FIGURE DASH")
+    (ucs               . #x2012)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EN DASH")
+    (ucs               . #x2013)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x21 #x39)     ; \e$(G!9\e(B
+    ))
+(define-char
+  '((name              . "EM DASH")
+    (ucs               . #x2014)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x3D)      ; \e$(@!=\e(B
+    (japanese-jisx0208         #x21 #x3D)      ; \e$(B!=\e(B
+    (chinese-cns11643-1                #x21 #x37)      ; \e$(G!7\e(B
+    ))
+(define-char
+  '((name              . "HORIZONTAL BAR")
+    (ucs               . #x2015)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x2A)      ; \e$(A!*\e(B
+    (korean-ksc5601    #x21 #x2A)      ; \e$(C!*\e(B
+    ))
+(define-char
+  '((name              . "HALFWIDTH HORIZONTAL BAR")
+    (->ucs             . #x2015)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   narrow #x2015)
+    (greek-iso8859-7   #xAF)   ; \e-F¯\e-A
+    ))
+(define-char
+  '((name              . "DOUBLE VERTICAL LINE")
+    (ucs               . #x2016)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x42)      ; \e$(@!B\e(B
+    (chinese-gb2312            #x21 #x2C)      ; \e$(A!,\e(B
+    (japanese-jisx0208         #x21 #x42)      ; \e$(B!B\e(B
+    (chinese-cns11643-1                #x22 #x5D)      ; \e$(G"]\e(B
+    ))
+(define-char
+  '((name              . "DOUBLE LOW LINE")
+    (ucs               . #x2017)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0333)
+    (hebrew-iso8859-8  #xDF)   ; \9b2]\e-Hß\9b0]\e-A
+    ))
+(define-char
+  '((name              . "LEFT SINGLE QUOTATION MARK")
+    (ucs               . #x2018)
+    (general-category  punctuation initial-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x46)      ; \e$(@!F\e(B
+    (chinese-gb2312            #x21 #x2E)      ; \e$(A!.\e(B
+    (japanese-jisx0208         #x21 #x46)      ; \e$(B!F\e(B
+    (korean-ksc5601            #x21 #x2E)      ; \e$(C!.\e(B
+    (chinese-cns11643-1                #x21 #x64)      ; \e$(G!d\e(B
+    ))
+(define-char
+  '((name              . "RIGHT SINGLE QUOTATION MARK")
+    (ucs               . #x2019)
+    (general-category  punctuation final-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x47)      ; \e$(@!G\e(B
+    (chinese-gb2312            #x21 #x2F)      ; \e$(A!/\e(B
+    (japanese-jisx0208         #x21 #x47)      ; \e$(B!G\e(B
+    (korean-ksc5601            #x21 #x2F)      ; \e$(C!/\e(B
+    (chinese-cns11643-1                #x21 #x65)      ; \e$(G!e\e(B
+    ))
+(define-char
+  '((name              . "SINGLE LOW-9 QUOTATION MARK")
+    (ucs               . #x201A)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINGLE HIGH-REVERSED-9 QUOTATION MARK")
+    (ucs               . #x201B)
+    (general-category  punctuation initial-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT DOUBLE QUOTATION MARK")
+    (ucs               . #x201C)
+    (general-category  punctuation initial-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x48)      ; \e$(@!H\e(B
+    (chinese-gb2312            #x21 #x30)      ; \e$(A!0\e(B
+    (japanese-jisx0208         #x21 #x48)      ; \e$(B!H\e(B
+    (korean-ksc5601            #x21 #x30)      ; \e$(C!0\e(B
+    (chinese-cns11643-1                #x21 #x66)      ; \e$(G!f\e(B
+    ))
+(define-char
+  '((name              . "RIGHT DOUBLE QUOTATION MARK")
+    (ucs               . #x201D)
+    (general-category  punctuation final-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x49)      ; \e$(@!I\e(B
+    (chinese-gb2312            #x21 #x31)      ; \e$(A!1\e(B
+    (japanese-jisx0208         #x21 #x49)      ; \e$(B!I\e(B
+    (korean-ksc5601            #x21 #x31)      ; \e$(C!1\e(B
+    (chinese-cns11643-1                #x21 #x67)      ; \e$(G!g\e(B
+    ))
+(define-char
+  '((name              . "DOUBLE LOW-9 QUOTATION MARK")
+    (ucs               . #x201E)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOUBLE HIGH-REVERSED-9 QUOTATION MARK")
+    (ucs               . #x201F)
+    (general-category  punctuation initial-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DAGGER")
+    (ucs               . #x2020)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x77)      ; \e$(B"w\e(B
+    (korean-ksc5601    #x22 #x53)      ; \e$(C"S\e(B
+    ))
+(define-char
+  '((name              . "DOUBLE DAGGER")
+    (ucs               . #x2021)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x78)      ; \e$(B"x\e(B
+    (korean-ksc5601    #x22 #x54)      ; \e$(C"T\e(B
+    ))
+(define-char
+  '((name              . "BULLET")
+    (ucs               . #x2022)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIANGULAR BULLET")
+    (ucs               . #x2023)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ONE DOT LEADER")
+    (ucs               . #x2024)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x002E)
+    ))
+(define-char
+  '((name              . "TWO DOT LEADER")
+    (ucs               . #x2025)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x002E #x002E)
+    (japanese-jisx0208-1978    #x21 #x45)      ; \e$(@!E\e(B
+    (japanese-jisx0208         #x21 #x45)      ; \e$(B!E\e(B
+    (korean-ksc5601            #x21 #x25)      ; \e$(C!%\e(B
+    (chinese-cns11643-1                #x21 #x2D)      ; \e$(G!-\e(B
+    ))
+(define-char
+  '((name              . "HORIZONTAL ELLIPSIS")
+    (ucs               . #x2026)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x002E #x002E #x002E)
+    (japanese-jisx0208-1978    #x21 #x44)      ; \e$(@!D\e(B
+    (chinese-gb2312            #x21 #x2D)      ; \e$(A!-\e(B
+    (japanese-jisx0208         #x21 #x44)      ; \e$(B!D\e(B
+    (korean-ksc5601            #x21 #x26)      ; \e$(C!&\e(B
+    (chinese-cns11643-1                #x21 #x2C)      ; \e$(G!,\e(B
+    ))
+(define-char
+  '((name              . "HYPHENATION POINT")
+    (ucs               . #x2027)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x21 #x31)     ; \e$(G!1\e(B
+    ))
+(define-char
+  '((name              . "LINE SEPARATOR")
+    (ucs               . #x2028)
+    (general-category  separator line) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PARAGRAPH SEPARATOR")
+    (ucs               . #x2029)
+    (general-category  separator paragraph) ; Normative Category
+    (bidi-category     . "B")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT-TO-RIGHT EMBEDDING")
+    (ucs               . #x202A)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "LRE")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHT-TO-LEFT EMBEDDING")
+    (ucs               . #x202B)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "RLE")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "POP DIRECTIONAL FORMATTING")
+    (ucs               . #x202C)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "PDF")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT-TO-RIGHT OVERRIDE")
+    (ucs               . #x202D)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "LRO")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHT-TO-LEFT OVERRIDE")
+    (ucs               . #x202E)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "RLO")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NARROW NO-BREAK SPACE")
+    (ucs               . #x202F)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   noBreak #x0020)
+    ))
+(define-char
+  '((name              . "PER MILLE SIGN")
+    (ucs               . #x2030)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x6B)      ; \e$(A!k\e(B
+    (japanese-jisx0208 #x22 #x73)      ; \e$(B"s\e(B
+    (korean-ksc5601    #x22 #x36)      ; \e$(C"6\e(B
+    ))
+(define-char
+  '((name              . "PER TEN THOUSAND SIGN")
+    (ucs               . #x2031)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PRIME")
+    (ucs               . #x2032)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x6C)      ; \e$(@!l\e(B
+    (chinese-gb2312            #x21 #x64)      ; \e$(A!d\e(B
+    (japanese-jisx0208         #x21 #x6C)      ; \e$(B!l\e(B
+    (korean-ksc5601            #x21 #x47)      ; \e$(C!G\e(B
+    (chinese-cns11643-1                #x21 #x6B)      ; \e$(G!k\e(B
+    ))
+(define-char
+  '((name              . "DOUBLE PRIME")
+    (ucs               . #x2033)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   compat #x2032 #x2032)
+    (japanese-jisx0208-1978    #x21 #x6D)      ; \e$(@!m\e(B
+    (chinese-gb2312            #x21 #x65)      ; \e$(A!e\e(B
+    (japanese-jisx0208         #x21 #x6D)      ; \e$(B!m\e(B
+    (korean-ksc5601            #x21 #x48)      ; \e$(C!H\e(B
+    ))
+(define-char
+  '((name              . "TRIPLE PRIME")
+    (ucs               . #x2034)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   compat #x2032 #x2032 #x2032)
+    ))
+(define-char
+  '((name              . "REVERSED PRIME")
+    (ucs               . #x2035)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x21 #x6A)     ; \e$(G!j\e(B
+    ))
+(define-char
+  '((name              . "REVERSED DOUBLE PRIME")
+    (ucs               . #x2036)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x2035 #x2035)
+    ))
+(define-char
+  '((name              . "REVERSED TRIPLE PRIME")
+    (ucs               . #x2037)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x2035 #x2035 #x2035)
+    ))
+(define-char
+  '((name              . "CARET")
+    (ucs               . #x2038)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SINGLE LEFT-POINTING ANGLE QUOTATION MARK")
+    (ucs               . #x2039)
+    (general-category  punctuation initial-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SINGLE RIGHT-POINTING ANGLE QUOTATION MARK")
+    (ucs               . #x203A)
+    (general-category  punctuation final-quote) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "REFERENCE MARK")
+    (ucs               . #x203B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x28)      ; \e$(@"(\e(B
+    (chinese-gb2312            #x21 #x79)      ; \e$(A!y\e(B
+    (japanese-jisx0208         #x22 #x28)      ; \e$(B"(\e(B
+    (korean-ksc5601            #x21 #x58)      ; \e$(C!X\e(B
+    (chinese-cns11643-1                #x21 #x6F)      ; \e$(G!o\e(B
+    ))
+(define-char
+  '((name              . "DOUBLE EXCLAMATION MARK")
+    (ucs               . #x203C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0021 #x0021)
+    ))
+(define-char
+  '((name              . "INTERROBANG")
+    (ucs               . #x203D)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OVERLINE")
+    (ucs               . #x203E)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x0305)
+    (latin-jisx0201    #x7E)   ; \e(J~\e(B
+    (hebrew-iso8859-8  #xAF)   ; \9b2]\e-H¯\9b0]\e-A
+    (japanese-jisx0208 #x21 #x31)      ; \e$(B!1\e(B
+    ))
+(define-char
+  '((name              . "FULLWIDTH OVERLINE")
+    (->ucs             . #x203E)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   wide #x203E)
+    (japanese-jisx0208-1978    #x21 #x31)      ; \e$(B!1\e(B
+    (japanese-jisx0208         #x21 #x31)      ; \e$(B!1\e(B
+    (chinese-cns11643-1                #x22 #x23)      ; \e$(G"#\e(B
+    ))
+(define-char
+  '((name              . "UNDERTIE")
+    (ucs               . #x203F)
+    (general-category  punctuation connector) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "Enotikon")
+    ))
+(define-char
+  '((name              . "CHARACTER TIE")
+    (ucs               . #x2040)
+    (general-category  punctuation connector) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CARET INSERTION POINT")
+    (ucs               . #x2041)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ASTERISM")
+    (ucs               . #x2042)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HYPHEN BULLET")
+    (ucs               . #x2043)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FRACTION SLASH")
+    (ucs               . #x2044)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x22 #x5F)     ; \e$(G"_\e(B
+    ))
+(define-char
+  '((name              . "LEFT SQUARE BRACKET WITH QUILL")
+    (ucs               . #x2045)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "RIGHT SQUARE BRACKET WITH QUILL")
+    (ucs               . #x2046)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "QUESTION EXCLAMATION MARK")
+    (ucs               . #x2048)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x003F #x0021)
+    ))
+(define-char
+  '((name              . "EXCLAMATION QUESTION MARK")
+    (ucs               . #x2049)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0021 #x003F)
+    ))
+(define-char
+  '((name              . "TIRONIAN SIGN ET")
+    (ucs               . #x204A)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "REVERSED PILCROW SIGN")
+    (ucs               . #x204B)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK LEFTWARDS BULLET")
+    (ucs               . #x204C)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK RIGHTWARDS BULLET")
+    (ucs               . #x204D)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "INHIBIT SYMMETRIC SWAPPING")
+    (ucs               . #x206A)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ACTIVATE SYMMETRIC SWAPPING")
+    (ucs               . #x206B)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "INHIBIT ARABIC FORM SHAPING")
+    (ucs               . #x206C)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ACTIVATE ARABIC FORM SHAPING")
+    (ucs               . #x206D)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NATIONAL DIGIT SHAPES")
+    (ucs               . #x206E)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NOMINAL DIGIT SHAPES")
+    (ucs               . #x206F)
+    (general-category  other format) ; Normative Category
+    (bidi-category     . "BN")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02070-Superscripts.el b/lisp/utf-2000/u02070-Superscripts.el
new file mode 100644 (file)
index 0000000..ac2b8ec
--- /dev/null
@@ -0,0 +1,146 @@
+(define-char
+  '((name              . "SUPERSCRIPT ZERO")
+    (ucs               . #x2070)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 0)
+    (digit-value        . 0)
+    (numeric-value      . 0)
+    (->decomposition   super #x0030)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT FOUR")
+    (ucs               . #x2074)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    (->decomposition   super #x0034)
+    ))
+(define-char
+  '((name              . "FULLWIDTH SUPERSCRIPT FOUR")
+    (->ucs             . #x2074)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    (->decomposition   wide #x2074)
+    (korean-ksc5601    #x29 #x79)      ; \e$(C)y\e(B
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT FIVE")
+    (ucs               . #x2075)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    (->decomposition   super #x0035)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT SIX")
+    (ucs               . #x2076)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    (->decomposition   super #x0036)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT SEVEN")
+    (ucs               . #x2077)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    (->decomposition   super #x0037)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT EIGHT")
+    (ucs               . #x2078)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    (->decomposition   super #x0038)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT NINE")
+    (ucs               . #x2079)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    (->decomposition   super #x0039)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT PLUS SIGN")
+    (ucs               . #x207A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   super #x002B)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT MINUS")
+    (ucs               . #x207B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   super #x2212)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT EQUALS SIGN")
+    (ucs               . #x207C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   super #x003D)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT LEFT PARENTHESIS")
+    (ucs               . #x207D)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   super #x0028)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT RIGHT PARENTHESIS")
+    (ucs               . #x207E)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   super #x0029)
+    ))
+(define-char
+  '((name              . "SUPERSCRIPT LATIN SMALL LETTER N")
+    (ucs               . #x207F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   super #x006E)
+    ))
+(define-char
+  '((name              . "FULLWIDTH SUPERSCRIPT LATIN SMALL LETTER N")
+    (->ucs             . #x207F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   wide #x207F)
+    (korean-ksc5601    #x29 #x7A)      ; \e$(C)z\e(B
+    ))
diff --git a/lisp/utf-2000/u02080-Subscripts.el b/lisp/utf-2000/u02080-Subscripts.el
new file mode 100644 (file)
index 0000000..9683f02
--- /dev/null
@@ -0,0 +1,198 @@
+(define-char
+  '((name              . "SUBSCRIPT ZERO")
+    (ucs               . #x2080)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 0)
+    (digit-value        . 0)
+    (numeric-value      . 0)
+    (->decomposition   sub #x0030)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT ONE")
+    (ucs               . #x2081)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    (->decomposition   sub #x0031)
+    ))
+(define-char
+  '((name              . "FULLWIDTH SUBSCRIPT ONE")
+    (->ucs             . #x2081)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 1)
+    (digit-value        . 1)
+    (numeric-value      . 1)
+    (->decomposition   wide #x2081)
+    (korean-ksc5601    #x29 #x7B)      ; \e$(C){\e(B
+    ))
+(define-char
+  '((name              . "SUBSCRIPT TWO")
+    (ucs               . #x2082)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    (->decomposition   sub #x0032)
+    ))
+(define-char
+  '((name              . "FULLWIDTH SUBSCRIPT TWO")
+    (->ucs             . #x2082)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 2)
+    (digit-value        . 2)
+    (numeric-value      . 2)
+    (->decomposition   wide #x2082)
+    (korean-ksc5601    #x29 #x7C)      ; \e$(C)|\e(B
+    ))
+(define-char
+  '((name              . "SUBSCRIPT THREE")
+    (ucs               . #x2083)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    (->decomposition   sub #x0033)
+    ))
+(define-char
+  '((name              . "FULLWIDTH SUBSCRIPT THREE")
+    (->ucs             . #x2083)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 3)
+    (digit-value        . 3)
+    (numeric-value      . 3)
+    (->decomposition   wide #x2083)
+    (korean-ksc5601    #x29 #x7D)      ; \e$(C)}\e(B
+    ))
+(define-char
+  '((name              . "SUBSCRIPT FOUR")
+    (ucs               . #x2084)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    (->decomposition   sub #x0034)
+    ))
+(define-char
+  '((name              . "FULLWIDTH SUBSCRIPT FOUR")
+    (->ucs             . #x2084)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 4)
+    (digit-value        . 4)
+    (numeric-value      . 4)
+    (->decomposition   wide #x2084)
+    (korean-ksc5601    #x29 #x7E)      ; \e$(C)~\e(B
+    ))
+(define-char
+  '((name              . "SUBSCRIPT FIVE")
+    (ucs               . #x2085)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 5)
+    (digit-value        . 5)
+    (numeric-value      . 5)
+    (->decomposition   sub #x0035)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT SIX")
+    (ucs               . #x2086)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 6)
+    (digit-value        . 6)
+    (numeric-value      . 6)
+    (->decomposition   sub #x0036)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT SEVEN")
+    (ucs               . #x2087)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 7)
+    (digit-value        . 7)
+    (numeric-value      . 7)
+    (->decomposition   sub #x0037)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT EIGHT")
+    (ucs               . #x2088)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 8)
+    (digit-value        . 8)
+    (numeric-value      . 8)
+    (->decomposition   sub #x0038)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT NINE")
+    (ucs               . #x2089)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (decimal-digit-value . 9)
+    (digit-value        . 9)
+    (numeric-value      . 9)
+    (->decomposition   sub #x0039)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT PLUS SIGN")
+    (ucs               . #x208A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   sub #x002B)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT MINUS")
+    (ucs               . #x208B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   sub #x2212)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT EQUALS SIGN")
+    (ucs               . #x208C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   sub #x003D)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT LEFT PARENTHESIS")
+    (ucs               . #x208D)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   sub #x0028)
+    ))
+(define-char
+  '((name              . "SUBSCRIPT RIGHT PARENTHESIS")
+    (ucs               . #x208E)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   sub #x0029)
+    ))
diff --git a/lisp/utf-2000/u020A0-Currency-Symbols.el b/lisp/utf-2000/u020A0-Currency-Symbols.el
new file mode 100644 (file)
index 0000000..c74b201
--- /dev/null
@@ -0,0 +1,113 @@
+(define-char
+  '((name              . "EURO-CURRENCY SIGN")
+    (ucs               . #x20A0)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COLON SIGN")
+    (ucs               . #x20A1)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CRUZEIRO SIGN")
+    (ucs               . #x20A2)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FRENCH FRANC SIGN")
+    (ucs               . #x20A3)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LIRA SIGN")
+    (ucs               . #x20A4)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MILL SIGN")
+    (ucs               . #x20A5)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NAIRA SIGN")
+    (ucs               . #x20A6)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PESETA SIGN")
+    (ucs               . #x20A7)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RUPEE SIGN")
+    (ucs               . #x20A8)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (->decomposition   compat #x0052 #x0073)
+    ))
+(define-char
+  '((name              . "WON SIGN")
+    (ucs               . #x20A9)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NEW SHEQEL SIGN")
+    (ucs               . #x20AA)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DONG SIGN")
+    (ucs               . #x20AB)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EURO SIGN")
+    (ucs               . #x20AC)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KIP SIGN")
+    (ucs               . #x20AD)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TUGRIK SIGN")
+    (ucs               . #x20AE)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DRACHMA SIGN")
+    (ucs               . #x20AF)
+    (general-category  symbol currency) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u020D0-Combining-Diacritical-Marks-for-Symbols.el b/lisp/utf-2000/u020D0-Combining-Diacritical-Marks-for-Symbols.el
new file mode 100644 (file)
index 0000000..3d777d0
--- /dev/null
@@ -0,0 +1,140 @@
+(define-char
+  '((name              . "COMBINING LEFT HARPOON ABOVE")
+    (ucs               . #x20D0)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING RIGHT HARPOON ABOVE")
+    (ucs               . #x20D1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LONG VERTICAL LINE OVERLAY")
+    (ucs               . #x20D2)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING SHORT VERTICAL LINE OVERLAY")
+    (ucs               . #x20D3)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ANTICLOCKWISE ARROW ABOVE")
+    (ucs               . #x20D4)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CLOCKWISE ARROW ABOVE")
+    (ucs               . #x20D5)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LEFT ARROW ABOVE")
+    (ucs               . #x20D6)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING RIGHT ARROW ABOVE")
+    (ucs               . #x20D7)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING RING OVERLAY")
+    (ucs               . #x20D8)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING CLOCKWISE RING OVERLAY")
+    (ucs               . #x20D9)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ANTICLOCKWISE RING OVERLAY")
+    (ucs               . #x20DA)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING THREE DOTS ABOVE")
+    (ucs               . #x20DB)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING FOUR DOTS ABOVE")
+    (ucs               . #x20DC)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ENCLOSING CIRCLE")
+    (ucs               . #x20DD)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ENCLOSING SQUARE")
+    (ucs               . #x20DE)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ENCLOSING DIAMOND")
+    (ucs               . #x20DF)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ENCLOSING CIRCLE BACKSLASH")
+    (ucs               . #x20E0)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING LEFT RIGHT ARROW ABOVE")
+    (ucs               . #x20E1)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ENCLOSING SCREEN")
+    (ucs               . #x20E2)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMBINING ENCLOSING KEYCAP")
+    (ucs               . #x20E3)
+    (general-category  mark enclosing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02100-Letterlike-Symbols.el b/lisp/utf-2000/u02100-Letterlike-Symbols.el
new file mode 100644 (file)
index 0000000..1b71d68
--- /dev/null
@@ -0,0 +1,488 @@
+(define-char
+  '((name              . "ACCOUNT OF")
+    (ucs               . #x2100)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0061 #x002F #x0063)
+    ))
+(define-char
+  '((name              . "ADDRESSED TO THE SUBJECT")
+    (ucs               . #x2101)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0061 #x002F #x0073)
+    ))
+(define-char
+  '((name              . "DOUBLE-STRUCK CAPITAL C")
+    (ucs               . #x2102)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0043)
+    ))
+(define-char
+  '((name              . "DEGREE CELSIUS")
+    (ucs               . #x2103)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x00B0 #x0043)
+    (japanese-jisx0208-1978    #x21 #x6E)      ; \e$(@!n\e(B
+    (chinese-gb2312            #x21 #x66)      ; \e$(A!f\e(B
+    (japanese-jisx0208         #x21 #x6E)      ; \e$(B!n\e(B
+    (korean-ksc5601            #x21 #x49)      ; \e$(C!I\e(B
+    (chinese-cns11643-1                #x22 #x6A)      ; \e$(G"j\e(B
+    ))
+(define-char
+  '((name              . "CENTRE LINE SYMBOL")
+    (ucs               . #x2104)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CARE OF")
+    (ucs               . #x2105)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0063 #x002F #x006F)
+    (chinese-cns11643-1 #x22 #x22)     ; \e$(G""\e(B
+    ))
+(define-char
+  '((name              . "CADA UNA")
+    (ucs               . #x2106)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0063 #x002F #x0075)
+    ))
+(define-char
+  '((name              . "EULER CONSTANT")
+    (ucs               . #x2107)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0190)
+    ))
+(define-char
+  '((name              . "SCRUPLE")
+    (ucs               . #x2108)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DEGREE FAHRENHEIT")
+    (ucs               . #x2109)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x00B0 #x0046)
+    (korean-ksc5601    #x22 #x35)      ; \e$(C"5\e(B
+    (chinese-cns11643-1 #x22 #x6B)     ; \e$(G"k\e(B
+    ))
+(define-char
+  '((name              . "SCRIPT SMALL G")
+    (ucs               . #x210A)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0067)
+    ))
+(define-char
+  '((name              . "SCRIPT CAPITAL H")
+    (ucs               . #x210B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0048)
+    ))
+(define-char
+  '((name              . "BLACK-LETTER CAPITAL H")
+    (ucs               . #x210C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0048)
+    ))
+(define-char
+  '((name              . "DOUBLE-STRUCK CAPITAL H")
+    (ucs               . #x210D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0048)
+    ))
+(define-char
+  '((name              . "PLANCK CONSTANT")
+    (ucs               . #x210E)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0068)
+    ))
+(define-char
+  '((name              . "PLANCK CONSTANT OVER TWO PI")
+    (ucs               . #x210F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0127)
+    ))
+(define-char
+  '((name              . "SCRIPT CAPITAL I")
+    (ucs               . #x2110)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0049)
+    ))
+(define-char
+  '((name              . "BLACK-LETTER CAPITAL I")
+    (ucs               . #x2111)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0049)
+    ))
+(define-char
+  '((name              . "SCRIPT CAPITAL L")
+    (ucs               . #x2112)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x004C)
+    ))
+(define-char
+  '((name              . "SCRIPT SMALL L")
+    (ucs               . #x2113)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x006C)
+    (korean-ksc5601    #x27 #x24)      ; \e$(C'$\e(B
+    ))
+(define-char
+  '((name              . "L B BAR SYMBOL")
+    (ucs               . #x2114)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOUBLE-STRUCK CAPITAL N")
+    (ucs               . #x2115)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x004E)
+    ))
+(define-char
+  '((name              . "NUMERO SIGN")
+    (ucs               . #x2116)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x004E #x006F)
+    (chinese-gb2312    #x21 #x6D)      ; \e$(A!m\e(B
+    (korean-ksc5601    #x22 #x60)      ; \e$(C"`\e(B
+    (japanese-jisx0212 #x22 #x71)      ; \e$(D"q\e(B
+    ))
+(define-char
+  '((name              . "HALFWIDTH NUMERO SIGN")
+    (->ucs             . #x2116)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   narrow #x2116)
+    (cyrillic-iso8859-5 #xF0)  ; \e-Lð\e-A
+    ))
+(define-char
+  '((name              . "SOUND RECORDING COPYRIGHT")
+    (ucs               . #x2117)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SCRIPT CAPITAL P")
+    (ucs               . #x2118)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOUBLE-STRUCK CAPITAL P")
+    (ucs               . #x2119)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0050)
+    ))
+(define-char
+  '((name              . "DOUBLE-STRUCK CAPITAL Q")
+    (ucs               . #x211A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0051)
+    ))
+(define-char
+  '((name              . "SCRIPT CAPITAL R")
+    (ucs               . #x211B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0052)
+    ))
+(define-char
+  '((name              . "BLACK-LETTER CAPITAL R")
+    (ucs               . #x211C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0052)
+    ))
+(define-char
+  '((name              . "DOUBLE-STRUCK CAPITAL R")
+    (ucs               . #x211D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0052)
+    ))
+(define-char
+  '((name              . "PRESCRIPTION TAKE")
+    (ucs               . #x211E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RESPONSE")
+    (ucs               . #x211F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SERVICE MARK")
+    (ucs               . #x2120)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   super #x0053 #x004D)
+    ))
+(define-char
+  '((name              . "TELEPHONE SIGN")
+    (ucs               . #x2121)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0054 #x0045 #x004C)
+    (korean-ksc5601    #x22 #x65)      ; \e$(C"e\e(B
+    ))
+(define-char
+  '((name              . "TRADE MARK SIGN")
+    (ucs               . #x2122)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   super #x0054 #x004D)
+    (korean-ksc5601    #x22 #x62)      ; \e$(C"b\e(B
+    (japanese-jisx0212 #x22 #x6F)      ; \e$(D"o\e(B
+    ))
+(define-char
+  '((name              . "VERSICLE")
+    (ucs               . #x2123)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOUBLE-STRUCK CAPITAL Z")
+    (ucs               . #x2124)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x005A)
+    ))
+(define-char
+  '((name              . "OUNCE SIGN")
+    (ucs               . #x2125)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OHM SIGN")
+    (ucs               . #x2126)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x03A9)
+    (->lowercase       #x03C9)
+    (korean-ksc5601    #x27 #x59)      ; \e$(C'Y\e(B
+    ))
+(define-char
+  '((name              . "INVERTED OHM SIGN")
+    (ucs               . #x2127)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK-LETTER CAPITAL Z")
+    (ucs               . #x2128)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x005A)
+    ))
+(define-char
+  '((name              . "TURNED GREEK SMALL LETTER IOTA")
+    (ucs               . #x2129)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KELVIN SIGN")
+    (ucs               . #x212A)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x004B)
+    (->lowercase       #x006B)
+    ))
+(define-char
+  '((name              . "ANGSTROM SIGN")
+    (ucs               . #x212B)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x00C5)
+    (->lowercase       #x00E5)
+    (japanese-jisx0208 #x22 #x72)      ; \e$(B"r\e(B
+    (korean-ksc5601    #x21 #x4A)      ; \e$(C!J\e(B
+    ))
+(define-char
+  '((name              . "SCRIPT CAPITAL B")
+    (ucs               . #x212C)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0042)
+    ))
+(define-char
+  '((name              . "BLACK-LETTER CAPITAL C")
+    (ucs               . #x212D)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0043)
+    ))
+(define-char
+  '((name              . "ESTIMATED SYMBOL")
+    (ucs               . #x212E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SCRIPT SMALL E")
+    (ucs               . #x212F)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0065)
+    ))
+(define-char
+  '((name              . "SCRIPT CAPITAL E")
+    (ucs               . #x2130)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0045)
+    ))
+(define-char
+  '((name              . "SCRIPT CAPITAL F")
+    (ucs               . #x2131)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0046)
+    ))
+(define-char
+  '((name              . "TURNED CAPITAL F")
+    (ucs               . #x2132)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SCRIPT CAPITAL M")
+    (ucs               . #x2133)
+    (general-category  letter uppercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x004D)
+    ))
+(define-char
+  '((name              . "SCRIPT SMALL O")
+    (ucs               . #x2134)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x006F)
+    ))
+(define-char
+  '((name              . "ALEF SYMBOL")
+    (ucs               . #x2135)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x05D0)
+    ))
+(define-char
+  '((name              . "BET SYMBOL")
+    (ucs               . #x2136)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x05D1)
+    ))
+(define-char
+  '((name              . "GIMEL SYMBOL")
+    (ucs               . #x2137)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x05D2)
+    ))
+(define-char
+  '((name              . "DALET SYMBOL")
+    (ucs               . #x2138)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x05D3)
+    ))
+(define-char
+  '((name              . "INFORMATION SOURCE")
+    (ucs               . #x2139)
+    (general-category  letter lowercase) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   font #x0069)
+    ))
+(define-char
+  '((name              . "ROTATED CAPITAL Q")
+    (ucs               . #x213A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02150-Number-Forms.el b/lisp/utf-2000/u02150-Number-Forms.el
new file mode 100644 (file)
index 0000000..143f91e
--- /dev/null
@@ -0,0 +1,542 @@
+(define-char
+  '((name              . "VULGAR FRACTION ONE THIRD")
+    (ucs               . #x2153)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 1/3)
+    (->decomposition   fraction #x0031 #x2044 #x0033)
+    (korean-ksc5601    #x28 #x77)      ; \e$(C(w\e(B
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION TWO THIRDS")
+    (ucs               . #x2154)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 2/3)
+    (->decomposition   fraction #x0032 #x2044 #x0033)
+    (korean-ksc5601    #x28 #x78)      ; \e$(C(x\e(B
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION ONE FIFTH")
+    (ucs               . #x2155)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 1/5)
+    (->decomposition   fraction #x0031 #x2044 #x0035)
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION TWO FIFTHS")
+    (ucs               . #x2156)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 2/5)
+    (->decomposition   fraction #x0032 #x2044 #x0035)
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION THREE FIFTHS")
+    (ucs               . #x2157)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 3/5)
+    (->decomposition   fraction #x0033 #x2044 #x0035)
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION FOUR FIFTHS")
+    (ucs               . #x2158)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 4/5)
+    (->decomposition   fraction #x0034 #x2044 #x0035)
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION ONE SIXTH")
+    (ucs               . #x2159)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 1/6)
+    (->decomposition   fraction #x0031 #x2044 #x0036)
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION FIVE SIXTHS")
+    (ucs               . #x215A)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 5/6)
+    (->decomposition   fraction #x0035 #x2044 #x0036)
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION ONE EIGHTH")
+    (ucs               . #x215B)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 1/8)
+    (->decomposition   fraction #x0031 #x2044 #x0038)
+    (korean-ksc5601    #x28 #x7B)      ; \e$(C({\e(B
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION THREE EIGHTHS")
+    (ucs               . #x215C)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 3/8)
+    (->decomposition   fraction #x0033 #x2044 #x0038)
+    (korean-ksc5601    #x28 #x7C)      ; \e$(C(|\e(B
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION FIVE EIGHTHS")
+    (ucs               . #x215D)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 5/8)
+    (->decomposition   fraction #x0035 #x2044 #x0038)
+    (korean-ksc5601    #x28 #x7D)      ; \e$(C(}\e(B
+    ))
+(define-char
+  '((name              . "VULGAR FRACTION SEVEN EIGHTHS")
+    (ucs               . #x215E)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 7/8)
+    (->decomposition   fraction #x0037 #x2044 #x0038)
+    (korean-ksc5601    #x28 #x7E)      ; \e$(C(~\e(B
+    ))
+(define-char
+  '((name              . "FRACTION NUMERATOR ONE")
+    (ucs               . #x215F)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 1)
+    (->decomposition   fraction #x0031 #x2044)
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL ONE")
+    (ucs               . #x2160)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 1)
+    (->decomposition   compat #x0049)
+    (->lowercase       #x2170)
+    (chinese-gb2312    #x22 #x71)      ; \e$(A"q\e(B
+    (korean-ksc5601    #x25 #x30)      ; \e$(C%0\e(B
+    (chinese-cns11643-1 #x24 #x2B)     ; \e$(G$+\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL TWO")
+    (ucs               . #x2161)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 2)
+    (->decomposition   compat #x0049 #x0049)
+    (->lowercase       #x2171)
+    (chinese-gb2312    #x22 #x72)      ; \e$(A"r\e(B
+    (korean-ksc5601    #x25 #x31)      ; \e$(C%1\e(B
+    (chinese-cns11643-1 #x24 #x2C)     ; \e$(G$,\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL THREE")
+    (ucs               . #x2162)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 3)
+    (->decomposition   compat #x0049 #x0049 #x0049)
+    (->lowercase       #x2172)
+    (chinese-gb2312    #x22 #x73)      ; \e$(A"s\e(B
+    (korean-ksc5601    #x25 #x32)      ; \e$(C%2\e(B
+    (chinese-cns11643-1 #x24 #x2D)     ; \e$(G$-\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL FOUR")
+    (ucs               . #x2163)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 4)
+    (->decomposition   compat #x0049 #x0056)
+    (->lowercase       #x2173)
+    (chinese-gb2312    #x22 #x74)      ; \e$(A"t\e(B
+    (korean-ksc5601    #x25 #x33)      ; \e$(C%3\e(B
+    (chinese-cns11643-1 #x24 #x2E)     ; \e$(G$.\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL FIVE")
+    (ucs               . #x2164)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 5)
+    (->decomposition   compat #x0056)
+    (->lowercase       #x2174)
+    (chinese-gb2312    #x22 #x75)      ; \e$(A"u\e(B
+    (korean-ksc5601    #x25 #x34)      ; \e$(C%4\e(B
+    (chinese-cns11643-1 #x24 #x2F)     ; \e$(G$/\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL SIX")
+    (ucs               . #x2165)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 6)
+    (->decomposition   compat #x0056 #x0049)
+    (->lowercase       #x2175)
+    (chinese-gb2312    #x22 #x76)      ; \e$(A"v\e(B
+    (korean-ksc5601    #x25 #x35)      ; \e$(C%5\e(B
+    (chinese-cns11643-1 #x24 #x30)     ; \e$(G$0\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL SEVEN")
+    (ucs               . #x2166)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 7)
+    (->decomposition   compat #x0056 #x0049 #x0049)
+    (->lowercase       #x2176)
+    (chinese-gb2312    #x22 #x77)      ; \e$(A"w\e(B
+    (korean-ksc5601    #x25 #x36)      ; \e$(C%6\e(B
+    (chinese-cns11643-1 #x24 #x31)     ; \e$(G$1\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL EIGHT")
+    (ucs               . #x2167)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 8)
+    (->decomposition   compat #x0056 #x0049 #x0049 #x0049)
+    (->lowercase       #x2177)
+    (chinese-gb2312    #x22 #x78)      ; \e$(A"x\e(B
+    (korean-ksc5601    #x25 #x37)      ; \e$(C%7\e(B
+    (chinese-cns11643-1 #x24 #x32)     ; \e$(G$2\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL NINE")
+    (ucs               . #x2168)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 9)
+    (->decomposition   compat #x0049 #x0058)
+    (->lowercase       #x2178)
+    (chinese-gb2312    #x22 #x79)      ; \e$(A"y\e(B
+    (korean-ksc5601    #x25 #x38)      ; \e$(C%8\e(B
+    (chinese-cns11643-1 #x24 #x33)     ; \e$(G$3\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL TEN")
+    (ucs               . #x2169)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    (->decomposition   compat #x0058)
+    (->lowercase       #x2179)
+    (chinese-gb2312    #x22 #x7A)      ; \e$(A"z\e(B
+    (korean-ksc5601    #x25 #x39)      ; \e$(C%9\e(B
+    (chinese-cns11643-1 #x24 #x34)     ; \e$(G$4\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL ELEVEN")
+    (ucs               . #x216A)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 11)
+    (->decomposition   compat #x0058 #x0049)
+    (->lowercase       #x217A)
+    (chinese-gb2312    #x22 #x7B)      ; \e$(A"{\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL TWELVE")
+    (ucs               . #x216B)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 12)
+    (->decomposition   compat #x0058 #x0049 #x0049)
+    (->lowercase       #x217B)
+    (chinese-gb2312    #x22 #x7C)      ; \e$(A"|\e(B
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL FIFTY")
+    (ucs               . #x216C)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 50)
+    (->decomposition   compat #x004C)
+    (->lowercase       #x217C)
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL ONE HUNDRED")
+    (ucs               . #x216D)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 100)
+    (->decomposition   compat #x0043)
+    (->lowercase       #x217D)
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL FIVE HUNDRED")
+    (ucs               . #x216E)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 500)
+    (->decomposition   compat #x0044)
+    (->lowercase       #x217E)
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL ONE THOUSAND")
+    (ucs               . #x216F)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 1000)
+    (->decomposition   compat #x004D)
+    (->lowercase       #x217F)
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL ONE")
+    (ucs               . #x2170)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 1)
+    (->decomposition   compat #x0069)
+    (->uppercase       #x2160)
+    (->titlecase       #x2160)
+    (korean-ksc5601    #x25 #x21)      ; \e$(C%!\e(B
+    (chinese-cns11643-1 #x26 #x35)     ; \e$(G&5\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL TWO")
+    (ucs               . #x2171)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 2)
+    (->decomposition   compat #x0069 #x0069)
+    (->uppercase       #x2161)
+    (->titlecase       #x2161)
+    (korean-ksc5601    #x25 #x22)      ; \e$(C%"\e(B
+    (chinese-cns11643-1 #x26 #x36)     ; \e$(G&6\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL THREE")
+    (ucs               . #x2172)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 3)
+    (->decomposition   compat #x0069 #x0069 #x0069)
+    (->uppercase       #x2162)
+    (->titlecase       #x2162)
+    (korean-ksc5601    #x25 #x23)      ; \e$(C%#\e(B
+    (chinese-cns11643-1 #x26 #x37)     ; \e$(G&7\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL FOUR")
+    (ucs               . #x2173)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 4)
+    (->decomposition   compat #x0069 #x0076)
+    (->uppercase       #x2163)
+    (->titlecase       #x2163)
+    (korean-ksc5601    #x25 #x24)      ; \e$(C%$\e(B
+    (chinese-cns11643-1 #x26 #x38)     ; \e$(G&8\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL FIVE")
+    (ucs               . #x2174)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 5)
+    (->decomposition   compat #x0076)
+    (->uppercase       #x2164)
+    (->titlecase       #x2164)
+    (korean-ksc5601    #x25 #x25)      ; \e$(C%%\e(B
+    (chinese-cns11643-1 #x26 #x39)     ; \e$(G&9\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL SIX")
+    (ucs               . #x2175)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 6)
+    (->decomposition   compat #x0076 #x0069)
+    (->uppercase       #x2165)
+    (->titlecase       #x2165)
+    (korean-ksc5601    #x25 #x26)      ; \e$(C%&\e(B
+    (chinese-cns11643-1 #x26 #x3A)     ; \e$(G&:\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL SEVEN")
+    (ucs               . #x2176)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 7)
+    (->decomposition   compat #x0076 #x0069 #x0069)
+    (->uppercase       #x2166)
+    (->titlecase       #x2166)
+    (korean-ksc5601    #x25 #x27)      ; \e$(C%'\e(B
+    (chinese-cns11643-1 #x26 #x3B)     ; \e$(G&;\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL EIGHT")
+    (ucs               . #x2177)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 8)
+    (->decomposition   compat #x0076 #x0069 #x0069 #x0069)
+    (->uppercase       #x2167)
+    (->titlecase       #x2167)
+    (korean-ksc5601    #x25 #x28)      ; \e$(C%(\e(B
+    (chinese-cns11643-1 #x26 #x3C)     ; \e$(G&<\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL NINE")
+    (ucs               . #x2178)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 9)
+    (->decomposition   compat #x0069 #x0078)
+    (->uppercase       #x2168)
+    (->titlecase       #x2168)
+    (korean-ksc5601    #x25 #x29)      ; \e$(C%)\e(B
+    (chinese-cns11643-1 #x26 #x3D)     ; \e$(G&=\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL TEN")
+    (ucs               . #x2179)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    (->decomposition   compat #x0078)
+    (->uppercase       #x2169)
+    (->titlecase       #x2169)
+    (korean-ksc5601    #x25 #x2A)      ; \e$(C%*\e(B
+    (chinese-cns11643-1 #x26 #x3E)     ; \e$(G&>\e(B
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL ELEVEN")
+    (ucs               . #x217A)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 11)
+    (->decomposition   compat #x0078 #x0069)
+    (->uppercase       #x216A)
+    (->titlecase       #x216A)
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL TWELVE")
+    (ucs               . #x217B)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 12)
+    (->decomposition   compat #x0078 #x0069 #x0069)
+    (->uppercase       #x216B)
+    (->titlecase       #x216B)
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL FIFTY")
+    (ucs               . #x217C)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 50)
+    (->decomposition   compat #x006C)
+    (->uppercase       #x216C)
+    (->titlecase       #x216C)
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL ONE HUNDRED")
+    (ucs               . #x217D)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 100)
+    (->decomposition   compat #x0063)
+    (->uppercase       #x216D)
+    (->titlecase       #x216D)
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL FIVE HUNDRED")
+    (ucs               . #x217E)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 500)
+    (->decomposition   compat #x0064)
+    (->uppercase       #x216E)
+    (->titlecase       #x216E)
+    ))
+(define-char
+  '((name              . "SMALL ROMAN NUMERAL ONE THOUSAND")
+    (ucs               . #x217F)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 1000)
+    (->decomposition   compat #x006D)
+    (->uppercase       #x216F)
+    (->titlecase       #x216F)
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL ONE THOUSAND C D")
+    (ucs               . #x2180)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 1000)
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL FIVE THOUSAND")
+    (ucs               . #x2181)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 5000)
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL TEN THOUSAND")
+    (ucs               . #x2182)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 10000)
+    ))
+(define-char
+  '((name              . "ROMAN NUMERAL REVERSED ONE HUNDRED")
+    (ucs               . #x2183)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02190-Arrows.el b/lisp/utf-2000/u02190-Arrows.el
new file mode 100644 (file)
index 0000000..ed92d74
--- /dev/null
@@ -0,0 +1,740 @@
+(define-char
+  '((name              . "LEFTWARDS ARROW")
+    (ucs               . #x2190)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x2B)      ; \e$(@"+\e(B
+    (chinese-gb2312            #x21 #x7B)      ; \e$(A!{\e(B
+    (japanese-jisx0208         #x22 #x2B)      ; \e$(B"+\e(B
+    (korean-ksc5601            #x21 #x67)      ; \e$(C!g\e(B
+    (chinese-cns11643-1                #x22 #x58)      ; \e$(G"X\e(B
+    ))
+(define-char
+  '((name              . "UPWARDS ARROW")
+    (ucs               . #x2191)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x2C)      ; \e$(@",\e(B
+    (chinese-gb2312            #x21 #x7C)      ; \e$(A!|\e(B
+    (japanese-jisx0208         #x22 #x2C)      ; \e$(B",\e(B
+    (korean-ksc5601            #x21 #x68)      ; \e$(C!h\e(B
+    (chinese-cns11643-1                #x22 #x55)      ; \e$(G"U\e(B
+    ))
+(define-char
+  '((name              . "RIGHTWARDS ARROW")
+    (ucs               . #x2192)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x2A)      ; \e$(@"*\e(B
+    (chinese-gb2312            #x21 #x7A)      ; \e$(A!z\e(B
+    (japanese-jisx0208         #x22 #x2A)      ; \e$(B"*\e(B
+    (korean-ksc5601            #x21 #x66)      ; \e$(C!f\e(B
+    (chinese-cns11643-1                #x22 #x57)      ; \e$(G"W\e(B
+    ))
+(define-char
+  '((name              . "DOWNWARDS ARROW")
+    (ucs               . #x2193)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x2D)      ; \e$(@"-\e(B
+    (chinese-gb2312            #x21 #x7D)      ; \e$(A!}\e(B
+    (japanese-jisx0208         #x22 #x2D)      ; \e$(B"-\e(B
+    (korean-ksc5601            #x21 #x69)      ; \e$(C!i\e(B
+    (chinese-cns11643-1                #x22 #x56)      ; \e$(G"V\e(B
+    ))
+(define-char
+  '((name              . "LEFT RIGHT ARROW")
+    (ucs               . #x2194)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x21 #x6A)      ; \e$(C!j\e(B
+    ))
+(define-char
+  '((name              . "UP DOWN ARROW")
+    (ucs               . #x2195)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x55)      ; \e$(C"U\e(B
+    ))
+(define-char
+  '((name              . "NORTH WEST ARROW")
+    (ucs               . #x2196)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x58)      ; \e$(C"X\e(B
+    (chinese-cns11643-1 #x22 #x59)     ; \e$(G"Y\e(B
+    ))
+(define-char
+  '((name              . "NORTH EAST ARROW")
+    (ucs               . #x2197)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x56)      ; \e$(C"V\e(B
+    (chinese-cns11643-1 #x22 #x5A)     ; \e$(G"Z\e(B
+    ))
+(define-char
+  '((name              . "SOUTH EAST ARROW")
+    (ucs               . #x2198)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x59)      ; \e$(C"Y\e(B
+    (chinese-cns11643-1 #x22 #x5C)     ; \e$(G"\\e(B
+    ))
+(define-char
+  '((name              . "SOUTH WEST ARROW")
+    (ucs               . #x2199)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x57)      ; \e$(C"W\e(B
+    (chinese-cns11643-1 #x22 #x5B)     ; \e$(G"[\e(B
+    ))
+(define-char
+  '((name              . "LEFTWARDS ARROW WITH STROKE")
+    (ucs               . #x219A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   #x2190 #x0338)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS ARROW WITH STROKE")
+    (ucs               . #x219B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   #x2192 #x0338)
+    ))
+(define-char
+  '((name              . "LEFTWARDS WAVE ARROW")
+    (ucs               . #x219C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS WAVE ARROW")
+    (ucs               . #x219D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS TWO HEADED ARROW")
+    (ucs               . #x219E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS TWO HEADED ARROW")
+    (ucs               . #x219F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS TWO HEADED ARROW")
+    (ucs               . #x21A0)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS TWO HEADED ARROW")
+    (ucs               . #x21A1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS ARROW WITH TAIL")
+    (ucs               . #x21A2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS ARROW WITH TAIL")
+    (ucs               . #x21A3)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS ARROW FROM BAR")
+    (ucs               . #x21A4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS ARROW FROM BAR")
+    (ucs               . #x21A5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS ARROW FROM BAR")
+    (ucs               . #x21A6)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS ARROW FROM BAR")
+    (ucs               . #x21A7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UP DOWN ARROW WITH BASE")
+    (ucs               . #x21A8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS ARROW WITH HOOK")
+    (ucs               . #x21A9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS ARROW WITH HOOK")
+    (ucs               . #x21AA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS ARROW WITH LOOP")
+    (ucs               . #x21AB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS ARROW WITH LOOP")
+    (ucs               . #x21AC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT RIGHT WAVE ARROW")
+    (ucs               . #x21AD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT RIGHT ARROW WITH STROKE")
+    (ucs               . #x21AE)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   #x2194 #x0338)
+    ))
+(define-char
+  '((name              . "DOWNWARDS ZIGZAG ARROW")
+    (ucs               . #x21AF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS ARROW WITH TIP LEFTWARDS")
+    (ucs               . #x21B0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS ARROW WITH TIP RIGHTWARDS")
+    (ucs               . #x21B1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS ARROW WITH TIP LEFTWARDS")
+    (ucs               . #x21B2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS ARROW WITH TIP RIGHTWARDS")
+    (ucs               . #x21B3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS ARROW WITH CORNER DOWNWARDS")
+    (ucs               . #x21B4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS ARROW WITH CORNER LEFTWARDS")
+    (ucs               . #x21B5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ANTICLOCKWISE TOP SEMICIRCLE ARROW")
+    (ucs               . #x21B6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CLOCKWISE TOP SEMICIRCLE ARROW")
+    (ucs               . #x21B7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NORTH WEST ARROW TO LONG BAR")
+    (ucs               . #x21B8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR")
+    (ucs               . #x21B9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ANTICLOCKWISE OPEN CIRCLE ARROW")
+    (ucs               . #x21BA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CLOCKWISE OPEN CIRCLE ARROW")
+    (ucs               . #x21BB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS HARPOON WITH BARB UPWARDS")
+    (ucs               . #x21BC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS HARPOON WITH BARB DOWNWARDS")
+    (ucs               . #x21BD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS HARPOON WITH BARB RIGHTWARDS")
+    (ucs               . #x21BE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS HARPOON WITH BARB LEFTWARDS")
+    (ucs               . #x21BF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS HARPOON WITH BARB UPWARDS")
+    (ucs               . #x21C0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS HARPOON WITH BARB DOWNWARDS")
+    (ucs               . #x21C1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS HARPOON WITH BARB RIGHTWARDS")
+    (ucs               . #x21C2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS HARPOON WITH BARB LEFTWARDS")
+    (ucs               . #x21C3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS ARROW OVER LEFTWARDS ARROW")
+    (ucs               . #x21C4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW")
+    (ucs               . #x21C5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS ARROW OVER RIGHTWARDS ARROW")
+    (ucs               . #x21C6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS PAIRED ARROWS")
+    (ucs               . #x21C7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS PAIRED ARROWS")
+    (ucs               . #x21C8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS PAIRED ARROWS")
+    (ucs               . #x21C9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS PAIRED ARROWS")
+    (ucs               . #x21CA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON")
+    (ucs               . #x21CB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON")
+    (ucs               . #x21CC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS DOUBLE ARROW WITH STROKE")
+    (ucs               . #x21CD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   #x21D0 #x0338)
+    ))
+(define-char
+  '((name              . "LEFT RIGHT DOUBLE ARROW WITH STROKE")
+    (ucs               . #x21CE)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   #x21D4 #x0338)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS DOUBLE ARROW WITH STROKE")
+    (ucs               . #x21CF)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   #x21D2 #x0338)
+    ))
+(define-char
+  '((name              . "LEFTWARDS DOUBLE ARROW")
+    (ucs               . #x21D0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS DOUBLE ARROW")
+    (ucs               . #x21D1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS DOUBLE ARROW")
+    (ucs               . #x21D2)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x4D)      ; \e$(B"M\e(B
+    (korean-ksc5601    #x22 #x21)      ; \e$(C"!\e(B
+    ))
+(define-char
+  '((name              . "DOWNWARDS DOUBLE ARROW")
+    (ucs               . #x21D3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT RIGHT DOUBLE ARROW")
+    (ucs               . #x21D4)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x4E)      ; \e$(B"N\e(B
+    (korean-ksc5601    #x22 #x22)      ; \e$(C""\e(B
+    ))
+(define-char
+  '((name              . "UP DOWN DOUBLE ARROW")
+    (ucs               . #x21D5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NORTH WEST DOUBLE ARROW")
+    (ucs               . #x21D6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NORTH EAST DOUBLE ARROW")
+    (ucs               . #x21D7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SOUTH EAST DOUBLE ARROW")
+    (ucs               . #x21D8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SOUTH WEST DOUBLE ARROW")
+    (ucs               . #x21D9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS TRIPLE ARROW")
+    (ucs               . #x21DA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS TRIPLE ARROW")
+    (ucs               . #x21DB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS SQUIGGLE ARROW")
+    (ucs               . #x21DC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS SQUIGGLE ARROW")
+    (ucs               . #x21DD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS ARROW WITH DOUBLE STROKE")
+    (ucs               . #x21DE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS ARROW WITH DOUBLE STROKE")
+    (ucs               . #x21DF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS DASHED ARROW")
+    (ucs               . #x21E0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS DASHED ARROW")
+    (ucs               . #x21E1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS DASHED ARROW")
+    (ucs               . #x21E2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS DASHED ARROW")
+    (ucs               . #x21E3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS ARROW TO BAR")
+    (ucs               . #x21E4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS ARROW TO BAR")
+    (ucs               . #x21E5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFTWARDS WHITE ARROW")
+    (ucs               . #x21E6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS WHITE ARROW")
+    (ucs               . #x21E7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS WHITE ARROW")
+    (ucs               . #x21E8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWNWARDS WHITE ARROW")
+    (ucs               . #x21E9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS WHITE ARROW FROM BAR")
+    (ucs               . #x21EA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS WHITE ARROW ON PEDESTAL")
+    (ucs               . #x21EB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR")
+    (ucs               . #x21EC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR")
+    (ucs               . #x21ED)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS WHITE DOUBLE ARROW")
+    (ucs               . #x21EE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPWARDS WHITE DOUBLE ARROW ON PEDESTAL")
+    (ucs               . #x21EF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHTWARDS WHITE ARROW FROM WALL")
+    (ucs               . #x21F0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NORTH WEST ARROW TO CORNER")
+    (ucs               . #x21F1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SOUTH EAST ARROW TO CORNER")
+    (ucs               . #x21F2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UP DOWN WHITE ARROW")
+    (ucs               . #x21F3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02200-Mathematical-Operators.el b/lisp/utf-2000/u02200-Mathematical-Operators.el
new file mode 100644 (file)
index 0000000..cdbbbde
--- /dev/null
@@ -0,0 +1,1861 @@
+(define-char
+  '((name              . "FOR ALL")
+    (ucs               . #x2200)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x4F)      ; \e$(B"O\e(B
+    (korean-ksc5601    #x22 #x23)      ; \e$(C"#\e(B
+    ))
+(define-char
+  '((name              . "COMPLEMENT")
+    (ucs               . #x2201)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "PARTIAL DIFFERENTIAL")
+    (ucs               . #x2202)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x5F)      ; \e$(B"_\e(B
+    (korean-ksc5601    #x21 #x53)      ; \e$(C!S\e(B
+    ))
+(define-char
+  '((name              . "THERE EXISTS")
+    (ucs               . #x2203)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x50)      ; \e$(B"P\e(B
+    (korean-ksc5601    #x22 #x24)      ; \e$(C"$\e(B
+    ))
+(define-char
+  '((name              . "THERE DOES NOT EXIST")
+    (ucs               . #x2204)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2203 #x0338)
+    ))
+(define-char
+  '((name              . "EMPTY SET")
+    (ucs               . #x2205)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "INCREMENT")
+    (ucs               . #x2206)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NABLA")
+    (ucs               . #x2207)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x60)      ; \e$(B"`\e(B
+    (korean-ksc5601    #x21 #x54)      ; \e$(C!T\e(B
+    ))
+(define-char
+  '((name              . "ELEMENT OF")
+    (ucs               . #x2208)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x4A)      ; \e$(A!J\e(B
+    (japanese-jisx0208 #x22 #x3A)      ; \e$(B":\e(B
+    (korean-ksc5601    #x21 #x74)      ; \e$(C!t\e(B
+    ))
+(define-char
+  '((name              . "NOT AN ELEMENT OF")
+    (ucs               . #x2209)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2208 #x0338)
+    ))
+(define-char
+  '((name              . "SMALL ELEMENT OF")
+    (ucs               . #x220A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "CONTAINS AS MEMBER")
+    (ucs               . #x220B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x3B)      ; \e$(B";\e(B
+    (korean-ksc5601    #x21 #x75)      ; \e$(C!u\e(B
+    ))
+(define-char
+  '((name              . "DOES NOT CONTAIN AS MEMBER")
+    (ucs               . #x220C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x220B #x0338)
+    ))
+(define-char
+  '((name              . "SMALL CONTAINS AS MEMBER")
+    (ucs               . #x220D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "END OF PROOF")
+    (ucs               . #x220E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "N-ARY PRODUCT")
+    (ucs               . #x220F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x47)      ; \e$(A!G\e(B
+    (korean-ksc5601    #x22 #x33)      ; \e$(C"3\e(B
+    ))
+(define-char
+  '((name              . "N-ARY COPRODUCT")
+    (ucs               . #x2210)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "N-ARY SUMMATION")
+    (ucs               . #x2211)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x46)      ; \e$(A!F\e(B
+    (korean-ksc5601    #x22 #x32)      ; \e$(C"2\e(B
+    ))
+(define-char
+  '((name              . "MINUS SIGN")
+    (ucs               . #x2212)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x5D)      ; \e$(@!]\e(B
+    (japanese-jisx0208         #x21 #x5D)      ; \e$(B!]\e(B
+    ))
+(define-char
+  '((name              . "MINUS-OR-PLUS SIGN")
+    (ucs               . #x2213)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ET")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOT PLUS")
+    (ucs               . #x2214)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DIVISION SLASH")
+    (ucs               . #x2215)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-cns11643-1 #x22 #x61)     ; \e$(G"a\e(B
+    ))
+(define-char
+  '((name              . "SET MINUS")
+    (ucs               . #x2216)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "ASTERISK OPERATOR")
+    (ucs               . #x2217)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RING OPERATOR")
+    (ucs               . #x2218)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BULLET OPERATOR")
+    (ucs               . #x2219)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARE ROOT")
+    (ucs               . #x221A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x4C)      ; \e$(A!L\e(B
+    (japanese-jisx0208 #x22 #x65)      ; \e$(B"e\e(B
+    (korean-ksc5601    #x21 #x6E)      ; \e$(C!n\e(B
+    (chinese-cns11643-1 #x22 #x35)     ; \e$(G"5\e(B
+    ))
+(define-char
+  '((name              . "CUBE ROOT")
+    (ucs               . #x221B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "FOURTH ROOT")
+    (ucs               . #x221C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "PROPORTIONAL TO")
+    (ucs               . #x221D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x58)      ; \e$(A!X\e(B
+    (japanese-jisx0208 #x22 #x67)      ; \e$(B"g\e(B
+    (korean-ksc5601    #x21 #x70)      ; \e$(C!p\e(B
+    ))
+(define-char
+  '((name              . "INFINITY")
+    (ucs               . #x221E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x67)      ; \e$(@!g\e(B
+    (chinese-gb2312            #x21 #x5E)      ; \e$(A!^\e(B
+    (japanese-jisx0208         #x21 #x67)      ; \e$(B!g\e(B
+    (korean-ksc5601            #x21 #x44)      ; \e$(C!D\e(B
+    (chinese-cns11643-1                #x22 #x3C)      ; \e$(G"<\e(B
+    ))
+(define-char
+  '((name              . "RIGHT ANGLE")
+    (ucs               . #x221F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-cns11643-1 #x22 #x49)     ; \e$(G"I\e(B
+    ))
+(define-char
+  '((name              . "ANGLE")
+    (ucs               . #x2220)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x4F)      ; \e$(A!O\e(B
+    (japanese-jisx0208 #x22 #x5C)      ; \e$(B"\\e(B
+    (korean-ksc5601    #x21 #x50)      ; \e$(C!P\e(B
+    (chinese-cns11643-1 #x22 #x48)     ; \e$(G"H\e(B
+    ))
+(define-char
+  '((name              . "MEASURED ANGLE")
+    (ucs               . #x2221)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SPHERICAL ANGLE")
+    (ucs               . #x2222)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "DIVIDES")
+    (ucs               . #x2223)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOES NOT DIVIDE")
+    (ucs               . #x2224)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2223 #x0338)
+    ))
+(define-char
+  '((name              . "PARALLEL TO")
+    (ucs               . #x2225)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x4E)      ; \e$(A!N\e(B
+    (korean-ksc5601    #x21 #x2B)      ; \e$(C!+\e(B
+    ))
+(define-char
+  '((name              . "NOT PARALLEL TO")
+    (ucs               . #x2226)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2225 #x0338)
+    ))
+(define-char
+  '((name              . "LOGICAL AND")
+    (ucs               . #x2227)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x44)      ; \e$(A!D\e(B
+    (japanese-jisx0208 #x22 #x4A)      ; \e$(B"J\e(B
+    (korean-ksc5601    #x21 #x7C)      ; \e$(C!|\e(B
+    ))
+(define-char
+  '((name              . "LOGICAL OR")
+    (ucs               . #x2228)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x45)      ; \e$(A!E\e(B
+    (japanese-jisx0208 #x22 #x4B)      ; \e$(B"K\e(B
+    (korean-ksc5601    #x21 #x7D)      ; \e$(C!}\e(B
+    ))
+(define-char
+  '((name              . "INTERSECTION")
+    (ucs               . #x2229)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x49)      ; \e$(A!I\e(B
+    (japanese-jisx0208 #x22 #x41)      ; \e$(B"A\e(B
+    (korean-ksc5601    #x21 #x7B)      ; \e$(C!{\e(B
+    (chinese-cns11643-1 #x22 #x45)     ; \e$(G"E\e(B
+    ))
+(define-char
+  '((name              . "UNION")
+    (ucs               . #x222A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x48)      ; \e$(A!H\e(B
+    (japanese-jisx0208 #x22 #x40)      ; \e$(B"@\e(B
+    (korean-ksc5601    #x21 #x7A)      ; \e$(C!z\e(B
+    (chinese-cns11643-1 #x22 #x46)     ; \e$(G"F\e(B
+    ))
+(define-char
+  '((name              . "INTEGRAL")
+    (ucs               . #x222B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x52)      ; \e$(A!R\e(B
+    (japanese-jisx0208 #x22 #x69)      ; \e$(B"i\e(B
+    (korean-ksc5601    #x21 #x72)      ; \e$(C!r\e(B
+    (chinese-cns11643-1 #x22 #x4D)     ; \e$(G"M\e(B
+    ))
+(define-char
+  '((name              . "DOUBLE INTEGRAL")
+    (ucs               . #x222C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   compat #x222B #x222B)
+    (japanese-jisx0208 #x22 #x6A)      ; \e$(B"j\e(B
+    (korean-ksc5601    #x21 #x73)      ; \e$(C!s\e(B
+    ))
+(define-char
+  '((name              . "TRIPLE INTEGRAL")
+    (ucs               . #x222D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   compat #x222B #x222B #x222B)
+    ))
+(define-char
+  '((name              . "CONTOUR INTEGRAL")
+    (ucs               . #x222E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x53)      ; \e$(A!S\e(B
+    (korean-ksc5601    #x22 #x31)      ; \e$(C"1\e(B
+    (chinese-cns11643-1 #x22 #x4E)     ; \e$(G"N\e(B
+    ))
+(define-char
+  '((name              . "SURFACE INTEGRAL")
+    (ucs               . #x222F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   compat #x222E #x222E)
+    ))
+(define-char
+  '((name              . "VOLUME INTEGRAL")
+    (ucs               . #x2230)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   compat #x222E #x222E #x222E)
+    ))
+(define-char
+  '((name              . "CLOCKWISE INTEGRAL")
+    (ucs               . #x2231)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "CLOCKWISE CONTOUR INTEGRAL")
+    (ucs               . #x2232)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "ANTICLOCKWISE CONTOUR INTEGRAL")
+    (ucs               . #x2233)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "THEREFORE")
+    (ucs               . #x2234)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x68)      ; \e$(@!h\e(B
+    (chinese-gb2312            #x21 #x60)      ; \e$(A!`\e(B
+    (japanese-jisx0208         #x21 #x68)      ; \e$(B!h\e(B
+    (korean-ksc5601            #x21 #x45)      ; \e$(C!E\e(B
+    (chinese-cns11643-1                #x22 #x50)      ; \e$(G"P\e(B
+    ))
+(define-char
+  '((name              . "BECAUSE")
+    (ucs               . #x2235)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x5F)      ; \e$(A!_\e(B
+    (japanese-jisx0208 #x22 #x68)      ; \e$(B"h\e(B
+    (korean-ksc5601    #x21 #x71)      ; \e$(C!q\e(B
+    (chinese-cns11643-1 #x22 #x4F)     ; \e$(G"O\e(B
+    ))
+(define-char
+  '((name              . "RATIO")
+    (ucs               . #x2236)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x43)      ; \e$(A!C\e(B
+    ))
+(define-char
+  '((name              . "PROPORTION")
+    (ucs               . #x2237)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x4B)      ; \e$(A!K\e(B
+    ))
+(define-char
+  '((name              . "DOT MINUS")
+    (ucs               . #x2238)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EXCESS")
+    (ucs               . #x2239)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "GEOMETRIC PROPORTION")
+    (ucs               . #x223A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HOMOTHETIC")
+    (ucs               . #x223B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "TILDE OPERATOR")
+    (ucs               . #x223C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (korean-ksc5601    #x21 #x2D)      ; \e$(C!-\e(B
+    ))
+(define-char
+  '((name              . "REVERSED TILDE")
+    (ucs               . #x223D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (iso-10646-comment . "lazy S")
+    (chinese-gb2312    #x21 #x57)      ; \e$(A!W\e(B
+    (japanese-jisx0208 #x22 #x66)      ; \e$(B"f\e(B
+    (korean-ksc5601    #x21 #x6F)      ; \e$(C!o\e(B
+    ))
+(define-char
+  '((name              . "INVERTED LAZY S")
+    (ucs               . #x223E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SINE WAVE")
+    (ucs               . #x223F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "WREATH PRODUCT")
+    (ucs               . #x2240)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "NOT TILDE")
+    (ucs               . #x2241)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x223C #x0338)
+    ))
+(define-char
+  '((name              . "MINUS TILDE")
+    (ucs               . #x2242)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "ASYMPTOTICALLY EQUAL TO")
+    (ucs               . #x2243)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "NOT ASYMPTOTICALLY EQUAL TO")
+    (ucs               . #x2244)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2243 #x0338)
+    ))
+(define-char
+  '((name              . "APPROXIMATELY EQUAL TO")
+    (ucs               . #x2245)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "APPROXIMATELY BUT NOT ACTUALLY EQUAL TO")
+    (ucs               . #x2246)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO")
+    (ucs               . #x2247)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2245 #x0338)
+    ))
+(define-char
+  '((name              . "ALMOST EQUAL TO")
+    (ucs               . #x2248)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x56)      ; \e$(A!V\e(B
+    ))
+(define-char
+  '((name              . "NOT ALMOST EQUAL TO")
+    (ucs               . #x2249)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2248 #x0338)
+    ))
+(define-char
+  '((name              . "ALMOST EQUAL OR EQUAL TO")
+    (ucs               . #x224A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "TRIPLE TILDE")
+    (ucs               . #x224B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "ALL EQUAL TO")
+    (ucs               . #x224C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x55)      ; \e$(A!U\e(B
+    ))
+(define-char
+  '((name              . "EQUIVALENT TO")
+    (ucs               . #x224D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEOMETRICALLY EQUIVALENT TO")
+    (ucs               . #x224E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DIFFERENCE BETWEEN")
+    (ucs               . #x224F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APPROACHES THE LIMIT")
+    (ucs               . #x2250)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEOMETRICALLY EQUAL TO")
+    (ucs               . #x2251)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APPROXIMATELY EQUAL TO OR THE IMAGE OF")
+    (ucs               . #x2252)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x62)      ; \e$(B"b\e(B
+    (korean-ksc5601    #x21 #x56)      ; \e$(C!V\e(B
+    (chinese-cns11643-1 #x22 #x3D)     ; \e$(G"=\e(B
+    ))
+(define-char
+  '((name              . "IMAGE OF OR APPROXIMATELY EQUAL TO")
+    (ucs               . #x2253)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "COLON EQUALS")
+    (ucs               . #x2254)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "EQUALS COLON")
+    (ucs               . #x2255)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "RING IN EQUAL TO")
+    (ucs               . #x2256)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RING EQUAL TO")
+    (ucs               . #x2257)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CORRESPONDS TO")
+    (ucs               . #x2258)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ESTIMATES")
+    (ucs               . #x2259)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EQUIANGULAR TO")
+    (ucs               . #x225A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "STAR EQUALS")
+    (ucs               . #x225B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DELTA EQUAL TO")
+    (ucs               . #x225C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EQUAL TO BY DEFINITION")
+    (ucs               . #x225D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MEASURED BY")
+    (ucs               . #x225E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "QUESTIONED EQUAL TO")
+    (ucs               . #x225F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "NOT EQUAL TO")
+    (ucs               . #x2260)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x003D #x0338)
+    (japanese-jisx0208-1978    #x21 #x62)      ; \e$(@!b\e(B
+    (chinese-gb2312            #x21 #x59)      ; \e$(A!Y\e(B
+    (japanese-jisx0208         #x21 #x62)      ; \e$(B!b\e(B
+    (korean-ksc5601            #x21 #x41)      ; \e$(C!A\e(B
+    (chinese-cns11643-1                #x22 #x3B)      ; \e$(G";\e(B
+    ))
+(define-char
+  '((name              . "IDENTICAL TO")
+    (ucs               . #x2261)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x54)      ; \e$(A!T\e(B
+    (japanese-jisx0208 #x22 #x61)      ; \e$(B"a\e(B
+    (korean-ksc5601    #x21 #x55)      ; \e$(C!U\e(B
+    (chinese-cns11643-1 #x22 #x3E)     ; \e$(G">\e(B
+    ))
+(define-char
+  '((name              . "NOT IDENTICAL TO")
+    (ucs               . #x2262)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2261 #x0338)
+    ))
+(define-char
+  '((name              . "STRICTLY EQUIVALENT TO")
+    (ucs               . #x2263)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LESS-THAN OR EQUAL TO")
+    (ucs               . #x2264)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x5C)      ; \e$(A!\\e(B
+    (korean-ksc5601    #x21 #x42)      ; \e$(C!B\e(B
+    ))
+(define-char
+  '((name              . "GREATER-THAN OR EQUAL TO")
+    (ucs               . #x2265)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x5D)      ; \e$(A!]\e(B
+    (korean-ksc5601    #x21 #x43)      ; \e$(C!C\e(B
+    ))
+(define-char
+  '((name              . "LESS-THAN OVER EQUAL TO")
+    (ucs               . #x2266)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x65)      ; \e$(@!e\e(B
+    (japanese-jisx0208         #x21 #x65)      ; \e$(B!e\e(B
+    (chinese-cns11643-1                #x22 #x39)      ; \e$(G"9\e(B
+    ))
+(define-char
+  '((name              . "GREATER-THAN OVER EQUAL TO")
+    (ucs               . #x2267)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x66)      ; \e$(@!f\e(B
+    (japanese-jisx0208         #x21 #x66)      ; \e$(B!f\e(B
+    (chinese-cns11643-1                #x22 #x3A)      ; \e$(G":\e(B
+    ))
+(define-char
+  '((name              . "LESS-THAN BUT NOT EQUAL TO")
+    (ucs               . #x2268)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "GREATER-THAN BUT NOT EQUAL TO")
+    (ucs               . #x2269)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "MUCH LESS-THAN")
+    (ucs               . #x226A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x63)      ; \e$(B"c\e(B
+    (korean-ksc5601    #x21 #x6C)      ; \e$(C!l\e(B
+    ))
+(define-char
+  '((name              . "MUCH GREATER-THAN")
+    (ucs               . #x226B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x64)      ; \e$(B"d\e(B
+    (korean-ksc5601    #x21 #x6D)      ; \e$(C!m\e(B
+    ))
+(define-char
+  '((name              . "BETWEEN")
+    (ucs               . #x226C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NOT EQUIVALENT TO")
+    (ucs               . #x226D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   #x224D #x0338)
+    ))
+(define-char
+  '((name              . "NOT LESS-THAN")
+    (ucs               . #x226E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x003C #x0338)
+    (chinese-gb2312    #x21 #x5A)      ; \e$(A!Z\e(B
+    ))
+(define-char
+  '((name              . "NOT GREATER-THAN")
+    (ucs               . #x226F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x003E #x0338)
+    (chinese-gb2312    #x21 #x5B)      ; \e$(A![\e(B
+    ))
+(define-char
+  '((name              . "NEITHER LESS-THAN NOR EQUAL TO")
+    (ucs               . #x2270)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2264 #x0338)
+    ))
+(define-char
+  '((name              . "NEITHER GREATER-THAN NOR EQUAL TO")
+    (ucs               . #x2271)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2265 #x0338)
+    ))
+(define-char
+  '((name              . "LESS-THAN OR EQUIVALENT TO")
+    (ucs               . #x2272)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "GREATER-THAN OR EQUIVALENT TO")
+    (ucs               . #x2273)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "NEITHER LESS-THAN NOR EQUIVALENT TO")
+    (ucs               . #x2274)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2272 #x0338)
+    ))
+(define-char
+  '((name              . "NEITHER GREATER-THAN NOR EQUIVALENT TO")
+    (ucs               . #x2275)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2273 #x0338)
+    ))
+(define-char
+  '((name              . "LESS-THAN OR GREATER-THAN")
+    (ucs               . #x2276)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "GREATER-THAN OR LESS-THAN")
+    (ucs               . #x2277)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "NEITHER LESS-THAN NOR GREATER-THAN")
+    (ucs               . #x2278)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2276 #x0338)
+    ))
+(define-char
+  '((name              . "NEITHER GREATER-THAN NOR LESS-THAN")
+    (ucs               . #x2279)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2277 #x0338)
+    ))
+(define-char
+  '((name              . "PRECEDES")
+    (ucs               . #x227A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SUCCEEDS")
+    (ucs               . #x227B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "PRECEDES OR EQUAL TO")
+    (ucs               . #x227C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SUCCEEDS OR EQUAL TO")
+    (ucs               . #x227D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "PRECEDES OR EQUIVALENT TO")
+    (ucs               . #x227E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SUCCEEDS OR EQUIVALENT TO")
+    (ucs               . #x227F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "DOES NOT PRECEDE")
+    (ucs               . #x2280)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x227A #x0338)
+    ))
+(define-char
+  '((name              . "DOES NOT SUCCEED")
+    (ucs               . #x2281)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x227B #x0338)
+    ))
+(define-char
+  '((name              . "SUBSET OF")
+    (ucs               . #x2282)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x3E)      ; \e$(B">\e(B
+    (korean-ksc5601    #x21 #x78)      ; \e$(C!x\e(B
+    ))
+(define-char
+  '((name              . "SUPERSET OF")
+    (ucs               . #x2283)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x3F)      ; \e$(B"?\e(B
+    (korean-ksc5601    #x21 #x79)      ; \e$(C!y\e(B
+    ))
+(define-char
+  '((name              . "NOT A SUBSET OF")
+    (ucs               . #x2284)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2282 #x0338)
+    ))
+(define-char
+  '((name              . "NOT A SUPERSET OF")
+    (ucs               . #x2285)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2283 #x0338)
+    ))
+(define-char
+  '((name              . "SUBSET OF OR EQUAL TO")
+    (ucs               . #x2286)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x3C)      ; \e$(B"<\e(B
+    (korean-ksc5601    #x21 #x76)      ; \e$(C!v\e(B
+    ))
+(define-char
+  '((name              . "SUPERSET OF OR EQUAL TO")
+    (ucs               . #x2287)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208 #x22 #x3D)      ; \e$(B"=\e(B
+    (korean-ksc5601    #x21 #x77)      ; \e$(C!w\e(B
+    ))
+(define-char
+  '((name              . "NEITHER A SUBSET OF NOR EQUAL TO")
+    (ucs               . #x2288)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2286 #x0338)
+    ))
+(define-char
+  '((name              . "NEITHER A SUPERSET OF NOR EQUAL TO")
+    (ucs               . #x2289)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2287 #x0338)
+    ))
+(define-char
+  '((name              . "SUBSET OF WITH NOT EQUAL TO")
+    (ucs               . #x228A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SUPERSET OF WITH NOT EQUAL TO")
+    (ucs               . #x228B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "MULTISET")
+    (ucs               . #x228C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "MULTISET MULTIPLICATION")
+    (ucs               . #x228D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MULTISET UNION")
+    (ucs               . #x228E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARE IMAGE OF")
+    (ucs               . #x228F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SQUARE ORIGINAL OF")
+    (ucs               . #x2290)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SQUARE IMAGE OF OR EQUAL TO")
+    (ucs               . #x2291)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SQUARE ORIGINAL OF OR EQUAL TO")
+    (ucs               . #x2292)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SQUARE CAP")
+    (ucs               . #x2293)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARE CUP")
+    (ucs               . #x2294)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED PLUS")
+    (ucs               . #x2295)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x22 #x53)     ; \e$(G"S\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED MINUS")
+    (ucs               . #x2296)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED TIMES")
+    (ucs               . #x2297)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED DIVISION SLASH")
+    (ucs               . #x2298)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "CIRCLED DOT OPERATOR")
+    (ucs               . #x2299)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x51)      ; \e$(A!Q\e(B
+    (korean-ksc5601    #x22 #x41)      ; \e$(C"A\e(B
+    (chinese-cns11643-1 #x22 #x54)     ; \e$(G"T\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED RING OPERATOR")
+    (ucs               . #x229A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED ASTERISK OPERATOR")
+    (ucs               . #x229B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED EQUALS")
+    (ucs               . #x229C)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED DASH")
+    (ucs               . #x229D)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARED PLUS")
+    (ucs               . #x229E)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARED MINUS")
+    (ucs               . #x229F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARED TIMES")
+    (ucs               . #x22A0)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARED DOT OPERATOR")
+    (ucs               . #x22A1)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHT TACK")
+    (ucs               . #x22A2)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "LEFT TACK")
+    (ucs               . #x22A3)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "DOWN TACK")
+    (ucs               . #x22A4)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UP TACK")
+    (ucs               . #x22A5)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x4D)      ; \e$(A!M\e(B
+    (japanese-jisx0208 #x22 #x5D)      ; \e$(B"]\e(B
+    (korean-ksc5601    #x21 #x51)      ; \e$(C!Q\e(B
+    (chinese-cns11643-1 #x22 #x47)     ; \e$(G"G\e(B
+    ))
+(define-char
+  '((name              . "ASSERTION")
+    (ucs               . #x22A6)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "MODELS")
+    (ucs               . #x22A7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "TRUE")
+    (ucs               . #x22A8)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "FORCES")
+    (ucs               . #x22A9)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "TRIPLE VERTICAL BAR RIGHT TURNSTILE")
+    (ucs               . #x22AA)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE")
+    (ucs               . #x22AB)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "DOES NOT PROVE")
+    (ucs               . #x22AC)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x22A2 #x0338)
+    ))
+(define-char
+  '((name              . "NOT TRUE")
+    (ucs               . #x22AD)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x22A8 #x0338)
+    ))
+(define-char
+  '((name              . "DOES NOT FORCE")
+    (ucs               . #x22AE)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x22A9 #x0338)
+    ))
+(define-char
+  '((name . "NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE")
+    (ucs               . #x22AF)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x22AB #x0338)
+    ))
+(define-char
+  '((name              . "PRECEDES UNDER RELATION")
+    (ucs               . #x22B0)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SUCCEEDS UNDER RELATION")
+    (ucs               . #x22B1)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "NORMAL SUBGROUP OF")
+    (ucs               . #x22B2)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "CONTAINS AS NORMAL SUBGROUP")
+    (ucs               . #x22B3)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "NORMAL SUBGROUP OF OR EQUAL TO")
+    (ucs               . #x22B4)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "CONTAINS AS NORMAL SUBGROUP OR EQUAL TO")
+    (ucs               . #x22B5)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "ORIGINAL OF")
+    (ucs               . #x22B6)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "IMAGE OF")
+    (ucs               . #x22B7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "MULTIMAP")
+    (ucs               . #x22B8)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "HERMITIAN CONJUGATE MATRIX")
+    (ucs               . #x22B9)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "INTERCALATE")
+    (ucs               . #x22BA)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "XOR")
+    (ucs               . #x22BB)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NAND")
+    (ucs               . #x22BC)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NOR")
+    (ucs               . #x22BD)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHT ANGLE WITH ARC")
+    (ucs               . #x22BE)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "RIGHT TRIANGLE")
+    (ucs               . #x22BF)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-cns11643-1 #x22 #x4A)     ; \e$(G"J\e(B
+    ))
+(define-char
+  '((name              . "N-ARY LOGICAL AND")
+    (ucs               . #x22C0)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "N-ARY LOGICAL OR")
+    (ucs               . #x22C1)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "N-ARY INTERSECTION")
+    (ucs               . #x22C2)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "N-ARY UNION")
+    (ucs               . #x22C3)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DIAMOND OPERATOR")
+    (ucs               . #x22C4)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOT OPERATOR")
+    (ucs               . #x22C5)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "STAR OPERATOR")
+    (ucs               . #x22C6)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DIVISION TIMES")
+    (ucs               . #x22C7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOWTIE")
+    (ucs               . #x22C8)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT NORMAL FACTOR SEMIDIRECT PRODUCT")
+    (ucs               . #x22C9)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT")
+    (ucs               . #x22CA)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "LEFT SEMIDIRECT PRODUCT")
+    (ucs               . #x22CB)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "RIGHT SEMIDIRECT PRODUCT")
+    (ucs               . #x22CC)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "REVERSED TILDE EQUALS")
+    (ucs               . #x22CD)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "CURLY LOGICAL OR")
+    (ucs               . #x22CE)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CURLY LOGICAL AND")
+    (ucs               . #x22CF)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOUBLE SUBSET")
+    (ucs               . #x22D0)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "DOUBLE SUPERSET")
+    (ucs               . #x22D1)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "DOUBLE INTERSECTION")
+    (ucs               . #x22D2)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOUBLE UNION")
+    (ucs               . #x22D3)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PITCHFORK")
+    (ucs               . #x22D4)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EQUAL AND PARALLEL TO")
+    (ucs               . #x22D5)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LESS-THAN WITH DOT")
+    (ucs               . #x22D6)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "GREATER-THAN WITH DOT")
+    (ucs               . #x22D7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "VERY MUCH LESS-THAN")
+    (ucs               . #x22D8)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "VERY MUCH GREATER-THAN")
+    (ucs               . #x22D9)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "LESS-THAN EQUAL TO OR GREATER-THAN")
+    (ucs               . #x22DA)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "GREATER-THAN EQUAL TO OR LESS-THAN")
+    (ucs               . #x22DB)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "EQUAL TO OR LESS-THAN")
+    (ucs               . #x22DC)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "EQUAL TO OR GREATER-THAN")
+    (ucs               . #x22DD)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "EQUAL TO OR PRECEDES")
+    (ucs               . #x22DE)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "EQUAL TO OR SUCCEEDS")
+    (ucs               . #x22DF)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "DOES NOT PRECEDE OR EQUAL")
+    (ucs               . #x22E0)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x227C #x0338)
+    ))
+(define-char
+  '((name              . "DOES NOT SUCCEED OR EQUAL")
+    (ucs               . #x22E1)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x227D #x0338)
+    ))
+(define-char
+  '((name              . "NOT SQUARE IMAGE OF OR EQUAL TO")
+    (ucs               . #x22E2)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2291 #x0338)
+    ))
+(define-char
+  '((name              . "NOT SQUARE ORIGINAL OF OR EQUAL TO")
+    (ucs               . #x22E3)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x2292 #x0338)
+    ))
+(define-char
+  '((name              . "SQUARE IMAGE OF OR NOT EQUAL TO")
+    (ucs               . #x22E4)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SQUARE ORIGINAL OF OR NOT EQUAL TO")
+    (ucs               . #x22E5)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "LESS-THAN BUT NOT EQUIVALENT TO")
+    (ucs               . #x22E6)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "GREATER-THAN BUT NOT EQUIVALENT TO")
+    (ucs               . #x22E7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "PRECEDES BUT NOT EQUIVALENT TO")
+    (ucs               . #x22E8)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "SUCCEEDS BUT NOT EQUIVALENT TO")
+    (ucs               . #x22E9)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "NOT NORMAL SUBGROUP OF")
+    (ucs               . #x22EA)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x22B2 #x0338)
+    ))
+(define-char
+  '((name              . "DOES NOT CONTAIN AS NORMAL SUBGROUP")
+    (ucs               . #x22EB)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x22B3 #x0338)
+    ))
+(define-char
+  '((name              . "NOT NORMAL SUBGROUP OF OR EQUAL TO")
+    (ucs               . #x22EC)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x22B4 #x0338)
+    ))
+(define-char
+  '((name              . "DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL")
+    (ucs               . #x22ED)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x22B5 #x0338)
+    ))
+(define-char
+  '((name              . "VERTICAL ELLIPSIS")
+    (ucs               . #x22EE)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MIDLINE HORIZONTAL ELLIPSIS")
+    (ucs               . #x22EF)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UP RIGHT DIAGONAL ELLIPSIS")
+    (ucs               . #x22F0)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "DOWN RIGHT DIAGONAL ELLIPSIS")
+    (ucs               . #x22F1)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
diff --git a/lisp/utf-2000/u02300-Miscellaneous-Technical.el b/lisp/utf-2000/u02300-Miscellaneous-Technical.el
new file mode 100644 (file)
index 0000000..98b3699
--- /dev/null
@@ -0,0 +1,1091 @@
+(define-char
+  '((name              . "DIAMETER SIGN")
+    (ucs               . #x2300)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ELECTRIC ARROW")
+    (ucs               . #x2301)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HOUSE")
+    (ucs               . #x2302)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UP ARROWHEAD")
+    (ucs               . #x2303)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DOWN ARROWHEAD")
+    (ucs               . #x2304)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PROJECTIVE")
+    (ucs               . #x2305)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PERSPECTIVE")
+    (ucs               . #x2306)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WAVY LINE")
+    (ucs               . #x2307)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT CEILING")
+    (ucs               . #x2308)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "RIGHT CEILING")
+    (ucs               . #x2309)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "LEFT FLOOR")
+    (ucs               . #x230A)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "RIGHT FLOOR")
+    (ucs               . #x230B)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "BOTTOM RIGHT CROP")
+    (ucs               . #x230C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOTTOM LEFT CROP")
+    (ucs               . #x230D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TOP RIGHT CROP")
+    (ucs               . #x230E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TOP LEFT CROP")
+    (ucs               . #x230F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "REVERSED NOT SIGN")
+    (ucs               . #x2310)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARE LOZENGE")
+    (ucs               . #x2311)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARC")
+    (ucs               . #x2312)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x21 #x50)      ; \e$(A!P\e(B
+    (japanese-jisx0208 #x22 #x5E)      ; \e$(B"^\e(B
+    (korean-ksc5601    #x21 #x52)      ; \e$(C!R\e(B
+    ))
+(define-char
+  '((name              . "SEGMENT")
+    (ucs               . #x2313)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SECTOR")
+    (ucs               . #x2314)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELEPHONE RECORDER")
+    (ucs               . #x2315)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "POSITION INDICATOR")
+    (ucs               . #x2316)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "VIEWDATA SQUARE")
+    (ucs               . #x2317)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PLACE OF INTEREST SIGN")
+    (ucs               . #x2318)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TURNED NOT SIGN")
+    (ucs               . #x2319)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WATCH")
+    (ucs               . #x231A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HOURGLASS")
+    (ucs               . #x231B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TOP LEFT CORNER")
+    (ucs               . #x231C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TOP RIGHT CORNER")
+    (ucs               . #x231D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOTTOM LEFT CORNER")
+    (ucs               . #x231E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOTTOM RIGHT CORNER")
+    (ucs               . #x231F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TOP HALF INTEGRAL")
+    (ucs               . #x2320)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "BOTTOM HALF INTEGRAL")
+    (ucs               . #x2321)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "FROWN")
+    (ucs               . #x2322)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SMILE")
+    (ucs               . #x2323)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS")
+    (ucs               . #x2324)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPTION KEY")
+    (ucs               . #x2325)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ERASE TO THE RIGHT")
+    (ucs               . #x2326)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "X IN A RECTANGLE BOX")
+    (ucs               . #x2327)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KEYBOARD")
+    (ucs               . #x2328)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT-POINTING ANGLE BRACKET")
+    (ucs               . #x2329)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x3008)
+    ))
+(define-char
+  '((name              . "RIGHT-POINTING ANGLE BRACKET")
+    (ucs               . #x232A)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (->decomposition   #x3009)
+    ))
+(define-char
+  '((name              . "ERASE TO THE LEFT")
+    (ucs               . #x232B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BENZENE RING")
+    (ucs               . #x232C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CYLINDRICITY")
+    (ucs               . #x232D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ALL AROUND-PROFILE")
+    (ucs               . #x232E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYMMETRY")
+    (ucs               . #x232F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TOTAL RUNOUT")
+    (ucs               . #x2330)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DIMENSION ORIGIN")
+    (ucs               . #x2331)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CONICAL TAPER")
+    (ucs               . #x2332)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SLOPE")
+    (ucs               . #x2333)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COUNTERBORE")
+    (ucs               . #x2334)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COUNTERSINK")
+    (ucs               . #x2335)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL I-BEAM")
+    (ucs               . #x2336)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL SQUISH QUAD")
+    (ucs               . #x2337)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD EQUAL")
+    (ucs               . #x2338)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD DIVIDE")
+    (ucs               . #x2339)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD DIAMOND")
+    (ucs               . #x233A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD JOT")
+    (ucs               . #x233B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD CIRCLE")
+    (ucs               . #x233C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL CIRCLE STILE")
+    (ucs               . #x233D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL CIRCLE JOT")
+    (ucs               . #x233E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL SLASH BAR")
+    (ucs               . #x233F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL BACKSLASH BAR")
+    (ucs               . #x2340)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD SLASH")
+    (ucs               . #x2341)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD BACKSLASH")
+    (ucs               . #x2342)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD LESS-THAN")
+    (ucs               . #x2343)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD GREATER-THAN")
+    (ucs               . #x2344)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL LEFTWARDS VANE")
+    (ucs               . #x2345)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL RIGHTWARDS VANE")
+    (ucs               . #x2346)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW")
+    (ucs               . #x2347)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW")
+    (ucs               . #x2348)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH")
+    (ucs               . #x2349)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR")
+    (ucs               . #x234A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DELTA STILE")
+    (ucs               . #x234B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD DOWN CARET")
+    (ucs               . #x234C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD DELTA")
+    (ucs               . #x234D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DOWN TACK JOT")
+    (ucs               . #x234E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL UPWARDS VANE")
+    (ucs               . #x234F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW")
+    (ucs               . #x2350)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL UP TACK OVERBAR")
+    (ucs               . #x2351)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DEL STILE")
+    (ucs               . #x2352)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD UP CARET")
+    (ucs               . #x2353)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD DEL")
+    (ucs               . #x2354)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL UP TACK JOT")
+    (ucs               . #x2355)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DOWNWARDS VANE")
+    (ucs               . #x2356)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW")
+    (ucs               . #x2357)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUOTE UNDERBAR")
+    (ucs               . #x2358)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DELTA UNDERBAR")
+    (ucs               . #x2359)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR")
+    (ucs               . #x235A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL JOT UNDERBAR")
+    (ucs               . #x235B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR")
+    (ucs               . #x235C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL UP SHOE JOT")
+    (ucs               . #x235D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUOTE QUAD")
+    (ucs               . #x235E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL CIRCLE STAR")
+    (ucs               . #x235F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD COLON")
+    (ucs               . #x2360)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL UP TACK DIAERESIS")
+    (ucs               . #x2361)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "*")
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DEL DIAERESIS")
+    (ucs               . #x2362)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL STAR DIAERESIS")
+    (ucs               . #x2363)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL JOT DIAERESIS")
+    (ucs               . #x2364)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS")
+    (ucs               . #x2365)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DOWN SHOE STILE")
+    (ucs               . #x2366)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL LEFT SHOE STILE")
+    (ucs               . #x2367)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL TILDE DIAERESIS")
+    (ucs               . #x2368)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS")
+    (ucs               . #x2369)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL COMMA BAR")
+    (ucs               . #x236A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DEL TILDE")
+    (ucs               . #x236B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL ZILDE")
+    (ucs               . #x236C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL STILE TILDE")
+    (ucs               . #x236D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR")
+    (ucs               . #x236E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD NOT EQUAL")
+    (ucs               . #x236F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD QUESTION")
+    (ucs               . #x2370)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL DOWN CARET TILDE")
+    (ucs               . #x2371)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL UP CARET TILDE")
+    (ucs               . #x2372)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL IOTA")
+    (ucs               . #x2373)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL RHO")
+    (ucs               . #x2374)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL OMEGA")
+    (ucs               . #x2375)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL ALPHA UNDERBAR")
+    (ucs               . #x2376)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL EPSILON UNDERBAR")
+    (ucs               . #x2377)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL IOTA UNDERBAR")
+    (ucs               . #x2378)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL OMEGA UNDERBAR")
+    (ucs               . #x2379)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL ALPHA")
+    (ucs               . #x237A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NOT CHECK MARK")
+    (ucs               . #x237B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SHOULDERED OPEN BOX")
+    (ucs               . #x237D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BELL SYMBOL")
+    (ucs               . #x237E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "VERTICAL LINE WITH MIDDLE DOT")
+    (ucs               . #x237F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "INSERTION SYMBOL")
+    (ucs               . #x2380)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CONTINUOUS UNDERLINE SYMBOL")
+    (ucs               . #x2381)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DISCONTINUOUS UNDERLINE SYMBOL")
+    (ucs               . #x2382)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EMPHASIS SYMBOL")
+    (ucs               . #x2383)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMPOSITION SYMBOL")
+    (ucs               . #x2384)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SQUARE WITH CENTRE VERTICAL LINE")
+    (ucs               . #x2385)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ENTER SYMBOL")
+    (ucs               . #x2386)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ALTERNATIVE KEY SYMBOL")
+    (ucs               . #x2387)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HELM SYMBOL")
+    (ucs               . #x2388)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED HORIZONTAL BAR WITH NOTCH")
+    (ucs               . #x2389)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "pause")
+    ))
+(define-char
+  '((name              . "CIRCLED TRIANGLE DOWN")
+    (ucs               . #x238A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "break")
+    ))
+(define-char
+  '((name              . "BROKEN CIRCLE WITH NORTHWEST ARROW")
+    (ucs               . #x238B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (iso-10646-comment . "escape")
+    ))
+(define-char
+  '((name              . "UNDO SYMBOL")
+    (ucs               . #x238C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MONOSTABLE SYMBOL")
+    (ucs               . #x238D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HYSTERESIS SYMBOL")
+    (ucs               . #x238E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL")
+    (ucs               . #x238F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL")
+    (ucs               . #x2390)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PASSIVE-PULL-DOWN-OUTPUT SYMBOL")
+    (ucs               . #x2391)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PASSIVE-PULL-UP-OUTPUT SYMBOL")
+    (ucs               . #x2392)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DIRECT CURRENT SYMBOL FORM TWO")
+    (ucs               . #x2393)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SOFTWARE-FUNCTION SYMBOL")
+    (ucs               . #x2394)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "APL FUNCTIONAL SYMBOL QUAD")
+    (ucs               . #x2395)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DECIMAL SEPARATOR KEY SYMBOL")
+    (ucs               . #x2396)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PREVIOUS PAGE")
+    (ucs               . #x2397)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NEXT PAGE")
+    (ucs               . #x2398)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PRINT SCREEN SYMBOL")
+    (ucs               . #x2399)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CLEAR SCREEN SYMBOL")
+    (ucs               . #x239A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02400-Control-Pictures.el b/lisp/utf-2000/u02400-Control-Pictures.el
new file mode 100644 (file)
index 0000000..307392e
--- /dev/null
@@ -0,0 +1,306 @@
+(define-char
+  '((name              . "SYMBOL FOR NULL")
+    (ucs               . #x2400)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x21)     ; \e$(GB!\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR START OF HEADING")
+    (ucs               . #x2401)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x22)     ; \e$(GB"\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR START OF TEXT")
+    (ucs               . #x2402)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x23)     ; \e$(GB#\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR END OF TEXT")
+    (ucs               . #x2403)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x24)     ; \e$(GB$\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR END OF TRANSMISSION")
+    (ucs               . #x2404)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x25)     ; \e$(GB%\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR ENQUIRY")
+    (ucs               . #x2405)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x26)     ; \e$(GB&\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR ACKNOWLEDGE")
+    (ucs               . #x2406)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x27)     ; \e$(GB'\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR BELL")
+    (ucs               . #x2407)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x28)     ; \e$(GB(\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR BACKSPACE")
+    (ucs               . #x2408)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x29)     ; \e$(GB)\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR HORIZONTAL TABULATION")
+    (ucs               . #x2409)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x2A)     ; \e$(GB*\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR LINE FEED")
+    (ucs               . #x240A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x2B)     ; \e$(GB+\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR VERTICAL TABULATION")
+    (ucs               . #x240B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x2C)     ; \e$(GB,\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR FORM FEED")
+    (ucs               . #x240C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x2D)     ; \e$(GB-\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR CARRIAGE RETURN")
+    (ucs               . #x240D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x2E)     ; \e$(GB.\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR SHIFT OUT")
+    (ucs               . #x240E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x2F)     ; \e$(GB/\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR SHIFT IN")
+    (ucs               . #x240F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x30)     ; \e$(GB0\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR DATA LINK ESCAPE")
+    (ucs               . #x2410)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x31)     ; \e$(GB1\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR DEVICE CONTROL ONE")
+    (ucs               . #x2411)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x32)     ; \e$(GB2\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR DEVICE CONTROL TWO")
+    (ucs               . #x2412)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x33)     ; \e$(GB3\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR DEVICE CONTROL THREE")
+    (ucs               . #x2413)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x34)     ; \e$(GB4\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR DEVICE CONTROL FOUR")
+    (ucs               . #x2414)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x35)     ; \e$(GB5\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR NEGATIVE ACKNOWLEDGE")
+    (ucs               . #x2415)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x36)     ; \e$(GB6\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR SYNCHRONOUS IDLE")
+    (ucs               . #x2416)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x37)     ; \e$(GB7\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR END OF TRANSMISSION BLOCK")
+    (ucs               . #x2417)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x38)     ; \e$(GB8\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR CANCEL")
+    (ucs               . #x2418)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x39)     ; \e$(GB9\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR END OF MEDIUM")
+    (ucs               . #x2419)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x3A)     ; \e$(GB:\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR SUBSTITUTE")
+    (ucs               . #x241A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x3B)     ; \e$(GB;\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR ESCAPE")
+    (ucs               . #x241B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x3C)     ; \e$(GB<\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR FILE SEPARATOR")
+    (ucs               . #x241C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x3D)     ; \e$(GB=\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR GROUP SEPARATOR")
+    (ucs               . #x241D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x3E)     ; \e$(GB>\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR RECORD SEPARATOR")
+    (ucs               . #x241E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x3F)     ; \e$(GB?\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR UNIT SEPARATOR")
+    (ucs               . #x241F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x40)     ; \e$(GB@\e(B
+    ))
+(define-char
+  '((name              . "SYMBOL FOR SPACE")
+    (ucs               . #x2420)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYMBOL FOR DELETE")
+    (ucs               . #x2421)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x42 #x41)     ; \e$(GBA\e(B
+    ))
+(define-char
+  '((name              . "BLANK SYMBOL")
+    (ucs               . #x2422)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPEN BOX")
+    (ucs               . #x2423)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYMBOL FOR NEWLINE")
+    (ucs               . #x2424)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYMBOL FOR DELETE FORM TWO")
+    (ucs               . #x2425)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SYMBOL FOR SUBSTITUTE FORM TWO")
+    (ucs               . #x2426)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02440-OCR.el b/lisp/utf-2000/u02440-OCR.el
new file mode 100644 (file)
index 0000000..d41efad
--- /dev/null
@@ -0,0 +1,77 @@
+(define-char
+  '((name              . "OCR HOOK")
+    (ucs               . #x2440)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR CHAIR")
+    (ucs               . #x2441)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR FORK")
+    (ucs               . #x2442)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR INVERTED FORK")
+    (ucs               . #x2443)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR BELT BUCKLE")
+    (ucs               . #x2444)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR BOW TIE")
+    (ucs               . #x2445)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR BRANCH BANK IDENTIFICATION")
+    (ucs               . #x2446)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR AMOUNT OF CHECK")
+    (ucs               . #x2447)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR DASH")
+    (ucs               . #x2448)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR CUSTOMER ACCOUNT NUMBER")
+    (ucs               . #x2449)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OCR DOUBLE BACKSLASH")
+    (ucs               . #x244A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02460-Enclosed-Alphanumerics.el b/lisp/utf-2000/u02460-Enclosed-Alphanumerics.el
new file mode 100644 (file)
index 0000000..9f82cde
--- /dev/null
@@ -0,0 +1,1431 @@
+(define-char
+  '((name              . "CIRCLED DIGIT ONE")
+    (ucs               . #x2460)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (->decomposition   circle #x0031)
+    (chinese-gb2312    #x22 #x59)      ; \e$(A"Y\e(B
+    (korean-ksc5601    #x28 #x67)      ; \e$(C(g\e(B
+    (chinese-cns11643-1 #x26 #x21)     ; \e$(G&!\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED DIGIT TWO")
+    (ucs               . #x2461)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (->decomposition   circle #x0032)
+    (chinese-gb2312    #x22 #x5A)      ; \e$(A"Z\e(B
+    (korean-ksc5601    #x28 #x68)      ; \e$(C(h\e(B
+    (chinese-cns11643-1 #x26 #x22)     ; \e$(G&"\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED DIGIT THREE")
+    (ucs               . #x2462)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (->decomposition   circle #x0033)
+    (chinese-gb2312    #x22 #x5B)      ; \e$(A"[\e(B
+    (korean-ksc5601    #x28 #x69)      ; \e$(C(i\e(B
+    (chinese-cns11643-1 #x26 #x23)     ; \e$(G&#\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED DIGIT FOUR")
+    (ucs               . #x2463)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (->decomposition   circle #x0034)
+    (chinese-gb2312    #x22 #x5C)      ; \e$(A"\\e(B
+    (korean-ksc5601    #x28 #x6A)      ; \e$(C(j\e(B
+    (chinese-cns11643-1 #x26 #x24)     ; \e$(G&$\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED DIGIT FIVE")
+    (ucs               . #x2464)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (->decomposition   circle #x0035)
+    (chinese-gb2312    #x22 #x5D)      ; \e$(A"]\e(B
+    (korean-ksc5601    #x28 #x6B)      ; \e$(C(k\e(B
+    (chinese-cns11643-1 #x26 #x25)     ; \e$(G&%\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED DIGIT SIX")
+    (ucs               . #x2465)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (->decomposition   circle #x0036)
+    (chinese-gb2312    #x22 #x5E)      ; \e$(A"^\e(B
+    (korean-ksc5601    #x28 #x6C)      ; \e$(C(l\e(B
+    (chinese-cns11643-1 #x26 #x26)     ; \e$(G&&\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED DIGIT SEVEN")
+    (ucs               . #x2466)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (->decomposition   circle #x0037)
+    (chinese-gb2312    #x22 #x5F)      ; \e$(A"_\e(B
+    (korean-ksc5601    #x28 #x6D)      ; \e$(C(m\e(B
+    (chinese-cns11643-1 #x26 #x27)     ; \e$(G&'\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED DIGIT EIGHT")
+    (ucs               . #x2467)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (->decomposition   circle #x0038)
+    (chinese-gb2312    #x22 #x60)      ; \e$(A"`\e(B
+    (korean-ksc5601    #x28 #x6E)      ; \e$(C(n\e(B
+    (chinese-cns11643-1 #x26 #x28)     ; \e$(G&(\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED DIGIT NINE")
+    (ucs               . #x2468)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (->decomposition   circle #x0039)
+    (chinese-gb2312    #x22 #x61)      ; \e$(A"a\e(B
+    (korean-ksc5601    #x28 #x6F)      ; \e$(C(o\e(B
+    (chinese-cns11643-1 #x26 #x29)     ; \e$(G&)\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER TEN")
+    (ucs               . #x2469)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    (->decomposition   circle #x0031 #x0030)
+    (chinese-gb2312    #x22 #x62)      ; \e$(A"b\e(B
+    (korean-ksc5601    #x28 #x70)      ; \e$(C(p\e(B
+    (chinese-cns11643-1 #x26 #x2A)     ; \e$(G&*\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER ELEVEN")
+    (ucs               . #x246A)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 11)
+    (->decomposition   circle #x0031 #x0031)
+    (korean-ksc5601    #x28 #x71)      ; \e$(C(q\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER TWELVE")
+    (ucs               . #x246B)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 12)
+    (->decomposition   circle #x0031 #x0032)
+    (korean-ksc5601    #x28 #x72)      ; \e$(C(r\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER THIRTEEN")
+    (ucs               . #x246C)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 13)
+    (->decomposition   circle #x0031 #x0033)
+    (korean-ksc5601    #x28 #x73)      ; \e$(C(s\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER FOURTEEN")
+    (ucs               . #x246D)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 14)
+    (->decomposition   circle #x0031 #x0034)
+    (korean-ksc5601    #x28 #x74)      ; \e$(C(t\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER FIFTEEN")
+    (ucs               . #x246E)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 15)
+    (->decomposition   circle #x0031 #x0035)
+    (korean-ksc5601    #x28 #x75)      ; \e$(C(u\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER SIXTEEN")
+    (ucs               . #x246F)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 16)
+    (->decomposition   circle #x0031 #x0036)
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER SEVENTEEN")
+    (ucs               . #x2470)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 17)
+    (->decomposition   circle #x0031 #x0037)
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER EIGHTEEN")
+    (ucs               . #x2471)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 18)
+    (->decomposition   circle #x0031 #x0038)
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER NINETEEN")
+    (ucs               . #x2472)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 19)
+    (->decomposition   circle #x0031 #x0039)
+    ))
+(define-char
+  '((name              . "CIRCLED NUMBER TWENTY")
+    (ucs               . #x2473)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 20)
+    (->decomposition   circle #x0032 #x0030)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED DIGIT ONE")
+    (ucs               . #x2474)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (->decomposition   compat #x0028 #x0031 #x0029)
+    (chinese-gb2312    #x22 #x45)      ; \e$(A"E\e(B
+    (korean-ksc5601    #x29 #x67)      ; \e$(C)g\e(B
+    (chinese-cns11643-1 #x26 #x2B)     ; \e$(G&+\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED DIGIT TWO")
+    (ucs               . #x2475)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (->decomposition   compat #x0028 #x0032 #x0029)
+    (chinese-gb2312    #x22 #x46)      ; \e$(A"F\e(B
+    (korean-ksc5601    #x29 #x68)      ; \e$(C)h\e(B
+    (chinese-cns11643-1 #x26 #x2C)     ; \e$(G&,\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED DIGIT THREE")
+    (ucs               . #x2476)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (->decomposition   compat #x0028 #x0033 #x0029)
+    (chinese-gb2312    #x22 #x47)      ; \e$(A"G\e(B
+    (korean-ksc5601    #x29 #x69)      ; \e$(C)i\e(B
+    (chinese-cns11643-1 #x26 #x2D)     ; \e$(G&-\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED DIGIT FOUR")
+    (ucs               . #x2477)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (->decomposition   compat #x0028 #x0034 #x0029)
+    (chinese-gb2312    #x22 #x48)      ; \e$(A"H\e(B
+    (korean-ksc5601    #x29 #x6A)      ; \e$(C)j\e(B
+    (chinese-cns11643-1 #x26 #x2E)     ; \e$(G&.\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED DIGIT FIVE")
+    (ucs               . #x2478)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (->decomposition   compat #x0028 #x0035 #x0029)
+    (chinese-gb2312    #x22 #x49)      ; \e$(A"I\e(B
+    (korean-ksc5601    #x29 #x6B)      ; \e$(C)k\e(B
+    (chinese-cns11643-1 #x26 #x2F)     ; \e$(G&/\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED DIGIT SIX")
+    (ucs               . #x2479)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (->decomposition   compat #x0028 #x0036 #x0029)
+    (chinese-gb2312    #x22 #x4A)      ; \e$(A"J\e(B
+    (korean-ksc5601    #x29 #x6C)      ; \e$(C)l\e(B
+    (chinese-cns11643-1 #x26 #x30)     ; \e$(G&0\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED DIGIT SEVEN")
+    (ucs               . #x247A)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (->decomposition   compat #x0028 #x0037 #x0029)
+    (chinese-gb2312    #x22 #x4B)      ; \e$(A"K\e(B
+    (korean-ksc5601    #x29 #x6D)      ; \e$(C)m\e(B
+    (chinese-cns11643-1 #x26 #x31)     ; \e$(G&1\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED DIGIT EIGHT")
+    (ucs               . #x247B)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (->decomposition   compat #x0028 #x0038 #x0029)
+    (chinese-gb2312    #x22 #x4C)      ; \e$(A"L\e(B
+    (korean-ksc5601    #x29 #x6E)      ; \e$(C)n\e(B
+    (chinese-cns11643-1 #x26 #x32)     ; \e$(G&2\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED DIGIT NINE")
+    (ucs               . #x247C)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (->decomposition   compat #x0028 #x0039 #x0029)
+    (chinese-gb2312    #x22 #x4D)      ; \e$(A"M\e(B
+    (korean-ksc5601    #x29 #x6F)      ; \e$(C)o\e(B
+    (chinese-cns11643-1 #x26 #x33)     ; \e$(G&3\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER TEN")
+    (ucs               . #x247D)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    (->decomposition   compat #x0028 #x0031 #x0030 #x0029)
+    (chinese-gb2312    #x22 #x4E)      ; \e$(A"N\e(B
+    (korean-ksc5601    #x29 #x70)      ; \e$(C)p\e(B
+    (chinese-cns11643-1 #x26 #x34)     ; \e$(G&4\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER ELEVEN")
+    (ucs               . #x247E)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 11)
+    (->decomposition   compat #x0028 #x0031 #x0031 #x0029)
+    (chinese-gb2312    #x22 #x4F)      ; \e$(A"O\e(B
+    (korean-ksc5601    #x29 #x71)      ; \e$(C)q\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER TWELVE")
+    (ucs               . #x247F)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 12)
+    (->decomposition   compat #x0028 #x0031 #x0032 #x0029)
+    (chinese-gb2312    #x22 #x50)      ; \e$(A"P\e(B
+    (korean-ksc5601    #x29 #x72)      ; \e$(C)r\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER THIRTEEN")
+    (ucs               . #x2480)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 13)
+    (->decomposition   compat #x0028 #x0031 #x0033 #x0029)
+    (chinese-gb2312    #x22 #x51)      ; \e$(A"Q\e(B
+    (korean-ksc5601    #x29 #x73)      ; \e$(C)s\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER FOURTEEN")
+    (ucs               . #x2481)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 14)
+    (->decomposition   compat #x0028 #x0031 #x0034 #x0029)
+    (chinese-gb2312    #x22 #x52)      ; \e$(A"R\e(B
+    (korean-ksc5601    #x29 #x74)      ; \e$(C)t\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER FIFTEEN")
+    (ucs               . #x2482)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 15)
+    (->decomposition   compat #x0028 #x0031 #x0035 #x0029)
+    (chinese-gb2312    #x22 #x53)      ; \e$(A"S\e(B
+    (korean-ksc5601    #x29 #x75)      ; \e$(C)u\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER SIXTEEN")
+    (ucs               . #x2483)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 16)
+    (->decomposition   compat #x0028 #x0031 #x0036 #x0029)
+    (chinese-gb2312    #x22 #x54)      ; \e$(A"T\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER SEVENTEEN")
+    (ucs               . #x2484)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 17)
+    (->decomposition   compat #x0028 #x0031 #x0037 #x0029)
+    (chinese-gb2312    #x22 #x55)      ; \e$(A"U\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER EIGHTEEN")
+    (ucs               . #x2485)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 18)
+    (->decomposition   compat #x0028 #x0031 #x0038 #x0029)
+    (chinese-gb2312    #x22 #x56)      ; \e$(A"V\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER NINETEEN")
+    (ucs               . #x2486)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 19)
+    (->decomposition   compat #x0028 #x0031 #x0039 #x0029)
+    (chinese-gb2312    #x22 #x57)      ; \e$(A"W\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED NUMBER TWENTY")
+    (ucs               . #x2487)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 20)
+    (->decomposition   compat #x0028 #x0032 #x0030 #x0029)
+    (chinese-gb2312    #x22 #x58)      ; \e$(A"X\e(B
+    ))
+(define-char
+  '((name              . "DIGIT ONE FULL STOP")
+    (ucs               . #x2488)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    (->decomposition   compat #x0031 #x002E)
+    (chinese-gb2312    #x22 #x31)      ; \e$(A"1\e(B
+    ))
+(define-char
+  '((name              . "DIGIT TWO FULL STOP")
+    (ucs               . #x2489)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    (->decomposition   compat #x0032 #x002E)
+    (chinese-gb2312    #x22 #x32)      ; \e$(A"2\e(B
+    ))
+(define-char
+  '((name              . "DIGIT THREE FULL STOP")
+    (ucs               . #x248A)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    (->decomposition   compat #x0033 #x002E)
+    (chinese-gb2312    #x22 #x33)      ; \e$(A"3\e(B
+    ))
+(define-char
+  '((name              . "DIGIT FOUR FULL STOP")
+    (ucs               . #x248B)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    (->decomposition   compat #x0034 #x002E)
+    (chinese-gb2312    #x22 #x34)      ; \e$(A"4\e(B
+    ))
+(define-char
+  '((name              . "DIGIT FIVE FULL STOP")
+    (ucs               . #x248C)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    (->decomposition   compat #x0035 #x002E)
+    (chinese-gb2312    #x22 #x35)      ; \e$(A"5\e(B
+    ))
+(define-char
+  '((name              . "DIGIT SIX FULL STOP")
+    (ucs               . #x248D)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    (->decomposition   compat #x0036 #x002E)
+    (chinese-gb2312    #x22 #x36)      ; \e$(A"6\e(B
+    ))
+(define-char
+  '((name              . "DIGIT SEVEN FULL STOP")
+    (ucs               . #x248E)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    (->decomposition   compat #x0037 #x002E)
+    (chinese-gb2312    #x22 #x37)      ; \e$(A"7\e(B
+    ))
+(define-char
+  '((name              . "DIGIT EIGHT FULL STOP")
+    (ucs               . #x248F)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    (->decomposition   compat #x0038 #x002E)
+    (chinese-gb2312    #x22 #x38)      ; \e$(A"8\e(B
+    ))
+(define-char
+  '((name              . "DIGIT NINE FULL STOP")
+    (ucs               . #x2490)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    (->decomposition   compat #x0039 #x002E)
+    (chinese-gb2312    #x22 #x39)      ; \e$(A"9\e(B
+    ))
+(define-char
+  '((name              . "NUMBER TEN FULL STOP")
+    (ucs               . #x2491)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    (->decomposition   compat #x0031 #x0030 #x002E)
+    (chinese-gb2312    #x22 #x3A)      ; \e$(A":\e(B
+    ))
+(define-char
+  '((name              . "NUMBER ELEVEN FULL STOP")
+    (ucs               . #x2492)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 11)
+    (->decomposition   compat #x0031 #x0031 #x002E)
+    (chinese-gb2312    #x22 #x3B)      ; \e$(A";\e(B
+    ))
+(define-char
+  '((name              . "NUMBER TWELVE FULL STOP")
+    (ucs               . #x2493)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 12)
+    (->decomposition   compat #x0031 #x0032 #x002E)
+    (chinese-gb2312    #x22 #x3C)      ; \e$(A"<\e(B
+    ))
+(define-char
+  '((name              . "NUMBER THIRTEEN FULL STOP")
+    (ucs               . #x2494)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 13)
+    (->decomposition   compat #x0031 #x0033 #x002E)
+    (chinese-gb2312    #x22 #x3D)      ; \e$(A"=\e(B
+    ))
+(define-char
+  '((name              . "NUMBER FOURTEEN FULL STOP")
+    (ucs               . #x2495)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 14)
+    (->decomposition   compat #x0031 #x0034 #x002E)
+    (chinese-gb2312    #x22 #x3E)      ; \e$(A">\e(B
+    ))
+(define-char
+  '((name              . "NUMBER FIFTEEN FULL STOP")
+    (ucs               . #x2496)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 15)
+    (->decomposition   compat #x0031 #x0035 #x002E)
+    (chinese-gb2312    #x22 #x3F)      ; \e$(A"?\e(B
+    ))
+(define-char
+  '((name              . "NUMBER SIXTEEN FULL STOP")
+    (ucs               . #x2497)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 16)
+    (->decomposition   compat #x0031 #x0036 #x002E)
+    (chinese-gb2312    #x22 #x40)      ; \e$(A"@\e(B
+    ))
+(define-char
+  '((name              . "NUMBER SEVENTEEN FULL STOP")
+    (ucs               . #x2498)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 17)
+    (->decomposition   compat #x0031 #x0037 #x002E)
+    (chinese-gb2312    #x22 #x41)      ; \e$(A"A\e(B
+    ))
+(define-char
+  '((name              . "NUMBER EIGHTEEN FULL STOP")
+    (ucs               . #x2499)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 18)
+    (->decomposition   compat #x0031 #x0038 #x002E)
+    (chinese-gb2312    #x22 #x42)      ; \e$(A"B\e(B
+    ))
+(define-char
+  '((name              . "NUMBER NINETEEN FULL STOP")
+    (ucs               . #x249A)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 19)
+    (->decomposition   compat #x0031 #x0039 #x002E)
+    (chinese-gb2312    #x22 #x43)      ; \e$(A"C\e(B
+    ))
+(define-char
+  '((name              . "NUMBER TWENTY FULL STOP")
+    (ucs               . #x249B)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (numeric-value     . 20)
+    (->decomposition   compat #x0032 #x0030 #x002E)
+    (chinese-gb2312    #x22 #x44)      ; \e$(A"D\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER A")
+    (ucs               . #x249C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0061 #x0029)
+    (korean-ksc5601    #x29 #x4D)      ; \e$(C)M\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER B")
+    (ucs               . #x249D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0062 #x0029)
+    (korean-ksc5601    #x29 #x4E)      ; \e$(C)N\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER C")
+    (ucs               . #x249E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0063 #x0029)
+    (korean-ksc5601    #x29 #x4F)      ; \e$(C)O\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER D")
+    (ucs               . #x249F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0064 #x0029)
+    (korean-ksc5601    #x29 #x50)      ; \e$(C)P\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER E")
+    (ucs               . #x24A0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0065 #x0029)
+    (korean-ksc5601    #x29 #x51)      ; \e$(C)Q\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER F")
+    (ucs               . #x24A1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0066 #x0029)
+    (korean-ksc5601    #x29 #x52)      ; \e$(C)R\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER G")
+    (ucs               . #x24A2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0067 #x0029)
+    (korean-ksc5601    #x29 #x53)      ; \e$(C)S\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER H")
+    (ucs               . #x24A3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0068 #x0029)
+    (korean-ksc5601    #x29 #x54)      ; \e$(C)T\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER I")
+    (ucs               . #x24A4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0069 #x0029)
+    (korean-ksc5601    #x29 #x55)      ; \e$(C)U\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER J")
+    (ucs               . #x24A5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x006A #x0029)
+    (korean-ksc5601    #x29 #x56)      ; \e$(C)V\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER K")
+    (ucs               . #x24A6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x006B #x0029)
+    (korean-ksc5601    #x29 #x57)      ; \e$(C)W\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER L")
+    (ucs               . #x24A7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x006C #x0029)
+    (korean-ksc5601    #x29 #x58)      ; \e$(C)X\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER M")
+    (ucs               . #x24A8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x006D #x0029)
+    (korean-ksc5601    #x29 #x59)      ; \e$(C)Y\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER N")
+    (ucs               . #x24A9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x006E #x0029)
+    (korean-ksc5601    #x29 #x5A)      ; \e$(C)Z\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER O")
+    (ucs               . #x24AA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x006F #x0029)
+    (korean-ksc5601    #x29 #x5B)      ; \e$(C)[\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER P")
+    (ucs               . #x24AB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0070 #x0029)
+    (korean-ksc5601    #x29 #x5C)      ; \e$(C)\\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER Q")
+    (ucs               . #x24AC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0071 #x0029)
+    (korean-ksc5601    #x29 #x5D)      ; \e$(C)]\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER R")
+    (ucs               . #x24AD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0072 #x0029)
+    (korean-ksc5601    #x29 #x5E)      ; \e$(C)^\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER S")
+    (ucs               . #x24AE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0073 #x0029)
+    (korean-ksc5601    #x29 #x5F)      ; \e$(C)_\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER T")
+    (ucs               . #x24AF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0074 #x0029)
+    (korean-ksc5601    #x29 #x60)      ; \e$(C)`\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER U")
+    (ucs               . #x24B0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0075 #x0029)
+    (korean-ksc5601    #x29 #x61)      ; \e$(C)a\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER V")
+    (ucs               . #x24B1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0076 #x0029)
+    (korean-ksc5601    #x29 #x62)      ; \e$(C)b\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER W")
+    (ucs               . #x24B2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0077 #x0029)
+    (korean-ksc5601    #x29 #x63)      ; \e$(C)c\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER X")
+    (ucs               . #x24B3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0078 #x0029)
+    (korean-ksc5601    #x29 #x64)      ; \e$(C)d\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER Y")
+    (ucs               . #x24B4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x0079 #x0029)
+    (korean-ksc5601    #x29 #x65)      ; \e$(C)e\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED LATIN SMALL LETTER Z")
+    (ucs               . #x24B5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x007A #x0029)
+    (korean-ksc5601    #x29 #x66)      ; \e$(C)f\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER A")
+    (ucs               . #x24B6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0041)
+    (->lowercase       #x24D0)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER B")
+    (ucs               . #x24B7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0042)
+    (->lowercase       #x24D1)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER C")
+    (ucs               . #x24B8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0043)
+    (->lowercase       #x24D2)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER D")
+    (ucs               . #x24B9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0044)
+    (->lowercase       #x24D3)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER E")
+    (ucs               . #x24BA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0045)
+    (->lowercase       #x24D4)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER F")
+    (ucs               . #x24BB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0046)
+    (->lowercase       #x24D5)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER G")
+    (ucs               . #x24BC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0047)
+    (->lowercase       #x24D6)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER H")
+    (ucs               . #x24BD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0048)
+    (->lowercase       #x24D7)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER I")
+    (ucs               . #x24BE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0049)
+    (->lowercase       #x24D8)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER J")
+    (ucs               . #x24BF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x004A)
+    (->lowercase       #x24D9)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER K")
+    (ucs               . #x24C0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x004B)
+    (->lowercase       #x24DA)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER L")
+    (ucs               . #x24C1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x004C)
+    (->lowercase       #x24DB)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER M")
+    (ucs               . #x24C2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x004D)
+    (->lowercase       #x24DC)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER N")
+    (ucs               . #x24C3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x004E)
+    (->lowercase       #x24DD)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER O")
+    (ucs               . #x24C4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x004F)
+    (->lowercase       #x24DE)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER P")
+    (ucs               . #x24C5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0050)
+    (->lowercase       #x24DF)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER Q")
+    (ucs               . #x24C6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0051)
+    (->lowercase       #x24E0)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER R")
+    (ucs               . #x24C7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0052)
+    (->lowercase       #x24E1)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER S")
+    (ucs               . #x24C8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0053)
+    (->lowercase       #x24E2)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER T")
+    (ucs               . #x24C9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0054)
+    (->lowercase       #x24E3)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER U")
+    (ucs               . #x24CA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0055)
+    (->lowercase       #x24E4)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER V")
+    (ucs               . #x24CB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0056)
+    (->lowercase       #x24E5)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER W")
+    (ucs               . #x24CC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0057)
+    (->lowercase       #x24E6)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER X")
+    (ucs               . #x24CD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0058)
+    (->lowercase       #x24E7)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER Y")
+    (ucs               . #x24CE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0059)
+    (->lowercase       #x24E8)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN CAPITAL LETTER Z")
+    (ucs               . #x24CF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x005A)
+    (->lowercase       #x24E9)
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER A")
+    (ucs               . #x24D0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0061)
+    (->uppercase       #x24B6)
+    (->titlecase       #x24B6)
+    (korean-ksc5601    #x28 #x4D)      ; \e$(C(M\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER B")
+    (ucs               . #x24D1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0062)
+    (->uppercase       #x24B7)
+    (->titlecase       #x24B7)
+    (korean-ksc5601    #x28 #x4E)      ; \e$(C(N\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER C")
+    (ucs               . #x24D2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0063)
+    (->uppercase       #x24B8)
+    (->titlecase       #x24B8)
+    (korean-ksc5601    #x28 #x4F)      ; \e$(C(O\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER D")
+    (ucs               . #x24D3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0064)
+    (->uppercase       #x24B9)
+    (->titlecase       #x24B9)
+    (korean-ksc5601    #x28 #x50)      ; \e$(C(P\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER E")
+    (ucs               . #x24D4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0065)
+    (->uppercase       #x24BA)
+    (->titlecase       #x24BA)
+    (korean-ksc5601    #x28 #x51)      ; \e$(C(Q\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER F")
+    (ucs               . #x24D5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0066)
+    (->uppercase       #x24BB)
+    (->titlecase       #x24BB)
+    (korean-ksc5601    #x28 #x52)      ; \e$(C(R\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER G")
+    (ucs               . #x24D6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0067)
+    (->uppercase       #x24BC)
+    (->titlecase       #x24BC)
+    (korean-ksc5601    #x28 #x53)      ; \e$(C(S\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER H")
+    (ucs               . #x24D7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0068)
+    (->uppercase       #x24BD)
+    (->titlecase       #x24BD)
+    (korean-ksc5601    #x28 #x54)      ; \e$(C(T\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER I")
+    (ucs               . #x24D8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0069)
+    (->uppercase       #x24BE)
+    (->titlecase       #x24BE)
+    (korean-ksc5601    #x28 #x55)      ; \e$(C(U\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER J")
+    (ucs               . #x24D9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x006A)
+    (->uppercase       #x24BF)
+    (->titlecase       #x24BF)
+    (korean-ksc5601    #x28 #x56)      ; \e$(C(V\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER K")
+    (ucs               . #x24DA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x006B)
+    (->uppercase       #x24C0)
+    (->titlecase       #x24C0)
+    (korean-ksc5601    #x28 #x57)      ; \e$(C(W\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER L")
+    (ucs               . #x24DB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x006C)
+    (->uppercase       #x24C1)
+    (->titlecase       #x24C1)
+    (korean-ksc5601    #x28 #x58)      ; \e$(C(X\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER M")
+    (ucs               . #x24DC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x006D)
+    (->uppercase       #x24C2)
+    (->titlecase       #x24C2)
+    (korean-ksc5601    #x28 #x59)      ; \e$(C(Y\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER N")
+    (ucs               . #x24DD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x006E)
+    (->uppercase       #x24C3)
+    (->titlecase       #x24C3)
+    (korean-ksc5601    #x28 #x5A)      ; \e$(C(Z\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER O")
+    (ucs               . #x24DE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x006F)
+    (->uppercase       #x24C4)
+    (->titlecase       #x24C4)
+    (korean-ksc5601    #x28 #x5B)      ; \e$(C([\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER P")
+    (ucs               . #x24DF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0070)
+    (->uppercase       #x24C5)
+    (->titlecase       #x24C5)
+    (korean-ksc5601    #x28 #x5C)      ; \e$(C(\\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER Q")
+    (ucs               . #x24E0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0071)
+    (->uppercase       #x24C6)
+    (->titlecase       #x24C6)
+    (korean-ksc5601    #x28 #x5D)      ; \e$(C(]\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER R")
+    (ucs               . #x24E1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0072)
+    (->uppercase       #x24C7)
+    (->titlecase       #x24C7)
+    (korean-ksc5601    #x28 #x5E)      ; \e$(C(^\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER S")
+    (ucs               . #x24E2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0073)
+    (->uppercase       #x24C8)
+    (->titlecase       #x24C8)
+    (korean-ksc5601    #x28 #x5F)      ; \e$(C(_\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER T")
+    (ucs               . #x24E3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0074)
+    (->uppercase       #x24C9)
+    (->titlecase       #x24C9)
+    (korean-ksc5601    #x28 #x60)      ; \e$(C(`\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER U")
+    (ucs               . #x24E4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0075)
+    (->uppercase       #x24CA)
+    (->titlecase       #x24CA)
+    (korean-ksc5601    #x28 #x61)      ; \e$(C(a\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER V")
+    (ucs               . #x24E5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0076)
+    (->uppercase       #x24CB)
+    (->titlecase       #x24CB)
+    (korean-ksc5601    #x28 #x62)      ; \e$(C(b\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER W")
+    (ucs               . #x24E6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0077)
+    (->uppercase       #x24CC)
+    (->titlecase       #x24CC)
+    (korean-ksc5601    #x28 #x63)      ; \e$(C(c\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER X")
+    (ucs               . #x24E7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0078)
+    (->uppercase       #x24CD)
+    (->titlecase       #x24CD)
+    (korean-ksc5601    #x28 #x64)      ; \e$(C(d\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER Y")
+    (ucs               . #x24E8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x0079)
+    (->uppercase       #x24CE)
+    (->titlecase       #x24CE)
+    (korean-ksc5601    #x28 #x65)      ; \e$(C(e\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED LATIN SMALL LETTER Z")
+    (ucs               . #x24E9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x007A)
+    (->uppercase       #x24CF)
+    (->titlecase       #x24CF)
+    (korean-ksc5601    #x28 #x66)      ; \e$(C(f\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED DIGIT ZERO")
+    (ucs               . #x24EA)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "EN")
+    (mirrored          . nil)
+    (digit-value       . 0)
+    (numeric-value     . 0)
+    (->decomposition   circle #x0030)
+    ))
diff --git a/lisp/utf-2000/u02500-Box-Drawing.el b/lisp/utf-2000/u02500-Box-Drawing.el
new file mode 100644 (file)
index 0000000..35d1285
--- /dev/null
@@ -0,0 +1,1094 @@
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT HORIZONTAL")
+    (ucs               . #x2500)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x24)      ; \e$(A)$\e(B
+    (japanese-jisx0208 #x28 #x21)      ; \e$(B(!\e(B
+    (korean-ksc5601    #x26 #x21)      ; \e$(C&!\e(B
+    (chinese-cns11643-1 #x23 #x39)     ; \e$(G#9\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY HORIZONTAL")
+    (ucs               . #x2501)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x25)      ; \e$(A)%\e(B
+    (japanese-jisx0208 #x28 #x2C)      ; \e$(B(,\e(B
+    (korean-ksc5601    #x26 #x2C)      ; \e$(C&,\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT VERTICAL")
+    (ucs               . #x2502)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x26)      ; \e$(A)&\e(B
+    (japanese-jisx0208 #x28 #x22)      ; \e$(B("\e(B
+    (korean-ksc5601    #x26 #x22)      ; \e$(C&"\e(B
+    (chinese-cns11643-1 #x23 #x3A)     ; \e$(G#:\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY VERTICAL")
+    (ucs               . #x2503)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x27)      ; \e$(A)'\e(B
+    (japanese-jisx0208 #x28 #x2D)      ; \e$(B(-\e(B
+    (korean-ksc5601    #x26 #x2D)      ; \e$(C&-\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL")
+    (ucs               . #x2504)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x28)      ; \e$(A)(\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL")
+    (ucs               . #x2505)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x29)      ; \e$(A))\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL")
+    (ucs               . #x2506)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x2A)      ; \e$(A)*\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL")
+    (ucs               . #x2507)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x2B)      ; \e$(A)+\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL")
+    (ucs               . #x2508)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x2C)      ; \e$(A),\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL")
+    (ucs               . #x2509)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x2D)      ; \e$(A)-\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL")
+    (ucs               . #x250A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x2E)      ; \e$(A).\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL")
+    (ucs               . #x250B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x2F)      ; \e$(A)/\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT DOWN AND RIGHT")
+    (ucs               . #x250C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x30)      ; \e$(A)0\e(B
+    (japanese-jisx0208 #x28 #x23)      ; \e$(B(#\e(B
+    (korean-ksc5601    #x26 #x23)      ; \e$(C&#\e(B
+    (chinese-cns11643-1 #x23 #x3C)     ; \e$(G#<\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY")
+    (ucs               . #x250D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x31)      ; \e$(A)1\e(B
+    (korean-ksc5601    #x26 #x48)      ; \e$(C&H\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT")
+    (ucs               . #x250E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x32)      ; \e$(A)2\e(B
+    (korean-ksc5601    #x26 #x47)      ; \e$(C&G\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY DOWN AND RIGHT")
+    (ucs               . #x250F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x33)      ; \e$(A)3\e(B
+    (japanese-jisx0208 #x28 #x2E)      ; \e$(B(.\e(B
+    (korean-ksc5601    #x26 #x2E)      ; \e$(C&.\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT DOWN AND LEFT")
+    (ucs               . #x2510)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x34)      ; \e$(A)4\e(B
+    (japanese-jisx0208 #x28 #x24)      ; \e$(B($\e(B
+    (korean-ksc5601    #x26 #x24)      ; \e$(C&$\e(B
+    (chinese-cns11643-1 #x23 #x3D)     ; \e$(G#=\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY")
+    (ucs               . #x2511)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x35)      ; \e$(A)5\e(B
+    (korean-ksc5601    #x26 #x42)      ; \e$(C&B\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT")
+    (ucs               . #x2512)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x36)      ; \e$(A)6\e(B
+    (korean-ksc5601    #x26 #x41)      ; \e$(C&A\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY DOWN AND LEFT")
+    (ucs               . #x2513)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x37)      ; \e$(A)7\e(B
+    (japanese-jisx0208 #x28 #x2F)      ; \e$(B(/\e(B
+    (korean-ksc5601    #x26 #x2F)      ; \e$(C&/\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT UP AND RIGHT")
+    (ucs               . #x2514)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x38)      ; \e$(A)8\e(B
+    (japanese-jisx0208 #x28 #x26)      ; \e$(B(&\e(B
+    (korean-ksc5601    #x26 #x26)      ; \e$(C&&\e(B
+    (chinese-cns11643-1 #x23 #x3E)     ; \e$(G#>\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP LIGHT AND RIGHT HEAVY")
+    (ucs               . #x2515)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x39)      ; \e$(A)9\e(B
+    (korean-ksc5601    #x26 #x46)      ; \e$(C&F\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP HEAVY AND RIGHT LIGHT")
+    (ucs               . #x2516)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x3A)      ; \e$(A):\e(B
+    (korean-ksc5601    #x26 #x45)      ; \e$(C&E\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY UP AND RIGHT")
+    (ucs               . #x2517)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x3B)      ; \e$(A);\e(B
+    (japanese-jisx0208 #x28 #x31)      ; \e$(B(1\e(B
+    (korean-ksc5601    #x26 #x31)      ; \e$(C&1\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT UP AND LEFT")
+    (ucs               . #x2518)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x3C)      ; \e$(A)<\e(B
+    (japanese-jisx0208 #x28 #x25)      ; \e$(B(%\e(B
+    (korean-ksc5601    #x26 #x25)      ; \e$(C&%\e(B
+    (chinese-cns11643-1 #x23 #x3F)     ; \e$(G#?\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP LIGHT AND LEFT HEAVY")
+    (ucs               . #x2519)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x3D)      ; \e$(A)=\e(B
+    (korean-ksc5601    #x26 #x44)      ; \e$(C&D\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP HEAVY AND LEFT LIGHT")
+    (ucs               . #x251A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x3E)      ; \e$(A)>\e(B
+    (korean-ksc5601    #x26 #x43)      ; \e$(C&C\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY UP AND LEFT")
+    (ucs               . #x251B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x3F)      ; \e$(A)?\e(B
+    (japanese-jisx0208 #x28 #x30)      ; \e$(B(0\e(B
+    (korean-ksc5601    #x26 #x30)      ; \e$(C&0\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT VERTICAL AND RIGHT")
+    (ucs               . #x251C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x40)      ; \e$(A)@\e(B
+    (japanese-jisx0208 #x28 #x27)      ; \e$(B('\e(B
+    (korean-ksc5601    #x26 #x27)      ; \e$(C&'\e(B
+    (chinese-cns11643-1 #x23 #x37)     ; \e$(G#7\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY")
+    (ucs               . #x251D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x41)      ; \e$(A)A\e(B
+    (japanese-jisx0208 #x28 #x3C)      ; \e$(B(<\e(B
+    (korean-ksc5601    #x26 #x3C)      ; \e$(C&<\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT")
+    (ucs               . #x251E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x42)      ; \e$(A)B\e(B
+    (korean-ksc5601    #x26 #x49)      ; \e$(C&I\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT")
+    (ucs               . #x251F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x43)      ; \e$(A)C\e(B
+    (korean-ksc5601    #x26 #x4A)      ; \e$(C&J\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT")
+    (ucs               . #x2520)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x44)      ; \e$(A)D\e(B
+    (japanese-jisx0208 #x28 #x37)      ; \e$(B(7\e(B
+    (korean-ksc5601    #x26 #x37)      ; \e$(C&7\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY")
+    (ucs               . #x2521)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x45)      ; \e$(A)E\e(B
+    (korean-ksc5601    #x26 #x4B)      ; \e$(C&K\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY")
+    (ucs               . #x2522)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x46)      ; \e$(A)F\e(B
+    (korean-ksc5601    #x26 #x4C)      ; \e$(C&L\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY VERTICAL AND RIGHT")
+    (ucs               . #x2523)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x47)      ; \e$(A)G\e(B
+    (japanese-jisx0208 #x28 #x32)      ; \e$(B(2\e(B
+    (korean-ksc5601    #x26 #x32)      ; \e$(C&2\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT VERTICAL AND LEFT")
+    (ucs               . #x2524)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x48)      ; \e$(A)H\e(B
+    (japanese-jisx0208 #x28 #x29)      ; \e$(B()\e(B
+    (korean-ksc5601    #x26 #x29)      ; \e$(C&)\e(B
+    (chinese-cns11643-1 #x23 #x36)     ; \e$(G#6\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY")
+    (ucs               . #x2525)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x49)      ; \e$(A)I\e(B
+    (japanese-jisx0208 #x28 #x3E)      ; \e$(B(>\e(B
+    (korean-ksc5601    #x26 #x3E)      ; \e$(C&>\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT")
+    (ucs               . #x2526)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x4A)      ; \e$(A)J\e(B
+    (korean-ksc5601    #x26 #x4D)      ; \e$(C&M\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT")
+    (ucs               . #x2527)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x4B)      ; \e$(A)K\e(B
+    (korean-ksc5601    #x26 #x4E)      ; \e$(C&N\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT")
+    (ucs               . #x2528)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x4C)      ; \e$(A)L\e(B
+    (japanese-jisx0208 #x28 #x39)      ; \e$(B(9\e(B
+    (korean-ksc5601    #x26 #x39)      ; \e$(C&9\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY")
+    (ucs               . #x2529)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x4D)      ; \e$(A)M\e(B
+    (korean-ksc5601    #x26 #x4F)      ; \e$(C&O\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY")
+    (ucs               . #x252A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x4E)      ; \e$(A)N\e(B
+    (korean-ksc5601    #x26 #x50)      ; \e$(C&P\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY VERTICAL AND LEFT")
+    (ucs               . #x252B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x4F)      ; \e$(A)O\e(B
+    (japanese-jisx0208 #x28 #x34)      ; \e$(B(4\e(B
+    (korean-ksc5601    #x26 #x34)      ; \e$(C&4\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT DOWN AND HORIZONTAL")
+    (ucs               . #x252C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x50)      ; \e$(A)P\e(B
+    (japanese-jisx0208 #x28 #x28)      ; \e$(B((\e(B
+    (korean-ksc5601    #x26 #x28)      ; \e$(C&(\e(B
+    (chinese-cns11643-1 #x23 #x35)     ; \e$(G#5\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT")
+    (ucs               . #x252D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x51)      ; \e$(A)Q\e(B
+    (korean-ksc5601    #x26 #x51)      ; \e$(C&Q\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT")
+    (ucs               . #x252E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x52)      ; \e$(A)R\e(B
+    (korean-ksc5601    #x26 #x52)      ; \e$(C&R\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY")
+    (ucs               . #x252F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x53)      ; \e$(A)S\e(B
+    (japanese-jisx0208 #x28 #x38)      ; \e$(B(8\e(B
+    (korean-ksc5601    #x26 #x38)      ; \e$(C&8\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT")
+    (ucs               . #x2530)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x54)      ; \e$(A)T\e(B
+    (japanese-jisx0208 #x28 #x3D)      ; \e$(B(=\e(B
+    (korean-ksc5601    #x26 #x3D)      ; \e$(C&=\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY")
+    (ucs               . #x2531)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x55)      ; \e$(A)U\e(B
+    (korean-ksc5601    #x26 #x53)      ; \e$(C&S\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY")
+    (ucs               . #x2532)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x56)      ; \e$(A)V\e(B
+    (korean-ksc5601    #x26 #x54)      ; \e$(C&T\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY DOWN AND HORIZONTAL")
+    (ucs               . #x2533)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x57)      ; \e$(A)W\e(B
+    (japanese-jisx0208 #x28 #x33)      ; \e$(B(3\e(B
+    (korean-ksc5601    #x26 #x33)      ; \e$(C&3\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT UP AND HORIZONTAL")
+    (ucs               . #x2534)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x58)      ; \e$(A)X\e(B
+    (japanese-jisx0208 #x28 #x2A)      ; \e$(B(*\e(B
+    (korean-ksc5601    #x26 #x2A)      ; \e$(C&*\e(B
+    (chinese-cns11643-1 #x23 #x34)     ; \e$(G#4\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT")
+    (ucs               . #x2535)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x59)      ; \e$(A)Y\e(B
+    (korean-ksc5601    #x26 #x55)      ; \e$(C&U\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT")
+    (ucs               . #x2536)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x5A)      ; \e$(A)Z\e(B
+    (korean-ksc5601    #x26 #x56)      ; \e$(C&V\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY")
+    (ucs               . #x2537)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x5B)      ; \e$(A)[\e(B
+    (japanese-jisx0208 #x28 #x3A)      ; \e$(B(:\e(B
+    (korean-ksc5601    #x26 #x3A)      ; \e$(C&:\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT")
+    (ucs               . #x2538)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x5C)      ; \e$(A)\\e(B
+    (japanese-jisx0208 #x28 #x3F)      ; \e$(B(?\e(B
+    (korean-ksc5601    #x26 #x3F)      ; \e$(C&?\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY")
+    (ucs               . #x2539)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x5D)      ; \e$(A)]\e(B
+    (korean-ksc5601    #x26 #x57)      ; \e$(C&W\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY")
+    (ucs               . #x253A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x5E)      ; \e$(A)^\e(B
+    (korean-ksc5601    #x26 #x58)      ; \e$(C&X\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY UP AND HORIZONTAL")
+    (ucs               . #x253B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x5F)      ; \e$(A)_\e(B
+    (japanese-jisx0208 #x28 #x35)      ; \e$(B(5\e(B
+    (korean-ksc5601    #x26 #x35)      ; \e$(C&5\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL")
+    (ucs               . #x253C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x60)      ; \e$(A)`\e(B
+    (japanese-jisx0208 #x28 #x2B)      ; \e$(B(+\e(B
+    (korean-ksc5601    #x26 #x2B)      ; \e$(C&+\e(B
+    (chinese-cns11643-1 #x23 #x33)     ; \e$(G#3\e(B
+    ))
+(define-char
+  '((name . "BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT")
+    (ucs               . #x253D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x61)      ; \e$(A)a\e(B
+    (korean-ksc5601    #x26 #x59)      ; \e$(C&Y\e(B
+    ))
+(define-char
+  '((name . "BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT")
+    (ucs               . #x253E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x62)      ; \e$(A)b\e(B
+    (korean-ksc5601    #x26 #x5A)      ; \e$(C&Z\e(B
+    ))
+(define-char
+  '((name . "BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY")
+    (ucs               . #x253F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x63)      ; \e$(A)c\e(B
+    (japanese-jisx0208 #x28 #x3B)      ; \e$(B(;\e(B
+    (korean-ksc5601    #x26 #x3B)      ; \e$(C&;\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT")
+    (ucs               . #x2540)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x64)      ; \e$(A)d\e(B
+    (korean-ksc5601    #x26 #x5B)      ; \e$(C&[\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT")
+    (ucs               . #x2541)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x65)      ; \e$(A)e\e(B
+    (korean-ksc5601    #x26 #x5C)      ; \e$(C&\\e(B
+    ))
+(define-char
+  '((name . "BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT")
+    (ucs               . #x2542)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x66)      ; \e$(A)f\e(B
+    (japanese-jisx0208 #x28 #x40)      ; \e$(B(@\e(B
+    (korean-ksc5601    #x26 #x40)      ; \e$(C&@\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT")
+    (ucs               . #x2543)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x67)      ; \e$(A)g\e(B
+    (korean-ksc5601    #x26 #x5D)      ; \e$(C&]\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT")
+    (ucs               . #x2544)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x68)      ; \e$(A)h\e(B
+    (korean-ksc5601    #x26 #x5E)      ; \e$(C&^\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT")
+    (ucs               . #x2545)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x69)      ; \e$(A)i\e(B
+    (korean-ksc5601    #x26 #x5F)      ; \e$(C&_\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT")
+    (ucs               . #x2546)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x6A)      ; \e$(A)j\e(B
+    (korean-ksc5601    #x26 #x60)      ; \e$(C&`\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY")
+    (ucs               . #x2547)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x6B)      ; \e$(A)k\e(B
+    (korean-ksc5601    #x26 #x61)      ; \e$(C&a\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY")
+    (ucs               . #x2548)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x6C)      ; \e$(A)l\e(B
+    (korean-ksc5601    #x26 #x62)      ; \e$(C&b\e(B
+    ))
+(define-char
+  '((name . "BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY")
+    (ucs               . #x2549)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x6D)      ; \e$(A)m\e(B
+    (korean-ksc5601    #x26 #x63)      ; \e$(C&c\e(B
+    ))
+(define-char
+  '((name . "BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY")
+    (ucs               . #x254A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x6E)      ; \e$(A)n\e(B
+    (korean-ksc5601    #x26 #x64)      ; \e$(C&d\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL")
+    (ucs               . #x254B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-gb2312    #x29 #x6F)      ; \e$(A)o\e(B
+    (japanese-jisx0208 #x28 #x36)      ; \e$(B(6\e(B
+    (korean-ksc5601    #x26 #x36)      ; \e$(C&6\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL")
+    (ucs               . #x254C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL")
+    (ucs               . #x254D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL")
+    (ucs               . #x254E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL")
+    (ucs               . #x254F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE HORIZONTAL")
+    (ucs               . #x2550)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x44)     ; \e$(G#D\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE VERTICAL")
+    (ucs               . #x2551)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE")
+    (ucs               . #x2552)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE")
+    (ucs               . #x2553)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE DOWN AND RIGHT")
+    (ucs               . #x2554)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE")
+    (ucs               . #x2555)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE")
+    (ucs               . #x2556)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE DOWN AND LEFT")
+    (ucs               . #x2557)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE")
+    (ucs               . #x2558)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE")
+    (ucs               . #x2559)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE UP AND RIGHT")
+    (ucs               . #x255A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP SINGLE AND LEFT DOUBLE")
+    (ucs               . #x255B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP DOUBLE AND LEFT SINGLE")
+    (ucs               . #x255C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE UP AND LEFT")
+    (ucs               . #x255D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE")
+    (ucs               . #x255E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x45)     ; \e$(G#E\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE")
+    (ucs               . #x255F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE VERTICAL AND RIGHT")
+    (ucs               . #x2560)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE")
+    (ucs               . #x2561)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x47)     ; \e$(G#G\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE")
+    (ucs               . #x2562)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE VERTICAL AND LEFT")
+    (ucs               . #x2563)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE")
+    (ucs               . #x2564)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE")
+    (ucs               . #x2565)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL")
+    (ucs               . #x2566)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE")
+    (ucs               . #x2567)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE")
+    (ucs               . #x2568)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE UP AND HORIZONTAL")
+    (ucs               . #x2569)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE")
+    (ucs               . #x256A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x46)     ; \e$(G#F\e(B
+    ))
+(define-char
+  '((name . "BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE")
+    (ucs               . #x256B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL")
+    (ucs               . #x256C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT ARC DOWN AND RIGHT")
+    (ucs               . #x256D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x40)     ; \e$(G#@\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT ARC DOWN AND LEFT")
+    (ucs               . #x256E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x41)     ; \e$(G#A\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT ARC UP AND LEFT")
+    (ucs               . #x256F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x43)     ; \e$(G#C\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT ARC UP AND RIGHT")
+    (ucs               . #x2570)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x42)     ; \e$(G#B\e(B
+    ))
+(define-char
+  '((name . "BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT")
+    (ucs               . #x2571)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x4C)     ; \e$(G#L\e(B
+    ))
+(define-char
+  '((name . "BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT")
+    (ucs               . #x2572)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x4D)     ; \e$(G#M\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT DIAGONAL CROSS")
+    (ucs               . #x2573)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x4E)     ; \e$(G#N\e(B
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT LEFT")
+    (ucs               . #x2574)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT UP")
+    (ucs               . #x2575)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT RIGHT")
+    (ucs               . #x2576)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT DOWN")
+    (ucs               . #x2577)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY LEFT")
+    (ucs               . #x2578)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY UP")
+    (ucs               . #x2579)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY RIGHT")
+    (ucs               . #x257A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY DOWN")
+    (ucs               . #x257B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT")
+    (ucs               . #x257C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS LIGHT UP AND HEAVY DOWN")
+    (ucs               . #x257D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT")
+    (ucs               . #x257E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOX DRAWINGS HEAVY UP AND LIGHT DOWN")
+    (ucs               . #x257F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02580-Block-Elements.el b/lisp/utf-2000/u02580-Block-Elements.el
new file mode 100644 (file)
index 0000000..3b35c66
--- /dev/null
@@ -0,0 +1,172 @@
+(define-char
+  '((name              . "UPPER HALF BLOCK")
+    (ucs               . #x2580)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOWER ONE EIGHTH BLOCK")
+    (ucs               . #x2581)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x24)     ; \e$(G#$\e(B
+    ))
+(define-char
+  '((name              . "LOWER ONE QUARTER BLOCK")
+    (ucs               . #x2582)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x25)     ; \e$(G#%\e(B
+    ))
+(define-char
+  '((name              . "LOWER THREE EIGHTHS BLOCK")
+    (ucs               . #x2583)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x26)     ; \e$(G#&\e(B
+    ))
+(define-char
+  '((name              . "LOWER HALF BLOCK")
+    (ucs               . #x2584)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x27)     ; \e$(G#'\e(B
+    ))
+(define-char
+  '((name              . "LOWER FIVE EIGHTHS BLOCK")
+    (ucs               . #x2585)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x28)     ; \e$(G#(\e(B
+    ))
+(define-char
+  '((name              . "LOWER THREE QUARTERS BLOCK")
+    (ucs               . #x2586)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x29)     ; \e$(G#)\e(B
+    ))
+(define-char
+  '((name              . "LOWER SEVEN EIGHTHS BLOCK")
+    (ucs               . #x2587)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x2A)     ; \e$(G#*\e(B
+    ))
+(define-char
+  '((name              . "FULL BLOCK")
+    (ucs               . #x2588)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x2B)     ; \e$(G#+\e(B
+    ))
+(define-char
+  '((name              . "LEFT SEVEN EIGHTHS BLOCK")
+    (ucs               . #x2589)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x32)     ; \e$(G#2\e(B
+    ))
+(define-char
+  '((name              . "LEFT THREE QUARTERS BLOCK")
+    (ucs               . #x258A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x31)     ; \e$(G#1\e(B
+    ))
+(define-char
+  '((name              . "LEFT FIVE EIGHTHS BLOCK")
+    (ucs               . #x258B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x30)     ; \e$(G#0\e(B
+    ))
+(define-char
+  '((name              . "LEFT HALF BLOCK")
+    (ucs               . #x258C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x2F)     ; \e$(G#/\e(B
+    ))
+(define-char
+  '((name              . "LEFT THREE EIGHTHS BLOCK")
+    (ucs               . #x258D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x2E)     ; \e$(G#.\e(B
+    ))
+(define-char
+  '((name              . "LEFT ONE QUARTER BLOCK")
+    (ucs               . #x258E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x2D)     ; \e$(G#-\e(B
+    ))
+(define-char
+  '((name              . "LEFT ONE EIGHTH BLOCK")
+    (ucs               . #x258F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x2C)     ; \e$(G#,\e(B
+    ))
+(define-char
+  '((name              . "RIGHT HALF BLOCK")
+    (ucs               . #x2590)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LIGHT SHADE")
+    (ucs               . #x2591)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MEDIUM SHADE")
+    (ucs               . #x2592)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x46)      ; \e$(C"F\e(B
+    ))
+(define-char
+  '((name              . "DARK SHADE")
+    (ucs               . #x2593)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPPER ONE EIGHTH BLOCK")
+    (ucs               . #x2594)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x38)     ; \e$(G#8\e(B
+    ))
+(define-char
+  '((name              . "RIGHT ONE EIGHTH BLOCK")
+    (ucs               . #x2595)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x3B)     ; \e$(G#;\e(B
+    ))
diff --git a/lisp/utf-2000/u025A0-Geometric-Shapes.el b/lisp/utf-2000/u025A0-Geometric-Shapes.el
new file mode 100644 (file)
index 0000000..80f52c3
--- /dev/null
@@ -0,0 +1,688 @@
+(define-char
+  '((name              . "BLACK SQUARE")
+    (ucs               . #x25A0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x23)      ; \e$(@"#\e(B
+    (chinese-gb2312            #x21 #x76)      ; \e$(A!v\e(B
+    (japanese-jisx0208         #x22 #x23)      ; \e$(B"#\e(B
+    (korean-ksc5601            #x21 #x61)      ; \e$(C!a\e(B
+    (chinese-cns11643-1                #x21 #x7C)      ; \e$(G!|\e(B
+    ))
+(define-char
+  '((name              . "WHITE SQUARE")
+    (ucs               . #x25A1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x22)      ; \e$(@""\e(B
+    (chinese-gb2312            #x21 #x75)      ; \e$(A!u\e(B
+    (japanese-jisx0208         #x22 #x22)      ; \e$(B""\e(B
+    (korean-ksc5601            #x21 #x60)      ; \e$(C!`\e(B
+    (chinese-cns11643-1                #x21 #x7B)      ; \e$(G!{\e(B
+    ))
+(define-char
+  '((name              . "WHITE SQUARE WITH ROUNDED CORNERS")
+    (ucs               . #x25A2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SQUARE CONTAINING BLACK SMALL SQUARE")
+    (ucs               . #x25A3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x43)      ; \e$(C"C\e(B
+    ))
+(define-char
+  '((name              . "SQUARE WITH HORIZONTAL FILL")
+    (ucs               . #x25A4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x47)      ; \e$(C"G\e(B
+    ))
+(define-char
+  '((name              . "SQUARE WITH VERTICAL FILL")
+    (ucs               . #x25A5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x48)      ; \e$(C"H\e(B
+    ))
+(define-char
+  '((name              . "SQUARE WITH ORTHOGONAL CROSSHATCH FILL")
+    (ucs               . #x25A6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x4B)      ; \e$(C"K\e(B
+    ))
+(define-char
+  '((name              . "SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL")
+    (ucs               . #x25A7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x4A)      ; \e$(C"J\e(B
+    ))
+(define-char
+  '((name              . "SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL")
+    (ucs               . #x25A8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x49)      ; \e$(C"I\e(B
+    ))
+(define-char
+  '((name              . "SQUARE WITH DIAGONAL CROSSHATCH FILL")
+    (ucs               . #x25A9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x4C)      ; \e$(C"L\e(B
+    ))
+(define-char
+  '((name              . "BLACK SMALL SQUARE")
+    (ucs               . #x25AA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SMALL SQUARE")
+    (ucs               . #x25AB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK RECTANGLE")
+    (ucs               . #x25AC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE RECTANGLE")
+    (ucs               . #x25AD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK VERTICAL RECTANGLE")
+    (ucs               . #x25AE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE VERTICAL RECTANGLE")
+    (ucs               . #x25AF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK PARALLELOGRAM")
+    (ucs               . #x25B0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE PARALLELOGRAM")
+    (ucs               . #x25B1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK UP-POINTING TRIANGLE")
+    (ucs               . #x25B2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x25)      ; \e$(@"%\e(B
+    (chinese-gb2312            #x21 #x78)      ; \e$(A!x\e(B
+    (japanese-jisx0208         #x22 #x25)      ; \e$(B"%\e(B
+    (korean-ksc5601            #x21 #x63)      ; \e$(C!c\e(B
+    (chinese-cns11643-1                #x21 #x75)      ; \e$(G!u\e(B
+    ))
+(define-char
+  '((name              . "WHITE UP-POINTING TRIANGLE")
+    (ucs               . #x25B3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x24)      ; \e$(@"$\e(B
+    (chinese-gb2312            #x21 #x77)      ; \e$(A!w\e(B
+    (japanese-jisx0208         #x22 #x24)      ; \e$(B"$\e(B
+    (korean-ksc5601            #x21 #x62)      ; \e$(C!b\e(B
+    (chinese-cns11643-1                #x21 #x74)      ; \e$(G!t\e(B
+    ))
+(define-char
+  '((name              . "BLACK UP-POINTING SMALL TRIANGLE")
+    (ucs               . #x25B4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE UP-POINTING SMALL TRIANGLE")
+    (ucs               . #x25B5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK RIGHT-POINTING TRIANGLE")
+    (ucs               . #x25B6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x3A)      ; \e$(C":\e(B
+    ))
+(define-char
+  '((name              . "WHITE RIGHT-POINTING TRIANGLE")
+    (ucs               . #x25B7)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x39)      ; \e$(C"9\e(B
+    ))
+(define-char
+  '((name              . "BLACK RIGHT-POINTING SMALL TRIANGLE")
+    (ucs               . #x25B8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE RIGHT-POINTING SMALL TRIANGLE")
+    (ucs               . #x25B9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK RIGHT-POINTING POINTER")
+    (ucs               . #x25BA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE RIGHT-POINTING POINTER")
+    (ucs               . #x25BB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK DOWN-POINTING TRIANGLE")
+    (ucs               . #x25BC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x27)      ; \e$(@"'\e(B
+    (japanese-jisx0208         #x22 #x27)      ; \e$(B"'\e(B
+    (korean-ksc5601            #x21 #x65)      ; \e$(C!e\e(B
+    (chinese-cns11643-1                #x21 #x7E)      ; \e$(G!~\e(B
+    ))
+(define-char
+  '((name              . "WHITE DOWN-POINTING TRIANGLE")
+    (ucs               . #x25BD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x26)      ; \e$(@"&\e(B
+    (japanese-jisx0208         #x22 #x26)      ; \e$(B"&\e(B
+    (korean-ksc5601            #x21 #x64)      ; \e$(C!d\e(B
+    (chinese-cns11643-1                #x21 #x7D)      ; \e$(G!}\e(B
+    ))
+(define-char
+  '((name              . "BLACK DOWN-POINTING SMALL TRIANGLE")
+    (ucs               . #x25BE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE DOWN-POINTING SMALL TRIANGLE")
+    (ucs               . #x25BF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK LEFT-POINTING TRIANGLE")
+    (ucs               . #x25C0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x38)      ; \e$(C"8\e(B
+    ))
+(define-char
+  '((name              . "WHITE LEFT-POINTING TRIANGLE")
+    (ucs               . #x25C1)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x37)      ; \e$(C"7\e(B
+    ))
+(define-char
+  '((name              . "BLACK LEFT-POINTING SMALL TRIANGLE")
+    (ucs               . #x25C2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE LEFT-POINTING SMALL TRIANGLE")
+    (ucs               . #x25C3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK LEFT-POINTING POINTER")
+    (ucs               . #x25C4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE LEFT-POINTING POINTER")
+    (ucs               . #x25C5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK DIAMOND")
+    (ucs               . #x25C6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x21)      ; \e$(@"!\e(B
+    (chinese-gb2312            #x21 #x74)      ; \e$(A!t\e(B
+    (japanese-jisx0208         #x22 #x21)      ; \e$(B"!\e(B
+    (korean-ksc5601            #x21 #x5F)      ; \e$(C!_\e(B
+    (chinese-cns11643-1                #x21 #x7A)      ; \e$(G!z\e(B
+    ))
+(define-char
+  '((name              . "WHITE DIAMOND")
+    (ucs               . #x25C7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x7E)      ; \e$(@!~\e(B
+    (chinese-gb2312            #x21 #x73)      ; \e$(A!s\e(B
+    (japanese-jisx0208         #x21 #x7E)      ; \e$(B!~\e(B
+    (korean-ksc5601            #x21 #x5E)      ; \e$(C!^\e(B
+    (chinese-cns11643-1                #x21 #x79)      ; \e$(G!y\e(B
+    ))
+(define-char
+  '((name              . "WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND")
+    (ucs               . #x25C8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x42)      ; \e$(C"B\e(B
+    ))
+(define-char
+  '((name              . "FISHEYE")
+    (ucs               . #x25C9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOZENGE")
+    (ucs               . #x25CA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CIRCLE")
+    (ucs               . #x25CB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x7B)      ; \e$(@!{\e(B
+    (chinese-gb2312            #x21 #x70)      ; \e$(A!p\e(B
+    (japanese-jisx0208         #x21 #x7B)      ; \e$(B!{\e(B
+    (korean-ksc5601            #x21 #x5B)      ; \e$(C![\e(B
+    (chinese-cns11643-1                #x21 #x72)      ; \e$(G!r\e(B
+    ))
+(define-char
+  '((name              . "DOTTED CIRCLE")
+    (ucs               . #x25CC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLE WITH VERTICAL FILL")
+    (ucs               . #x25CD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BULLSEYE")
+    (ucs               . #x25CE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x7D)      ; \e$(@!}\e(B
+    (chinese-gb2312            #x21 #x72)      ; \e$(A!r\e(B
+    (japanese-jisx0208         #x21 #x7D)      ; \e$(B!}\e(B
+    (korean-ksc5601            #x21 #x5D)      ; \e$(C!]\e(B
+    (chinese-cns11643-1                #x21 #x76)      ; \e$(G!v\e(B
+    ))
+(define-char
+  '((name              . "BLACK CIRCLE")
+    (ucs               . #x25CF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x7C)      ; \e$(@!|\e(B
+    (chinese-gb2312            #x21 #x71)      ; \e$(A!q\e(B
+    (japanese-jisx0208         #x21 #x7C)      ; \e$(B!|\e(B
+    (korean-ksc5601            #x21 #x5C)      ; \e$(C!\\e(B
+    (chinese-cns11643-1                #x21 #x73)      ; \e$(G!s\e(B
+    ))
+(define-char
+  '((name              . "CIRCLE WITH LEFT HALF BLACK")
+    (ucs               . #x25D0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x44)      ; \e$(C"D\e(B
+    ))
+(define-char
+  '((name              . "CIRCLE WITH RIGHT HALF BLACK")
+    (ucs               . #x25D1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x45)      ; \e$(C"E\e(B
+    ))
+(define-char
+  '((name              . "CIRCLE WITH LOWER HALF BLACK")
+    (ucs               . #x25D2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLE WITH UPPER HALF BLACK")
+    (ucs               . #x25D3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLE WITH UPPER RIGHT QUADRANT BLACK")
+    (ucs               . #x25D4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK")
+    (ucs               . #x25D5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT HALF BLACK CIRCLE")
+    (ucs               . #x25D6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHT HALF BLACK CIRCLE")
+    (ucs               . #x25D7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "INVERSE BULLET")
+    (ucs               . #x25D8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "INVERSE WHITE CIRCLE")
+    (ucs               . #x25D9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPPER HALF INVERSE WHITE CIRCLE")
+    (ucs               . #x25DA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOWER HALF INVERSE WHITE CIRCLE")
+    (ucs               . #x25DB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPPER LEFT QUADRANT CIRCULAR ARC")
+    (ucs               . #x25DC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPPER RIGHT QUADRANT CIRCULAR ARC")
+    (ucs               . #x25DD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOWER RIGHT QUADRANT CIRCULAR ARC")
+    (ucs               . #x25DE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOWER LEFT QUADRANT CIRCULAR ARC")
+    (ucs               . #x25DF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPPER HALF CIRCLE")
+    (ucs               . #x25E0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOWER HALF CIRCLE")
+    (ucs               . #x25E1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK LOWER RIGHT TRIANGLE")
+    (ucs               . #x25E2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x48)     ; \e$(G#H\e(B
+    ))
+(define-char
+  '((name              . "BLACK LOWER LEFT TRIANGLE")
+    (ucs               . #x25E3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x49)     ; \e$(G#I\e(B
+    ))
+(define-char
+  '((name              . "BLACK UPPER LEFT TRIANGLE")
+    (ucs               . #x25E4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x4B)     ; \e$(G#K\e(B
+    ))
+(define-char
+  '((name              . "BLACK UPPER RIGHT TRIANGLE")
+    (ucs               . #x25E5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x23 #x4A)     ; \e$(G#J\e(B
+    ))
+(define-char
+  '((name              . "WHITE BULLET")
+    (ucs               . #x25E6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARE WITH LEFT HALF BLACK")
+    (ucs               . #x25E7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARE WITH RIGHT HALF BLACK")
+    (ucs               . #x25E8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK")
+    (ucs               . #x25E9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK")
+    (ucs               . #x25EA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SQUARE WITH VERTICAL BISECTING LINE")
+    (ucs               . #x25EB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE UP-POINTING TRIANGLE WITH DOT")
+    (ucs               . #x25EC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UP-POINTING TRIANGLE WITH LEFT HALF BLACK")
+    (ucs               . #x25ED)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UP-POINTING TRIANGLE WITH RIGHT HALF BLACK")
+    (ucs               . #x25EE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LARGE CIRCLE")
+    (ucs               . #x25EF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x7E)      ; \e$(B"~\e(B
+    ))
+(define-char
+  '((name              . "WHITE SQUARE WITH UPPER LEFT QUADRANT")
+    (ucs               . #x25F0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SQUARE WITH LOWER LEFT QUADRANT")
+    (ucs               . #x25F1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SQUARE WITH LOWER RIGHT QUADRANT")
+    (ucs               . #x25F2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SQUARE WITH UPPER RIGHT QUADRANT")
+    (ucs               . #x25F3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CIRCLE WITH UPPER LEFT QUADRANT")
+    (ucs               . #x25F4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CIRCLE WITH LOWER LEFT QUADRANT")
+    (ucs               . #x25F5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CIRCLE WITH LOWER RIGHT QUADRANT")
+    (ucs               . #x25F6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CIRCLE WITH UPPER RIGHT QUADRANT")
+    (ucs               . #x25F7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02600-Miscellaneous-Symbols.el b/lisp/utf-2000/u02600-Miscellaneous-Symbols.el
new file mode 100644 (file)
index 0000000..ff6a17a
--- /dev/null
@@ -0,0 +1,801 @@
+(define-char
+  '((name              . "BLACK SUN WITH RAYS")
+    (ucs               . #x2600)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CLOUD")
+    (ucs               . #x2601)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UMBRELLA")
+    (ucs               . #x2602)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SNOWMAN")
+    (ucs               . #x2603)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "COMET")
+    (ucs               . #x2604)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK STAR")
+    (ucs               . #x2605)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x7A)      ; \e$(@!z\e(B
+    (chinese-gb2312            #x21 #x6F)      ; \e$(A!o\e(B
+    (japanese-jisx0208         #x21 #x7A)      ; \e$(B!z\e(B
+    (korean-ksc5601            #x21 #x5A)      ; \e$(C!Z\e(B
+    (chinese-cns11643-1                #x21 #x78)      ; \e$(G!x\e(B
+    ))
+(define-char
+  '((name              . "WHITE STAR")
+    (ucs               . #x2606)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x79)      ; \e$(@!y\e(B
+    (chinese-gb2312            #x21 #x6E)      ; \e$(A!n\e(B
+    (japanese-jisx0208         #x21 #x79)      ; \e$(B!y\e(B
+    (korean-ksc5601            #x21 #x59)      ; \e$(C!Y\e(B
+    (chinese-cns11643-1                #x21 #x77)      ; \e$(G!w\e(B
+    ))
+(define-char
+  '((name              . "LIGHTNING")
+    (ucs               . #x2607)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THUNDERSTORM")
+    (ucs               . #x2608)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SUN")
+    (ucs               . #x2609)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ASCENDING NODE")
+    (ucs               . #x260A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DESCENDING NODE")
+    (ucs               . #x260B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CONJUNCTION")
+    (ucs               . #x260C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPPOSITION")
+    (ucs               . #x260D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK TELEPHONE")
+    (ucs               . #x260E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x4F)      ; \e$(C"O\e(B
+    ))
+(define-char
+  '((name              . "WHITE TELEPHONE")
+    (ucs               . #x260F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x4E)      ; \e$(C"N\e(B
+    ))
+(define-char
+  '((name              . "BALLOT BOX")
+    (ucs               . #x2610)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BALLOT BOX WITH CHECK")
+    (ucs               . #x2611)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BALLOT BOX WITH X")
+    (ucs               . #x2612)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SALTIRE")
+    (ucs               . #x2613)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "REVERSED ROTATED FLORAL HEART BULLET")
+    (ucs               . #x2619)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK LEFT POINTING INDEX")
+    (ucs               . #x261A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK RIGHT POINTING INDEX")
+    (ucs               . #x261B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE LEFT POINTING INDEX")
+    (ucs               . #x261C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x50)      ; \e$(C"P\e(B
+    ))
+(define-char
+  '((name              . "WHITE UP POINTING INDEX")
+    (ucs               . #x261D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE RIGHT POINTING INDEX")
+    (ucs               . #x261E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x51)      ; \e$(C"Q\e(B
+    ))
+(define-char
+  '((name              . "WHITE DOWN POINTING INDEX")
+    (ucs               . #x261F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SKULL AND CROSSBONES")
+    (ucs               . #x2620)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CAUTION SIGN")
+    (ucs               . #x2621)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RADIOACTIVE SIGN")
+    (ucs               . #x2622)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BIOHAZARD SIGN")
+    (ucs               . #x2623)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CADUCEUS")
+    (ucs               . #x2624)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ANKH")
+    (ucs               . #x2625)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ORTHODOX CROSS")
+    (ucs               . #x2626)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHI RHO")
+    (ucs               . #x2627)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CROSS OF LORRAINE")
+    (ucs               . #x2628)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CROSS OF JERUSALEM")
+    (ucs               . #x2629)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "STAR AND CRESCENT")
+    (ucs               . #x262A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FARSI SYMBOL")
+    (ucs               . #x262B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ADI SHAKTI")
+    (ucs               . #x262C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HAMMER AND SICKLE")
+    (ucs               . #x262D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PEACE SYMBOL")
+    (ucs               . #x262E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "YIN YANG")
+    (ucs               . #x262F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIGRAM FOR HEAVEN")
+    (ucs               . #x2630)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIGRAM FOR LAKE")
+    (ucs               . #x2631)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIGRAM FOR FIRE")
+    (ucs               . #x2632)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIGRAM FOR THUNDER")
+    (ucs               . #x2633)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIGRAM FOR WIND")
+    (ucs               . #x2634)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIGRAM FOR WATER")
+    (ucs               . #x2635)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIGRAM FOR MOUNTAIN")
+    (ucs               . #x2636)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIGRAM FOR EARTH")
+    (ucs               . #x2637)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHEEL OF DHARMA")
+    (ucs               . #x2638)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE FROWNING FACE")
+    (ucs               . #x2639)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SMILING FACE")
+    (ucs               . #x263A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK SMILING FACE")
+    (ucs               . #x263B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SUN WITH RAYS")
+    (ucs               . #x263C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FIRST QUARTER MOON")
+    (ucs               . #x263D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LAST QUARTER MOON")
+    (ucs               . #x263E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MERCURY")
+    (ucs               . #x263F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FEMALE SIGN")
+    (ucs               . #x2640)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x6A)      ; \e$(@!j\e(B
+    (chinese-gb2312            #x21 #x62)      ; \e$(A!b\e(B
+    (japanese-jisx0208         #x21 #x6A)      ; \e$(B!j\e(B
+    (korean-ksc5601            #x21 #x4F)      ; \e$(C!O\e(B
+    (chinese-cns11643-1                #x22 #x51)      ; \e$(G"Q\e(B
+    ))
+(define-char
+  '((name              . "EARTH")
+    (ucs               . #x2641)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALE SIGN")
+    (ucs               . #x2642)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x69)      ; \e$(@!i\e(B
+    (chinese-gb2312            #x21 #x61)      ; \e$(A!a\e(B
+    (japanese-jisx0208         #x21 #x69)      ; \e$(B!i\e(B
+    (korean-ksc5601            #x21 #x4E)      ; \e$(C!N\e(B
+    (chinese-cns11643-1                #x22 #x52)      ; \e$(G"R\e(B
+    ))
+(define-char
+  '((name              . "JUPITER")
+    (ucs               . #x2643)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SATURN")
+    (ucs               . #x2644)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "URANUS")
+    (ucs               . #x2645)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "NEPTUNE")
+    (ucs               . #x2646)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PLUTO")
+    (ucs               . #x2647)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ARIES")
+    (ucs               . #x2648)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAURUS")
+    (ucs               . #x2649)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "GEMINI")
+    (ucs               . #x264A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CANCER")
+    (ucs               . #x264B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEO")
+    (ucs               . #x264C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "VIRGO")
+    (ucs               . #x264D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LIBRA")
+    (ucs               . #x264E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SCORPIUS")
+    (ucs               . #x264F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SAGITTARIUS")
+    (ucs               . #x2650)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CAPRICORN")
+    (ucs               . #x2651)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "AQUARIUS")
+    (ucs               . #x2652)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PISCES")
+    (ucs               . #x2653)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CHESS KING")
+    (ucs               . #x2654)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CHESS QUEEN")
+    (ucs               . #x2655)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CHESS ROOK")
+    (ucs               . #x2656)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CHESS BISHOP")
+    (ucs               . #x2657)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CHESS KNIGHT")
+    (ucs               . #x2658)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CHESS PAWN")
+    (ucs               . #x2659)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK CHESS KING")
+    (ucs               . #x265A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK CHESS QUEEN")
+    (ucs               . #x265B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK CHESS ROOK")
+    (ucs               . #x265C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK CHESS BISHOP")
+    (ucs               . #x265D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK CHESS KNIGHT")
+    (ucs               . #x265E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK CHESS PAWN")
+    (ucs               . #x265F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK SPADE SUIT")
+    (ucs               . #x2660)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x3C)      ; \e$(C"<\e(B
+    ))
+(define-char
+  '((name              . "WHITE HEART SUIT")
+    (ucs               . #x2661)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x3D)      ; \e$(C"=\e(B
+    ))
+(define-char
+  '((name              . "WHITE DIAMOND SUIT")
+    (ucs               . #x2662)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK CLUB SUIT")
+    (ucs               . #x2663)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x40)      ; \e$(C"@\e(B
+    ))
+(define-char
+  '((name              . "WHITE SPADE SUIT")
+    (ucs               . #x2664)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x3B)      ; \e$(C";\e(B
+    ))
+(define-char
+  '((name              . "BLACK HEART SUIT")
+    (ucs               . #x2665)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x3E)      ; \e$(C">\e(B
+    ))
+(define-char
+  '((name              . "BLACK DIAMOND SUIT")
+    (ucs               . #x2666)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE CLUB SUIT")
+    (ucs               . #x2667)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x3F)      ; \e$(C"?\e(B
+    ))
+(define-char
+  '((name              . "HOT SPRINGS")
+    (ucs               . #x2668)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x4D)      ; \e$(C"M\e(B
+    ))
+(define-char
+  '((name              . "QUARTER NOTE")
+    (ucs               . #x2669)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x5B)      ; \e$(C"[\e(B
+    ))
+(define-char
+  '((name              . "EIGHTH NOTE")
+    (ucs               . #x266A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x76)      ; \e$(B"v\e(B
+    (korean-ksc5601    #x22 #x5C)      ; \e$(C"\\e(B
+    ))
+(define-char
+  '((name              . "BEAMED EIGHTH NOTES")
+    (ucs               . #x266B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BEAMED SIXTEENTH NOTES")
+    (ucs               . #x266C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x5D)      ; \e$(C"]\e(B
+    ))
+(define-char
+  '((name              . "MUSIC FLAT SIGN")
+    (ucs               . #x266D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x75)      ; \e$(B"u\e(B
+    (korean-ksc5601    #x22 #x5A)      ; \e$(C"Z\e(B
+    ))
+(define-char
+  '((name              . "MUSIC NATURAL SIGN")
+    (ucs               . #x266E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MUSIC SHARP SIGN")
+    (ucs               . #x266F)
+    (general-category  symbol math) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208 #x22 #x74)      ; \e$(B"t\e(B
+    ))
+(define-char
+  '((name              . "WEST SYRIAC CROSS")
+    (ucs               . #x2670)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EAST SYRIAC CROSS")
+    (ucs               . #x2671)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02700-Dingbats.el b/lisp/utf-2000/u02700-Dingbats.el
new file mode 100644 (file)
index 0000000..80236c7
--- /dev/null
@@ -0,0 +1,1178 @@
+(define-char
+  '((name              . "UPPER BLADE SCISSORS")
+    (ucs               . #x2701)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK SCISSORS")
+    (ucs               . #x2702)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOWER BLADE SCISSORS")
+    (ucs               . #x2703)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE SCISSORS")
+    (ucs               . #x2704)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TELEPHONE LOCATION SIGN")
+    (ucs               . #x2706)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TAPE DRIVE")
+    (ucs               . #x2707)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "AIRPLANE")
+    (ucs               . #x2708)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ENVELOPE")
+    (ucs               . #x2709)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "VICTORY HAND")
+    (ucs               . #x270C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WRITING HAND")
+    (ucs               . #x270D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOWER RIGHT PENCIL")
+    (ucs               . #x270E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PENCIL")
+    (ucs               . #x270F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPPER RIGHT PENCIL")
+    (ucs               . #x2710)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE NIB")
+    (ucs               . #x2711)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK NIB")
+    (ucs               . #x2712)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CHECK MARK")
+    (ucs               . #x2713)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY CHECK MARK")
+    (ucs               . #x2714)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MULTIPLICATION X")
+    (ucs               . #x2715)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY MULTIPLICATION X")
+    (ucs               . #x2716)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BALLOT X")
+    (ucs               . #x2717)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY BALLOT X")
+    (ucs               . #x2718)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OUTLINED GREEK CROSS")
+    (ucs               . #x2719)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY GREEK CROSS")
+    (ucs               . #x271A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPEN CENTRE CROSS")
+    (ucs               . #x271B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY OPEN CENTRE CROSS")
+    (ucs               . #x271C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LATIN CROSS")
+    (ucs               . #x271D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SHADOWED WHITE LATIN CROSS")
+    (ucs               . #x271E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OUTLINED LATIN CROSS")
+    (ucs               . #x271F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MALTESE CROSS")
+    (ucs               . #x2720)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "STAR OF DAVID")
+    (ucs               . #x2721)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FOUR TEARDROP-SPOKED ASTERISK")
+    (ucs               . #x2722)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FOUR BALLOON-SPOKED ASTERISK")
+    (ucs               . #x2723)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY FOUR BALLOON-SPOKED ASTERISK")
+    (ucs               . #x2724)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FOUR CLUB-SPOKED ASTERISK")
+    (ucs               . #x2725)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK FOUR POINTED STAR")
+    (ucs               . #x2726)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE FOUR POINTED STAR")
+    (ucs               . #x2727)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "STRESS OUTLINED WHITE STAR")
+    (ucs               . #x2729)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED WHITE STAR")
+    (ucs               . #x272A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPEN CENTRE BLACK STAR")
+    (ucs               . #x272B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK CENTRE WHITE STAR")
+    (ucs               . #x272C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OUTLINED BLACK STAR")
+    (ucs               . #x272D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY OUTLINED BLACK STAR")
+    (ucs               . #x272E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "PINWHEEL STAR")
+    (ucs               . #x272F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SHADOWED WHITE STAR")
+    (ucs               . #x2730)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY ASTERISK")
+    (ucs               . #x2731)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPEN CENTRE ASTERISK")
+    (ucs               . #x2732)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EIGHT SPOKED ASTERISK")
+    (ucs               . #x2733)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x21 #x6E)     ; \e$(G!n\e(B
+    ))
+(define-char
+  '((name              . "EIGHT POINTED BLACK STAR")
+    (ucs               . #x2734)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EIGHT POINTED PINWHEEL STAR")
+    (ucs               . #x2735)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SIX POINTED BLACK STAR")
+    (ucs               . #x2736)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EIGHT POINTED RECTILINEAR BLACK STAR")
+    (ucs               . #x2737)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY EIGHT POINTED RECTILINEAR BLACK STAR")
+    (ucs               . #x2738)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TWELVE POINTED BLACK STAR")
+    (ucs               . #x2739)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SIXTEEN POINTED ASTERISK")
+    (ucs               . #x273A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TEARDROP-SPOKED ASTERISK")
+    (ucs               . #x273B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPEN CENTRE TEARDROP-SPOKED ASTERISK")
+    (ucs               . #x273C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY TEARDROP-SPOKED ASTERISK")
+    (ucs               . #x273D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SIX PETALLED BLACK AND WHITE FLORETTE")
+    (ucs               . #x273E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK FLORETTE")
+    (ucs               . #x273F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE FLORETTE")
+    (ucs               . #x2740)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EIGHT PETALLED OUTLINED BLACK FLORETTE")
+    (ucs               . #x2741)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED OPEN CENTRE EIGHT POINTED STAR")
+    (ucs               . #x2742)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK")
+    (ucs               . #x2743)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SNOWFLAKE")
+    (ucs               . #x2744)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TIGHT TRIFOLIATE SNOWFLAKE")
+    (ucs               . #x2745)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY CHEVRON SNOWFLAKE")
+    (ucs               . #x2746)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SPARKLE")
+    (ucs               . #x2747)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY SPARKLE")
+    (ucs               . #x2748)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BALLOON-SPOKED ASTERISK")
+    (ucs               . #x2749)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "EIGHT TEARDROP-SPOKED PROPELLER ASTERISK")
+    (ucs               . #x274A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK")
+    (ucs               . #x274B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SHADOWED WHITE CIRCLE")
+    (ucs               . #x274D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOWER RIGHT DROP-SHADOWED WHITE SQUARE")
+    (ucs               . #x274F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPPER RIGHT DROP-SHADOWED WHITE SQUARE")
+    (ucs               . #x2750)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LOWER RIGHT SHADOWED WHITE SQUARE")
+    (ucs               . #x2751)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "UPPER RIGHT SHADOWED WHITE SQUARE")
+    (ucs               . #x2752)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK DIAMOND MINUS WHITE X")
+    (ucs               . #x2756)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LIGHT VERTICAL BAR")
+    (ucs               . #x2758)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "MEDIUM VERTICAL BAR")
+    (ucs               . #x2759)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY VERTICAL BAR")
+    (ucs               . #x275A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT")
+    (ucs               . #x275B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT")
+    (ucs               . #x275C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT")
+    (ucs               . #x275D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT")
+    (ucs               . #x275E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CURVED STEM PARAGRAPH SIGN ORNAMENT")
+    (ucs               . #x2761)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY EXCLAMATION MARK ORNAMENT")
+    (ucs               . #x2762)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY HEART EXCLAMATION MARK ORNAMENT")
+    (ucs               . #x2763)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY BLACK HEART")
+    (ucs               . #x2764)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ROTATED HEAVY BLACK HEART BULLET")
+    (ucs               . #x2765)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FLORAL HEART")
+    (ucs               . #x2766)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "ROTATED FLORAL HEART BULLET")
+    (ucs               . #x2767)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED DIGIT ONE")
+    (ucs               . #x2776)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED DIGIT TWO")
+    (ucs               . #x2777)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED DIGIT THREE")
+    (ucs               . #x2778)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED DIGIT FOUR")
+    (ucs               . #x2779)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED DIGIT FIVE")
+    (ucs               . #x277A)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED DIGIT SIX")
+    (ucs               . #x277B)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED DIGIT SEVEN")
+    (ucs               . #x277C)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED DIGIT EIGHT")
+    (ucs               . #x277D)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED DIGIT NINE")
+    (ucs               . #x277E)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED NUMBER TEN")
+    (ucs               . #x277F)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF DIGIT ONE")
+    (ucs               . #x2780)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF DIGIT TWO")
+    (ucs               . #x2781)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF DIGIT THREE")
+    (ucs               . #x2782)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF DIGIT FOUR")
+    (ucs               . #x2783)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF DIGIT FIVE")
+    (ucs               . #x2784)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF DIGIT SIX")
+    (ucs               . #x2785)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN")
+    (ucs               . #x2786)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT")
+    (ucs               . #x2787)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF DIGIT NINE")
+    (ucs               . #x2788)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    ))
+(define-char
+  '((name              . "DINGBAT CIRCLED SANS-SERIF NUMBER TEN")
+    (ucs               . #x2789)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE")
+    (ucs               . #x278A)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 1)
+    (numeric-value     . 1)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO")
+    (ucs               . #x278B)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 2)
+    (numeric-value     . 2)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE")
+    (ucs               . #x278C)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 3)
+    (numeric-value     . 3)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR")
+    (ucs               . #x278D)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 4)
+    (numeric-value     . 4)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE")
+    (ucs               . #x278E)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 5)
+    (numeric-value     . 5)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX")
+    (ucs               . #x278F)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 6)
+    (numeric-value     . 6)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN")
+    (ucs               . #x2790)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 7)
+    (numeric-value     . 7)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT")
+    (ucs               . #x2791)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 8)
+    (numeric-value     . 8)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE")
+    (ucs               . #x2792)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (digit-value       . 9)
+    (numeric-value     . 9)
+    ))
+(define-char
+  '((name              . "DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN")
+    (ucs               . #x2793)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    ))
+(define-char
+  '((name              . "HEAVY WIDE-HEADED RIGHTWARDS ARROW")
+    (ucs               . #x2794)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY SOUTH EAST ARROW")
+    (ucs               . #x2798)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY RIGHTWARDS ARROW")
+    (ucs               . #x2799)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY NORTH EAST ARROW")
+    (ucs               . #x279A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DRAFTING POINT RIGHTWARDS ARROW")
+    (ucs               . #x279B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY ROUND-TIPPED RIGHTWARDS ARROW")
+    (ucs               . #x279C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TRIANGLE-HEADED RIGHTWARDS ARROW")
+    (ucs               . #x279D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW")
+    (ucs               . #x279E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "DASHED TRIANGLE-HEADED RIGHTWARDS ARROW")
+    (ucs               . #x279F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW")
+    (ucs               . #x27A0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK RIGHTWARDS ARROW")
+    (ucs               . #x27A1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD")
+    (ucs               . #x27A2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD")
+    (ucs               . #x27A3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK RIGHTWARDS ARROWHEAD")
+    (ucs               . #x27A4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW")
+    (ucs               . #x27A5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW")
+    (ucs               . #x27A6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "SQUAT BLACK RIGHTWARDS ARROW")
+    (ucs               . #x27A7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW")
+    (ucs               . #x27A8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "RIGHT-SHADED WHITE RIGHTWARDS ARROW")
+    (ucs               . #x27A9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "LEFT-SHADED WHITE RIGHTWARDS ARROW")
+    (ucs               . #x27AA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW")
+    (ucs               . #x27AB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW")
+    (ucs               . #x27AC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW")
+    (ucs               . #x27AD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW")
+    (ucs               . #x27AE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW")
+    (ucs               . #x27AF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW")
+    (ucs               . #x27B1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED HEAVY WHITE RIGHTWARDS ARROW")
+    (ucs               . #x27B2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WHITE-FEATHERED RIGHTWARDS ARROW")
+    (ucs               . #x27B3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK-FEATHERED SOUTH EAST ARROW")
+    (ucs               . #x27B4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK-FEATHERED RIGHTWARDS ARROW")
+    (ucs               . #x27B5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BLACK-FEATHERED NORTH EAST ARROW")
+    (ucs               . #x27B6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY BLACK-FEATHERED SOUTH EAST ARROW")
+    (ucs               . #x27B7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY BLACK-FEATHERED RIGHTWARDS ARROW")
+    (ucs               . #x27B8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY BLACK-FEATHERED NORTH EAST ARROW")
+    (ucs               . #x27B9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "TEARDROP-BARBED RIGHTWARDS ARROW")
+    (ucs               . #x27BA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW")
+    (ucs               . #x27BB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WEDGE-TAILED RIGHTWARDS ARROW")
+    (ucs               . #x27BC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HEAVY WEDGE-TAILED RIGHTWARDS ARROW")
+    (ucs               . #x27BD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "OPEN-OUTLINED RIGHTWARDS ARROW")
+    (ucs               . #x27BE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02800-Braille-Patterns.el b/lisp/utf-2000/u02800-Braille-Patterns.el
new file mode 100644 (file)
index 0000000..4953176
--- /dev/null
@@ -0,0 +1,1792 @@
+(define-char
+  '((name              . "BRAILLE PATTERN BLANK")
+    (ucs               . #x2800)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1")
+    (ucs               . #x2801)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2")
+    (ucs               . #x2802)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12")
+    (ucs               . #x2803)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3")
+    (ucs               . #x2804)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13")
+    (ucs               . #x2805)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23")
+    (ucs               . #x2806)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123")
+    (ucs               . #x2807)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-4")
+    (ucs               . #x2808)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-14")
+    (ucs               . #x2809)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-24")
+    (ucs               . #x280A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-124")
+    (ucs               . #x280B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-34")
+    (ucs               . #x280C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-134")
+    (ucs               . #x280D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-234")
+    (ucs               . #x280E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1234")
+    (ucs               . #x280F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-5")
+    (ucs               . #x2810)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-15")
+    (ucs               . #x2811)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-25")
+    (ucs               . #x2812)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-125")
+    (ucs               . #x2813)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-35")
+    (ucs               . #x2814)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-135")
+    (ucs               . #x2815)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-235")
+    (ucs               . #x2816)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1235")
+    (ucs               . #x2817)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-45")
+    (ucs               . #x2818)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-145")
+    (ucs               . #x2819)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-245")
+    (ucs               . #x281A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1245")
+    (ucs               . #x281B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-345")
+    (ucs               . #x281C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1345")
+    (ucs               . #x281D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2345")
+    (ucs               . #x281E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12345")
+    (ucs               . #x281F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-6")
+    (ucs               . #x2820)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-16")
+    (ucs               . #x2821)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-26")
+    (ucs               . #x2822)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-126")
+    (ucs               . #x2823)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-36")
+    (ucs               . #x2824)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-136")
+    (ucs               . #x2825)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-236")
+    (ucs               . #x2826)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1236")
+    (ucs               . #x2827)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-46")
+    (ucs               . #x2828)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-146")
+    (ucs               . #x2829)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-246")
+    (ucs               . #x282A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1246")
+    (ucs               . #x282B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-346")
+    (ucs               . #x282C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1346")
+    (ucs               . #x282D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2346")
+    (ucs               . #x282E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12346")
+    (ucs               . #x282F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-56")
+    (ucs               . #x2830)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-156")
+    (ucs               . #x2831)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-256")
+    (ucs               . #x2832)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1256")
+    (ucs               . #x2833)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-356")
+    (ucs               . #x2834)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1356")
+    (ucs               . #x2835)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2356")
+    (ucs               . #x2836)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12356")
+    (ucs               . #x2837)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-456")
+    (ucs               . #x2838)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1456")
+    (ucs               . #x2839)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2456")
+    (ucs               . #x283A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12456")
+    (ucs               . #x283B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3456")
+    (ucs               . #x283C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13456")
+    (ucs               . #x283D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23456")
+    (ucs               . #x283E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123456")
+    (ucs               . #x283F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-7")
+    (ucs               . #x2840)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-17")
+    (ucs               . #x2841)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-27")
+    (ucs               . #x2842)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-127")
+    (ucs               . #x2843)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-37")
+    (ucs               . #x2844)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-137")
+    (ucs               . #x2845)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-237")
+    (ucs               . #x2846)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1237")
+    (ucs               . #x2847)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-47")
+    (ucs               . #x2848)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-147")
+    (ucs               . #x2849)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-247")
+    (ucs               . #x284A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1247")
+    (ucs               . #x284B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-347")
+    (ucs               . #x284C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1347")
+    (ucs               . #x284D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2347")
+    (ucs               . #x284E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12347")
+    (ucs               . #x284F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-57")
+    (ucs               . #x2850)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-157")
+    (ucs               . #x2851)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-257")
+    (ucs               . #x2852)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1257")
+    (ucs               . #x2853)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-357")
+    (ucs               . #x2854)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1357")
+    (ucs               . #x2855)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2357")
+    (ucs               . #x2856)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12357")
+    (ucs               . #x2857)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-457")
+    (ucs               . #x2858)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1457")
+    (ucs               . #x2859)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2457")
+    (ucs               . #x285A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12457")
+    (ucs               . #x285B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3457")
+    (ucs               . #x285C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13457")
+    (ucs               . #x285D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23457")
+    (ucs               . #x285E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123457")
+    (ucs               . #x285F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-67")
+    (ucs               . #x2860)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-167")
+    (ucs               . #x2861)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-267")
+    (ucs               . #x2862)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1267")
+    (ucs               . #x2863)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-367")
+    (ucs               . #x2864)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1367")
+    (ucs               . #x2865)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2367")
+    (ucs               . #x2866)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12367")
+    (ucs               . #x2867)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-467")
+    (ucs               . #x2868)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1467")
+    (ucs               . #x2869)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2467")
+    (ucs               . #x286A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12467")
+    (ucs               . #x286B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3467")
+    (ucs               . #x286C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13467")
+    (ucs               . #x286D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23467")
+    (ucs               . #x286E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123467")
+    (ucs               . #x286F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-567")
+    (ucs               . #x2870)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1567")
+    (ucs               . #x2871)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2567")
+    (ucs               . #x2872)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12567")
+    (ucs               . #x2873)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3567")
+    (ucs               . #x2874)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13567")
+    (ucs               . #x2875)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23567")
+    (ucs               . #x2876)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123567")
+    (ucs               . #x2877)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-4567")
+    (ucs               . #x2878)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-14567")
+    (ucs               . #x2879)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-24567")
+    (ucs               . #x287A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-124567")
+    (ucs               . #x287B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-34567")
+    (ucs               . #x287C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-134567")
+    (ucs               . #x287D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-234567")
+    (ucs               . #x287E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1234567")
+    (ucs               . #x287F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-8")
+    (ucs               . #x2880)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-18")
+    (ucs               . #x2881)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-28")
+    (ucs               . #x2882)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-128")
+    (ucs               . #x2883)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-38")
+    (ucs               . #x2884)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-138")
+    (ucs               . #x2885)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-238")
+    (ucs               . #x2886)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1238")
+    (ucs               . #x2887)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-48")
+    (ucs               . #x2888)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-148")
+    (ucs               . #x2889)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-248")
+    (ucs               . #x288A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1248")
+    (ucs               . #x288B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-348")
+    (ucs               . #x288C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1348")
+    (ucs               . #x288D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2348")
+    (ucs               . #x288E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12348")
+    (ucs               . #x288F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-58")
+    (ucs               . #x2890)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-158")
+    (ucs               . #x2891)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-258")
+    (ucs               . #x2892)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1258")
+    (ucs               . #x2893)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-358")
+    (ucs               . #x2894)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1358")
+    (ucs               . #x2895)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2358")
+    (ucs               . #x2896)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12358")
+    (ucs               . #x2897)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-458")
+    (ucs               . #x2898)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1458")
+    (ucs               . #x2899)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2458")
+    (ucs               . #x289A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12458")
+    (ucs               . #x289B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3458")
+    (ucs               . #x289C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13458")
+    (ucs               . #x289D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23458")
+    (ucs               . #x289E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123458")
+    (ucs               . #x289F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-68")
+    (ucs               . #x28A0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-168")
+    (ucs               . #x28A1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-268")
+    (ucs               . #x28A2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1268")
+    (ucs               . #x28A3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-368")
+    (ucs               . #x28A4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1368")
+    (ucs               . #x28A5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2368")
+    (ucs               . #x28A6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12368")
+    (ucs               . #x28A7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-468")
+    (ucs               . #x28A8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1468")
+    (ucs               . #x28A9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2468")
+    (ucs               . #x28AA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12468")
+    (ucs               . #x28AB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3468")
+    (ucs               . #x28AC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13468")
+    (ucs               . #x28AD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23468")
+    (ucs               . #x28AE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123468")
+    (ucs               . #x28AF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-568")
+    (ucs               . #x28B0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1568")
+    (ucs               . #x28B1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2568")
+    (ucs               . #x28B2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12568")
+    (ucs               . #x28B3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3568")
+    (ucs               . #x28B4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13568")
+    (ucs               . #x28B5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23568")
+    (ucs               . #x28B6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123568")
+    (ucs               . #x28B7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-4568")
+    (ucs               . #x28B8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-14568")
+    (ucs               . #x28B9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-24568")
+    (ucs               . #x28BA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-124568")
+    (ucs               . #x28BB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-34568")
+    (ucs               . #x28BC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-134568")
+    (ucs               . #x28BD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-234568")
+    (ucs               . #x28BE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1234568")
+    (ucs               . #x28BF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-78")
+    (ucs               . #x28C0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-178")
+    (ucs               . #x28C1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-278")
+    (ucs               . #x28C2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1278")
+    (ucs               . #x28C3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-378")
+    (ucs               . #x28C4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1378")
+    (ucs               . #x28C5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2378")
+    (ucs               . #x28C6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12378")
+    (ucs               . #x28C7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-478")
+    (ucs               . #x28C8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1478")
+    (ucs               . #x28C9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2478")
+    (ucs               . #x28CA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12478")
+    (ucs               . #x28CB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3478")
+    (ucs               . #x28CC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13478")
+    (ucs               . #x28CD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23478")
+    (ucs               . #x28CE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123478")
+    (ucs               . #x28CF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-578")
+    (ucs               . #x28D0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1578")
+    (ucs               . #x28D1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2578")
+    (ucs               . #x28D2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12578")
+    (ucs               . #x28D3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3578")
+    (ucs               . #x28D4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13578")
+    (ucs               . #x28D5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23578")
+    (ucs               . #x28D6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123578")
+    (ucs               . #x28D7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-4578")
+    (ucs               . #x28D8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-14578")
+    (ucs               . #x28D9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-24578")
+    (ucs               . #x28DA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-124578")
+    (ucs               . #x28DB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-34578")
+    (ucs               . #x28DC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-134578")
+    (ucs               . #x28DD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-234578")
+    (ucs               . #x28DE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1234578")
+    (ucs               . #x28DF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-678")
+    (ucs               . #x28E0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1678")
+    (ucs               . #x28E1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2678")
+    (ucs               . #x28E2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12678")
+    (ucs               . #x28E3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-3678")
+    (ucs               . #x28E4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-13678")
+    (ucs               . #x28E5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-23678")
+    (ucs               . #x28E6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-123678")
+    (ucs               . #x28E7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-4678")
+    (ucs               . #x28E8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-14678")
+    (ucs               . #x28E9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-24678")
+    (ucs               . #x28EA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-124678")
+    (ucs               . #x28EB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-34678")
+    (ucs               . #x28EC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-134678")
+    (ucs               . #x28ED)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-234678")
+    (ucs               . #x28EE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1234678")
+    (ucs               . #x28EF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-5678")
+    (ucs               . #x28F0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-15678")
+    (ucs               . #x28F1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-25678")
+    (ucs               . #x28F2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-125678")
+    (ucs               . #x28F3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-35678")
+    (ucs               . #x28F4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-135678")
+    (ucs               . #x28F5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-235678")
+    (ucs               . #x28F6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1235678")
+    (ucs               . #x28F7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-45678")
+    (ucs               . #x28F8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-145678")
+    (ucs               . #x28F9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-245678")
+    (ucs               . #x28FA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1245678")
+    (ucs               . #x28FB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-345678")
+    (ucs               . #x28FC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-1345678")
+    (ucs               . #x28FD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-2345678")
+    (ucs               . #x28FE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BRAILLE PATTERN DOTS-12345678")
+    (ucs               . #x28FF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u02E00-CJK-Radical-Supplement.el b/lisp/utf-2000/u02E00-CJK-Radical-Supplement.el
new file mode 100644 (file)
index 0000000..006b7d2
--- /dev/null
@@ -0,0 +1,807 @@
+(define-char
+  '((name              . "CJK RADICAL REPEAT")
+    (ucs               . #x2E80)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL CLIFF")
+    (ucs               . #x2E81)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SECOND ONE")
+    (ucs               . #x2E82)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SECOND TWO")
+    (ucs               . #x2E83)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SECOND THREE")
+    (ucs               . #x2E84)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL PERSON")
+    (ucs               . #x2E85)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL BOX")
+    (ucs               . #x2E86)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL TABLE")
+    (ucs               . #x2E87)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL KNIFE ONE")
+    (ucs               . #x2E88)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL KNIFE TWO")
+    (ucs               . #x2E89)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL DIVINATION")
+    (ucs               . #x2E8A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SEAL")
+    (ucs               . #x2E8B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SMALL ONE")
+    (ucs               . #x2E8C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SMALL TWO")
+    (ucs               . #x2E8D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL LAME ONE")
+    (ucs               . #x2E8E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL LAME TWO")
+    (ucs               . #x2E8F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL LAME THREE")
+    (ucs               . #x2E90)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL LAME FOUR")
+    (ucs               . #x2E91)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SNAKE")
+    (ucs               . #x2E92)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL THREAD")
+    (ucs               . #x2E93)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SNOUT ONE")
+    (ucs               . #x2E94)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SNOUT TWO")
+    (ucs               . #x2E95)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL HEART ONE")
+    (ucs               . #x2E96)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL HEART TWO")
+    (ucs               . #x2E97)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL HAND")
+    (ucs               . #x2E98)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL RAP")
+    (ucs               . #x2E99)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL CHOKE")
+    (ucs               . #x2E9B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SUN")
+    (ucs               . #x2E9C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL MOON")
+    (ucs               . #x2E9D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL DEATH")
+    (ucs               . #x2E9E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL MOTHER")
+    (ucs               . #x2E9F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6BCD)
+    ))
+(define-char
+  '((name              . "CJK RADICAL CIVILIAN")
+    (ucs               . #x2EA0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL WATER ONE")
+    (ucs               . #x2EA1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL WATER TWO")
+    (ucs               . #x2EA2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL FIRE")
+    (ucs               . #x2EA3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL PAW ONE")
+    (ucs               . #x2EA4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL PAW TWO")
+    (ucs               . #x2EA5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SIMPLIFIED HALF TREE TRUNK")
+    (ucs               . #x2EA6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL COW")
+    (ucs               . #x2EA7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL DOG")
+    (ucs               . #x2EA8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL JADE")
+    (ucs               . #x2EA9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL BOLT OF CLOTH")
+    (ucs               . #x2EAA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL EYE")
+    (ucs               . #x2EAB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SPIRIT ONE")
+    (ucs               . #x2EAC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SPIRIT TWO")
+    (ucs               . #x2EAD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL BAMBOO")
+    (ucs               . #x2EAE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SILK")
+    (ucs               . #x2EAF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED SILK")
+    (ucs               . #x2EB0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL NET ONE")
+    (ucs               . #x2EB1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL NET TWO")
+    (ucs               . #x2EB2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL NET THREE")
+    (ucs               . #x2EB3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL NET FOUR")
+    (ucs               . #x2EB4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL MESH")
+    (ucs               . #x2EB5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SHEEP")
+    (ucs               . #x2EB6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL RAM")
+    (ucs               . #x2EB7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL EWE")
+    (ucs               . #x2EB8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL OLD")
+    (ucs               . #x2EB9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL BRUSH ONE")
+    (ucs               . #x2EBA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL BRUSH TWO")
+    (ucs               . #x2EBB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL MEAT")
+    (ucs               . #x2EBC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL MORTAR")
+    (ucs               . #x2EBD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL GRASS ONE")
+    (ucs               . #x2EBE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL GRASS TWO")
+    (ucs               . #x2EBF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL GRASS THREE")
+    (ucs               . #x2EC0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL TIGER")
+    (ucs               . #x2EC1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL CLOTHES")
+    (ucs               . #x2EC2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL WEST ONE")
+    (ucs               . #x2EC3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL WEST TWO")
+    (ucs               . #x2EC4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED SEE")
+    (ucs               . #x2EC5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SIMPLIFIED HORN")
+    (ucs               . #x2EC6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL HORN")
+    (ucs               . #x2EC7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED SPEECH")
+    (ucs               . #x2EC8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED SHELL")
+    (ucs               . #x2EC9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL FOOT")
+    (ucs               . #x2ECA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED CART")
+    (ucs               . #x2ECB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SIMPLIFIED WALK")
+    (ucs               . #x2ECC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL WALK ONE")
+    (ucs               . #x2ECD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL WALK TWO")
+    (ucs               . #x2ECE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL CITY")
+    (ucs               . #x2ECF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED GOLD")
+    (ucs               . #x2ED0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL LONG ONE")
+    (ucs               . #x2ED1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL LONG TWO")
+    (ucs               . #x2ED2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED LONG")
+    (ucs               . #x2ED3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED GATE")
+    (ucs               . #x2ED4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL MOUND ONE")
+    (ucs               . #x2ED5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL MOUND TWO")
+    (ucs               . #x2ED6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL RAIN")
+    (ucs               . #x2ED7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL BLUE")
+    (ucs               . #x2ED8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED TANNED LEATHER")
+    (ucs               . #x2ED9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED LEAF")
+    (ucs               . #x2EDA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED WIND")
+    (ucs               . #x2EDB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED FLY")
+    (ucs               . #x2EDC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL EAT ONE")
+    (ucs               . #x2EDD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL EAT TWO")
+    (ucs               . #x2EDE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL EAT THREE")
+    (ucs               . #x2EDF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED EAT")
+    (ucs               . #x2EE0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL HEAD")
+    (ucs               . #x2EE1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED HORSE")
+    (ucs               . #x2EE2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL BONE")
+    (ucs               . #x2EE3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL GHOST")
+    (ucs               . #x2EE4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED FISH")
+    (ucs               . #x2EE5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED BIRD")
+    (ucs               . #x2EE6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED SALT")
+    (ucs               . #x2EE7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SIMPLIFIED WHEAT")
+    (ucs               . #x2EE8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL SIMPLIFIED YELLOW")
+    (ucs               . #x2EE9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED FROG")
+    (ucs               . #x2EEA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL J-SIMPLIFIED EVEN")
+    (ucs               . #x2EEB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED EVEN")
+    (ucs               . #x2EEC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL J-SIMPLIFIED TOOTH")
+    (ucs               . #x2EED)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED TOOTH")
+    (ucs               . #x2EEE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL J-SIMPLIFIED DRAGON")
+    (ucs               . #x2EEF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED DRAGON")
+    (ucs               . #x2EF0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL TURTLE")
+    (ucs               . #x2EF1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL J-SIMPLIFIED TURTLE")
+    (ucs               . #x2EF2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CJK RADICAL C-SIMPLIFIED TURTLE")
+    (ucs               . #x2EF3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9F9F)
+    ))
diff --git a/lisp/utf-2000/u02F00-Kangxi-Radicals.el b/lisp/utf-2000/u02F00-Kangxi-Radicals.el
new file mode 100644 (file)
index 0000000..f4dacd8
--- /dev/null
@@ -0,0 +1,1925 @@
+(define-char
+  '((name              . "KANGXI RADICAL ONE")
+    (ucs               . #x2F00)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x4E00)
+    (chinese-cns11643-1 #x27 #x21)     ; \e$(G'!\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LINE")
+    (ucs               . #x2F01)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x4E28)
+    (chinese-cns11643-1 #x27 #x22)     ; \e$(G'"\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DOT")
+    (ucs               . #x2F02)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x4E36)
+    (chinese-cns11643-1 #x27 #x23)     ; \e$(G'#\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SLASH")
+    (ucs               . #x2F03)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x4E3F)
+    (chinese-cns11643-1 #x27 #x24)     ; \e$(G'$\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SECOND")
+    (ucs               . #x2F04)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x4E59)
+    (chinese-cns11643-1 #x27 #x25)     ; \e$(G'%\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HOOK")
+    (ucs               . #x2F05)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x4E85)
+    (chinese-cns11643-1 #x27 #x26)     ; \e$(G'&\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TWO")
+    (ucs               . #x2F06)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x4E8C)
+    (chinese-cns11643-1 #x27 #x27)     ; \e$(G''\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LID")
+    (ucs               . #x2F07)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x4EA0)
+    (chinese-cns11643-1 #x27 #x28)     ; \e$(G'(\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MAN")
+    (ucs               . #x2F08)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x4EBA)
+    (chinese-cns11643-1 #x27 #x29)     ; \e$(G')\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LEGS")
+    (ucs               . #x2F09)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x513F)
+    (chinese-cns11643-1 #x27 #x2A)     ; \e$(G'*\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL ENTER")
+    (ucs               . #x2F0A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5165)
+    (chinese-cns11643-1 #x27 #x2B)     ; \e$(G'+\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL EIGHT")
+    (ucs               . #x2F0B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x516B)
+    (chinese-cns11643-1 #x27 #x2C)     ; \e$(G',\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DOWN BOX")
+    (ucs               . #x2F0C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5182)
+    (chinese-cns11643-1 #x27 #x2D)     ; \e$(G'-\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL COVER")
+    (ucs               . #x2F0D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5196)
+    (chinese-cns11643-1 #x27 #x2E)     ; \e$(G'.\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL ICE")
+    (ucs               . #x2F0E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x51AB)
+    (chinese-cns11643-1 #x27 #x2F)     ; \e$(G'/\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TABLE")
+    (ucs               . #x2F0F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x51E0)
+    (chinese-cns11643-1 #x27 #x30)     ; \e$(G'0\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL OPEN BOX")
+    (ucs               . #x2F10)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x51F5)
+    (chinese-cns11643-1 #x27 #x31)     ; \e$(G'1\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL KNIFE")
+    (ucs               . #x2F11)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5200)
+    (chinese-cns11643-1 #x27 #x32)     ; \e$(G'2\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL POWER")
+    (ucs               . #x2F12)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x529B)
+    (chinese-cns11643-1 #x27 #x33)     ; \e$(G'3\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WRAP")
+    (ucs               . #x2F13)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x52F9)
+    (chinese-cns11643-1 #x27 #x34)     ; \e$(G'4\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SPOON")
+    (ucs               . #x2F14)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5315)
+    (chinese-cns11643-1 #x27 #x35)     ; \e$(G'5\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL RIGHT OPEN BOX")
+    (ucs               . #x2F15)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x531A)
+    (chinese-cns11643-1 #x27 #x36)     ; \e$(G'6\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HIDING ENCLOSURE")
+    (ucs               . #x2F16)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5338)
+    (chinese-cns11643-1 #x27 #x37)     ; \e$(G'7\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TEN")
+    (ucs               . #x2F17)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5341)
+    (chinese-cns11643-1 #x27 #x38)     ; \e$(G'8\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DIVINATION")
+    (ucs               . #x2F18)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x535C)
+    (chinese-cns11643-1 #x27 #x39)     ; \e$(G'9\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SEAL")
+    (ucs               . #x2F19)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5369)
+    (chinese-cns11643-1 #x27 #x3A)     ; \e$(G':\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CLIFF")
+    (ucs               . #x2F1A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5382)
+    (chinese-cns11643-1 #x27 #x3B)     ; \e$(G';\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL PRIVATE")
+    (ucs               . #x2F1B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x53B6)
+    (chinese-cns11643-1 #x27 #x3C)     ; \e$(G'<\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL AGAIN")
+    (ucs               . #x2F1C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x53C8)
+    (chinese-cns11643-1 #x27 #x3D)     ; \e$(G'=\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MOUTH")
+    (ucs               . #x2F1D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x53E3)
+    (chinese-cns11643-1 #x27 #x3E)     ; \e$(G'>\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL ENCLOSURE")
+    (ucs               . #x2F1E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x56D7)
+    (chinese-cns11643-1 #x27 #x3F)     ; \e$(G'?\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL EARTH")
+    (ucs               . #x2F1F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x571F)
+    (chinese-cns11643-1 #x27 #x40)     ; \e$(G'@\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SCHOLAR")
+    (ucs               . #x2F20)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x58EB)
+    (chinese-cns11643-1 #x27 #x41)     ; \e$(G'A\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL GO")
+    (ucs               . #x2F21)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5902)
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL GO SLOWLY")
+    (ucs               . #x2F22)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x590A)
+    (chinese-cns11643-1 #x27 #x42)     ; \e$(G'B\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL EVENING")
+    (ucs               . #x2F23)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5915)
+    (chinese-cns11643-1 #x27 #x43)     ; \e$(G'C\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BIG")
+    (ucs               . #x2F24)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5927)
+    (chinese-cns11643-1 #x27 #x44)     ; \e$(G'D\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WOMAN")
+    (ucs               . #x2F25)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5973)
+    (chinese-cns11643-1 #x27 #x45)     ; \e$(G'E\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CHILD")
+    (ucs               . #x2F26)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5B50)
+    (chinese-cns11643-1 #x27 #x46)     ; \e$(G'F\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL ROOF")
+    (ucs               . #x2F27)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5B80)
+    (chinese-cns11643-1 #x27 #x47)     ; \e$(G'G\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL INCH")
+    (ucs               . #x2F28)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5BF8)
+    (chinese-cns11643-1 #x27 #x48)     ; \e$(G'H\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SMALL")
+    (ucs               . #x2F29)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5C0F)
+    (chinese-cns11643-1 #x27 #x49)     ; \e$(G'I\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LAME")
+    (ucs               . #x2F2A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5C22)
+    (chinese-cns11643-1 #x27 #x4A)     ; \e$(G'J\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CORPSE")
+    (ucs               . #x2F2B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5C38)
+    (chinese-cns11643-1 #x27 #x4B)     ; \e$(G'K\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SPROUT")
+    (ucs               . #x2F2C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5C6E)
+    (chinese-cns11643-1 #x27 #x4C)     ; \e$(G'L\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MOUNTAIN")
+    (ucs               . #x2F2D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5C71)
+    (chinese-cns11643-1 #x27 #x4D)     ; \e$(G'M\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL RIVER")
+    (ucs               . #x2F2E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5DDB)
+    (chinese-cns11643-1 #x27 #x4E)     ; \e$(G'N\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WORK")
+    (ucs               . #x2F2F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5DE5)
+    (chinese-cns11643-1 #x27 #x4F)     ; \e$(G'O\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL ONESELF")
+    (ucs               . #x2F30)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5DF1)
+    (chinese-cns11643-1 #x27 #x50)     ; \e$(G'P\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TURBAN")
+    (ucs               . #x2F31)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5DFE)
+    (chinese-cns11643-1 #x27 #x51)     ; \e$(G'Q\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DRY")
+    (ucs               . #x2F32)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5E72)
+    (chinese-cns11643-1 #x27 #x52)     ; \e$(G'R\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SHORT THREAD")
+    (ucs               . #x2F33)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5E7A)
+    (chinese-cns11643-1 #x27 #x53)     ; \e$(G'S\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DOTTED CLIFF")
+    (ucs               . #x2F34)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5E7F)
+    (chinese-cns11643-1 #x27 #x54)     ; \e$(G'T\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LONG STRIDE")
+    (ucs               . #x2F35)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5EF4)
+    (chinese-cns11643-1 #x27 #x55)     ; \e$(G'U\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TWO HANDS")
+    (ucs               . #x2F36)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5EFE)
+    (chinese-cns11643-1 #x27 #x56)     ; \e$(G'V\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SHOOT")
+    (ucs               . #x2F37)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5F0B)
+    (chinese-cns11643-1 #x27 #x57)     ; \e$(G'W\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BOW")
+    (ucs               . #x2F38)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5F13)
+    (chinese-cns11643-1 #x27 #x58)     ; \e$(G'X\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SNOUT")
+    (ucs               . #x2F39)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5F50)
+    (chinese-cns11643-1 #x27 #x59)     ; \e$(G'Y\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BRISTLE")
+    (ucs               . #x2F3A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5F61)
+    (chinese-cns11643-1 #x27 #x5A)     ; \e$(G'Z\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL STEP")
+    (ucs               . #x2F3B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5F73)
+    (chinese-cns11643-1 #x27 #x5B)     ; \e$(G'[\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HEART")
+    (ucs               . #x2F3C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x5FC3)
+    (chinese-cns11643-1 #x27 #x5C)     ; \e$(G'\\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HALBERD")
+    (ucs               . #x2F3D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6208)
+    (chinese-cns11643-1 #x27 #x5D)     ; \e$(G']\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DOOR")
+    (ucs               . #x2F3E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6236)
+    (chinese-cns11643-1 #x27 #x5E)     ; \e$(G'^\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HAND")
+    (ucs               . #x2F3F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x624B)
+    (chinese-cns11643-1 #x27 #x5F)     ; \e$(G'_\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BRANCH")
+    (ucs               . #x2F40)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x652F)
+    (chinese-cns11643-1 #x27 #x60)     ; \e$(G'`\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL RAP")
+    (ucs               . #x2F41)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6534)
+    (chinese-cns11643-1 #x27 #x61)     ; \e$(G'a\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SCRIPT")
+    (ucs               . #x2F42)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6587)
+    (chinese-cns11643-1 #x27 #x62)     ; \e$(G'b\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DIPPER")
+    (ucs               . #x2F43)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6597)
+    (chinese-cns11643-1 #x27 #x63)     ; \e$(G'c\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL AXE")
+    (ucs               . #x2F44)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x65A4)
+    (chinese-cns11643-1 #x27 #x64)     ; \e$(G'd\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SQUARE")
+    (ucs               . #x2F45)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x65B9)
+    (chinese-cns11643-1 #x27 #x65)     ; \e$(G'e\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL NOT")
+    (ucs               . #x2F46)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x65E0)
+    (chinese-cns11643-1 #x27 #x66)     ; \e$(G'f\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SUN")
+    (ucs               . #x2F47)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x65E5)
+    (chinese-cns11643-1 #x27 #x67)     ; \e$(G'g\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SAY")
+    (ucs               . #x2F48)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x66F0)
+    (chinese-cns11643-1 #x27 #x68)     ; \e$(G'h\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MOON")
+    (ucs               . #x2F49)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6708)
+    (chinese-cns11643-1 #x27 #x69)     ; \e$(G'i\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TREE")
+    (ucs               . #x2F4A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6728)
+    (chinese-cns11643-1 #x27 #x6A)     ; \e$(G'j\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LACK")
+    (ucs               . #x2F4B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6B20)
+    (chinese-cns11643-1 #x27 #x6B)     ; \e$(G'k\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL STOP")
+    (ucs               . #x2F4C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6B62)
+    (chinese-cns11643-1 #x27 #x6C)     ; \e$(G'l\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DEATH")
+    (ucs               . #x2F4D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6B79)
+    (chinese-cns11643-1 #x27 #x6D)     ; \e$(G'm\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WEAPON")
+    (ucs               . #x2F4E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6BB3)
+    (chinese-cns11643-1 #x27 #x6E)     ; \e$(G'n\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DO NOT")
+    (ucs               . #x2F4F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6BCB)
+    (chinese-cns11643-1 #x27 #x6F)     ; \e$(G'o\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL COMPARE")
+    (ucs               . #x2F50)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6BD4)
+    (chinese-cns11643-1 #x27 #x70)     ; \e$(G'p\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FUR")
+    (ucs               . #x2F51)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6BDB)
+    (chinese-cns11643-1 #x27 #x71)     ; \e$(G'q\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CLAN")
+    (ucs               . #x2F52)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6C0F)
+    (chinese-cns11643-1 #x27 #x72)     ; \e$(G'r\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL STEAM")
+    (ucs               . #x2F53)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6C14)
+    (chinese-cns11643-1 #x27 #x73)     ; \e$(G's\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WATER")
+    (ucs               . #x2F54)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x6C34)
+    (chinese-cns11643-1 #x27 #x74)     ; \e$(G't\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FIRE")
+    (ucs               . #x2F55)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x706B)
+    (chinese-cns11643-1 #x27 #x75)     ; \e$(G'u\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CLAW")
+    (ucs               . #x2F56)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x722A)
+    (chinese-cns11643-1 #x27 #x76)     ; \e$(G'v\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FATHER")
+    (ucs               . #x2F57)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7236)
+    (chinese-cns11643-1 #x27 #x77)     ; \e$(G'w\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DOUBLE X")
+    (ucs               . #x2F58)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x723B)
+    (chinese-cns11643-1 #x27 #x78)     ; \e$(G'x\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HALF TREE TRUNK")
+    (ucs               . #x2F59)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x723F)
+    (chinese-cns11643-1 #x27 #x79)     ; \e$(G'y\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SLICE")
+    (ucs               . #x2F5A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7247)
+    (chinese-cns11643-1 #x27 #x7A)     ; \e$(G'z\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FANG")
+    (ucs               . #x2F5B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7259)
+    (chinese-cns11643-1 #x27 #x7B)     ; \e$(G'{\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL COW")
+    (ucs               . #x2F5C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x725B)
+    (chinese-cns11643-1 #x27 #x7C)     ; \e$(G'|\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DOG")
+    (ucs               . #x2F5D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x72AC)
+    (chinese-cns11643-1 #x27 #x7D)     ; \e$(G'}\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL PROFOUND")
+    (ucs               . #x2F5E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7384)
+    (chinese-cns11643-1 #x27 #x7E)     ; \e$(G'~\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL JADE")
+    (ucs               . #x2F5F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7389)
+    (chinese-cns11643-1 #x28 #x21)     ; \e$(G(!\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MELON")
+    (ucs               . #x2F60)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x74DC)
+    (chinese-cns11643-1 #x28 #x22)     ; \e$(G("\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TILE")
+    (ucs               . #x2F61)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x74E6)
+    (chinese-cns11643-1 #x28 #x23)     ; \e$(G(#\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SWEET")
+    (ucs               . #x2F62)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7518)
+    (chinese-cns11643-1 #x28 #x24)     ; \e$(G($\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LIFE")
+    (ucs               . #x2F63)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x751F)
+    (chinese-cns11643-1 #x28 #x25)     ; \e$(G(%\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL USE")
+    (ucs               . #x2F64)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7528)
+    (chinese-cns11643-1 #x28 #x26)     ; \e$(G(&\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FIELD")
+    (ucs               . #x2F65)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7530)
+    (chinese-cns11643-1 #x28 #x27)     ; \e$(G('\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BOLT OF CLOTH")
+    (ucs               . #x2F66)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x758B)
+    (chinese-cns11643-1 #x28 #x28)     ; \e$(G((\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SICKNESS")
+    (ucs               . #x2F67)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7592)
+    (chinese-cns11643-1 #x28 #x29)     ; \e$(G()\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DOTTED TENT")
+    (ucs               . #x2F68)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7676)
+    (chinese-cns11643-1 #x28 #x2A)     ; \e$(G(*\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WHITE")
+    (ucs               . #x2F69)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x767D)
+    (chinese-cns11643-1 #x28 #x2B)     ; \e$(G(+\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SKIN")
+    (ucs               . #x2F6A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x76AE)
+    (chinese-cns11643-1 #x28 #x2C)     ; \e$(G(,\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DISH")
+    (ucs               . #x2F6B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x76BF)
+    (chinese-cns11643-1 #x28 #x2D)     ; \e$(G(-\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL EYE")
+    (ucs               . #x2F6C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x76EE)
+    (chinese-cns11643-1 #x28 #x2E)     ; \e$(G(.\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SPEAR")
+    (ucs               . #x2F6D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x77DB)
+    (chinese-cns11643-1 #x28 #x2F)     ; \e$(G(/\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL ARROW")
+    (ucs               . #x2F6E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x77E2)
+    (chinese-cns11643-1 #x28 #x30)     ; \e$(G(0\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL STONE")
+    (ucs               . #x2F6F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x77F3)
+    (chinese-cns11643-1 #x28 #x31)     ; \e$(G(1\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SPIRIT")
+    (ucs               . #x2F70)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x793A)
+    (chinese-cns11643-1 #x28 #x32)     ; \e$(G(2\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TRACK")
+    (ucs               . #x2F71)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x79B8)
+    (chinese-cns11643-1 #x28 #x33)     ; \e$(G(3\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL GRAIN")
+    (ucs               . #x2F72)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x79BE)
+    (chinese-cns11643-1 #x28 #x34)     ; \e$(G(4\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CAVE")
+    (ucs               . #x2F73)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7A74)
+    (chinese-cns11643-1 #x28 #x35)     ; \e$(G(5\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL STAND")
+    (ucs               . #x2F74)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7ACB)
+    (chinese-cns11643-1 #x28 #x36)     ; \e$(G(6\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BAMBOO")
+    (ucs               . #x2F75)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7AF9)
+    (chinese-cns11643-1 #x28 #x37)     ; \e$(G(7\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL RICE")
+    (ucs               . #x2F76)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7C73)
+    (chinese-cns11643-1 #x28 #x38)     ; \e$(G(8\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SILK")
+    (ucs               . #x2F77)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7CF8)
+    (chinese-cns11643-1 #x28 #x39)     ; \e$(G(9\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL JAR")
+    (ucs               . #x2F78)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7F36)
+    (chinese-cns11643-1 #x28 #x3A)     ; \e$(G(:\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL NET")
+    (ucs               . #x2F79)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7F51)
+    (chinese-cns11643-1 #x28 #x3B)     ; \e$(G(;\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SHEEP")
+    (ucs               . #x2F7A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7F8A)
+    (chinese-cns11643-1 #x28 #x3C)     ; \e$(G(<\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FEATHER")
+    (ucs               . #x2F7B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x7FBD)
+    (chinese-cns11643-1 #x28 #x3D)     ; \e$(G(=\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL OLD")
+    (ucs               . #x2F7C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8001)
+    (chinese-cns11643-1 #x28 #x3E)     ; \e$(G(>\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL AND")
+    (ucs               . #x2F7D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x800C)
+    (chinese-cns11643-1 #x28 #x3F)     ; \e$(G(?\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL PLOW")
+    (ucs               . #x2F7E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8012)
+    (chinese-cns11643-1 #x28 #x40)     ; \e$(G(@\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL EAR")
+    (ucs               . #x2F7F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8033)
+    (chinese-cns11643-1 #x28 #x41)     ; \e$(G(A\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BRUSH")
+    (ucs               . #x2F80)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x807F)
+    (chinese-cns11643-1 #x28 #x42)     ; \e$(G(B\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MEAT")
+    (ucs               . #x2F81)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8089)
+    (chinese-cns11643-1 #x28 #x43)     ; \e$(G(C\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MINISTER")
+    (ucs               . #x2F82)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x81E3)
+    (chinese-cns11643-1 #x28 #x44)     ; \e$(G(D\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SELF")
+    (ucs               . #x2F83)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x81EA)
+    (chinese-cns11643-1 #x28 #x45)     ; \e$(G(E\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL ARRIVE")
+    (ucs               . #x2F84)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x81F3)
+    (chinese-cns11643-1 #x28 #x46)     ; \e$(G(F\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MORTAR")
+    (ucs               . #x2F85)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x81FC)
+    (chinese-cns11643-1 #x28 #x47)     ; \e$(G(G\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TONGUE")
+    (ucs               . #x2F86)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x820C)
+    (chinese-cns11643-1 #x28 #x48)     ; \e$(G(H\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL OPPOSE")
+    (ucs               . #x2F87)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x821B)
+    (chinese-cns11643-1 #x28 #x49)     ; \e$(G(I\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BOAT")
+    (ucs               . #x2F88)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x821F)
+    (chinese-cns11643-1 #x28 #x4A)     ; \e$(G(J\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL STOPPING")
+    (ucs               . #x2F89)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x826E)
+    (chinese-cns11643-1 #x28 #x4B)     ; \e$(G(K\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL COLOR")
+    (ucs               . #x2F8A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8272)
+    (chinese-cns11643-1 #x28 #x4C)     ; \e$(G(L\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL GRASS")
+    (ucs               . #x2F8B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8278)
+    (chinese-cns11643-1 #x28 #x4D)     ; \e$(G(M\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TIGER")
+    (ucs               . #x2F8C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x864D)
+    (chinese-cns11643-1 #x28 #x4E)     ; \e$(G(N\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL INSECT")
+    (ucs               . #x2F8D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x866B)
+    (chinese-cns11643-1 #x28 #x4F)     ; \e$(G(O\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BLOOD")
+    (ucs               . #x2F8E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8840)
+    (chinese-cns11643-1 #x28 #x50)     ; \e$(G(P\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WALK ENCLOSURE")
+    (ucs               . #x2F8F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x884C)
+    (chinese-cns11643-1 #x28 #x51)     ; \e$(G(Q\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CLOTHES")
+    (ucs               . #x2F90)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8863)
+    (chinese-cns11643-1 #x28 #x52)     ; \e$(G(R\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WEST")
+    (ucs               . #x2F91)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x897E)
+    (chinese-cns11643-1 #x28 #x53)     ; \e$(G(S\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SEE")
+    (ucs               . #x2F92)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x898B)
+    (chinese-cns11643-1 #x28 #x54)     ; \e$(G(T\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HORN")
+    (ucs               . #x2F93)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x89D2)
+    (chinese-cns11643-1 #x28 #x55)     ; \e$(G(U\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SPEECH")
+    (ucs               . #x2F94)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8A00)
+    (chinese-cns11643-1 #x28 #x56)     ; \e$(G(V\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL VALLEY")
+    (ucs               . #x2F95)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8C37)
+    (chinese-cns11643-1 #x28 #x57)     ; \e$(G(W\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BEAN")
+    (ucs               . #x2F96)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8C46)
+    (chinese-cns11643-1 #x28 #x58)     ; \e$(G(X\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL PIG")
+    (ucs               . #x2F97)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8C55)
+    (chinese-cns11643-1 #x28 #x59)     ; \e$(G(Y\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BADGER")
+    (ucs               . #x2F98)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8C78)
+    (chinese-cns11643-1 #x28 #x5A)     ; \e$(G(Z\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SHELL")
+    (ucs               . #x2F99)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8C9D)
+    (chinese-cns11643-1 #x28 #x5B)     ; \e$(G([\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL RED")
+    (ucs               . #x2F9A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8D64)
+    (chinese-cns11643-1 #x28 #x5C)     ; \e$(G(\\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL RUN")
+    (ucs               . #x2F9B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8D70)
+    (chinese-cns11643-1 #x28 #x5D)     ; \e$(G(]\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FOOT")
+    (ucs               . #x2F9C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8DB3)
+    (chinese-cns11643-1 #x28 #x5E)     ; \e$(G(^\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BODY")
+    (ucs               . #x2F9D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8EAB)
+    (chinese-cns11643-1 #x28 #x5F)     ; \e$(G(_\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CART")
+    (ucs               . #x2F9E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8ECA)
+    (chinese-cns11643-1 #x28 #x60)     ; \e$(G(`\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BITTER")
+    (ucs               . #x2F9F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8F9B)
+    (chinese-cns11643-1 #x28 #x61)     ; \e$(G(a\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MORNING")
+    (ucs               . #x2FA0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8FB0)
+    (chinese-cns11643-1 #x28 #x62)     ; \e$(G(b\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WALK")
+    (ucs               . #x2FA1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x8FB5)
+    (chinese-cns11643-1 #x28 #x63)     ; \e$(G(c\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CITY")
+    (ucs               . #x2FA2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9091)
+    (chinese-cns11643-1 #x28 #x64)     ; \e$(G(d\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WINE")
+    (ucs               . #x2FA3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9149)
+    (chinese-cns11643-1 #x28 #x65)     ; \e$(G(e\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DISTINGUISH")
+    (ucs               . #x2FA4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x91C6)
+    (chinese-cns11643-1 #x28 #x66)     ; \e$(G(f\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL VILLAGE")
+    (ucs               . #x2FA5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x91CC)
+    (chinese-cns11643-1 #x28 #x67)     ; \e$(G(g\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL GOLD")
+    (ucs               . #x2FA6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x91D1)
+    (chinese-cns11643-1 #x28 #x68)     ; \e$(G(h\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LONG")
+    (ucs               . #x2FA7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9577)
+    (chinese-cns11643-1 #x28 #x69)     ; \e$(G(i\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL GATE")
+    (ucs               . #x2FA8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9580)
+    (chinese-cns11643-1 #x28 #x6A)     ; \e$(G(j\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MOUND")
+    (ucs               . #x2FA9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x961C)
+    (chinese-cns11643-1 #x28 #x6B)     ; \e$(G(k\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SLAVE")
+    (ucs               . #x2FAA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x96B6)
+    (chinese-cns11643-1 #x28 #x6C)     ; \e$(G(l\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SHORT TAILED BIRD")
+    (ucs               . #x2FAB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x96B9)
+    (chinese-cns11643-1 #x28 #x6D)     ; \e$(G(m\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL RAIN")
+    (ucs               . #x2FAC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x96E8)
+    (chinese-cns11643-1 #x28 #x6E)     ; \e$(G(n\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BLUE")
+    (ucs               . #x2FAD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9751)
+    (chinese-cns11643-1 #x28 #x6F)     ; \e$(G(o\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WRONG")
+    (ucs               . #x2FAE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x975E)
+    (chinese-cns11643-1 #x28 #x70)     ; \e$(G(p\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FACE")
+    (ucs               . #x2FAF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9762)
+    (chinese-cns11643-1 #x28 #x71)     ; \e$(G(q\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LEATHER")
+    (ucs               . #x2FB0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9769)
+    (chinese-cns11643-1 #x28 #x72)     ; \e$(G(r\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TANNED LEATHER")
+    (ucs               . #x2FB1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x97CB)
+    (chinese-cns11643-1 #x28 #x73)     ; \e$(G(s\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LEEK")
+    (ucs               . #x2FB2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x97ED)
+    (chinese-cns11643-1 #x28 #x74)     ; \e$(G(t\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SOUND")
+    (ucs               . #x2FB3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x97F3)
+    (chinese-cns11643-1 #x28 #x75)     ; \e$(G(u\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL LEAF")
+    (ucs               . #x2FB4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9801)
+    (chinese-cns11643-1 #x28 #x76)     ; \e$(G(v\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WIND")
+    (ucs               . #x2FB5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x98A8)
+    (chinese-cns11643-1 #x28 #x77)     ; \e$(G(w\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FLY")
+    (ucs               . #x2FB6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x98DB)
+    (chinese-cns11643-1 #x28 #x78)     ; \e$(G(x\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL EAT")
+    (ucs               . #x2FB7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x98DF)
+    (chinese-cns11643-1 #x28 #x79)     ; \e$(G(y\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HEAD")
+    (ucs               . #x2FB8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9996)
+    (chinese-cns11643-1 #x28 #x7A)     ; \e$(G(z\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FRAGRANT")
+    (ucs               . #x2FB9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9999)
+    (chinese-cns11643-1 #x28 #x7B)     ; \e$(G({\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HORSE")
+    (ucs               . #x2FBA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x99AC)
+    (chinese-cns11643-1 #x28 #x7C)     ; \e$(G(|\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BONE")
+    (ucs               . #x2FBB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9AA8)
+    (chinese-cns11643-1 #x28 #x7D)     ; \e$(G(}\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TALL")
+    (ucs               . #x2FBC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9AD8)
+    (chinese-cns11643-1 #x28 #x7E)     ; \e$(G(~\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HAIR")
+    (ucs               . #x2FBD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9ADF)
+    (chinese-cns11643-1 #x29 #x21)     ; \e$(G)!\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FIGHT")
+    (ucs               . #x2FBE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9B25)
+    (chinese-cns11643-1 #x29 #x22)     ; \e$(G)"\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SACRIFICIAL WINE")
+    (ucs               . #x2FBF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9B2F)
+    (chinese-cns11643-1 #x29 #x23)     ; \e$(G)#\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL CAULDRON")
+    (ucs               . #x2FC0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9B32)
+    (chinese-cns11643-1 #x29 #x24)     ; \e$(G)$\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL GHOST")
+    (ucs               . #x2FC1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9B3C)
+    (chinese-cns11643-1 #x29 #x25)     ; \e$(G)%\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FISH")
+    (ucs               . #x2FC2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9B5A)
+    (chinese-cns11643-1 #x29 #x26)     ; \e$(G)&\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BIRD")
+    (ucs               . #x2FC3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9CE5)
+    (chinese-cns11643-1 #x29 #x27)     ; \e$(G)'\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL SALT")
+    (ucs               . #x2FC4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9E75)
+    (chinese-cns11643-1 #x29 #x28)     ; \e$(G)(\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DEER")
+    (ucs               . #x2FC5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9E7F)
+    (chinese-cns11643-1 #x29 #x29)     ; \e$(G))\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL WHEAT")
+    (ucs               . #x2FC6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9EA5)
+    (chinese-cns11643-1 #x29 #x2A)     ; \e$(G)*\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL HEMP")
+    (ucs               . #x2FC7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9EBB)
+    (chinese-cns11643-1 #x29 #x2B)     ; \e$(G)+\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL YELLOW")
+    (ucs               . #x2FC8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9EC3)
+    (chinese-cns11643-1 #x29 #x2C)     ; \e$(G),\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL MILLET")
+    (ucs               . #x2FC9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9ECD)
+    (chinese-cns11643-1 #x29 #x2D)     ; \e$(G)-\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL BLACK")
+    (ucs               . #x2FCA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9ED1)
+    (chinese-cns11643-1 #x29 #x2E)     ; \e$(G).\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL EMBROIDERY")
+    (ucs               . #x2FCB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9EF9)
+    (chinese-cns11643-1 #x29 #x2F)     ; \e$(G)/\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FROG")
+    (ucs               . #x2FCC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9EFD)
+    (chinese-cns11643-1 #x29 #x30)     ; \e$(G)0\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TRIPOD")
+    (ucs               . #x2FCD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9F0E)
+    (chinese-cns11643-1 #x29 #x31)     ; \e$(G)1\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DRUM")
+    (ucs               . #x2FCE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9F13)
+    (chinese-cns11643-1 #x29 #x32)     ; \e$(G)2\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL RAT")
+    (ucs               . #x2FCF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9F20)
+    (chinese-cns11643-1 #x29 #x33)     ; \e$(G)3\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL NOSE")
+    (ucs               . #x2FD0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9F3B)
+    (chinese-cns11643-1 #x29 #x34)     ; \e$(G)4\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL EVEN")
+    (ucs               . #x2FD1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9F4A)
+    (chinese-cns11643-1 #x29 #x35)     ; \e$(G)5\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TOOTH")
+    (ucs               . #x2FD2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9F52)
+    (chinese-cns11643-1 #x29 #x36)     ; \e$(G)6\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL DRAGON")
+    (ucs               . #x2FD3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9F8D)
+    (chinese-cns11643-1 #x29 #x37)     ; \e$(G)7\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL TURTLE")
+    (ucs               . #x2FD4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9F9C)
+    (chinese-cns11643-1 #x29 #x38)     ; \e$(G)8\e(B
+    ))
+(define-char
+  '((name              . "KANGXI RADICAL FLUTE")
+    (ucs               . #x2FD5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x9FA0)
+    (chinese-cns11643-1 #x29 #x39)     ; \e$(G)9\e(B
+    ))
diff --git a/lisp/utf-2000/u02FF0-Ideographic-Description-Characters.el b/lisp/utf-2000/u02FF0-Ideographic-Description-Characters.el
new file mode 100644 (file)
index 0000000..194d9bc
--- /dev/null
@@ -0,0 +1,84 @@
+(define-char
+  '((name              . "IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT")
+    (ucs               . #x2FF0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW")
+    (ucs               . #x2FF1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT")
+    (ucs               . #x2FF2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW")
+    (ucs               . #x2FF3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND")
+    (ucs               . #x2FF4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE")
+    (ucs               . #x2FF5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW")
+    (ucs               . #x2FF6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT")
+    (ucs               . #x2FF7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT")
+    (ucs               . #x2FF8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT")
+    (ucs               . #x2FF9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT")
+    (ucs               . #x2FFA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID")
+    (ucs               . #x2FFB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u03000-CJK-Symbols-and-Punctuation.el b/lisp/utf-2000/u03000-CJK-Symbols-and-Punctuation.el
new file mode 100644 (file)
index 0000000..0d53285
--- /dev/null
@@ -0,0 +1,555 @@
+(define-char
+  '((name              . "IDEOGRAPHIC SPACE")
+    (ucs               . #x3000)
+    (general-category  separator space) ; Normative Category
+    (bidi-category     . "WS")
+    (mirrored          . nil)
+    (->decomposition   wide #x0020)
+    (japanese-jisx0208-1978    #x21 #x21)      ; \e$(@!!\e(B
+    (chinese-gb2312            #x21 #x21)      ; \e$(A!!\e(B
+    (japanese-jisx0208         #x21 #x21)      ; \e$(B!!\e(B
+    (korean-ksc5601            #x21 #x21)      ; \e$(C!!\e(B
+    (chinese-cns11643-1                #x21 #x21)      ; \e$(G!!\e(B
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC COMMA")
+    (ucs               . #x3001)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x22)      ; \e$(@!"\e(B
+    (chinese-gb2312            #x21 #x22)      ; \e$(A!"\e(B
+    (japanese-jisx0208         #x21 #x22)      ; \e$(B!"\e(B
+    (korean-ksc5601            #x21 #x22)      ; \e$(C!"\e(B
+    (chinese-cns11643-1                #x21 #x23)      ; \e$(G!#\e(B
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC FULL STOP")
+    (ucs               . #x3002)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x23)      ; \e$(@!#\e(B
+    (chinese-gb2312            #x21 #x23)      ; \e$(A!#\e(B
+    (japanese-jisx0208         #x21 #x23)      ; \e$(B!#\e(B
+    (korean-ksc5601            #x21 #x23)      ; \e$(C!#\e(B
+    (chinese-cns11643-1                #x21 #x24)      ; \e$(G!$\e(B
+    ))
+(define-char
+  '((name              . "DITTO MARK")
+    (ucs               . #x3003)
+    (general-category  punctuation other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x37)      ; \e$(@!7\e(B
+    (chinese-gb2312            #x21 #x28)      ; \e$(A!(\e(B
+    (japanese-jisx0208         #x21 #x37)      ; \e$(B!7\e(B
+    (korean-ksc5601            #x21 #x28)      ; \e$(C!(\e(B
+    (chinese-cns11643-1                #x21 #x71)      ; \e$(G!q\e(B
+    ))
+(define-char
+  '((name              . "JAPANESE INDUSTRIAL STANDARD SYMBOL")
+    (ucs               . #x3004)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ITERATION MARK")
+    (ucs               . #x3005)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x39)      ; \e$(@!9\e(B
+    (chinese-gb2312            #x21 #x29)      ; \e$(A!)\e(B
+    (japanese-jisx0208         #x21 #x39)      ; \e$(B!9\e(B
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC CLOSING MARK")
+    (ucs               . #x3006)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x3A)      ; \e$(@!:\e(B
+    (japanese-jisx0208         #x21 #x3A)      ; \e$(B!:\e(B
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC NUMBER ZERO")
+    (ucs               . #x3007)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 0)
+    (japanese-jisx0208-1978    #x21 #x3B)      ; \e$(@!;\e(B
+    (japanese-jisx0208         #x21 #x3B)      ; \e$(B!;\e(B
+    ))
+(define-char
+  '((name              . "LEFT ANGLE BRACKET")
+    (ucs               . #x3008)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x52)      ; \e$(@!R\e(B
+    (chinese-gb2312            #x21 #x34)      ; \e$(A!4\e(B
+    (japanese-jisx0208         #x21 #x52)      ; \e$(B!R\e(B
+    (korean-ksc5601            #x21 #x34)      ; \e$(C!4\e(B
+    (chinese-cns11643-1                #x21 #x52)      ; \e$(G!R\e(B
+    ))
+(define-char
+  '((name              . "RIGHT ANGLE BRACKET")
+    (ucs               . #x3009)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x53)      ; \e$(@!S\e(B
+    (chinese-gb2312            #x21 #x35)      ; \e$(A!5\e(B
+    (japanese-jisx0208         #x21 #x53)      ; \e$(B!S\e(B
+    (korean-ksc5601            #x21 #x35)      ; \e$(C!5\e(B
+    (chinese-cns11643-1                #x21 #x53)      ; \e$(G!S\e(B
+    ))
+(define-char
+  '((name              . "LEFT DOUBLE ANGLE BRACKET")
+    (ucs               . #x300A)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x54)      ; \e$(@!T\e(B
+    (chinese-gb2312            #x21 #x36)      ; \e$(A!6\e(B
+    (japanese-jisx0208         #x21 #x54)      ; \e$(B!T\e(B
+    (korean-ksc5601            #x21 #x36)      ; \e$(C!6\e(B
+    (chinese-cns11643-1                #x21 #x4E)      ; \e$(G!N\e(B
+    ))
+(define-char
+  '((name              . "RIGHT DOUBLE ANGLE BRACKET")
+    (ucs               . #x300B)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x55)      ; \e$(@!U\e(B
+    (chinese-gb2312            #x21 #x37)      ; \e$(A!7\e(B
+    (japanese-jisx0208         #x21 #x55)      ; \e$(B!U\e(B
+    (korean-ksc5601            #x21 #x37)      ; \e$(C!7\e(B
+    (chinese-cns11643-1                #x21 #x4F)      ; \e$(G!O\e(B
+    ))
+(define-char
+  '((name              . "LEFT CORNER BRACKET")
+    (ucs               . #x300C)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x56)      ; \e$(@!V\e(B
+    (chinese-gb2312            #x21 #x38)      ; \e$(A!8\e(B
+    (japanese-jisx0208         #x21 #x56)      ; \e$(B!V\e(B
+    (korean-ksc5601            #x21 #x38)      ; \e$(C!8\e(B
+    (chinese-cns11643-1                #x21 #x56)      ; \e$(G!V\e(B
+    ))
+(define-char
+  '((name              . "RIGHT CORNER BRACKET")
+    (ucs               . #x300D)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x57)      ; \e$(@!W\e(B
+    (chinese-gb2312            #x21 #x39)      ; \e$(A!9\e(B
+    (japanese-jisx0208         #x21 #x57)      ; \e$(B!W\e(B
+    (korean-ksc5601            #x21 #x39)      ; \e$(C!9\e(B
+    (chinese-cns11643-1                #x21 #x57)      ; \e$(G!W\e(B
+    ))
+(define-char
+  '((name              . "LEFT WHITE CORNER BRACKET")
+    (ucs               . #x300E)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x58)      ; \e$(@!X\e(B
+    (chinese-gb2312            #x21 #x3A)      ; \e$(A!:\e(B
+    (japanese-jisx0208         #x21 #x58)      ; \e$(B!X\e(B
+    (korean-ksc5601            #x21 #x3A)      ; \e$(C!:\e(B
+    (chinese-cns11643-1                #x21 #x5A)      ; \e$(G!Z\e(B
+    ))
+(define-char
+  '((name              . "RIGHT WHITE CORNER BRACKET")
+    (ucs               . #x300F)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x59)      ; \e$(@!Y\e(B
+    (chinese-gb2312            #x21 #x3B)      ; \e$(A!;\e(B
+    (japanese-jisx0208         #x21 #x59)      ; \e$(B!Y\e(B
+    (korean-ksc5601            #x21 #x3B)      ; \e$(C!;\e(B
+    (chinese-cns11643-1                #x21 #x5B)      ; \e$(G![\e(B
+    ))
+(define-char
+  '((name              . "LEFT BLACK LENTICULAR BRACKET")
+    (ucs               . #x3010)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x5A)      ; \e$(@!Z\e(B
+    (chinese-gb2312            #x21 #x3E)      ; \e$(A!>\e(B
+    (japanese-jisx0208         #x21 #x5A)      ; \e$(B!Z\e(B
+    (korean-ksc5601            #x21 #x3C)      ; \e$(C!<\e(B
+    (chinese-cns11643-1                #x21 #x4A)      ; \e$(G!J\e(B
+    ))
+(define-char
+  '((name              . "RIGHT BLACK LENTICULAR BRACKET")
+    (ucs               . #x3011)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x5B)      ; \e$(@![\e(B
+    (chinese-gb2312            #x21 #x3F)      ; \e$(A!?\e(B
+    (japanese-jisx0208         #x21 #x5B)      ; \e$(B![\e(B
+    (korean-ksc5601            #x21 #x3D)      ; \e$(C!=\e(B
+    (chinese-cns11643-1                #x21 #x4B)      ; \e$(G!K\e(B
+    ))
+(define-char
+  '((name              . "POSTAL MARK")
+    (ucs               . #x3012)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x29)      ; \e$(@")\e(B
+    (japanese-jisx0208         #x22 #x29)      ; \e$(B")\e(B
+    (chinese-cns11643-1                #x22 #x65)      ; \e$(G"e\e(B
+    ))
+(define-char
+  '((name              . "GETA MARK")
+    (ucs               . #x3013)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x22 #x2E)      ; \e$(@".\e(B
+    (chinese-gb2312            #x21 #x7E)      ; \e$(A!~\e(B
+    (japanese-jisx0208         #x22 #x2E)      ; \e$(B".\e(B
+    (korean-ksc5601            #x21 #x6B)      ; \e$(C!k\e(B
+    ))
+(define-char
+  '((name              . "LEFT TORTOISE SHELL BRACKET")
+    (ucs               . #x3014)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x4C)      ; \e$(@!L\e(B
+    (chinese-gb2312            #x21 #x32)      ; \e$(A!2\e(B
+    (japanese-jisx0208         #x21 #x4C)      ; \e$(B!L\e(B
+    (korean-ksc5601            #x21 #x32)      ; \e$(C!2\e(B
+    (chinese-cns11643-1                #x21 #x46)      ; \e$(G!F\e(B
+    ))
+(define-char
+  '((name              . "RIGHT TORTOISE SHELL BRACKET")
+    (ucs               . #x3015)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (japanese-jisx0208-1978    #x21 #x4D)      ; \e$(@!M\e(B
+    (chinese-gb2312            #x21 #x33)      ; \e$(A!3\e(B
+    (japanese-jisx0208         #x21 #x4D)      ; \e$(B!M\e(B
+    (korean-ksc5601            #x21 #x33)      ; \e$(C!3\e(B
+    (chinese-cns11643-1                #x21 #x47)      ; \e$(G!G\e(B
+    ))
+(define-char
+  '((name              . "LEFT WHITE LENTICULAR BRACKET")
+    (ucs               . #x3016)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x3C)      ; \e$(A!<\e(B
+    ))
+(define-char
+  '((name              . "RIGHT WHITE LENTICULAR BRACKET")
+    (ucs               . #x3017)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    (chinese-gb2312    #x21 #x3D)      ; \e$(A!=\e(B
+    ))
+(define-char
+  '((name              . "LEFT WHITE TORTOISE SHELL BRACKET")
+    (ucs               . #x3018)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "RIGHT WHITE TORTOISE SHELL BRACKET")
+    (ucs               . #x3019)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "LEFT WHITE SQUARE BRACKET")
+    (ucs               . #x301A)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "RIGHT WHITE SQUARE BRACKET")
+    (ucs               . #x301B)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . t)
+    ))
+(define-char
+  '((name              . "WAVE DASH")
+    (ucs               . #x301C)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x41)      ; \e$(@!A\e(B
+    (japanese-jisx0208         #x21 #x41)      ; \e$(B!A\e(B
+    (chinese-cns11643-1                #x22 #x44)      ; \e$(G"D\e(B
+    ))
+(define-char
+  '((name              . "REVERSED DOUBLE PRIME QUOTATION MARK")
+    (ucs               . #x301D)
+    (general-category  punctuation open) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x21 #x68)     ; \e$(G!h\e(B
+    ))
+(define-char
+  '((name              . "DOUBLE PRIME QUOTATION MARK")
+    (ucs               . #x301E)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (chinese-cns11643-1 #x21 #x69)     ; \e$(G!i\e(B
+    ))
+(define-char
+  '((name              . "LOW DOUBLE PRIME QUOTATION MARK")
+    (ucs               . #x301F)
+    (general-category  punctuation close) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "POSTAL MARK FACE")
+    (ucs               . #x3020)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL ONE")
+    (ucs               . #x3021)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 1)
+    (chinese-cns11643-1 #x24 #x35)     ; \e$(G$5\e(B
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL TWO")
+    (ucs               . #x3022)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 2)
+    (chinese-cns11643-1 #x24 #x36)     ; \e$(G$6\e(B
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL THREE")
+    (ucs               . #x3023)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 3)
+    (chinese-cns11643-1 #x24 #x37)     ; \e$(G$7\e(B
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL FOUR")
+    (ucs               . #x3024)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 4)
+    (chinese-cns11643-1 #x24 #x38)     ; \e$(G$8\e(B
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL FIVE")
+    (ucs               . #x3025)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 5)
+    (chinese-cns11643-1 #x24 #x39)     ; \e$(G$9\e(B
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL SIX")
+    (ucs               . #x3026)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 6)
+    (chinese-cns11643-1 #x24 #x3A)     ; \e$(G$:\e(B
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL SEVEN")
+    (ucs               . #x3027)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 7)
+    (chinese-cns11643-1 #x24 #x3B)     ; \e$(G$;\e(B
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL EIGHT")
+    (ucs               . #x3028)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 8)
+    (chinese-cns11643-1 #x24 #x3C)     ; \e$(G$<\e(B
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL NINE")
+    (ucs               . #x3029)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 9)
+    (chinese-cns11643-1 #x24 #x3D)     ; \e$(G$=\e(B
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC LEVEL TONE MARK")
+    (ucs               . #x302A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC RISING TONE MARK")
+    (ucs               . #x302B)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC DEPARTING TONE MARK")
+    (ucs               . #x302C)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ENTERING TONE MARK")
+    (ucs               . #x302D)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL SINGLE DOT TONE MARK")
+    (ucs               . #x302E)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGUL DOUBLE DOT TONE MARK")
+    (ucs               . #x302F)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "WAVY DASH")
+    (ucs               . #x3030)
+    (general-category  punctuation dash) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "VERTICAL KANA REPEAT MARK")
+    (ucs               . #x3031)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "VERTICAL KANA REPEAT WITH VOICED SOUND MARK")
+    (ucs               . #x3032)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "VERTICAL KANA REPEAT MARK UPPER HALF")
+    (ucs               . #x3033)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF")
+    (ucs               . #x3034)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "VERTICAL KANA REPEAT MARK LOWER HALF")
+    (ucs               . #x3035)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "CIRCLED POSTAL MARK")
+    (ucs               . #x3036)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x3012)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL")
+    (ucs               . #x3037)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL TEN")
+    (ucs               . #x3038)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    (->decomposition   compat #x5341)
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL TWENTY")
+    (ucs               . #x3039)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 20)
+    (->decomposition   compat #x5344)
+    ))
+(define-char
+  '((name              . "HANGZHOU NUMERAL THIRTY")
+    (ucs               . #x303A)
+    (general-category  number letter) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 30)
+    (->decomposition   compat #x5345)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC VARIATION INDICATOR")
+    (ucs               . #x303E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC HALF FILL SPACE")
+    (ucs               . #x303F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u03040-Hiragana.el b/lisp/utf-2000/u03040-Hiragana.el
new file mode 100644 (file)
index 0000000..b50dc67
--- /dev/null
@@ -0,0 +1,999 @@
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL A")
+    (ucs               . #x3041)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x21)      ; \e$(@$!\e(B
+    (chinese-gb2312            #x24 #x21)      ; \e$(A$!\e(B
+    (japanese-jisx0208         #x24 #x21)      ; \e$(B$!\e(B
+    (korean-ksc5601            #x2A #x21)      ; \e$(C*!\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER A")
+    (ucs               . #x3042)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x22)      ; \e$(@$"\e(B
+    (chinese-gb2312            #x24 #x22)      ; \e$(A$"\e(B
+    (japanese-jisx0208         #x24 #x22)      ; \e$(B$"\e(B
+    (korean-ksc5601            #x2A #x22)      ; \e$(C*"\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL I")
+    (ucs               . #x3043)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x23)      ; \e$(@$#\e(B
+    (chinese-gb2312            #x24 #x23)      ; \e$(A$#\e(B
+    (japanese-jisx0208         #x24 #x23)      ; \e$(B$#\e(B
+    (korean-ksc5601            #x2A #x23)      ; \e$(C*#\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER I")
+    (ucs               . #x3044)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x24)      ; \e$(@$$\e(B
+    (chinese-gb2312            #x24 #x24)      ; \e$(A$$\e(B
+    (japanese-jisx0208         #x24 #x24)      ; \e$(B$$\e(B
+    (korean-ksc5601            #x2A #x24)      ; \e$(C*$\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL U")
+    (ucs               . #x3045)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x25)      ; \e$(@$%\e(B
+    (chinese-gb2312            #x24 #x25)      ; \e$(A$%\e(B
+    (japanese-jisx0208         #x24 #x25)      ; \e$(B$%\e(B
+    (korean-ksc5601            #x2A #x25)      ; \e$(C*%\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER U")
+    (ucs               . #x3046)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x26)      ; \e$(@$&\e(B
+    (chinese-gb2312            #x24 #x26)      ; \e$(A$&\e(B
+    (japanese-jisx0208         #x24 #x26)      ; \e$(B$&\e(B
+    (korean-ksc5601            #x2A #x26)      ; \e$(C*&\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL E")
+    (ucs               . #x3047)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x27)      ; \e$(@$'\e(B
+    (chinese-gb2312            #x24 #x27)      ; \e$(A$'\e(B
+    (japanese-jisx0208         #x24 #x27)      ; \e$(B$'\e(B
+    (korean-ksc5601            #x2A #x27)      ; \e$(C*'\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER E")
+    (ucs               . #x3048)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x28)      ; \e$(@$(\e(B
+    (chinese-gb2312            #x24 #x28)      ; \e$(A$(\e(B
+    (japanese-jisx0208         #x24 #x28)      ; \e$(B$(\e(B
+    (korean-ksc5601            #x2A #x28)      ; \e$(C*(\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL O")
+    (ucs               . #x3049)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x29)      ; \e$(@$)\e(B
+    (chinese-gb2312            #x24 #x29)      ; \e$(A$)\e(B
+    (japanese-jisx0208         #x24 #x29)      ; \e$(B$)\e(B
+    (korean-ksc5601            #x2A #x29)      ; \e$(C*)\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER O")
+    (ucs               . #x304A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x2A)      ; \e$(@$*\e(B
+    (chinese-gb2312            #x24 #x2A)      ; \e$(A$*\e(B
+    (japanese-jisx0208         #x24 #x2A)      ; \e$(B$*\e(B
+    (korean-ksc5601            #x2A #x2A)      ; \e$(C**\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER KA")
+    (ucs               . #x304B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x2B)      ; \e$(@$+\e(B
+    (chinese-gb2312            #x24 #x2B)      ; \e$(A$+\e(B
+    (japanese-jisx0208         #x24 #x2B)      ; \e$(B$+\e(B
+    (korean-ksc5601            #x2A #x2B)      ; \e$(C*+\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER GA")
+    (ucs               . #x304C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x304B #x3099)
+    (japanese-jisx0208-1978    #x24 #x2C)      ; \e$(@$,\e(B
+    (chinese-gb2312            #x24 #x2C)      ; \e$(A$,\e(B
+    (japanese-jisx0208         #x24 #x2C)      ; \e$(B$,\e(B
+    (korean-ksc5601            #x2A #x2C)      ; \e$(C*,\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER KI")
+    (ucs               . #x304D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x2D)      ; \e$(@$-\e(B
+    (chinese-gb2312            #x24 #x2D)      ; \e$(A$-\e(B
+    (japanese-jisx0208         #x24 #x2D)      ; \e$(B$-\e(B
+    (korean-ksc5601            #x2A #x2D)      ; \e$(C*-\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER GI")
+    (ucs               . #x304E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x304D #x3099)
+    (japanese-jisx0208-1978    #x24 #x2E)      ; \e$(@$.\e(B
+    (chinese-gb2312            #x24 #x2E)      ; \e$(A$.\e(B
+    (japanese-jisx0208         #x24 #x2E)      ; \e$(B$.\e(B
+    (korean-ksc5601            #x2A #x2E)      ; \e$(C*.\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER KU")
+    (ucs               . #x304F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x2F)      ; \e$(@$/\e(B
+    (chinese-gb2312            #x24 #x2F)      ; \e$(A$/\e(B
+    (japanese-jisx0208         #x24 #x2F)      ; \e$(B$/\e(B
+    (korean-ksc5601            #x2A #x2F)      ; \e$(C*/\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER GU")
+    (ucs               . #x3050)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x304F #x3099)
+    (japanese-jisx0208-1978    #x24 #x30)      ; \e$(@$0\e(B
+    (chinese-gb2312            #x24 #x30)      ; \e$(A$0\e(B
+    (japanese-jisx0208         #x24 #x30)      ; \e$(B$0\e(B
+    (korean-ksc5601            #x2A #x30)      ; \e$(C*0\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER KE")
+    (ucs               . #x3051)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x31)      ; \e$(@$1\e(B
+    (chinese-gb2312            #x24 #x31)      ; \e$(A$1\e(B
+    (japanese-jisx0208         #x24 #x31)      ; \e$(B$1\e(B
+    (korean-ksc5601            #x2A #x31)      ; \e$(C*1\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER GE")
+    (ucs               . #x3052)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3051 #x3099)
+    (japanese-jisx0208-1978    #x24 #x32)      ; \e$(@$2\e(B
+    (chinese-gb2312            #x24 #x32)      ; \e$(A$2\e(B
+    (japanese-jisx0208         #x24 #x32)      ; \e$(B$2\e(B
+    (korean-ksc5601            #x2A #x32)      ; \e$(C*2\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER KO")
+    (ucs               . #x3053)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x33)      ; \e$(@$3\e(B
+    (chinese-gb2312            #x24 #x33)      ; \e$(A$3\e(B
+    (japanese-jisx0208         #x24 #x33)      ; \e$(B$3\e(B
+    (korean-ksc5601            #x2A #x33)      ; \e$(C*3\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER GO")
+    (ucs               . #x3054)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3053 #x3099)
+    (japanese-jisx0208-1978    #x24 #x34)      ; \e$(@$4\e(B
+    (chinese-gb2312            #x24 #x34)      ; \e$(A$4\e(B
+    (japanese-jisx0208         #x24 #x34)      ; \e$(B$4\e(B
+    (korean-ksc5601            #x2A #x34)      ; \e$(C*4\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SA")
+    (ucs               . #x3055)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x35)      ; \e$(@$5\e(B
+    (chinese-gb2312            #x24 #x35)      ; \e$(A$5\e(B
+    (japanese-jisx0208         #x24 #x35)      ; \e$(B$5\e(B
+    (korean-ksc5601            #x2A #x35)      ; \e$(C*5\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER ZA")
+    (ucs               . #x3056)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3055 #x3099)
+    (japanese-jisx0208-1978    #x24 #x36)      ; \e$(@$6\e(B
+    (chinese-gb2312            #x24 #x36)      ; \e$(A$6\e(B
+    (japanese-jisx0208         #x24 #x36)      ; \e$(B$6\e(B
+    (korean-ksc5601            #x2A #x36)      ; \e$(C*6\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SI")
+    (ucs               . #x3057)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x37)      ; \e$(@$7\e(B
+    (chinese-gb2312            #x24 #x37)      ; \e$(A$7\e(B
+    (japanese-jisx0208         #x24 #x37)      ; \e$(B$7\e(B
+    (korean-ksc5601            #x2A #x37)      ; \e$(C*7\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER ZI")
+    (ucs               . #x3058)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3057 #x3099)
+    (japanese-jisx0208-1978    #x24 #x38)      ; \e$(@$8\e(B
+    (chinese-gb2312            #x24 #x38)      ; \e$(A$8\e(B
+    (japanese-jisx0208         #x24 #x38)      ; \e$(B$8\e(B
+    (korean-ksc5601            #x2A #x38)      ; \e$(C*8\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SU")
+    (ucs               . #x3059)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x39)      ; \e$(@$9\e(B
+    (chinese-gb2312            #x24 #x39)      ; \e$(A$9\e(B
+    (japanese-jisx0208         #x24 #x39)      ; \e$(B$9\e(B
+    (korean-ksc5601            #x2A #x39)      ; \e$(C*9\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER ZU")
+    (ucs               . #x305A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3059 #x3099)
+    (japanese-jisx0208-1978    #x24 #x3A)      ; \e$(@$:\e(B
+    (chinese-gb2312            #x24 #x3A)      ; \e$(A$:\e(B
+    (japanese-jisx0208         #x24 #x3A)      ; \e$(B$:\e(B
+    (korean-ksc5601            #x2A #x3A)      ; \e$(C*:\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SE")
+    (ucs               . #x305B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x3B)      ; \e$(@$;\e(B
+    (chinese-gb2312            #x24 #x3B)      ; \e$(A$;\e(B
+    (japanese-jisx0208         #x24 #x3B)      ; \e$(B$;\e(B
+    (korean-ksc5601            #x2A #x3B)      ; \e$(C*;\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER ZE")
+    (ucs               . #x305C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x305B #x3099)
+    (japanese-jisx0208-1978    #x24 #x3C)      ; \e$(@$<\e(B
+    (chinese-gb2312            #x24 #x3C)      ; \e$(A$<\e(B
+    (japanese-jisx0208         #x24 #x3C)      ; \e$(B$<\e(B
+    (korean-ksc5601            #x2A #x3C)      ; \e$(C*<\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SO")
+    (ucs               . #x305D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x3D)      ; \e$(@$=\e(B
+    (chinese-gb2312            #x24 #x3D)      ; \e$(A$=\e(B
+    (japanese-jisx0208         #x24 #x3D)      ; \e$(B$=\e(B
+    (korean-ksc5601            #x2A #x3D)      ; \e$(C*=\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER ZO")
+    (ucs               . #x305E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x305D #x3099)
+    (japanese-jisx0208-1978    #x24 #x3E)      ; \e$(@$>\e(B
+    (chinese-gb2312            #x24 #x3E)      ; \e$(A$>\e(B
+    (japanese-jisx0208         #x24 #x3E)      ; \e$(B$>\e(B
+    (korean-ksc5601            #x2A #x3E)      ; \e$(C*>\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER TA")
+    (ucs               . #x305F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x3F)      ; \e$(@$?\e(B
+    (chinese-gb2312            #x24 #x3F)      ; \e$(A$?\e(B
+    (japanese-jisx0208         #x24 #x3F)      ; \e$(B$?\e(B
+    (korean-ksc5601            #x2A #x3F)      ; \e$(C*?\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER DA")
+    (ucs               . #x3060)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x305F #x3099)
+    (japanese-jisx0208-1978    #x24 #x40)      ; \e$(@$@\e(B
+    (chinese-gb2312            #x24 #x40)      ; \e$(A$@\e(B
+    (japanese-jisx0208         #x24 #x40)      ; \e$(B$@\e(B
+    (korean-ksc5601            #x2A #x40)      ; \e$(C*@\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER TI")
+    (ucs               . #x3061)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x41)      ; \e$(@$A\e(B
+    (chinese-gb2312            #x24 #x41)      ; \e$(A$A\e(B
+    (japanese-jisx0208         #x24 #x41)      ; \e$(B$A\e(B
+    (korean-ksc5601            #x2A #x41)      ; \e$(C*A\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER DI")
+    (ucs               . #x3062)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3061 #x3099)
+    (japanese-jisx0208-1978    #x24 #x42)      ; \e$(@$B\e(B
+    (chinese-gb2312            #x24 #x42)      ; \e$(A$B\e(B
+    (japanese-jisx0208         #x24 #x42)      ; \e$(B$B\e(B
+    (korean-ksc5601            #x2A #x42)      ; \e$(C*B\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL TU")
+    (ucs               . #x3063)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x43)      ; \e$(@$C\e(B
+    (chinese-gb2312            #x24 #x43)      ; \e$(A$C\e(B
+    (japanese-jisx0208         #x24 #x43)      ; \e$(B$C\e(B
+    (korean-ksc5601            #x2A #x43)      ; \e$(C*C\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER TU")
+    (ucs               . #x3064)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x44)      ; \e$(@$D\e(B
+    (chinese-gb2312            #x24 #x44)      ; \e$(A$D\e(B
+    (japanese-jisx0208         #x24 #x44)      ; \e$(B$D\e(B
+    (korean-ksc5601            #x2A #x44)      ; \e$(C*D\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER DU")
+    (ucs               . #x3065)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3064 #x3099)
+    (japanese-jisx0208-1978    #x24 #x45)      ; \e$(@$E\e(B
+    (chinese-gb2312            #x24 #x45)      ; \e$(A$E\e(B
+    (japanese-jisx0208         #x24 #x45)      ; \e$(B$E\e(B
+    (korean-ksc5601            #x2A #x45)      ; \e$(C*E\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER TE")
+    (ucs               . #x3066)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x46)      ; \e$(@$F\e(B
+    (chinese-gb2312            #x24 #x46)      ; \e$(A$F\e(B
+    (japanese-jisx0208         #x24 #x46)      ; \e$(B$F\e(B
+    (korean-ksc5601            #x2A #x46)      ; \e$(C*F\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER DE")
+    (ucs               . #x3067)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3066 #x3099)
+    (japanese-jisx0208-1978    #x24 #x47)      ; \e$(@$G\e(B
+    (chinese-gb2312            #x24 #x47)      ; \e$(A$G\e(B
+    (japanese-jisx0208         #x24 #x47)      ; \e$(B$G\e(B
+    (korean-ksc5601            #x2A #x47)      ; \e$(C*G\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER TO")
+    (ucs               . #x3068)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x48)      ; \e$(@$H\e(B
+    (chinese-gb2312            #x24 #x48)      ; \e$(A$H\e(B
+    (japanese-jisx0208         #x24 #x48)      ; \e$(B$H\e(B
+    (korean-ksc5601            #x2A #x48)      ; \e$(C*H\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER DO")
+    (ucs               . #x3069)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3068 #x3099)
+    (japanese-jisx0208-1978    #x24 #x49)      ; \e$(@$I\e(B
+    (chinese-gb2312            #x24 #x49)      ; \e$(A$I\e(B
+    (japanese-jisx0208         #x24 #x49)      ; \e$(B$I\e(B
+    (korean-ksc5601            #x2A #x49)      ; \e$(C*I\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER NA")
+    (ucs               . #x306A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x4A)      ; \e$(@$J\e(B
+    (chinese-gb2312            #x24 #x4A)      ; \e$(A$J\e(B
+    (japanese-jisx0208         #x24 #x4A)      ; \e$(B$J\e(B
+    (korean-ksc5601            #x2A #x4A)      ; \e$(C*J\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER NI")
+    (ucs               . #x306B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x4B)      ; \e$(@$K\e(B
+    (chinese-gb2312            #x24 #x4B)      ; \e$(A$K\e(B
+    (japanese-jisx0208         #x24 #x4B)      ; \e$(B$K\e(B
+    (korean-ksc5601            #x2A #x4B)      ; \e$(C*K\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER NU")
+    (ucs               . #x306C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x4C)      ; \e$(@$L\e(B
+    (chinese-gb2312            #x24 #x4C)      ; \e$(A$L\e(B
+    (japanese-jisx0208         #x24 #x4C)      ; \e$(B$L\e(B
+    (korean-ksc5601            #x2A #x4C)      ; \e$(C*L\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER NE")
+    (ucs               . #x306D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x4D)      ; \e$(@$M\e(B
+    (chinese-gb2312            #x24 #x4D)      ; \e$(A$M\e(B
+    (japanese-jisx0208         #x24 #x4D)      ; \e$(B$M\e(B
+    (korean-ksc5601            #x2A #x4D)      ; \e$(C*M\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER NO")
+    (ucs               . #x306E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x4E)      ; \e$(@$N\e(B
+    (chinese-gb2312            #x24 #x4E)      ; \e$(A$N\e(B
+    (japanese-jisx0208         #x24 #x4E)      ; \e$(B$N\e(B
+    (korean-ksc5601            #x2A #x4E)      ; \e$(C*N\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER HA")
+    (ucs               . #x306F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x4F)      ; \e$(@$O\e(B
+    (chinese-gb2312            #x24 #x4F)      ; \e$(A$O\e(B
+    (japanese-jisx0208         #x24 #x4F)      ; \e$(B$O\e(B
+    (korean-ksc5601            #x2A #x4F)      ; \e$(C*O\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER BA")
+    (ucs               . #x3070)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x306F #x3099)
+    (japanese-jisx0208-1978    #x24 #x50)      ; \e$(@$P\e(B
+    (chinese-gb2312            #x24 #x50)      ; \e$(A$P\e(B
+    (japanese-jisx0208         #x24 #x50)      ; \e$(B$P\e(B
+    (korean-ksc5601            #x2A #x50)      ; \e$(C*P\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER PA")
+    (ucs               . #x3071)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x306F #x309A)
+    (japanese-jisx0208-1978    #x24 #x51)      ; \e$(@$Q\e(B
+    (chinese-gb2312            #x24 #x51)      ; \e$(A$Q\e(B
+    (japanese-jisx0208         #x24 #x51)      ; \e$(B$Q\e(B
+    (korean-ksc5601            #x2A #x51)      ; \e$(C*Q\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER HI")
+    (ucs               . #x3072)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x52)      ; \e$(@$R\e(B
+    (chinese-gb2312            #x24 #x52)      ; \e$(A$R\e(B
+    (japanese-jisx0208         #x24 #x52)      ; \e$(B$R\e(B
+    (korean-ksc5601            #x2A #x52)      ; \e$(C*R\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER BI")
+    (ucs               . #x3073)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3072 #x3099)
+    (japanese-jisx0208-1978    #x24 #x53)      ; \e$(@$S\e(B
+    (chinese-gb2312            #x24 #x53)      ; \e$(A$S\e(B
+    (japanese-jisx0208         #x24 #x53)      ; \e$(B$S\e(B
+    (korean-ksc5601            #x2A #x53)      ; \e$(C*S\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER PI")
+    (ucs               . #x3074)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3072 #x309A)
+    (japanese-jisx0208-1978    #x24 #x54)      ; \e$(@$T\e(B
+    (chinese-gb2312            #x24 #x54)      ; \e$(A$T\e(B
+    (japanese-jisx0208         #x24 #x54)      ; \e$(B$T\e(B
+    (korean-ksc5601            #x2A #x54)      ; \e$(C*T\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER HU")
+    (ucs               . #x3075)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x55)      ; \e$(@$U\e(B
+    (chinese-gb2312            #x24 #x55)      ; \e$(A$U\e(B
+    (japanese-jisx0208         #x24 #x55)      ; \e$(B$U\e(B
+    (korean-ksc5601            #x2A #x55)      ; \e$(C*U\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER BU")
+    (ucs               . #x3076)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3075 #x3099)
+    (japanese-jisx0208-1978    #x24 #x56)      ; \e$(@$V\e(B
+    (chinese-gb2312            #x24 #x56)      ; \e$(A$V\e(B
+    (japanese-jisx0208         #x24 #x56)      ; \e$(B$V\e(B
+    (korean-ksc5601            #x2A #x56)      ; \e$(C*V\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER PU")
+    (ucs               . #x3077)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3075 #x309A)
+    (japanese-jisx0208-1978    #x24 #x57)      ; \e$(@$W\e(B
+    (chinese-gb2312            #x24 #x57)      ; \e$(A$W\e(B
+    (japanese-jisx0208         #x24 #x57)      ; \e$(B$W\e(B
+    (korean-ksc5601            #x2A #x57)      ; \e$(C*W\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER HE")
+    (ucs               . #x3078)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x58)      ; \e$(@$X\e(B
+    (chinese-gb2312            #x24 #x58)      ; \e$(A$X\e(B
+    (japanese-jisx0208         #x24 #x58)      ; \e$(B$X\e(B
+    (korean-ksc5601            #x2A #x58)      ; \e$(C*X\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER BE")
+    (ucs               . #x3079)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3078 #x3099)
+    (japanese-jisx0208-1978    #x24 #x59)      ; \e$(@$Y\e(B
+    (chinese-gb2312            #x24 #x59)      ; \e$(A$Y\e(B
+    (japanese-jisx0208         #x24 #x59)      ; \e$(B$Y\e(B
+    (korean-ksc5601            #x2A #x59)      ; \e$(C*Y\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER PE")
+    (ucs               . #x307A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3078 #x309A)
+    (japanese-jisx0208-1978    #x24 #x5A)      ; \e$(@$Z\e(B
+    (chinese-gb2312            #x24 #x5A)      ; \e$(A$Z\e(B
+    (japanese-jisx0208         #x24 #x5A)      ; \e$(B$Z\e(B
+    (korean-ksc5601            #x2A #x5A)      ; \e$(C*Z\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER HO")
+    (ucs               . #x307B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x5B)      ; \e$(@$[\e(B
+    (chinese-gb2312            #x24 #x5B)      ; \e$(A$[\e(B
+    (japanese-jisx0208         #x24 #x5B)      ; \e$(B$[\e(B
+    (korean-ksc5601            #x2A #x5B)      ; \e$(C*[\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER BO")
+    (ucs               . #x307C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x307B #x3099)
+    (japanese-jisx0208-1978    #x24 #x5C)      ; \e$(@$\\e(B
+    (chinese-gb2312            #x24 #x5C)      ; \e$(A$\\e(B
+    (japanese-jisx0208         #x24 #x5C)      ; \e$(B$\\e(B
+    (korean-ksc5601            #x2A #x5C)      ; \e$(C*\\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER PO")
+    (ucs               . #x307D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x307B #x309A)
+    (japanese-jisx0208-1978    #x24 #x5D)      ; \e$(@$]\e(B
+    (chinese-gb2312            #x24 #x5D)      ; \e$(A$]\e(B
+    (japanese-jisx0208         #x24 #x5D)      ; \e$(B$]\e(B
+    (korean-ksc5601            #x2A #x5D)      ; \e$(C*]\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER MA")
+    (ucs               . #x307E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x5E)      ; \e$(@$^\e(B
+    (chinese-gb2312            #x24 #x5E)      ; \e$(A$^\e(B
+    (japanese-jisx0208         #x24 #x5E)      ; \e$(B$^\e(B
+    (korean-ksc5601            #x2A #x5E)      ; \e$(C*^\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER MI")
+    (ucs               . #x307F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x5F)      ; \e$(@$_\e(B
+    (chinese-gb2312            #x24 #x5F)      ; \e$(A$_\e(B
+    (japanese-jisx0208         #x24 #x5F)      ; \e$(B$_\e(B
+    (korean-ksc5601            #x2A #x5F)      ; \e$(C*_\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER MU")
+    (ucs               . #x3080)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x60)      ; \e$(@$`\e(B
+    (chinese-gb2312            #x24 #x60)      ; \e$(A$`\e(B
+    (japanese-jisx0208         #x24 #x60)      ; \e$(B$`\e(B
+    (korean-ksc5601            #x2A #x60)      ; \e$(C*`\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER ME")
+    (ucs               . #x3081)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x61)      ; \e$(@$a\e(B
+    (chinese-gb2312            #x24 #x61)      ; \e$(A$a\e(B
+    (japanese-jisx0208         #x24 #x61)      ; \e$(B$a\e(B
+    (korean-ksc5601            #x2A #x61)      ; \e$(C*a\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER MO")
+    (ucs               . #x3082)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x62)      ; \e$(@$b\e(B
+    (chinese-gb2312            #x24 #x62)      ; \e$(A$b\e(B
+    (japanese-jisx0208         #x24 #x62)      ; \e$(B$b\e(B
+    (korean-ksc5601            #x2A #x62)      ; \e$(C*b\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL YA")
+    (ucs               . #x3083)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x63)      ; \e$(@$c\e(B
+    (chinese-gb2312            #x24 #x63)      ; \e$(A$c\e(B
+    (japanese-jisx0208         #x24 #x63)      ; \e$(B$c\e(B
+    (korean-ksc5601            #x2A #x63)      ; \e$(C*c\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER YA")
+    (ucs               . #x3084)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x64)      ; \e$(@$d\e(B
+    (chinese-gb2312            #x24 #x64)      ; \e$(A$d\e(B
+    (japanese-jisx0208         #x24 #x64)      ; \e$(B$d\e(B
+    (korean-ksc5601            #x2A #x64)      ; \e$(C*d\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL YU")
+    (ucs               . #x3085)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x65)      ; \e$(@$e\e(B
+    (chinese-gb2312            #x24 #x65)      ; \e$(A$e\e(B
+    (japanese-jisx0208         #x24 #x65)      ; \e$(B$e\e(B
+    (korean-ksc5601            #x2A #x65)      ; \e$(C*e\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER YU")
+    (ucs               . #x3086)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x66)      ; \e$(@$f\e(B
+    (chinese-gb2312            #x24 #x66)      ; \e$(A$f\e(B
+    (japanese-jisx0208         #x24 #x66)      ; \e$(B$f\e(B
+    (korean-ksc5601            #x2A #x66)      ; \e$(C*f\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL YO")
+    (ucs               . #x3087)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x67)      ; \e$(@$g\e(B
+    (chinese-gb2312            #x24 #x67)      ; \e$(A$g\e(B
+    (japanese-jisx0208         #x24 #x67)      ; \e$(B$g\e(B
+    (korean-ksc5601            #x2A #x67)      ; \e$(C*g\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER YO")
+    (ucs               . #x3088)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x68)      ; \e$(@$h\e(B
+    (chinese-gb2312            #x24 #x68)      ; \e$(A$h\e(B
+    (japanese-jisx0208         #x24 #x68)      ; \e$(B$h\e(B
+    (korean-ksc5601            #x2A #x68)      ; \e$(C*h\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER RA")
+    (ucs               . #x3089)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x69)      ; \e$(@$i\e(B
+    (chinese-gb2312            #x24 #x69)      ; \e$(A$i\e(B
+    (japanese-jisx0208         #x24 #x69)      ; \e$(B$i\e(B
+    (korean-ksc5601            #x2A #x69)      ; \e$(C*i\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER RI")
+    (ucs               . #x308A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x6A)      ; \e$(@$j\e(B
+    (chinese-gb2312            #x24 #x6A)      ; \e$(A$j\e(B
+    (japanese-jisx0208         #x24 #x6A)      ; \e$(B$j\e(B
+    (korean-ksc5601            #x2A #x6A)      ; \e$(C*j\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER RU")
+    (ucs               . #x308B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x6B)      ; \e$(@$k\e(B
+    (chinese-gb2312            #x24 #x6B)      ; \e$(A$k\e(B
+    (japanese-jisx0208         #x24 #x6B)      ; \e$(B$k\e(B
+    (korean-ksc5601            #x2A #x6B)      ; \e$(C*k\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER RE")
+    (ucs               . #x308C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x6C)      ; \e$(@$l\e(B
+    (chinese-gb2312            #x24 #x6C)      ; \e$(A$l\e(B
+    (japanese-jisx0208         #x24 #x6C)      ; \e$(B$l\e(B
+    (korean-ksc5601            #x2A #x6C)      ; \e$(C*l\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER RO")
+    (ucs               . #x308D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x6D)      ; \e$(@$m\e(B
+    (chinese-gb2312            #x24 #x6D)      ; \e$(A$m\e(B
+    (japanese-jisx0208         #x24 #x6D)      ; \e$(B$m\e(B
+    (korean-ksc5601            #x2A #x6D)      ; \e$(C*m\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER SMALL WA")
+    (ucs               . #x308E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x6E)      ; \e$(@$n\e(B
+    (chinese-gb2312            #x24 #x6E)      ; \e$(A$n\e(B
+    (japanese-jisx0208         #x24 #x6E)      ; \e$(B$n\e(B
+    (korean-ksc5601            #x2A #x6E)      ; \e$(C*n\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER WA")
+    (ucs               . #x308F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x6F)      ; \e$(@$o\e(B
+    (chinese-gb2312            #x24 #x6F)      ; \e$(A$o\e(B
+    (japanese-jisx0208         #x24 #x6F)      ; \e$(B$o\e(B
+    (korean-ksc5601            #x2A #x6F)      ; \e$(C*o\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER WI")
+    (ucs               . #x3090)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x70)      ; \e$(@$p\e(B
+    (chinese-gb2312            #x24 #x70)      ; \e$(A$p\e(B
+    (japanese-jisx0208         #x24 #x70)      ; \e$(B$p\e(B
+    (korean-ksc5601            #x2A #x70)      ; \e$(C*p\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER WE")
+    (ucs               . #x3091)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x71)      ; \e$(@$q\e(B
+    (chinese-gb2312            #x24 #x71)      ; \e$(A$q\e(B
+    (japanese-jisx0208         #x24 #x71)      ; \e$(B$q\e(B
+    (korean-ksc5601            #x2A #x71)      ; \e$(C*q\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER WO")
+    (ucs               . #x3092)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x72)      ; \e$(@$r\e(B
+    (chinese-gb2312            #x24 #x72)      ; \e$(A$r\e(B
+    (japanese-jisx0208         #x24 #x72)      ; \e$(B$r\e(B
+    (korean-ksc5601            #x2A #x72)      ; \e$(C*r\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER N")
+    (ucs               . #x3093)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x24 #x73)      ; \e$(@$s\e(B
+    (chinese-gb2312            #x24 #x73)      ; \e$(A$s\e(B
+    (japanese-jisx0208         #x24 #x73)      ; \e$(B$s\e(B
+    (korean-ksc5601            #x2A #x73)      ; \e$(C*s\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA LETTER VU")
+    (ucs               . #x3094)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x3046 #x3099)
+    ))
+(define-char
+  '((name              . "COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK")
+    (ucs               . #x3099)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name . "COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK")
+    (ucs               . #x309A)
+    (general-category  mark non-spacing) ; Normative Category
+    (bidi-category     . "NSM")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "KATAKANA-HIRAGANA VOICED SOUND MARK")
+    (ucs               . #x309B)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x3099)
+    (japanese-jisx0208-1978    #x21 #x2B)      ; \e$(@!+\e(B
+    (japanese-jisx0208         #x21 #x2B)      ; \e$(B!+\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK")
+    (ucs               . #x309C)
+    (general-category  symbol modifier) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (->decomposition   compat #x0020 #x309A)
+    (japanese-jisx0208-1978    #x21 #x2C)      ; \e$(@!,\e(B
+    (japanese-jisx0208         #x21 #x2C)      ; \e$(B!,\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA ITERATION MARK")
+    (ucs               . #x309D)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x35)      ; \e$(@!5\e(B
+    (japanese-jisx0208         #x21 #x35)      ; \e$(B!5\e(B
+    ))
+(define-char
+  '((name              . "HIRAGANA VOICED ITERATION MARK")
+    (ucs               . #x309E)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x309D #x3099)
+    (japanese-jisx0208-1978    #x21 #x36)      ; \e$(@!6\e(B
+    (japanese-jisx0208         #x21 #x36)      ; \e$(B!6\e(B
+    ))
diff --git a/lisp/utf-2000/u030A0-Katakana.el b/lisp/utf-2000/u030A0-Katakana.el
new file mode 100644 (file)
index 0000000..db81cca
--- /dev/null
@@ -0,0 +1,1042 @@
+(define-char
+  '((name              . "KATAKANA LETTER SMALL A")
+    (ucs               . #x30A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x21)      ; \e$(@%!\e(B
+    (chinese-gb2312            #x25 #x21)      ; \e$(A%!\e(B
+    (japanese-jisx0208         #x25 #x21)      ; \e$(B%!\e(B
+    (korean-ksc5601            #x2B #x21)      ; \e$(C+!\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER A")
+    (ucs               . #x30A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x22)      ; \e$(@%"\e(B
+    (chinese-gb2312            #x25 #x22)      ; \e$(A%"\e(B
+    (japanese-jisx0208         #x25 #x22)      ; \e$(B%"\e(B
+    (korean-ksc5601            #x2B #x22)      ; \e$(C+"\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL I")
+    (ucs               . #x30A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x23)      ; \e$(@%#\e(B
+    (chinese-gb2312            #x25 #x23)      ; \e$(A%#\e(B
+    (japanese-jisx0208         #x25 #x23)      ; \e$(B%#\e(B
+    (korean-ksc5601            #x2B #x23)      ; \e$(C+#\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER I")
+    (ucs               . #x30A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x24)      ; \e$(@%$\e(B
+    (chinese-gb2312            #x25 #x24)      ; \e$(A%$\e(B
+    (japanese-jisx0208         #x25 #x24)      ; \e$(B%$\e(B
+    (korean-ksc5601            #x2B #x24)      ; \e$(C+$\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL U")
+    (ucs               . #x30A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x25)      ; \e$(@%%\e(B
+    (chinese-gb2312            #x25 #x25)      ; \e$(A%%\e(B
+    (japanese-jisx0208         #x25 #x25)      ; \e$(B%%\e(B
+    (korean-ksc5601            #x2B #x25)      ; \e$(C+%\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER U")
+    (ucs               . #x30A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x26)      ; \e$(@%&\e(B
+    (chinese-gb2312            #x25 #x26)      ; \e$(A%&\e(B
+    (japanese-jisx0208         #x25 #x26)      ; \e$(B%&\e(B
+    (korean-ksc5601            #x2B #x26)      ; \e$(C+&\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL E")
+    (ucs               . #x30A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x27)      ; \e$(@%'\e(B
+    (chinese-gb2312            #x25 #x27)      ; \e$(A%'\e(B
+    (japanese-jisx0208         #x25 #x27)      ; \e$(B%'\e(B
+    (korean-ksc5601            #x2B #x27)      ; \e$(C+'\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER E")
+    (ucs               . #x30A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x28)      ; \e$(@%(\e(B
+    (chinese-gb2312            #x25 #x28)      ; \e$(A%(\e(B
+    (japanese-jisx0208         #x25 #x28)      ; \e$(B%(\e(B
+    (korean-ksc5601            #x2B #x28)      ; \e$(C+(\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL O")
+    (ucs               . #x30A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x29)      ; \e$(@%)\e(B
+    (chinese-gb2312            #x25 #x29)      ; \e$(A%)\e(B
+    (japanese-jisx0208         #x25 #x29)      ; \e$(B%)\e(B
+    (korean-ksc5601            #x2B #x29)      ; \e$(C+)\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER O")
+    (ucs               . #x30AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x2A)      ; \e$(@%*\e(B
+    (chinese-gb2312            #x25 #x2A)      ; \e$(A%*\e(B
+    (japanese-jisx0208         #x25 #x2A)      ; \e$(B%*\e(B
+    (korean-ksc5601            #x2B #x2A)      ; \e$(C+*\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER KA")
+    (ucs               . #x30AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x2B)      ; \e$(@%+\e(B
+    (chinese-gb2312            #x25 #x2B)      ; \e$(A%+\e(B
+    (japanese-jisx0208         #x25 #x2B)      ; \e$(B%+\e(B
+    (korean-ksc5601            #x2B #x2B)      ; \e$(C++\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER GA")
+    (ucs               . #x30AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30AB #x3099)
+    (japanese-jisx0208-1978    #x25 #x2C)      ; \e$(@%,\e(B
+    (chinese-gb2312            #x25 #x2C)      ; \e$(A%,\e(B
+    (japanese-jisx0208         #x25 #x2C)      ; \e$(B%,\e(B
+    (korean-ksc5601            #x2B #x2C)      ; \e$(C+,\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER KI")
+    (ucs               . #x30AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x2D)      ; \e$(@%-\e(B
+    (chinese-gb2312            #x25 #x2D)      ; \e$(A%-\e(B
+    (japanese-jisx0208         #x25 #x2D)      ; \e$(B%-\e(B
+    (korean-ksc5601            #x2B #x2D)      ; \e$(C+-\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER GI")
+    (ucs               . #x30AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30AD #x3099)
+    (japanese-jisx0208-1978    #x25 #x2E)      ; \e$(@%.\e(B
+    (chinese-gb2312            #x25 #x2E)      ; \e$(A%.\e(B
+    (japanese-jisx0208         #x25 #x2E)      ; \e$(B%.\e(B
+    (korean-ksc5601            #x2B #x2E)      ; \e$(C+.\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER KU")
+    (ucs               . #x30AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x2F)      ; \e$(@%/\e(B
+    (chinese-gb2312            #x25 #x2F)      ; \e$(A%/\e(B
+    (japanese-jisx0208         #x25 #x2F)      ; \e$(B%/\e(B
+    (korean-ksc5601            #x2B #x2F)      ; \e$(C+/\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER GU")
+    (ucs               . #x30B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30AF #x3099)
+    (japanese-jisx0208-1978    #x25 #x30)      ; \e$(@%0\e(B
+    (chinese-gb2312            #x25 #x30)      ; \e$(A%0\e(B
+    (japanese-jisx0208         #x25 #x30)      ; \e$(B%0\e(B
+    (korean-ksc5601            #x2B #x30)      ; \e$(C+0\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER KE")
+    (ucs               . #x30B1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x31)      ; \e$(@%1\e(B
+    (chinese-gb2312            #x25 #x31)      ; \e$(A%1\e(B
+    (japanese-jisx0208         #x25 #x31)      ; \e$(B%1\e(B
+    (korean-ksc5601            #x2B #x31)      ; \e$(C+1\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER GE")
+    (ucs               . #x30B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30B1 #x3099)
+    (japanese-jisx0208-1978    #x25 #x32)      ; \e$(@%2\e(B
+    (chinese-gb2312            #x25 #x32)      ; \e$(A%2\e(B
+    (japanese-jisx0208         #x25 #x32)      ; \e$(B%2\e(B
+    (korean-ksc5601            #x2B #x32)      ; \e$(C+2\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER KO")
+    (ucs               . #x30B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x33)      ; \e$(@%3\e(B
+    (chinese-gb2312            #x25 #x33)      ; \e$(A%3\e(B
+    (japanese-jisx0208         #x25 #x33)      ; \e$(B%3\e(B
+    (korean-ksc5601            #x2B #x33)      ; \e$(C+3\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER GO")
+    (ucs               . #x30B4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30B3 #x3099)
+    (japanese-jisx0208-1978    #x25 #x34)      ; \e$(@%4\e(B
+    (chinese-gb2312            #x25 #x34)      ; \e$(A%4\e(B
+    (japanese-jisx0208         #x25 #x34)      ; \e$(B%4\e(B
+    (korean-ksc5601            #x2B #x34)      ; \e$(C+4\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SA")
+    (ucs               . #x30B5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x35)      ; \e$(@%5\e(B
+    (chinese-gb2312            #x25 #x35)      ; \e$(A%5\e(B
+    (japanese-jisx0208         #x25 #x35)      ; \e$(B%5\e(B
+    (korean-ksc5601            #x2B #x35)      ; \e$(C+5\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER ZA")
+    (ucs               . #x30B6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30B5 #x3099)
+    (japanese-jisx0208-1978    #x25 #x36)      ; \e$(@%6\e(B
+    (chinese-gb2312            #x25 #x36)      ; \e$(A%6\e(B
+    (japanese-jisx0208         #x25 #x36)      ; \e$(B%6\e(B
+    (korean-ksc5601            #x2B #x36)      ; \e$(C+6\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SI")
+    (ucs               . #x30B7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x37)      ; \e$(@%7\e(B
+    (chinese-gb2312            #x25 #x37)      ; \e$(A%7\e(B
+    (japanese-jisx0208         #x25 #x37)      ; \e$(B%7\e(B
+    (korean-ksc5601            #x2B #x37)      ; \e$(C+7\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER ZI")
+    (ucs               . #x30B8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30B7 #x3099)
+    (japanese-jisx0208-1978    #x25 #x38)      ; \e$(@%8\e(B
+    (chinese-gb2312            #x25 #x38)      ; \e$(A%8\e(B
+    (japanese-jisx0208         #x25 #x38)      ; \e$(B%8\e(B
+    (korean-ksc5601            #x2B #x38)      ; \e$(C+8\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SU")
+    (ucs               . #x30B9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x39)      ; \e$(@%9\e(B
+    (chinese-gb2312            #x25 #x39)      ; \e$(A%9\e(B
+    (japanese-jisx0208         #x25 #x39)      ; \e$(B%9\e(B
+    (korean-ksc5601            #x2B #x39)      ; \e$(C+9\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER ZU")
+    (ucs               . #x30BA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30B9 #x3099)
+    (japanese-jisx0208-1978    #x25 #x3A)      ; \e$(@%:\e(B
+    (chinese-gb2312            #x25 #x3A)      ; \e$(A%:\e(B
+    (japanese-jisx0208         #x25 #x3A)      ; \e$(B%:\e(B
+    (korean-ksc5601            #x2B #x3A)      ; \e$(C+:\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SE")
+    (ucs               . #x30BB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x3B)      ; \e$(@%;\e(B
+    (chinese-gb2312            #x25 #x3B)      ; \e$(A%;\e(B
+    (japanese-jisx0208         #x25 #x3B)      ; \e$(B%;\e(B
+    (korean-ksc5601            #x2B #x3B)      ; \e$(C+;\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER ZE")
+    (ucs               . #x30BC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30BB #x3099)
+    (japanese-jisx0208-1978    #x25 #x3C)      ; \e$(@%<\e(B
+    (chinese-gb2312            #x25 #x3C)      ; \e$(A%<\e(B
+    (japanese-jisx0208         #x25 #x3C)      ; \e$(B%<\e(B
+    (korean-ksc5601            #x2B #x3C)      ; \e$(C+<\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SO")
+    (ucs               . #x30BD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x3D)      ; \e$(@%=\e(B
+    (chinese-gb2312            #x25 #x3D)      ; \e$(A%=\e(B
+    (japanese-jisx0208         #x25 #x3D)      ; \e$(B%=\e(B
+    (korean-ksc5601            #x2B #x3D)      ; \e$(C+=\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER ZO")
+    (ucs               . #x30BE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30BD #x3099)
+    (japanese-jisx0208-1978    #x25 #x3E)      ; \e$(@%>\e(B
+    (chinese-gb2312            #x25 #x3E)      ; \e$(A%>\e(B
+    (japanese-jisx0208         #x25 #x3E)      ; \e$(B%>\e(B
+    (korean-ksc5601            #x2B #x3E)      ; \e$(C+>\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER TA")
+    (ucs               . #x30BF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x3F)      ; \e$(@%?\e(B
+    (chinese-gb2312            #x25 #x3F)      ; \e$(A%?\e(B
+    (japanese-jisx0208         #x25 #x3F)      ; \e$(B%?\e(B
+    (korean-ksc5601            #x2B #x3F)      ; \e$(C+?\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER DA")
+    (ucs               . #x30C0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30BF #x3099)
+    (japanese-jisx0208-1978    #x25 #x40)      ; \e$(@%@\e(B
+    (chinese-gb2312            #x25 #x40)      ; \e$(A%@\e(B
+    (japanese-jisx0208         #x25 #x40)      ; \e$(B%@\e(B
+    (korean-ksc5601            #x2B #x40)      ; \e$(C+@\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER TI")
+    (ucs               . #x30C1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x41)      ; \e$(@%A\e(B
+    (chinese-gb2312            #x25 #x41)      ; \e$(A%A\e(B
+    (japanese-jisx0208         #x25 #x41)      ; \e$(B%A\e(B
+    (korean-ksc5601            #x2B #x41)      ; \e$(C+A\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER DI")
+    (ucs               . #x30C2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30C1 #x3099)
+    (japanese-jisx0208-1978    #x25 #x42)      ; \e$(@%B\e(B
+    (chinese-gb2312            #x25 #x42)      ; \e$(A%B\e(B
+    (japanese-jisx0208         #x25 #x42)      ; \e$(B%B\e(B
+    (korean-ksc5601            #x2B #x42)      ; \e$(C+B\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL TU")
+    (ucs               . #x30C3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x43)      ; \e$(@%C\e(B
+    (chinese-gb2312            #x25 #x43)      ; \e$(A%C\e(B
+    (japanese-jisx0208         #x25 #x43)      ; \e$(B%C\e(B
+    (korean-ksc5601            #x2B #x43)      ; \e$(C+C\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER TU")
+    (ucs               . #x30C4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x44)      ; \e$(@%D\e(B
+    (chinese-gb2312            #x25 #x44)      ; \e$(A%D\e(B
+    (japanese-jisx0208         #x25 #x44)      ; \e$(B%D\e(B
+    (korean-ksc5601            #x2B #x44)      ; \e$(C+D\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER DU")
+    (ucs               . #x30C5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30C4 #x3099)
+    (japanese-jisx0208-1978    #x25 #x45)      ; \e$(@%E\e(B
+    (chinese-gb2312            #x25 #x45)      ; \e$(A%E\e(B
+    (japanese-jisx0208         #x25 #x45)      ; \e$(B%E\e(B
+    (korean-ksc5601            #x2B #x45)      ; \e$(C+E\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER TE")
+    (ucs               . #x30C6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x46)      ; \e$(@%F\e(B
+    (chinese-gb2312            #x25 #x46)      ; \e$(A%F\e(B
+    (japanese-jisx0208         #x25 #x46)      ; \e$(B%F\e(B
+    (korean-ksc5601            #x2B #x46)      ; \e$(C+F\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER DE")
+    (ucs               . #x30C7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30C6 #x3099)
+    (japanese-jisx0208-1978    #x25 #x47)      ; \e$(@%G\e(B
+    (chinese-gb2312            #x25 #x47)      ; \e$(A%G\e(B
+    (japanese-jisx0208         #x25 #x47)      ; \e$(B%G\e(B
+    (korean-ksc5601            #x2B #x47)      ; \e$(C+G\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER TO")
+    (ucs               . #x30C8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x48)      ; \e$(@%H\e(B
+    (chinese-gb2312            #x25 #x48)      ; \e$(A%H\e(B
+    (japanese-jisx0208         #x25 #x48)      ; \e$(B%H\e(B
+    (korean-ksc5601            #x2B #x48)      ; \e$(C+H\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER DO")
+    (ucs               . #x30C9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30C8 #x3099)
+    (japanese-jisx0208-1978    #x25 #x49)      ; \e$(@%I\e(B
+    (chinese-gb2312            #x25 #x49)      ; \e$(A%I\e(B
+    (japanese-jisx0208         #x25 #x49)      ; \e$(B%I\e(B
+    (korean-ksc5601            #x2B #x49)      ; \e$(C+I\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER NA")
+    (ucs               . #x30CA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x4A)      ; \e$(@%J\e(B
+    (chinese-gb2312            #x25 #x4A)      ; \e$(A%J\e(B
+    (japanese-jisx0208         #x25 #x4A)      ; \e$(B%J\e(B
+    (korean-ksc5601            #x2B #x4A)      ; \e$(C+J\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER NI")
+    (ucs               . #x30CB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x4B)      ; \e$(@%K\e(B
+    (chinese-gb2312            #x25 #x4B)      ; \e$(A%K\e(B
+    (japanese-jisx0208         #x25 #x4B)      ; \e$(B%K\e(B
+    (korean-ksc5601            #x2B #x4B)      ; \e$(C+K\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER NU")
+    (ucs               . #x30CC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x4C)      ; \e$(@%L\e(B
+    (chinese-gb2312            #x25 #x4C)      ; \e$(A%L\e(B
+    (japanese-jisx0208         #x25 #x4C)      ; \e$(B%L\e(B
+    (korean-ksc5601            #x2B #x4C)      ; \e$(C+L\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER NE")
+    (ucs               . #x30CD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x4D)      ; \e$(@%M\e(B
+    (chinese-gb2312            #x25 #x4D)      ; \e$(A%M\e(B
+    (japanese-jisx0208         #x25 #x4D)      ; \e$(B%M\e(B
+    (korean-ksc5601            #x2B #x4D)      ; \e$(C+M\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER NO")
+    (ucs               . #x30CE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x4E)      ; \e$(@%N\e(B
+    (chinese-gb2312            #x25 #x4E)      ; \e$(A%N\e(B
+    (japanese-jisx0208         #x25 #x4E)      ; \e$(B%N\e(B
+    (korean-ksc5601            #x2B #x4E)      ; \e$(C+N\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER HA")
+    (ucs               . #x30CF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x4F)      ; \e$(@%O\e(B
+    (chinese-gb2312            #x25 #x4F)      ; \e$(A%O\e(B
+    (japanese-jisx0208         #x25 #x4F)      ; \e$(B%O\e(B
+    (korean-ksc5601            #x2B #x4F)      ; \e$(C+O\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER BA")
+    (ucs               . #x30D0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30CF #x3099)
+    (japanese-jisx0208-1978    #x25 #x50)      ; \e$(@%P\e(B
+    (chinese-gb2312            #x25 #x50)      ; \e$(A%P\e(B
+    (japanese-jisx0208         #x25 #x50)      ; \e$(B%P\e(B
+    (korean-ksc5601            #x2B #x50)      ; \e$(C+P\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER PA")
+    (ucs               . #x30D1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30CF #x309A)
+    (japanese-jisx0208-1978    #x25 #x51)      ; \e$(@%Q\e(B
+    (chinese-gb2312            #x25 #x51)      ; \e$(A%Q\e(B
+    (japanese-jisx0208         #x25 #x51)      ; \e$(B%Q\e(B
+    (korean-ksc5601            #x2B #x51)      ; \e$(C+Q\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER HI")
+    (ucs               . #x30D2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x52)      ; \e$(@%R\e(B
+    (chinese-gb2312            #x25 #x52)      ; \e$(A%R\e(B
+    (japanese-jisx0208         #x25 #x52)      ; \e$(B%R\e(B
+    (korean-ksc5601            #x2B #x52)      ; \e$(C+R\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER BI")
+    (ucs               . #x30D3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30D2 #x3099)
+    (japanese-jisx0208-1978    #x25 #x53)      ; \e$(@%S\e(B
+    (chinese-gb2312            #x25 #x53)      ; \e$(A%S\e(B
+    (japanese-jisx0208         #x25 #x53)      ; \e$(B%S\e(B
+    (korean-ksc5601            #x2B #x53)      ; \e$(C+S\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER PI")
+    (ucs               . #x30D4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30D2 #x309A)
+    (japanese-jisx0208-1978    #x25 #x54)      ; \e$(@%T\e(B
+    (chinese-gb2312            #x25 #x54)      ; \e$(A%T\e(B
+    (japanese-jisx0208         #x25 #x54)      ; \e$(B%T\e(B
+    (korean-ksc5601            #x2B #x54)      ; \e$(C+T\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER HU")
+    (ucs               . #x30D5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x55)      ; \e$(@%U\e(B
+    (chinese-gb2312            #x25 #x55)      ; \e$(A%U\e(B
+    (japanese-jisx0208         #x25 #x55)      ; \e$(B%U\e(B
+    (korean-ksc5601            #x2B #x55)      ; \e$(C+U\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER BU")
+    (ucs               . #x30D6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30D5 #x3099)
+    (japanese-jisx0208-1978    #x25 #x56)      ; \e$(@%V\e(B
+    (chinese-gb2312            #x25 #x56)      ; \e$(A%V\e(B
+    (japanese-jisx0208         #x25 #x56)      ; \e$(B%V\e(B
+    (korean-ksc5601            #x2B #x56)      ; \e$(C+V\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER PU")
+    (ucs               . #x30D7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30D5 #x309A)
+    (japanese-jisx0208-1978    #x25 #x57)      ; \e$(@%W\e(B
+    (chinese-gb2312            #x25 #x57)      ; \e$(A%W\e(B
+    (japanese-jisx0208         #x25 #x57)      ; \e$(B%W\e(B
+    (korean-ksc5601            #x2B #x57)      ; \e$(C+W\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER HE")
+    (ucs               . #x30D8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x58)      ; \e$(@%X\e(B
+    (chinese-gb2312            #x25 #x58)      ; \e$(A%X\e(B
+    (japanese-jisx0208         #x25 #x58)      ; \e$(B%X\e(B
+    (korean-ksc5601            #x2B #x58)      ; \e$(C+X\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER BE")
+    (ucs               . #x30D9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30D8 #x3099)
+    (japanese-jisx0208-1978    #x25 #x59)      ; \e$(@%Y\e(B
+    (chinese-gb2312            #x25 #x59)      ; \e$(A%Y\e(B
+    (japanese-jisx0208         #x25 #x59)      ; \e$(B%Y\e(B
+    (korean-ksc5601            #x2B #x59)      ; \e$(C+Y\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER PE")
+    (ucs               . #x30DA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30D8 #x309A)
+    (japanese-jisx0208-1978    #x25 #x5A)      ; \e$(@%Z\e(B
+    (chinese-gb2312            #x25 #x5A)      ; \e$(A%Z\e(B
+    (japanese-jisx0208         #x25 #x5A)      ; \e$(B%Z\e(B
+    (korean-ksc5601            #x2B #x5A)      ; \e$(C+Z\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER HO")
+    (ucs               . #x30DB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x5B)      ; \e$(@%[\e(B
+    (chinese-gb2312            #x25 #x5B)      ; \e$(A%[\e(B
+    (japanese-jisx0208         #x25 #x5B)      ; \e$(B%[\e(B
+    (korean-ksc5601            #x2B #x5B)      ; \e$(C+[\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER BO")
+    (ucs               . #x30DC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30DB #x3099)
+    (japanese-jisx0208-1978    #x25 #x5C)      ; \e$(@%\\e(B
+    (chinese-gb2312            #x25 #x5C)      ; \e$(A%\\e(B
+    (japanese-jisx0208         #x25 #x5C)      ; \e$(B%\\e(B
+    (korean-ksc5601            #x2B #x5C)      ; \e$(C+\\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER PO")
+    (ucs               . #x30DD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30DB #x309A)
+    (japanese-jisx0208-1978    #x25 #x5D)      ; \e$(@%]\e(B
+    (chinese-gb2312            #x25 #x5D)      ; \e$(A%]\e(B
+    (japanese-jisx0208         #x25 #x5D)      ; \e$(B%]\e(B
+    (korean-ksc5601            #x2B #x5D)      ; \e$(C+]\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER MA")
+    (ucs               . #x30DE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x5E)      ; \e$(@%^\e(B
+    (chinese-gb2312            #x25 #x5E)      ; \e$(A%^\e(B
+    (japanese-jisx0208         #x25 #x5E)      ; \e$(B%^\e(B
+    (korean-ksc5601            #x2B #x5E)      ; \e$(C+^\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER MI")
+    (ucs               . #x30DF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x5F)      ; \e$(@%_\e(B
+    (chinese-gb2312            #x25 #x5F)      ; \e$(A%_\e(B
+    (japanese-jisx0208         #x25 #x5F)      ; \e$(B%_\e(B
+    (korean-ksc5601            #x2B #x5F)      ; \e$(C+_\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER MU")
+    (ucs               . #x30E0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x60)      ; \e$(@%`\e(B
+    (chinese-gb2312            #x25 #x60)      ; \e$(A%`\e(B
+    (japanese-jisx0208         #x25 #x60)      ; \e$(B%`\e(B
+    (korean-ksc5601            #x2B #x60)      ; \e$(C+`\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER ME")
+    (ucs               . #x30E1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x61)      ; \e$(@%a\e(B
+    (chinese-gb2312            #x25 #x61)      ; \e$(A%a\e(B
+    (japanese-jisx0208         #x25 #x61)      ; \e$(B%a\e(B
+    (korean-ksc5601            #x2B #x61)      ; \e$(C+a\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER MO")
+    (ucs               . #x30E2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x62)      ; \e$(@%b\e(B
+    (chinese-gb2312            #x25 #x62)      ; \e$(A%b\e(B
+    (japanese-jisx0208         #x25 #x62)      ; \e$(B%b\e(B
+    (korean-ksc5601            #x2B #x62)      ; \e$(C+b\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL YA")
+    (ucs               . #x30E3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x63)      ; \e$(@%c\e(B
+    (chinese-gb2312            #x25 #x63)      ; \e$(A%c\e(B
+    (japanese-jisx0208         #x25 #x63)      ; \e$(B%c\e(B
+    (korean-ksc5601            #x2B #x63)      ; \e$(C+c\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER YA")
+    (ucs               . #x30E4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x64)      ; \e$(@%d\e(B
+    (chinese-gb2312            #x25 #x64)      ; \e$(A%d\e(B
+    (japanese-jisx0208         #x25 #x64)      ; \e$(B%d\e(B
+    (korean-ksc5601            #x2B #x64)      ; \e$(C+d\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL YU")
+    (ucs               . #x30E5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x65)      ; \e$(@%e\e(B
+    (chinese-gb2312            #x25 #x65)      ; \e$(A%e\e(B
+    (japanese-jisx0208         #x25 #x65)      ; \e$(B%e\e(B
+    (korean-ksc5601            #x2B #x65)      ; \e$(C+e\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER YU")
+    (ucs               . #x30E6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x66)      ; \e$(@%f\e(B
+    (chinese-gb2312            #x25 #x66)      ; \e$(A%f\e(B
+    (japanese-jisx0208         #x25 #x66)      ; \e$(B%f\e(B
+    (korean-ksc5601            #x2B #x66)      ; \e$(C+f\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL YO")
+    (ucs               . #x30E7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x67)      ; \e$(@%g\e(B
+    (chinese-gb2312            #x25 #x67)      ; \e$(A%g\e(B
+    (japanese-jisx0208         #x25 #x67)      ; \e$(B%g\e(B
+    (korean-ksc5601            #x2B #x67)      ; \e$(C+g\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER YO")
+    (ucs               . #x30E8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x68)      ; \e$(@%h\e(B
+    (chinese-gb2312            #x25 #x68)      ; \e$(A%h\e(B
+    (japanese-jisx0208         #x25 #x68)      ; \e$(B%h\e(B
+    (korean-ksc5601            #x2B #x68)      ; \e$(C+h\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER RA")
+    (ucs               . #x30E9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x69)      ; \e$(@%i\e(B
+    (chinese-gb2312            #x25 #x69)      ; \e$(A%i\e(B
+    (japanese-jisx0208         #x25 #x69)      ; \e$(B%i\e(B
+    (korean-ksc5601            #x2B #x69)      ; \e$(C+i\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER RI")
+    (ucs               . #x30EA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x6A)      ; \e$(@%j\e(B
+    (chinese-gb2312            #x25 #x6A)      ; \e$(A%j\e(B
+    (japanese-jisx0208         #x25 #x6A)      ; \e$(B%j\e(B
+    (korean-ksc5601            #x2B #x6A)      ; \e$(C+j\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER RU")
+    (ucs               . #x30EB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x6B)      ; \e$(@%k\e(B
+    (chinese-gb2312            #x25 #x6B)      ; \e$(A%k\e(B
+    (japanese-jisx0208         #x25 #x6B)      ; \e$(B%k\e(B
+    (korean-ksc5601            #x2B #x6B)      ; \e$(C+k\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER RE")
+    (ucs               . #x30EC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x6C)      ; \e$(@%l\e(B
+    (chinese-gb2312            #x25 #x6C)      ; \e$(A%l\e(B
+    (japanese-jisx0208         #x25 #x6C)      ; \e$(B%l\e(B
+    (korean-ksc5601            #x2B #x6C)      ; \e$(C+l\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER RO")
+    (ucs               . #x30ED)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x6D)      ; \e$(@%m\e(B
+    (chinese-gb2312            #x25 #x6D)      ; \e$(A%m\e(B
+    (japanese-jisx0208         #x25 #x6D)      ; \e$(B%m\e(B
+    (korean-ksc5601            #x2B #x6D)      ; \e$(C+m\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL WA")
+    (ucs               . #x30EE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x6E)      ; \e$(@%n\e(B
+    (chinese-gb2312            #x25 #x6E)      ; \e$(A%n\e(B
+    (japanese-jisx0208         #x25 #x6E)      ; \e$(B%n\e(B
+    (korean-ksc5601            #x2B #x6E)      ; \e$(C+n\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER WA")
+    (ucs               . #x30EF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x6F)      ; \e$(@%o\e(B
+    (chinese-gb2312            #x25 #x6F)      ; \e$(A%o\e(B
+    (japanese-jisx0208         #x25 #x6F)      ; \e$(B%o\e(B
+    (korean-ksc5601            #x2B #x6F)      ; \e$(C+o\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER WI")
+    (ucs               . #x30F0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x70)      ; \e$(@%p\e(B
+    (chinese-gb2312            #x25 #x70)      ; \e$(A%p\e(B
+    (japanese-jisx0208         #x25 #x70)      ; \e$(B%p\e(B
+    (korean-ksc5601            #x2B #x70)      ; \e$(C+p\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER WE")
+    (ucs               . #x30F1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x71)      ; \e$(@%q\e(B
+    (chinese-gb2312            #x25 #x71)      ; \e$(A%q\e(B
+    (japanese-jisx0208         #x25 #x71)      ; \e$(B%q\e(B
+    (korean-ksc5601            #x2B #x71)      ; \e$(C+q\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER WO")
+    (ucs               . #x30F2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x72)      ; \e$(@%r\e(B
+    (chinese-gb2312            #x25 #x72)      ; \e$(A%r\e(B
+    (japanese-jisx0208         #x25 #x72)      ; \e$(B%r\e(B
+    (korean-ksc5601            #x2B #x72)      ; \e$(C+r\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER N")
+    (ucs               . #x30F3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x73)      ; \e$(@%s\e(B
+    (chinese-gb2312            #x25 #x73)      ; \e$(A%s\e(B
+    (japanese-jisx0208         #x25 #x73)      ; \e$(B%s\e(B
+    (korean-ksc5601            #x2B #x73)      ; \e$(C+s\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER VU")
+    (ucs               . #x30F4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30A6 #x3099)
+    (japanese-jisx0208-1978    #x25 #x74)      ; \e$(@%t\e(B
+    (chinese-gb2312            #x25 #x74)      ; \e$(A%t\e(B
+    (japanese-jisx0208         #x25 #x74)      ; \e$(B%t\e(B
+    (korean-ksc5601            #x2B #x74)      ; \e$(C+t\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL KA")
+    (ucs               . #x30F5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x75)      ; \e$(@%u\e(B
+    (chinese-gb2312            #x25 #x75)      ; \e$(A%u\e(B
+    (japanese-jisx0208         #x25 #x75)      ; \e$(B%u\e(B
+    (korean-ksc5601            #x2B #x75)      ; \e$(C+u\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER SMALL KE")
+    (ucs               . #x30F6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x25 #x76)      ; \e$(@%v\e(B
+    (chinese-gb2312            #x25 #x76)      ; \e$(A%v\e(B
+    (japanese-jisx0208         #x25 #x76)      ; \e$(B%v\e(B
+    (korean-ksc5601            #x2B #x76)      ; \e$(C+v\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER VA")
+    (ucs               . #x30F7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30EF #x3099)
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER VI")
+    (ucs               . #x30F8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30F0 #x3099)
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER VE")
+    (ucs               . #x30F9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30F1 #x3099)
+    ))
+(define-char
+  '((name              . "KATAKANA LETTER VO")
+    (ucs               . #x30FA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30F2 #x3099)
+    ))
+(define-char
+  '((name              . "KATAKANA MIDDLE DOT")
+    (ucs               . #x30FB)
+    (general-category  punctuation connector) ; Informative Category
+    (bidi-category     . "ON")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x26)      ; \e$(@!&\e(B
+    (chinese-gb2312            #x21 #x24)      ; \e$(A!$\e(B
+    (japanese-jisx0208         #x21 #x26)      ; \e$(B!&\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA-HIRAGANA PROLONGED SOUND MARK")
+    (ucs               . #x30FC)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x3C)      ; \e$(@!<\e(B
+    (japanese-jisx0208         #x21 #x3C)      ; \e$(B!<\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA ITERATION MARK")
+    (ucs               . #x30FD)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (japanese-jisx0208-1978    #x21 #x33)      ; \e$(@!3\e(B
+    (japanese-jisx0208         #x21 #x33)      ; \e$(B!3\e(B
+    ))
+(define-char
+  '((name              . "KATAKANA VOICED ITERATION MARK")
+    (ucs               . #x30FE)
+    (general-category  letter modifier) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   #x30FD #x3099)
+    (japanese-jisx0208-1978    #x21 #x34)      ; \e$(@!4\e(B
+    (japanese-jisx0208         #x21 #x34)      ; \e$(B!4\e(B
+    ))
diff --git a/lisp/utf-2000/u03100-Bopomofo.el b/lisp/utf-2000/u03100-Bopomofo.el
new file mode 100644 (file)
index 0000000..1804a05
--- /dev/null
@@ -0,0 +1,354 @@
+(define-char
+  '((name              . "BOPOMOFO LETTER B")
+    (ucs               . #x3105)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x45)      ; \e$(A(E\e(B
+    (chinese-cns11643-1 #x25 #x47)     ; \e$(G%G\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER P")
+    (ucs               . #x3106)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x46)      ; \e$(A(F\e(B
+    (chinese-cns11643-1 #x25 #x48)     ; \e$(G%H\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER M")
+    (ucs               . #x3107)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x47)      ; \e$(A(G\e(B
+    (chinese-cns11643-1 #x25 #x49)     ; \e$(G%I\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER F")
+    (ucs               . #x3108)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x48)      ; \e$(A(H\e(B
+    (chinese-cns11643-1 #x25 #x4A)     ; \e$(G%J\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER D")
+    (ucs               . #x3109)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x49)      ; \e$(A(I\e(B
+    (chinese-cns11643-1 #x25 #x4B)     ; \e$(G%K\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER T")
+    (ucs               . #x310A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x4A)      ; \e$(A(J\e(B
+    (chinese-cns11643-1 #x25 #x4C)     ; \e$(G%L\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER N")
+    (ucs               . #x310B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x4B)      ; \e$(A(K\e(B
+    (chinese-cns11643-1 #x25 #x4D)     ; \e$(G%M\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER L")
+    (ucs               . #x310C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x4C)      ; \e$(A(L\e(B
+    (chinese-cns11643-1 #x25 #x4E)     ; \e$(G%N\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER G")
+    (ucs               . #x310D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x4D)      ; \e$(A(M\e(B
+    (chinese-cns11643-1 #x25 #x4F)     ; \e$(G%O\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER K")
+    (ucs               . #x310E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x4E)      ; \e$(A(N\e(B
+    (chinese-cns11643-1 #x25 #x50)     ; \e$(G%P\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER H")
+    (ucs               . #x310F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x4F)      ; \e$(A(O\e(B
+    (chinese-cns11643-1 #x25 #x51)     ; \e$(G%Q\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER J")
+    (ucs               . #x3110)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x50)      ; \e$(A(P\e(B
+    (chinese-cns11643-1 #x25 #x52)     ; \e$(G%R\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER Q")
+    (ucs               . #x3111)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x51)      ; \e$(A(Q\e(B
+    (chinese-cns11643-1 #x25 #x53)     ; \e$(G%S\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER X")
+    (ucs               . #x3112)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x52)      ; \e$(A(R\e(B
+    (chinese-cns11643-1 #x25 #x54)     ; \e$(G%T\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER ZH")
+    (ucs               . #x3113)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x53)      ; \e$(A(S\e(B
+    (chinese-cns11643-1 #x25 #x55)     ; \e$(G%U\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER CH")
+    (ucs               . #x3114)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x54)      ; \e$(A(T\e(B
+    (chinese-cns11643-1 #x25 #x56)     ; \e$(G%V\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER SH")
+    (ucs               . #x3115)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x55)      ; \e$(A(U\e(B
+    (chinese-cns11643-1 #x25 #x57)     ; \e$(G%W\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER R")
+    (ucs               . #x3116)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x56)      ; \e$(A(V\e(B
+    (chinese-cns11643-1 #x25 #x58)     ; \e$(G%X\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER Z")
+    (ucs               . #x3117)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x57)      ; \e$(A(W\e(B
+    (chinese-cns11643-1 #x25 #x59)     ; \e$(G%Y\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER C")
+    (ucs               . #x3118)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x58)      ; \e$(A(X\e(B
+    (chinese-cns11643-1 #x25 #x5A)     ; \e$(G%Z\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER S")
+    (ucs               . #x3119)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x59)      ; \e$(A(Y\e(B
+    (chinese-cns11643-1 #x25 #x5B)     ; \e$(G%[\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER A")
+    (ucs               . #x311A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x5A)      ; \e$(A(Z\e(B
+    (chinese-cns11643-1 #x25 #x5C)     ; \e$(G%\\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER O")
+    (ucs               . #x311B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x5B)      ; \e$(A([\e(B
+    (chinese-cns11643-1 #x25 #x5D)     ; \e$(G%]\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER E")
+    (ucs               . #x311C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x5C)      ; \e$(A(\\e(B
+    (chinese-cns11643-1 #x25 #x5E)     ; \e$(G%^\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER EH")
+    (ucs               . #x311D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x5D)      ; \e$(A(]\e(B
+    (chinese-cns11643-1 #x25 #x5F)     ; \e$(G%_\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER AI")
+    (ucs               . #x311E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x5E)      ; \e$(A(^\e(B
+    (chinese-cns11643-1 #x25 #x60)     ; \e$(G%`\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER EI")
+    (ucs               . #x311F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x5F)      ; \e$(A(_\e(B
+    (chinese-cns11643-1 #x25 #x61)     ; \e$(G%a\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER AU")
+    (ucs               . #x3120)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x60)      ; \e$(A(`\e(B
+    (chinese-cns11643-1 #x25 #x62)     ; \e$(G%b\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER OU")
+    (ucs               . #x3121)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x61)      ; \e$(A(a\e(B
+    (chinese-cns11643-1 #x25 #x63)     ; \e$(G%c\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER AN")
+    (ucs               . #x3122)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x62)      ; \e$(A(b\e(B
+    (chinese-cns11643-1 #x25 #x64)     ; \e$(G%d\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER EN")
+    (ucs               . #x3123)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x63)      ; \e$(A(c\e(B
+    (chinese-cns11643-1 #x25 #x65)     ; \e$(G%e\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER ANG")
+    (ucs               . #x3124)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x64)      ; \e$(A(d\e(B
+    (chinese-cns11643-1 #x25 #x66)     ; \e$(G%f\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER ENG")
+    (ucs               . #x3125)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x65)      ; \e$(A(e\e(B
+    (chinese-cns11643-1 #x25 #x67)     ; \e$(G%g\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER ER")
+    (ucs               . #x3126)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x66)      ; \e$(A(f\e(B
+    (chinese-cns11643-1 #x25 #x68)     ; \e$(G%h\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER I")
+    (ucs               . #x3127)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x67)      ; \e$(A(g\e(B
+    (chinese-cns11643-1 #x25 #x69)     ; \e$(G%i\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER U")
+    (ucs               . #x3128)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x68)      ; \e$(A(h\e(B
+    (chinese-cns11643-1 #x25 #x6A)     ; \e$(G%j\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER IU")
+    (ucs               . #x3129)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (chinese-gb2312    #x28 #x69)      ; \e$(A(i\e(B
+    (chinese-cns11643-1 #x25 #x6B)     ; \e$(G%k\e(B
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER V")
+    (ucs               . #x312A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER NG")
+    (ucs               . #x312B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER GN")
+    (ucs               . #x312C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u03130-Hangul-Compatibility-Jamo.el b/lisp/utf-2000/u03130-Hangul-Compatibility-Jamo.el
new file mode 100644 (file)
index 0000000..df6811e
--- /dev/null
@@ -0,0 +1,846 @@
+(define-char
+  '((name              . "HANGUL LETTER KIYEOK")
+    (ucs               . #x3131)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1100)
+    (korean-ksc5601    #x24 #x21)      ; \e$(C$!\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SSANGKIYEOK")
+    (ucs               . #x3132)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1101)
+    (korean-ksc5601    #x24 #x22)      ; \e$(C$"\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER KIYEOK-SIOS")
+    (ucs               . #x3133)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11AA)
+    (korean-ksc5601    #x24 #x23)      ; \e$(C$#\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER NIEUN")
+    (ucs               . #x3134)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1102)
+    (korean-ksc5601    #x24 #x24)      ; \e$(C$$\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER NIEUN-CIEUC")
+    (ucs               . #x3135)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11AC)
+    (korean-ksc5601    #x24 #x25)      ; \e$(C$%\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER NIEUN-HIEUH")
+    (ucs               . #x3136)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11AD)
+    (korean-ksc5601    #x24 #x26)      ; \e$(C$&\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER TIKEUT")
+    (ucs               . #x3137)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1103)
+    (korean-ksc5601    #x24 #x27)      ; \e$(C$'\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SSANGTIKEUT")
+    (ucs               . #x3138)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1104)
+    (korean-ksc5601    #x24 #x28)      ; \e$(C$(\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL")
+    (ucs               . #x3139)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1105)
+    (korean-ksc5601    #x24 #x29)      ; \e$(C$)\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-KIYEOK")
+    (ucs               . #x313A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11B0)
+    (korean-ksc5601    #x24 #x2A)      ; \e$(C$*\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-MIEUM")
+    (ucs               . #x313B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11B1)
+    (korean-ksc5601    #x24 #x2B)      ; \e$(C$+\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-PIEUP")
+    (ucs               . #x313C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11B2)
+    (korean-ksc5601    #x24 #x2C)      ; \e$(C$,\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-SIOS")
+    (ucs               . #x313D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11B3)
+    (korean-ksc5601    #x24 #x2D)      ; \e$(C$-\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-THIEUTH")
+    (ucs               . #x313E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11B4)
+    (korean-ksc5601    #x24 #x2E)      ; \e$(C$.\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-PHIEUPH")
+    (ucs               . #x313F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11B5)
+    (korean-ksc5601    #x24 #x2F)      ; \e$(C$/\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-HIEUH")
+    (ucs               . #x3140)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x111A)
+    (korean-ksc5601    #x24 #x30)      ; \e$(C$0\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER MIEUM")
+    (ucs               . #x3141)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1106)
+    (korean-ksc5601    #x24 #x31)      ; \e$(C$1\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PIEUP")
+    (ucs               . #x3142)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1107)
+    (korean-ksc5601    #x24 #x32)      ; \e$(C$2\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SSANGPIEUP")
+    (ucs               . #x3143)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1108)
+    (korean-ksc5601    #x24 #x33)      ; \e$(C$3\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PIEUP-SIOS")
+    (ucs               . #x3144)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1121)
+    (korean-ksc5601    #x24 #x34)      ; \e$(C$4\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SIOS")
+    (ucs               . #x3145)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1109)
+    (korean-ksc5601    #x24 #x35)      ; \e$(C$5\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SSANGSIOS")
+    (ucs               . #x3146)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x110A)
+    (korean-ksc5601    #x24 #x36)      ; \e$(C$6\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER IEUNG")
+    (ucs               . #x3147)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x110B)
+    (korean-ksc5601    #x24 #x37)      ; \e$(C$7\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER CIEUC")
+    (ucs               . #x3148)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x110C)
+    (korean-ksc5601    #x24 #x38)      ; \e$(C$8\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SSANGCIEUC")
+    (ucs               . #x3149)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x110D)
+    (korean-ksc5601    #x24 #x39)      ; \e$(C$9\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER CHIEUCH")
+    (ucs               . #x314A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x110E)
+    (korean-ksc5601    #x24 #x3A)      ; \e$(C$:\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER KHIEUKH")
+    (ucs               . #x314B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x110F)
+    (korean-ksc5601    #x24 #x3B)      ; \e$(C$;\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER THIEUTH")
+    (ucs               . #x314C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1110)
+    (korean-ksc5601    #x24 #x3C)      ; \e$(C$<\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PHIEUPH")
+    (ucs               . #x314D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1111)
+    (korean-ksc5601    #x24 #x3D)      ; \e$(C$=\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER HIEUH")
+    (ucs               . #x314E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1112)
+    (korean-ksc5601    #x24 #x3E)      ; \e$(C$>\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER A")
+    (ucs               . #x314F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1161)
+    (korean-ksc5601    #x24 #x3F)      ; \e$(C$?\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER AE")
+    (ucs               . #x3150)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1162)
+    (korean-ksc5601    #x24 #x40)      ; \e$(C$@\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YA")
+    (ucs               . #x3151)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1163)
+    (korean-ksc5601    #x24 #x41)      ; \e$(C$A\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YAE")
+    (ucs               . #x3152)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1164)
+    (korean-ksc5601    #x24 #x42)      ; \e$(C$B\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER EO")
+    (ucs               . #x3153)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1165)
+    (korean-ksc5601    #x24 #x43)      ; \e$(C$C\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER E")
+    (ucs               . #x3154)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1166)
+    (korean-ksc5601    #x24 #x44)      ; \e$(C$D\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YEO")
+    (ucs               . #x3155)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1167)
+    (korean-ksc5601    #x24 #x45)      ; \e$(C$E\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YE")
+    (ucs               . #x3156)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1168)
+    (korean-ksc5601    #x24 #x46)      ; \e$(C$F\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER O")
+    (ucs               . #x3157)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1169)
+    (korean-ksc5601    #x24 #x47)      ; \e$(C$G\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER WA")
+    (ucs               . #x3158)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x116A)
+    (korean-ksc5601    #x24 #x48)      ; \e$(C$H\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER WAE")
+    (ucs               . #x3159)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x116B)
+    (korean-ksc5601    #x24 #x49)      ; \e$(C$I\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER OE")
+    (ucs               . #x315A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x116C)
+    (korean-ksc5601    #x24 #x4A)      ; \e$(C$J\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YO")
+    (ucs               . #x315B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x116D)
+    (korean-ksc5601    #x24 #x4B)      ; \e$(C$K\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER U")
+    (ucs               . #x315C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x116E)
+    (korean-ksc5601    #x24 #x4C)      ; \e$(C$L\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER WEO")
+    (ucs               . #x315D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x116F)
+    (korean-ksc5601    #x24 #x4D)      ; \e$(C$M\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER WE")
+    (ucs               . #x315E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1170)
+    (korean-ksc5601    #x24 #x4E)      ; \e$(C$N\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER WI")
+    (ucs               . #x315F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1171)
+    (korean-ksc5601    #x24 #x4F)      ; \e$(C$O\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YU")
+    (ucs               . #x3160)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1172)
+    (korean-ksc5601    #x24 #x50)      ; \e$(C$P\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER EU")
+    (ucs               . #x3161)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1173)
+    (korean-ksc5601    #x24 #x51)      ; \e$(C$Q\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YI")
+    (ucs               . #x3162)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1174)
+    (korean-ksc5601    #x24 #x52)      ; \e$(C$R\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER I")
+    (ucs               . #x3163)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1175)
+    (korean-ksc5601    #x24 #x53)      ; \e$(C$S\e(B
+    ))
+(define-char
+  '((name              . "HANGUL FILLER")
+    (ucs               . #x3164)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1160)
+    (korean-ksc5601    #x24 #x54)      ; \e$(C$T\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SSANGNIEUN")
+    (ucs               . #x3165)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1114)
+    (korean-ksc5601    #x24 #x55)      ; \e$(C$U\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER NIEUN-TIKEUT")
+    (ucs               . #x3166)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1115)
+    (korean-ksc5601    #x24 #x56)      ; \e$(C$V\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER NIEUN-SIOS")
+    (ucs               . #x3167)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11C7)
+    (korean-ksc5601    #x24 #x57)      ; \e$(C$W\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER NIEUN-PANSIOS")
+    (ucs               . #x3168)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11C8)
+    (korean-ksc5601    #x24 #x58)      ; \e$(C$X\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-KIYEOK-SIOS")
+    (ucs               . #x3169)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11CC)
+    (korean-ksc5601    #x24 #x59)      ; \e$(C$Y\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-TIKEUT")
+    (ucs               . #x316A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11CE)
+    (korean-ksc5601    #x24 #x5A)      ; \e$(C$Z\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-PIEUP-SIOS")
+    (ucs               . #x316B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11D3)
+    (korean-ksc5601    #x24 #x5B)      ; \e$(C$[\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-PANSIOS")
+    (ucs               . #x316C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11D7)
+    (korean-ksc5601    #x24 #x5C)      ; \e$(C$\\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER RIEUL-YEORINHIEUH")
+    (ucs               . #x316D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11D9)
+    (korean-ksc5601    #x24 #x5D)      ; \e$(C$]\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER MIEUM-PIEUP")
+    (ucs               . #x316E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x111C)
+    (korean-ksc5601    #x24 #x5E)      ; \e$(C$^\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER MIEUM-SIOS")
+    (ucs               . #x316F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11DD)
+    (korean-ksc5601    #x24 #x5F)      ; \e$(C$_\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER MIEUM-PANSIOS")
+    (ucs               . #x3170)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11DF)
+    (korean-ksc5601    #x24 #x60)      ; \e$(C$`\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER KAPYEOUNMIEUM")
+    (ucs               . #x3171)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x111D)
+    (korean-ksc5601    #x24 #x61)      ; \e$(C$a\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PIEUP-KIYEOK")
+    (ucs               . #x3172)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x111E)
+    (korean-ksc5601    #x24 #x62)      ; \e$(C$b\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PIEUP-TIKEUT")
+    (ucs               . #x3173)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1120)
+    (korean-ksc5601    #x24 #x63)      ; \e$(C$c\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PIEUP-SIOS-KIYEOK")
+    (ucs               . #x3174)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1122)
+    (korean-ksc5601    #x24 #x64)      ; \e$(C$d\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PIEUP-SIOS-TIKEUT")
+    (ucs               . #x3175)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1123)
+    (korean-ksc5601    #x24 #x65)      ; \e$(C$e\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PIEUP-CIEUC")
+    (ucs               . #x3176)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1127)
+    (korean-ksc5601    #x24 #x66)      ; \e$(C$f\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PIEUP-THIEUTH")
+    (ucs               . #x3177)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1129)
+    (korean-ksc5601    #x24 #x67)      ; \e$(C$g\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER KAPYEOUNPIEUP")
+    (ucs               . #x3178)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x112B)
+    (korean-ksc5601    #x24 #x68)      ; \e$(C$h\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER KAPYEOUNSSANGPIEUP")
+    (ucs               . #x3179)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x112C)
+    (korean-ksc5601    #x24 #x69)      ; \e$(C$i\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SIOS-KIYEOK")
+    (ucs               . #x317A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x112D)
+    (korean-ksc5601    #x24 #x6A)      ; \e$(C$j\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SIOS-NIEUN")
+    (ucs               . #x317B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x112E)
+    (korean-ksc5601    #x24 #x6B)      ; \e$(C$k\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SIOS-TIKEUT")
+    (ucs               . #x317C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x112F)
+    (korean-ksc5601    #x24 #x6C)      ; \e$(C$l\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SIOS-PIEUP")
+    (ucs               . #x317D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1132)
+    (korean-ksc5601    #x24 #x6D)      ; \e$(C$m\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SIOS-CIEUC")
+    (ucs               . #x317E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1136)
+    (korean-ksc5601    #x24 #x6E)      ; \e$(C$n\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER PANSIOS")
+    (ucs               . #x317F)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1140)
+    (korean-ksc5601    #x24 #x6F)      ; \e$(C$o\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SSANGIEUNG")
+    (ucs               . #x3180)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1147)
+    (korean-ksc5601    #x24 #x70)      ; \e$(C$p\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YESIEUNG")
+    (ucs               . #x3181)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x114C)
+    (korean-ksc5601    #x24 #x71)      ; \e$(C$q\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YESIEUNG-SIOS")
+    (ucs               . #x3182)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11F1)
+    (korean-ksc5601    #x24 #x72)      ; \e$(C$r\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YESIEUNG-PANSIOS")
+    (ucs               . #x3183)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11F2)
+    (korean-ksc5601    #x24 #x73)      ; \e$(C$s\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER KAPYEOUNPHIEUPH")
+    (ucs               . #x3184)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1157)
+    (korean-ksc5601    #x24 #x74)      ; \e$(C$t\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER SSANGHIEUH")
+    (ucs               . #x3185)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1158)
+    (korean-ksc5601    #x24 #x75)      ; \e$(C$u\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YEORINHIEUH")
+    (ucs               . #x3186)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1159)
+    (korean-ksc5601    #x24 #x76)      ; \e$(C$v\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YO-YA")
+    (ucs               . #x3187)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1184)
+    (korean-ksc5601    #x24 #x77)      ; \e$(C$w\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YO-YAE")
+    (ucs               . #x3188)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1185)
+    (korean-ksc5601    #x24 #x78)      ; \e$(C$x\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YO-I")
+    (ucs               . #x3189)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1188)
+    (korean-ksc5601    #x24 #x79)      ; \e$(C$y\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YU-YEO")
+    (ucs               . #x318A)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1191)
+    (korean-ksc5601    #x24 #x7A)      ; \e$(C$z\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YU-YE")
+    (ucs               . #x318B)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1192)
+    (korean-ksc5601    #x24 #x7B)      ; \e$(C${\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER YU-I")
+    (ucs               . #x318C)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x1194)
+    (korean-ksc5601    #x24 #x7C)      ; \e$(C$|\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER ARAEA")
+    (ucs               . #x318D)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x119E)
+    (korean-ksc5601    #x24 #x7D)      ; \e$(C$}\e(B
+    ))
+(define-char
+  '((name              . "HANGUL LETTER ARAEAE")
+    (ucs               . #x318E)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x11A1)
+    (korean-ksc5601    #x24 #x7E)      ; \e$(C$~\e(B
+    ))
diff --git a/lisp/utf-2000/u03190-Kanbun.el b/lisp/utf-2000/u03190-Kanbun.el
new file mode 100644 (file)
index 0000000..1ac60c2
--- /dev/null
@@ -0,0 +1,142 @@
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION LINKING MARK")
+    (ucs               . #x3190)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kanbun Tateten")
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION REVERSE MARK")
+    (ucs               . #x3191)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION ONE MARK")
+    (ucs               . #x3192)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4E00)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION TWO MARK")
+    (ucs               . #x3193)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4E8C)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION THREE MARK")
+    (ucs               . #x3194)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4E09)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION FOUR MARK")
+    (ucs               . #x3195)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x56DB)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION TOP MARK")
+    (ucs               . #x3196)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4E0A)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION MIDDLE MARK")
+    (ucs               . #x3197)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4E2D)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION BOTTOM MARK")
+    (ucs               . #x3198)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4E0B)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION FIRST MARK")
+    (ucs               . #x3199)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x7532)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION SECOND MARK")
+    (ucs               . #x319A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4E59)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION THIRD MARK")
+    (ucs               . #x319B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4E19)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION FOURTH MARK")
+    (ucs               . #x319C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4E01)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION HEAVEN MARK")
+    (ucs               . #x319D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x5929)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION EARTH MARK")
+    (ucs               . #x319E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x5730)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC ANNOTATION MAN MARK")
+    (ucs               . #x319F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (iso-10646-comment . "Kaeriten")
+    (->decomposition   super #x4EBA)
+    ))
diff --git a/lisp/utf-2000/u031A0-Extended-Bopomofo.el b/lisp/utf-2000/u031A0-Extended-Bopomofo.el
new file mode 100644 (file)
index 0000000..1ac56c8
--- /dev/null
@@ -0,0 +1,168 @@
+(define-char
+  '((name              . "BOPOMOFO LETTER BU")
+    (ucs               . #x31A0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER ZI")
+    (ucs               . #x31A1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER JI")
+    (ucs               . #x31A2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER GU")
+    (ucs               . #x31A3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER EE")
+    (ucs               . #x31A4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER ENN")
+    (ucs               . #x31A5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER OO")
+    (ucs               . #x31A6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER ONN")
+    (ucs               . #x31A7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER IR")
+    (ucs               . #x31A8)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER ANN")
+    (ucs               . #x31A9)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER INN")
+    (ucs               . #x31AA)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER UNN")
+    (ucs               . #x31AB)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER IM")
+    (ucs               . #x31AC)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER NGG")
+    (ucs               . #x31AD)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER AINN")
+    (ucs               . #x31AE)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER AUNN")
+    (ucs               . #x31AF)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER AM")
+    (ucs               . #x31B0)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER OM")
+    (ucs               . #x31B1)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER ONG")
+    (ucs               . #x31B2)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO LETTER INNN")
+    (ucs               . #x31B3)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO FINAL LETTER P")
+    (ucs               . #x31B4)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO FINAL LETTER T")
+    (ucs               . #x31B5)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO FINAL LETTER K")
+    (ucs               . #x31B6)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
+(define-char
+  '((name              . "BOPOMOFO FINAL LETTER H")
+    (ucs               . #x31B7)
+    (general-category  letter other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    ))
diff --git a/lisp/utf-2000/u03200-Enclosed-CJK-Letters-and-Months.el b/lisp/utf-2000/u03200-Enclosed-CJK-Letters-and-Months.el
new file mode 100644 (file)
index 0000000..c33e509
--- /dev/null
@@ -0,0 +1,1694 @@
+(define-char
+  '((name              . "PARENTHESIZED HANGUL KIYEOK")
+    (ucs               . #x3200)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1100 #x0029)
+    (korean-ksc5601    #x29 #x31)      ; \e$(C)1\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL NIEUN")
+    (ucs               . #x3201)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1102 #x0029)
+    (korean-ksc5601    #x29 #x32)      ; \e$(C)2\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL TIKEUT")
+    (ucs               . #x3202)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1103 #x0029)
+    (korean-ksc5601    #x29 #x33)      ; \e$(C)3\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL RIEUL")
+    (ucs               . #x3203)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1105 #x0029)
+    (korean-ksc5601    #x29 #x34)      ; \e$(C)4\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL MIEUM")
+    (ucs               . #x3204)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1106 #x0029)
+    (korean-ksc5601    #x29 #x35)      ; \e$(C)5\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL PIEUP")
+    (ucs               . #x3205)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1107 #x0029)
+    (korean-ksc5601    #x29 #x36)      ; \e$(C)6\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL SIOS")
+    (ucs               . #x3206)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1109 #x0029)
+    (korean-ksc5601    #x29 #x37)      ; \e$(C)7\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL IEUNG")
+    (ucs               . #x3207)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x110B #x0029)
+    (korean-ksc5601    #x29 #x38)      ; \e$(C)8\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL CIEUC")
+    (ucs               . #x3208)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x110C #x0029)
+    (korean-ksc5601    #x29 #x39)      ; \e$(C)9\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL CHIEUCH")
+    (ucs               . #x3209)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x110E #x0029)
+    (korean-ksc5601    #x29 #x3A)      ; \e$(C):\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL KHIEUKH")
+    (ucs               . #x320A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x110F #x0029)
+    (korean-ksc5601    #x29 #x3B)      ; \e$(C);\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL THIEUTH")
+    (ucs               . #x320B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1110 #x0029)
+    (korean-ksc5601    #x29 #x3C)      ; \e$(C)<\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL PHIEUPH")
+    (ucs               . #x320C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1111 #x0029)
+    (korean-ksc5601    #x29 #x3D)      ; \e$(C)=\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL HIEUH")
+    (ucs               . #x320D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1112 #x0029)
+    (korean-ksc5601    #x29 #x3E)      ; \e$(C)>\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL KIYEOK A")
+    (ucs               . #x320E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1100 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x3F)      ; \e$(C)?\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL NIEUN A")
+    (ucs               . #x320F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1102 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x40)      ; \e$(C)@\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL TIKEUT A")
+    (ucs               . #x3210)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1103 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x41)      ; \e$(C)A\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL RIEUL A")
+    (ucs               . #x3211)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1105 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x42)      ; \e$(C)B\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL MIEUM A")
+    (ucs               . #x3212)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1106 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x43)      ; \e$(C)C\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL PIEUP A")
+    (ucs               . #x3213)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1107 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x44)      ; \e$(C)D\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL SIOS A")
+    (ucs               . #x3214)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1109 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x45)      ; \e$(C)E\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL IEUNG A")
+    (ucs               . #x3215)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x110B #x1161 #x0029)
+    (korean-ksc5601    #x29 #x46)      ; \e$(C)F\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL CIEUC A")
+    (ucs               . #x3216)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x110C #x1161 #x0029)
+    (korean-ksc5601    #x29 #x47)      ; \e$(C)G\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL CHIEUCH A")
+    (ucs               . #x3217)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x110E #x1161 #x0029)
+    (korean-ksc5601    #x29 #x48)      ; \e$(C)H\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL KHIEUKH A")
+    (ucs               . #x3218)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x110F #x1161 #x0029)
+    (korean-ksc5601    #x29 #x49)      ; \e$(C)I\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL THIEUTH A")
+    (ucs               . #x3219)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1110 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x4A)      ; \e$(C)J\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL PHIEUPH A")
+    (ucs               . #x321A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1111 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x4B)      ; \e$(C)K\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL HIEUH A")
+    (ucs               . #x321B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x1112 #x1161 #x0029)
+    (korean-ksc5601    #x29 #x4C)      ; \e$(C)L\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED HANGUL CIEUC U")
+    (ucs               . #x321C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x110C #x116E #x0029)
+    (korean-ksc5601    #x22 #x5F)      ; \e$(C"_\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH ONE")
+    (ucs               . #x3220)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x4E00 #x0029)
+    (chinese-gb2312    #x22 #x65)      ; \e$(A"e\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH TWO")
+    (ucs               . #x3221)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x4E8C #x0029)
+    (chinese-gb2312    #x22 #x66)      ; \e$(A"f\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH THREE")
+    (ucs               . #x3222)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x4E09 #x0029)
+    (chinese-gb2312    #x22 #x67)      ; \e$(A"g\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH FOUR")
+    (ucs               . #x3223)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x56DB #x0029)
+    (chinese-gb2312    #x22 #x68)      ; \e$(A"h\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH FIVE")
+    (ucs               . #x3224)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x4E94 #x0029)
+    (chinese-gb2312    #x22 #x69)      ; \e$(A"i\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH SIX")
+    (ucs               . #x3225)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x516D #x0029)
+    (chinese-gb2312    #x22 #x6A)      ; \e$(A"j\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH SEVEN")
+    (ucs               . #x3226)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x4E03 #x0029)
+    (chinese-gb2312    #x22 #x6B)      ; \e$(A"k\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH EIGHT")
+    (ucs               . #x3227)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x516B #x0029)
+    (chinese-gb2312    #x22 #x6C)      ; \e$(A"l\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH NINE")
+    (ucs               . #x3228)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x4E5D #x0029)
+    (chinese-gb2312    #x22 #x6D)      ; \e$(A"m\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH TEN")
+    (ucs               . #x3229)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x5341 #x0029)
+    (chinese-gb2312    #x22 #x6E)      ; \e$(A"n\e(B
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH MOON")
+    (ucs               . #x322A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x6708 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH FIRE")
+    (ucs               . #x322B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x706B #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH WATER")
+    (ucs               . #x322C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x6C34 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH WOOD")
+    (ucs               . #x322D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x6728 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH METAL")
+    (ucs               . #x322E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x91D1 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH EARTH")
+    (ucs               . #x322F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x571F #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH SUN")
+    (ucs               . #x3230)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x65E5 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH STOCK")
+    (ucs               . #x3231)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x682A #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH HAVE")
+    (ucs               . #x3232)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x6709 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH SOCIETY")
+    (ucs               . #x3233)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x793E #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH NAME")
+    (ucs               . #x3234)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x540D #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH SPECIAL")
+    (ucs               . #x3235)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x7279 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH FINANCIAL")
+    (ucs               . #x3236)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x8CA1 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH CONGRATULATION")
+    (ucs               . #x3237)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x795D #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH LABOR")
+    (ucs               . #x3238)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x52B4 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH REPRESENT")
+    (ucs               . #x3239)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x4EE3 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH CALL")
+    (ucs               . #x323A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x547C #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH STUDY")
+    (ucs               . #x323B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x5B66 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH SUPERVISE")
+    (ucs               . #x323C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x76E3 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH ENTERPRISE")
+    (ucs               . #x323D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x4F01 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH RESOURCE")
+    (ucs               . #x323E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x8CC7 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH ALLIANCE")
+    (ucs               . #x323F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x5354 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH FESTIVAL")
+    (ucs               . #x3240)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x796D #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH REST")
+    (ucs               . #x3241)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x4F11 #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH SELF")
+    (ucs               . #x3242)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x81EA #x0029)
+    ))
+(define-char
+  '((name              . "PARENTHESIZED IDEOGRAPH REACH")
+    (ucs               . #x3243)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0028 #x81F3 #x0029)
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL KIYEOK")
+    (ucs               . #x3260)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1100)
+    (korean-ksc5601    #x28 #x31)      ; \e$(C(1\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL NIEUN")
+    (ucs               . #x3261)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1102)
+    (korean-ksc5601    #x28 #x32)      ; \e$(C(2\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL TIKEUT")
+    (ucs               . #x3262)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1103)
+    (korean-ksc5601    #x28 #x33)      ; \e$(C(3\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL RIEUL")
+    (ucs               . #x3263)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1105)
+    (korean-ksc5601    #x28 #x34)      ; \e$(C(4\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL MIEUM")
+    (ucs               . #x3264)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1106)
+    (korean-ksc5601    #x28 #x35)      ; \e$(C(5\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL PIEUP")
+    (ucs               . #x3265)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1107)
+    (korean-ksc5601    #x28 #x36)      ; \e$(C(6\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL SIOS")
+    (ucs               . #x3266)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1109)
+    (korean-ksc5601    #x28 #x37)      ; \e$(C(7\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL IEUNG")
+    (ucs               . #x3267)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x110B)
+    (korean-ksc5601    #x28 #x38)      ; \e$(C(8\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL CIEUC")
+    (ucs               . #x3268)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x110C)
+    (korean-ksc5601    #x28 #x39)      ; \e$(C(9\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL CHIEUCH")
+    (ucs               . #x3269)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x110E)
+    (korean-ksc5601    #x28 #x3A)      ; \e$(C(:\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL KHIEUKH")
+    (ucs               . #x326A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x110F)
+    (korean-ksc5601    #x28 #x3B)      ; \e$(C(;\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL THIEUTH")
+    (ucs               . #x326B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1110)
+    (korean-ksc5601    #x28 #x3C)      ; \e$(C(<\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL PHIEUPH")
+    (ucs               . #x326C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1111)
+    (korean-ksc5601    #x28 #x3D)      ; \e$(C(=\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL HIEUH")
+    (ucs               . #x326D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1112)
+    (korean-ksc5601    #x28 #x3E)      ; \e$(C(>\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL KIYEOK A")
+    (ucs               . #x326E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1100 #x1161)
+    (korean-ksc5601    #x28 #x3F)      ; \e$(C(?\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL NIEUN A")
+    (ucs               . #x326F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1102 #x1161)
+    (korean-ksc5601    #x28 #x40)      ; \e$(C(@\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL TIKEUT A")
+    (ucs               . #x3270)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1103 #x1161)
+    (korean-ksc5601    #x28 #x41)      ; \e$(C(A\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL RIEUL A")
+    (ucs               . #x3271)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1105 #x1161)
+    (korean-ksc5601    #x28 #x42)      ; \e$(C(B\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL MIEUM A")
+    (ucs               . #x3272)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1106 #x1161)
+    (korean-ksc5601    #x28 #x43)      ; \e$(C(C\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL PIEUP A")
+    (ucs               . #x3273)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1107 #x1161)
+    (korean-ksc5601    #x28 #x44)      ; \e$(C(D\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL SIOS A")
+    (ucs               . #x3274)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1109 #x1161)
+    (korean-ksc5601    #x28 #x45)      ; \e$(C(E\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL IEUNG A")
+    (ucs               . #x3275)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x110B #x1161)
+    (korean-ksc5601    #x28 #x46)      ; \e$(C(F\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL CIEUC A")
+    (ucs               . #x3276)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x110C #x1161)
+    (korean-ksc5601    #x28 #x47)      ; \e$(C(G\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL CHIEUCH A")
+    (ucs               . #x3277)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x110E #x1161)
+    (korean-ksc5601    #x28 #x48)      ; \e$(C(H\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL KHIEUKH A")
+    (ucs               . #x3278)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x110F #x1161)
+    (korean-ksc5601    #x28 #x49)      ; \e$(C(I\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL THIEUTH A")
+    (ucs               . #x3279)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1110 #x1161)
+    (korean-ksc5601    #x28 #x4A)      ; \e$(C(J\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL PHIEUPH A")
+    (ucs               . #x327A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1111 #x1161)
+    (korean-ksc5601    #x28 #x4B)      ; \e$(C(K\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED HANGUL HIEUH A")
+    (ucs               . #x327B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x1112 #x1161)
+    (korean-ksc5601    #x28 #x4C)      ; \e$(C(L\e(B
+    ))
+(define-char
+  '((name              . "KOREAN STANDARD SYMBOL")
+    (ucs               . #x327F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (korean-ksc5601    #x22 #x5E)      ; \e$(C"^\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH ONE")
+    (ucs               . #x3280)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 1)
+    (->decomposition   circle #x4E00)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH TWO")
+    (ucs               . #x3281)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 2)
+    (->decomposition   circle #x4E8C)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH THREE")
+    (ucs               . #x3282)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 3)
+    (->decomposition   circle #x4E09)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH FOUR")
+    (ucs               . #x3283)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 4)
+    (->decomposition   circle #x56DB)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH FIVE")
+    (ucs               . #x3284)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 5)
+    (->decomposition   circle #x4E94)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH SIX")
+    (ucs               . #x3285)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 6)
+    (->decomposition   circle #x516D)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH SEVEN")
+    (ucs               . #x3286)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 7)
+    (->decomposition   circle #x4E03)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH EIGHT")
+    (ucs               . #x3287)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 8)
+    (->decomposition   circle #x516B)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH NINE")
+    (ucs               . #x3288)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 9)
+    (->decomposition   circle #x4E5D)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH TEN")
+    (ucs               . #x3289)
+    (general-category  number other) ; Normative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (numeric-value     . 10)
+    (->decomposition   circle #x5341)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH MOON")
+    (ucs               . #x328A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x6708)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH FIRE")
+    (ucs               . #x328B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x706B)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH WATER")
+    (ucs               . #x328C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x6C34)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH WOOD")
+    (ucs               . #x328D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x6728)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH METAL")
+    (ucs               . #x328E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x91D1)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH EARTH")
+    (ucs               . #x328F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x571F)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH SUN")
+    (ucs               . #x3290)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x65E5)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH STOCK")
+    (ucs               . #x3291)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x682A)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH HAVE")
+    (ucs               . #x3292)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x6709)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH SOCIETY")
+    (ucs               . #x3293)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x793E)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH NAME")
+    (ucs               . #x3294)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x540D)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH SPECIAL")
+    (ucs               . #x3295)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x7279)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH FINANCIAL")
+    (ucs               . #x3296)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x8CA1)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH CONGRATULATION")
+    (ucs               . #x3297)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x795D)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH LABOR")
+    (ucs               . #x3298)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x52B4)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH SECRET")
+    (ucs               . #x3299)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x79D8)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH MALE")
+    (ucs               . #x329A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x7537)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH FEMALE")
+    (ucs               . #x329B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x5973)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH SUITABLE")
+    (ucs               . #x329C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x9069)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH EXCELLENT")
+    (ucs               . #x329D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x512A)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH PRINT")
+    (ucs               . #x329E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x5370)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH ATTENTION")
+    (ucs               . #x329F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x6CE8)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH ITEM")
+    (ucs               . #x32A0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x9805)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH REST")
+    (ucs               . #x32A1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x4F11)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH COPY")
+    (ucs               . #x32A2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x5199)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH CORRECT")
+    (ucs               . #x32A3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x6B63)
+    (chinese-cns11643-1 #x22 #x21)     ; \e$(G"!\e(B
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH HIGH")
+    (ucs               . #x32A4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x4E0A)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH CENTRE")
+    (ucs               . #x32A5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x4E2D)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH LOW")
+    (ucs               . #x32A6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x4E0B)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH LEFT")
+    (ucs               . #x32A7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x5DE6)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH RIGHT")
+    (ucs               . #x32A8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x53F3)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH MEDICINE")
+    (ucs               . #x32A9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x533B)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH RELIGION")
+    (ucs               . #x32AA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x5B97)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH STUDY")
+    (ucs               . #x32AB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x5B66)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH SUPERVISE")
+    (ucs               . #x32AC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x76E3)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH ENTERPRISE")
+    (ucs               . #x32AD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x4F01)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH RESOURCE")
+    (ucs               . #x32AE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x8CC7)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH ALLIANCE")
+    (ucs               . #x32AF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x5354)
+    ))
+(define-char
+  '((name              . "CIRCLED IDEOGRAPH NIGHT")
+    (ucs               . #x32B0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x591C)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY")
+    (ucs               . #x32C0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY")
+    (ucs               . #x32C1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH")
+    (ucs               . #x32C2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0033 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL")
+    (ucs               . #x32C3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0034 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY")
+    (ucs               . #x32C4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0035 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE")
+    (ucs               . #x32C5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0036 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY")
+    (ucs               . #x32C6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0037 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST")
+    (ucs               . #x32C7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0038 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER")
+    (ucs               . #x32C8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0039 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER")
+    (ucs               . #x32C9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0030 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER")
+    (ucs               . #x32CA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0031 #x6708)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER")
+    (ucs               . #x32CB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0032 #x6708)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA A")
+    (ucs               . #x32D0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30A2)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA I")
+    (ucs               . #x32D1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30A4)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA U")
+    (ucs               . #x32D2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30A6)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA E")
+    (ucs               . #x32D3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30A8)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA O")
+    (ucs               . #x32D4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30AA)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA KA")
+    (ucs               . #x32D5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30AB)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA KI")
+    (ucs               . #x32D6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30AD)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA KU")
+    (ucs               . #x32D7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30AF)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA KE")
+    (ucs               . #x32D8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30B1)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA KO")
+    (ucs               . #x32D9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30B3)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA SA")
+    (ucs               . #x32DA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30B5)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA SI")
+    (ucs               . #x32DB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30B7)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA SU")
+    (ucs               . #x32DC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30B9)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA SE")
+    (ucs               . #x32DD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30BB)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA SO")
+    (ucs               . #x32DE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30BD)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA TA")
+    (ucs               . #x32DF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30BF)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA TI")
+    (ucs               . #x32E0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30C1)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA TU")
+    (ucs               . #x32E1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30C4)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA TE")
+    (ucs               . #x32E2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30C6)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA TO")
+    (ucs               . #x32E3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30C8)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA NA")
+    (ucs               . #x32E4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30CA)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA NI")
+    (ucs               . #x32E5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30CB)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA NU")
+    (ucs               . #x32E6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30CC)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA NE")
+    (ucs               . #x32E7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30CD)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA NO")
+    (ucs               . #x32E8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30CE)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA HA")
+    (ucs               . #x32E9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30CF)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA HI")
+    (ucs               . #x32EA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30D2)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA HU")
+    (ucs               . #x32EB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30D5)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA HE")
+    (ucs               . #x32EC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30D8)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA HO")
+    (ucs               . #x32ED)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30DB)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA MA")
+    (ucs               . #x32EE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30DE)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA MI")
+    (ucs               . #x32EF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30DF)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA MU")
+    (ucs               . #x32F0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30E0)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA ME")
+    (ucs               . #x32F1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30E1)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA MO")
+    (ucs               . #x32F2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30E2)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA YA")
+    (ucs               . #x32F3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30E4)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA YU")
+    (ucs               . #x32F4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30E6)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA YO")
+    (ucs               . #x32F5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30E8)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA RA")
+    (ucs               . #x32F6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30E9)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA RI")
+    (ucs               . #x32F7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30EA)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA RU")
+    (ucs               . #x32F8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30EB)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA RE")
+    (ucs               . #x32F9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30EC)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA RO")
+    (ucs               . #x32FA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30ED)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA WA")
+    (ucs               . #x32FB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30EF)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA WI")
+    (ucs               . #x32FC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30F0)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA WE")
+    (ucs               . #x32FD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30F1)
+    ))
+(define-char
+  '((name              . "CIRCLED KATAKANA WO")
+    (ucs               . #x32FE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   circle #x30F2)
+    ))
diff --git a/lisp/utf-2000/u03300-CJK-Compatibility.el b/lisp/utf-2000/u03300-CJK-Compatibility.el
new file mode 100644 (file)
index 0000000..41f5dcd
--- /dev/null
@@ -0,0 +1,2083 @@
+(define-char
+  '((name              . "SQUARE APAATO")
+    (ucs               . #x3300)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30A2 #x30D1 #x30FC #x30C8)
+    ))
+(define-char
+  '((name              . "SQUARE ARUHUA")
+    (ucs               . #x3301)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30A2 #x30EB #x30D5 #x30A1)
+    ))
+(define-char
+  '((name              . "SQUARE ANPEA")
+    (ucs               . #x3302)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30A2 #x30F3 #x30DA #x30A2)
+    ))
+(define-char
+  '((name              . "SQUARE AARU")
+    (ucs               . #x3303)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30A2 #x30FC #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE ININGU")
+    (ucs               . #x3304)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30A4 #x30CB #x30F3 #x30B0)
+    ))
+(define-char
+  '((name              . "SQUARE INTI")
+    (ucs               . #x3305)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30A4 #x30F3 #x30C1)
+    ))
+(define-char
+  '((name              . "SQUARE UON")
+    (ucs               . #x3306)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30A6 #x30A9 #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE ESUKUUDO")
+    (ucs               . #x3307)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30A8 #x30B9 #x30AF #x30FC #x30C9)
+    ))
+(define-char
+  '((name              . "SQUARE EEKAA")
+    (ucs               . #x3308)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30A8 #x30FC #x30AB #x30FC)
+    ))
+(define-char
+  '((name              . "SQUARE ONSU")
+    (ucs               . #x3309)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AA #x30F3 #x30B9)
+    ))
+(define-char
+  '((name              . "SQUARE OOMU")
+    (ucs               . #x330A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AA #x30FC #x30E0)
+    ))
+(define-char
+  '((name              . "SQUARE KAIRI")
+    (ucs               . #x330B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AB #x30A4 #x30EA)
+    ))
+(define-char
+  '((name              . "SQUARE KARATTO")
+    (ucs               . #x330C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AB #x30E9 #x30C3 #x30C8)
+    ))
+(define-char
+  '((name              . "SQUARE KARORII")
+    (ucs               . #x330D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AB #x30ED #x30EA #x30FC)
+    ))
+(define-char
+  '((name              . "SQUARE GARON")
+    (ucs               . #x330E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AC #x30ED #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE GANMA")
+    (ucs               . #x330F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AC #x30F3 #x30DE)
+    ))
+(define-char
+  '((name              . "SQUARE GIGA")
+    (ucs               . #x3310)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AE #x30AC)
+    ))
+(define-char
+  '((name              . "SQUARE GINII")
+    (ucs               . #x3311)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AE #x30CB #x30FC)
+    ))
+(define-char
+  '((name              . "SQUARE KYURII")
+    (ucs               . #x3312)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AD #x30E5 #x30EA #x30FC)
+    ))
+(define-char
+  '((name              . "SQUARE GIRUDAA")
+    (ucs               . #x3313)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AE #x30EB #x30C0 #x30FC)
+    ))
+(define-char
+  '((name              . "SQUARE KIRO")
+    (ucs               . #x3314)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AD #x30ED)
+    ))
+(define-char
+  '((name              . "SQUARE KIROGURAMU")
+    (ucs               . #x3315)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AD #x30ED #x30B0 #x30E9 #x30E0)
+    ))
+(define-char
+  '((name              . "SQUARE KIROMEETORU")
+    (ucs               . #x3316)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AD #x30ED #x30E1 #x30FC #x30C8 #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE KIROWATTO")
+    (ucs               . #x3317)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AD #x30ED #x30EF #x30C3 #x30C8)
+    ))
+(define-char
+  '((name              . "SQUARE GURAMU")
+    (ucs               . #x3318)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30B0 #x30E9 #x30E0)
+    ))
+(define-char
+  '((name              . "SQUARE GURAMUTON")
+    (ucs               . #x3319)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30B0 #x30E9 #x30E0 #x30C8 #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE KURUZEIRO")
+    (ucs               . #x331A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AF #x30EB #x30BC #x30A4 #x30ED)
+    ))
+(define-char
+  '((name              . "SQUARE KUROONE")
+    (ucs               . #x331B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30AF #x30ED #x30FC #x30CD)
+    ))
+(define-char
+  '((name              . "SQUARE KEESU")
+    (ucs               . #x331C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30B1 #x30FC #x30B9)
+    ))
+(define-char
+  '((name              . "SQUARE KORUNA")
+    (ucs               . #x331D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30B3 #x30EB #x30CA)
+    ))
+(define-char
+  '((name              . "SQUARE KOOPO")
+    (ucs               . #x331E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30B3 #x30FC #x30DD)
+    ))
+(define-char
+  '((name              . "SQUARE SAIKURU")
+    (ucs               . #x331F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30B5 #x30A4 #x30AF #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE SANTIIMU")
+    (ucs               . #x3320)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30B5 #x30F3 #x30C1 #x30FC #x30E0)
+    ))
+(define-char
+  '((name              . "SQUARE SIRINGU")
+    (ucs               . #x3321)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30B7 #x30EA #x30F3 #x30B0)
+    ))
+(define-char
+  '((name              . "SQUARE SENTI")
+    (ucs               . #x3322)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30BB #x30F3 #x30C1)
+    ))
+(define-char
+  '((name              . "SQUARE SENTO")
+    (ucs               . #x3323)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30BB #x30F3 #x30C8)
+    ))
+(define-char
+  '((name              . "SQUARE DAASU")
+    (ucs               . #x3324)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30C0 #x30FC #x30B9)
+    ))
+(define-char
+  '((name              . "SQUARE DESI")
+    (ucs               . #x3325)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30C7 #x30B7)
+    ))
+(define-char
+  '((name              . "SQUARE DORU")
+    (ucs               . #x3326)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30C9 #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE TON")
+    (ucs               . #x3327)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30C8 #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE NANO")
+    (ucs               . #x3328)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30CA #x30CE)
+    ))
+(define-char
+  '((name              . "SQUARE NOTTO")
+    (ucs               . #x3329)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30CE #x30C3 #x30C8)
+    ))
+(define-char
+  '((name              . "SQUARE HAITU")
+    (ucs               . #x332A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30CF #x30A4 #x30C4)
+    ))
+(define-char
+  '((name              . "SQUARE PAASENTO")
+    (ucs               . #x332B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D1 #x30FC #x30BB #x30F3 #x30C8)
+    ))
+(define-char
+  '((name              . "SQUARE PAATU")
+    (ucs               . #x332C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D1 #x30FC #x30C4)
+    ))
+(define-char
+  '((name              . "SQUARE BAARERU")
+    (ucs               . #x332D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D0 #x30FC #x30EC #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE PIASUTORU")
+    (ucs               . #x332E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D4 #x30A2 #x30B9 #x30C8 #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE PIKURU")
+    (ucs               . #x332F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D4 #x30AF #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE PIKO")
+    (ucs               . #x3330)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D4 #x30B3)
+    ))
+(define-char
+  '((name              . "SQUARE BIRU")
+    (ucs               . #x3331)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D3 #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE HUARADDO")
+    (ucs               . #x3332)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D5 #x30A1 #x30E9 #x30C3 #x30C9)
+    ))
+(define-char
+  '((name              . "SQUARE HUIITO")
+    (ucs               . #x3333)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D5 #x30A3 #x30FC #x30C8)
+    ))
+(define-char
+  '((name              . "SQUARE BUSSYERU")
+    (ucs               . #x3334)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D6 #x30C3 #x30B7 #x30A7 #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE HURAN")
+    (ucs               . #x3335)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D5 #x30E9 #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE HEKUTAARU")
+    (ucs               . #x3336)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D8 #x30AF #x30BF #x30FC #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE PESO")
+    (ucs               . #x3337)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DA #x30BD)
+    ))
+(define-char
+  '((name              . "SQUARE PENIHI")
+    (ucs               . #x3338)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DA #x30CB #x30D2)
+    ))
+(define-char
+  '((name              . "SQUARE HERUTU")
+    (ucs               . #x3339)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D8 #x30EB #x30C4)
+    ))
+(define-char
+  '((name              . "SQUARE PENSU")
+    (ucs               . #x333A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DA #x30F3 #x30B9)
+    ))
+(define-char
+  '((name              . "SQUARE PEEZI")
+    (ucs               . #x333B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DA #x30FC #x30B8)
+    ))
+(define-char
+  '((name              . "SQUARE BEETA")
+    (ucs               . #x333C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30D9 #x30FC #x30BF)
+    ))
+(define-char
+  '((name              . "SQUARE POINTO")
+    (ucs               . #x333D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DD #x30A4 #x30F3 #x30C8)
+    ))
+(define-char
+  '((name              . "SQUARE BORUTO")
+    (ucs               . #x333E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DC #x30EB #x30C8)
+    ))
+(define-char
+  '((name              . "SQUARE HON")
+    (ucs               . #x333F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DB #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE PONDO")
+    (ucs               . #x3340)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DD #x30F3 #x30C9)
+    ))
+(define-char
+  '((name              . "SQUARE HOORU")
+    (ucs               . #x3341)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DB #x30FC #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE HOON")
+    (ucs               . #x3342)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DB #x30FC #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE MAIKURO")
+    (ucs               . #x3343)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DE #x30A4 #x30AF #x30ED)
+    ))
+(define-char
+  '((name              . "SQUARE MAIRU")
+    (ucs               . #x3344)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DE #x30A4 #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE MAHHA")
+    (ucs               . #x3345)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DE #x30C3 #x30CF)
+    ))
+(define-char
+  '((name              . "SQUARE MARUKU")
+    (ucs               . #x3346)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DE #x30EB #x30AF)
+    ))
+(define-char
+  '((name              . "SQUARE MANSYON")
+    (ucs               . #x3347)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DE #x30F3 #x30B7 #x30E7 #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE MIKURON")
+    (ucs               . #x3348)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DF #x30AF #x30ED #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE MIRI")
+    (ucs               . #x3349)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DF #x30EA)
+    ))
+(define-char
+  '((name              . "SQUARE MIRIBAARU")
+    (ucs               . #x334A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30DF #x30EA #x30D0 #x30FC #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE MEGA")
+    (ucs               . #x334B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30E1 #x30AC)
+    ))
+(define-char
+  '((name              . "SQUARE MEGATON")
+    (ucs               . #x334C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30E1 #x30AC #x30C8 #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE MEETORU")
+    (ucs               . #x334D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30E1 #x30FC #x30C8 #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE YAADO")
+    (ucs               . #x334E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30E4 #x30FC #x30C9)
+    ))
+(define-char
+  '((name              . "SQUARE YAARU")
+    (ucs               . #x334F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30E4 #x30FC #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE YUAN")
+    (ucs               . #x3350)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30E6 #x30A2 #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE RITTORU")
+    (ucs               . #x3351)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30EA #x30C3 #x30C8 #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE RIRA")
+    (ucs               . #x3352)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30EA #x30E9)
+    ))
+(define-char
+  '((name              . "SQUARE RUPII")
+    (ucs               . #x3353)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30EB #x30D4 #x30FC)
+    ))
+(define-char
+  '((name              . "SQUARE RUUBURU")
+    (ucs               . #x3354)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30EB #x30FC #x30D6 #x30EB)
+    ))
+(define-char
+  '((name              . "SQUARE REMU")
+    (ucs               . #x3355)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30EC #x30E0)
+    ))
+(define-char
+  '((name              . "SQUARE RENTOGEN")
+    (ucs               . #x3356)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30EC #x30F3 #x30C8 #x30B2 #x30F3)
+    ))
+(define-char
+  '((name              . "SQUARE WATTO")
+    (ucs               . #x3357)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x30EF #x30C3 #x30C8)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO")
+    (ucs               . #x3358)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0030 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE")
+    (ucs               . #x3359)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO")
+    (ucs               . #x335A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE")
+    (ucs               . #x335B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0033 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR")
+    (ucs               . #x335C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0034 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE")
+    (ucs               . #x335D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0035 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX")
+    (ucs               . #x335E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0036 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN")
+    (ucs               . #x335F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0037 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT")
+    (ucs               . #x3360)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0038 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE")
+    (ucs               . #x3361)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0039 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN")
+    (ucs               . #x3362)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0030 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN")
+    (ucs               . #x3363)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0031 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE")
+    (ucs               . #x3364)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0032 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN")
+    (ucs               . #x3365)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0033 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN")
+    (ucs               . #x3366)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0034 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN")
+    (ucs               . #x3367)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0035 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN")
+    (ucs               . #x3368)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0036 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN")
+    (ucs               . #x3369)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0037 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN")
+    (ucs               . #x336A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0038 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN")
+    (ucs               . #x336B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0039 #x70B9)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY")
+    (ucs               . #x336C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0030 #x70B9)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE")
+    (ucs               . #x336D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0031 #x70B9)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO")
+    (ucs               . #x336E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0032 #x70B9)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE")
+    (ucs               . #x336F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0033 #x70B9)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR")
+    (ucs               . #x3370)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0034 #x70B9)
+    ))
+(define-char
+  '((name              . "SQUARE HPA")
+    (ucs               . #x3371)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0068 #x0050 #x0061)
+    ))
+(define-char
+  '((name              . "SQUARE DA")
+    (ucs               . #x3372)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0064 #x0061)
+    ))
+(define-char
+  '((name              . "SQUARE AU")
+    (ucs               . #x3373)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0041 #x0055)
+    ))
+(define-char
+  '((name              . "SQUARE BAR")
+    (ucs               . #x3374)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0062 #x0061 #x0072)
+    ))
+(define-char
+  '((name              . "SQUARE OV")
+    (ucs               . #x3375)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006F #x0056)
+    ))
+(define-char
+  '((name              . "SQUARE PC")
+    (ucs               . #x3376)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0070 #x0063)
+    ))
+(define-char
+  '((name              . "SQUARE ERA NAME HEISEI")
+    (ucs               . #x337B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x5E73 #x6210)
+    ))
+(define-char
+  '((name              . "SQUARE ERA NAME SYOUWA")
+    (ucs               . #x337C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x662D #x548C)
+    ))
+(define-char
+  '((name              . "SQUARE ERA NAME TAISYOU")
+    (ucs               . #x337D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x5927 #x6B63)
+    ))
+(define-char
+  '((name              . "SQUARE ERA NAME MEIZI")
+    (ucs               . #x337E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x660E #x6CBB)
+    ))
+(define-char
+  '((name              . "SQUARE CORPORATION")
+    (ucs               . #x337F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x682A #x5F0F #x4F1A #x793E)
+    ))
+(define-char
+  '((name              . "SQUARE PA AMPS")
+    (ucs               . #x3380)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0070 #x0041)
+    (korean-ksc5601    #x27 #x49)      ; \e$(C'I\e(B
+    ))
+(define-char
+  '((name              . "SQUARE NA")
+    (ucs               . #x3381)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006E #x0041)
+    (korean-ksc5601    #x27 #x4A)      ; \e$(C'J\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MU A")
+    (ucs               . #x3382)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x03BC #x0041)
+    (korean-ksc5601    #x27 #x4B)      ; \e$(C'K\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MA")
+    (ucs               . #x3383)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x0041)
+    (korean-ksc5601    #x27 #x4C)      ; \e$(C'L\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KA")
+    (ucs               . #x3384)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x0041)
+    (korean-ksc5601    #x27 #x4D)      ; \e$(C'M\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KB")
+    (ucs               . #x3385)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x004B #x0042)
+    ))
+(define-char
+  '((name              . "SQUARE MB")
+    (ucs               . #x3386)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x004D #x0042)
+    ))
+(define-char
+  '((name              . "SQUARE GB")
+    (ucs               . #x3387)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0047 #x0042)
+    ))
+(define-char
+  '((name              . "SQUARE CAL")
+    (ucs               . #x3388)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0063 #x0061 #x006C)
+    (korean-ksc5601    #x27 #x3A)      ; \e$(C':\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KCAL")
+    (ucs               . #x3389)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x0063 #x0061 #x006C)
+    (korean-ksc5601    #x27 #x3B)      ; \e$(C';\e(B
+    ))
+(define-char
+  '((name              . "SQUARE PF")
+    (ucs               . #x338A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0070 #x0046)
+    (korean-ksc5601    #x27 #x5C)      ; \e$(C'\\e(B
+    ))
+(define-char
+  '((name              . "SQUARE NF")
+    (ucs               . #x338B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006E #x0046)
+    (korean-ksc5601    #x27 #x5D)      ; \e$(C']\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MU F")
+    (ucs               . #x338C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x03BC #x0046)
+    (korean-ksc5601    #x27 #x5E)      ; \e$(C'^\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MU G")
+    (ucs               . #x338D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x03BC #x0067)
+    (korean-ksc5601    #x27 #x36)      ; \e$(C'6\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MG")
+    (ucs               . #x338E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x0067)
+    (korean-ksc5601    #x27 #x37)      ; \e$(C'7\e(B
+    (chinese-cns11643-1 #x22 #x75)     ; \e$(G"u\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KG")
+    (ucs               . #x338F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x0067)
+    (korean-ksc5601    #x27 #x38)      ; \e$(C'8\e(B
+    (chinese-cns11643-1 #x22 #x76)     ; \e$(G"v\e(B
+    ))
+(define-char
+  '((name              . "SQUARE HZ")
+    (ucs               . #x3390)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0048 #x007A)
+    (korean-ksc5601    #x27 #x54)      ; \e$(C'T\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KHZ")
+    (ucs               . #x3391)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x0048 #x007A)
+    (korean-ksc5601    #x27 #x55)      ; \e$(C'U\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MHZ")
+    (ucs               . #x3392)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x004D #x0048 #x007A)
+    (korean-ksc5601    #x27 #x56)      ; \e$(C'V\e(B
+    ))
+(define-char
+  '((name              . "SQUARE GHZ")
+    (ucs               . #x3393)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0047 #x0048 #x007A)
+    (korean-ksc5601    #x27 #x57)      ; \e$(C'W\e(B
+    ))
+(define-char
+  '((name              . "SQUARE THZ")
+    (ucs               . #x3394)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0054 #x0048 #x007A)
+    (korean-ksc5601    #x27 #x58)      ; \e$(C'X\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MU L")
+    (ucs               . #x3395)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x03BC #x2113)
+    (korean-ksc5601    #x27 #x21)      ; \e$(C'!\e(B
+    ))
+(define-char
+  '((name              . "SQUARE ML")
+    (ucs               . #x3396)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x2113)
+    (korean-ksc5601    #x27 #x22)      ; \e$(C'"\e(B
+    ))
+(define-char
+  '((name              . "SQUARE DL")
+    (ucs               . #x3397)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0064 #x2113)
+    (korean-ksc5601    #x27 #x23)      ; \e$(C'#\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KL")
+    (ucs               . #x3398)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x2113)
+    (korean-ksc5601    #x27 #x25)      ; \e$(C'%\e(B
+    ))
+(define-char
+  '((name              . "SQUARE FM")
+    (ucs               . #x3399)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0066 #x006D)
+    (korean-ksc5601    #x27 #x2B)      ; \e$(C'+\e(B
+    ))
+(define-char
+  '((name              . "SQUARE NM")
+    (ucs               . #x339A)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006E #x006D)
+    (korean-ksc5601    #x27 #x2C)      ; \e$(C',\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MU M")
+    (ucs               . #x339B)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x03BC #x006D)
+    (korean-ksc5601    #x27 #x2D)      ; \e$(C'-\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MM")
+    (ucs               . #x339C)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x006D)
+    (korean-ksc5601    #x27 #x2E)      ; \e$(C'.\e(B
+    (chinese-cns11643-1 #x22 #x70)     ; \e$(G"p\e(B
+    ))
+(define-char
+  '((name              . "SQUARE CM")
+    (ucs               . #x339D)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0063 #x006D)
+    (korean-ksc5601    #x27 #x2F)      ; \e$(C'/\e(B
+    (chinese-cns11643-1 #x22 #x71)     ; \e$(G"q\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KM")
+    (ucs               . #x339E)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x006D)
+    (korean-ksc5601    #x27 #x30)      ; \e$(C'0\e(B
+    (chinese-cns11643-1 #x22 #x72)     ; \e$(G"r\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MM SQUARED")
+    (ucs               . #x339F)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x006D #x00B2)
+    (korean-ksc5601    #x27 #x31)      ; \e$(C'1\e(B
+    ))
+(define-char
+  '((name              . "SQUARE CM SQUARED")
+    (ucs               . #x33A0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0063 #x006D #x00B2)
+    (korean-ksc5601    #x27 #x32)      ; \e$(C'2\e(B
+    ))
+(define-char
+  '((name              . "SQUARE M SQUARED")
+    (ucs               . #x33A1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x00B2)
+    (korean-ksc5601    #x27 #x33)      ; \e$(C'3\e(B
+    (chinese-cns11643-1 #x22 #x74)     ; \e$(G"t\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KM SQUARED")
+    (ucs               . #x33A2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x006D #x00B2)
+    (korean-ksc5601    #x27 #x34)      ; \e$(C'4\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MM CUBED")
+    (ucs               . #x33A3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x006D #x00B3)
+    (korean-ksc5601    #x27 #x27)      ; \e$(C''\e(B
+    ))
+(define-char
+  '((name              . "SQUARE CM CUBED")
+    (ucs               . #x33A4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0063 #x006D #x00B3)
+    (korean-ksc5601    #x27 #x28)      ; \e$(C'(\e(B
+    ))
+(define-char
+  '((name              . "SQUARE M CUBED")
+    (ucs               . #x33A5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x00B3)
+    (korean-ksc5601    #x27 #x29)      ; \e$(C')\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KM CUBED")
+    (ucs               . #x33A6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x006D #x00B3)
+    (korean-ksc5601    #x27 #x2A)      ; \e$(C'*\e(B
+    ))
+(define-char
+  '((name              . "SQUARE M OVER S")
+    (ucs               . #x33A7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x2215 #x0073)
+    (korean-ksc5601    #x27 #x3D)      ; \e$(C'=\e(B
+    ))
+(define-char
+  '((name              . "SQUARE M OVER S SQUARED")
+    (ucs               . #x33A8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x2215 #x0073 #x00B2)
+    (korean-ksc5601    #x27 #x3E)      ; \e$(C'>\e(B
+    ))
+(define-char
+  '((name              . "SQUARE PA")
+    (ucs               . #x33A9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0050 #x0061)
+    (korean-ksc5601    #x27 #x65)      ; \e$(C'e\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KPA")
+    (ucs               . #x33AA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x0050 #x0061)
+    (korean-ksc5601    #x27 #x66)      ; \e$(C'f\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MPA")
+    (ucs               . #x33AB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x004D #x0050 #x0061)
+    (korean-ksc5601    #x27 #x67)      ; \e$(C'g\e(B
+    ))
+(define-char
+  '((name              . "SQUARE GPA")
+    (ucs               . #x33AC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0047 #x0050 #x0061)
+    (korean-ksc5601    #x27 #x68)      ; \e$(C'h\e(B
+    ))
+(define-char
+  '((name              . "SQUARE RAD")
+    (ucs               . #x33AD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0072 #x0061 #x0064)
+    (korean-ksc5601    #x27 #x61)      ; \e$(C'a\e(B
+    ))
+(define-char
+  '((name              . "SQUARE RAD OVER S")
+    (ucs               . #x33AE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0072 #x0061 #x0064 #x2215 #x0073)
+    (korean-ksc5601    #x27 #x62)      ; \e$(C'b\e(B
+    ))
+(define-char
+  '((name              . "SQUARE RAD OVER S SQUARED")
+    (ucs               . #x33AF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0072 #x0061 #x0064 #x2215 #x0073 #x00B2)
+    (korean-ksc5601    #x27 #x63)      ; \e$(C'c\e(B
+    ))
+(define-char
+  '((name              . "SQUARE PS")
+    (ucs               . #x33B0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0070 #x0073)
+    (korean-ksc5601    #x27 #x3F)      ; \e$(C'?\e(B
+    ))
+(define-char
+  '((name              . "SQUARE NS")
+    (ucs               . #x33B1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006E #x0073)
+    (korean-ksc5601    #x27 #x40)      ; \e$(C'@\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MU S")
+    (ucs               . #x33B2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x03BC #x0073)
+    (korean-ksc5601    #x27 #x41)      ; \e$(C'A\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MS")
+    (ucs               . #x33B3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x0073)
+    (korean-ksc5601    #x27 #x42)      ; \e$(C'B\e(B
+    ))
+(define-char
+  '((name              . "SQUARE PV")
+    (ucs               . #x33B4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0070 #x0056)
+    (korean-ksc5601    #x27 #x43)      ; \e$(C'C\e(B
+    ))
+(define-char
+  '((name              . "SQUARE NV")
+    (ucs               . #x33B5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006E #x0056)
+    (korean-ksc5601    #x27 #x44)      ; \e$(C'D\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MU V")
+    (ucs               . #x33B6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x03BC #x0056)
+    (korean-ksc5601    #x27 #x45)      ; \e$(C'E\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MV")
+    (ucs               . #x33B7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x0056)
+    (korean-ksc5601    #x27 #x46)      ; \e$(C'F\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KV")
+    (ucs               . #x33B8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x0056)
+    (korean-ksc5601    #x27 #x47)      ; \e$(C'G\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MV MEGA")
+    (ucs               . #x33B9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x004D #x0056)
+    (korean-ksc5601    #x27 #x48)      ; \e$(C'H\e(B
+    ))
+(define-char
+  '((name              . "SQUARE PW")
+    (ucs               . #x33BA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0070 #x0057)
+    (korean-ksc5601    #x27 #x4E)      ; \e$(C'N\e(B
+    ))
+(define-char
+  '((name              . "SQUARE NW")
+    (ucs               . #x33BB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006E #x0057)
+    (korean-ksc5601    #x27 #x4F)      ; \e$(C'O\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MU W")
+    (ucs               . #x33BC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x03BC #x0057)
+    (korean-ksc5601    #x27 #x50)      ; \e$(C'P\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MW")
+    (ucs               . #x33BD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x0057)
+    (korean-ksc5601    #x27 #x51)      ; \e$(C'Q\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KW")
+    (ucs               . #x33BE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x0057)
+    (korean-ksc5601    #x27 #x52)      ; \e$(C'R\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MW MEGA")
+    (ucs               . #x33BF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x004D #x0057)
+    (korean-ksc5601    #x27 #x53)      ; \e$(C'S\e(B
+    ))
+(define-char
+  '((name              . "SQUARE K OHM")
+    (ucs               . #x33C0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x03A9)
+    (korean-ksc5601    #x27 #x5A)      ; \e$(C'Z\e(B
+    ))
+(define-char
+  '((name              . "SQUARE M OHM")
+    (ucs               . #x33C1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x004D #x03A9)
+    (korean-ksc5601    #x27 #x5B)      ; \e$(C'[\e(B
+    ))
+(define-char
+  '((name              . "SQUARE AM")
+    (ucs               . #x33C2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0061 #x002E #x006D #x002E)
+    (korean-ksc5601    #x22 #x63)      ; \e$(C"c\e(B
+    ))
+(define-char
+  '((name              . "SQUARE BQ")
+    (ucs               . #x33C3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0042 #x0071)
+    (korean-ksc5601    #x27 #x6C)      ; \e$(C'l\e(B
+    ))
+(define-char
+  '((name              . "SQUARE CC")
+    (ucs               . #x33C4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0063 #x0063)
+    (korean-ksc5601    #x27 #x26)      ; \e$(C'&\e(B
+    (chinese-cns11643-1 #x22 #x77)     ; \e$(G"w\e(B
+    ))
+(define-char
+  '((name              . "SQUARE CD")
+    (ucs               . #x33C5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0063 #x0064)
+    (korean-ksc5601    #x27 #x60)      ; \e$(C'`\e(B
+    ))
+(define-char
+  '((name              . "SQUARE C OVER KG")
+    (ucs               . #x33C6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0043 #x2215 #x006B #x0067)
+    (korean-ksc5601    #x27 #x6F)      ; \e$(C'o\e(B
+    ))
+(define-char
+  '((name              . "SQUARE CO")
+    (ucs               . #x33C7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0043 #x006F #x002E)
+    (korean-ksc5601    #x22 #x61)      ; \e$(C"a\e(B
+    ))
+(define-char
+  '((name              . "SQUARE DB")
+    (ucs               . #x33C8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0064 #x0042)
+    (korean-ksc5601    #x27 #x3C)      ; \e$(C'<\e(B
+    ))
+(define-char
+  '((name              . "SQUARE GY")
+    (ucs               . #x33C9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0047 #x0079)
+    (korean-ksc5601    #x27 #x6D)      ; \e$(C'm\e(B
+    ))
+(define-char
+  '((name              . "SQUARE HA")
+    (ucs               . #x33CA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0068 #x0061)
+    (korean-ksc5601    #x27 #x35)      ; \e$(C'5\e(B
+    ))
+(define-char
+  '((name              . "SQUARE HP")
+    (ucs               . #x33CB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0048 #x0050)
+    ))
+(define-char
+  '((name              . "SQUARE IN")
+    (ucs               . #x33CC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0069 #x006E)
+    ))
+(define-char
+  '((name              . "SQUARE KK")
+    (ucs               . #x33CD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x004B #x004B)
+    ))
+(define-char
+  '((name              . "SQUARE KM CAPITAL")
+    (ucs               . #x33CE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x004B #x004D)
+    (chinese-cns11643-1 #x22 #x73)     ; \e$(G"s\e(B
+    ))
+(define-char
+  '((name              . "SQUARE KT")
+    (ucs               . #x33CF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006B #x0074)
+    (korean-ksc5601    #x27 #x39)      ; \e$(C'9\e(B
+    ))
+(define-char
+  '((name              . "SQUARE LM")
+    (ucs               . #x33D0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006C #x006D)
+    (korean-ksc5601    #x27 #x6A)      ; \e$(C'j\e(B
+    ))
+(define-char
+  '((name              . "SQUARE LN")
+    (ucs               . #x33D1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006C #x006E)
+    (chinese-cns11643-1 #x22 #x4C)     ; \e$(G"L\e(B
+    ))
+(define-char
+  '((name              . "SQUARE LOG")
+    (ucs               . #x33D2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006C #x006F #x0067)
+    (chinese-cns11643-1 #x22 #x4B)     ; \e$(G"K\e(B
+    ))
+(define-char
+  '((name              . "SQUARE LX")
+    (ucs               . #x33D3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006C #x0078)
+    (korean-ksc5601    #x27 #x6B)      ; \e$(C'k\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MB SMALL")
+    (ucs               . #x33D4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x0062)
+    ))
+(define-char
+  '((name              . "SQUARE MIL")
+    (ucs               . #x33D5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x0069 #x006C)
+    (chinese-cns11643-1 #x22 #x6F)     ; \e$(G"o\e(B
+    ))
+(define-char
+  '((name              . "SQUARE MOL")
+    (ucs               . #x33D6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x006D #x006F #x006C)
+    (korean-ksc5601    #x27 #x5F)      ; \e$(C'_\e(B
+    ))
+(define-char
+  '((name              . "SQUARE PH")
+    (ucs               . #x33D7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0050 #x0048)
+    ))
+(define-char
+  '((name              . "SQUARE PM")
+    (ucs               . #x33D8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0070 #x002E #x006D #x002E)
+    (korean-ksc5601    #x22 #x64)      ; \e$(C"d\e(B
+    ))
+(define-char
+  '((name              . "SQUARE PPM")
+    (ucs               . #x33D9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0050 #x0050 #x004D)
+    ))
+(define-char
+  '((name              . "SQUARE PR")
+    (ucs               . #x33DA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0050 #x0052)
+    ))
+(define-char
+  '((name              . "SQUARE SR")
+    (ucs               . #x33DB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0073 #x0072)
+    (korean-ksc5601    #x27 #x64)      ; \e$(C'd\e(B
+    ))
+(define-char
+  '((name              . "SQUARE SV")
+    (ucs               . #x33DC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0053 #x0076)
+    (korean-ksc5601    #x27 #x6E)      ; \e$(C'n\e(B
+    ))
+(define-char
+  '((name              . "SQUARE WB")
+    (ucs               . #x33DD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   square #x0057 #x0062)
+    (korean-ksc5601    #x27 #x69)      ; \e$(C'i\e(B
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE")
+    (ucs               . #x33E0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO")
+    (ucs               . #x33E1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE")
+    (ucs               . #x33E2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0033 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR")
+    (ucs               . #x33E3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0034 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE")
+    (ucs               . #x33E4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0035 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX")
+    (ucs               . #x33E5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0036 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN")
+    (ucs               . #x33E6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0037 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT")
+    (ucs               . #x33E7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0038 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE")
+    (ucs               . #x33E8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0039 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN")
+    (ucs               . #x33E9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0030 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN")
+    (ucs               . #x33EA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0031 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE")
+    (ucs               . #x33EB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0032 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN")
+    (ucs               . #x33EC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0033 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN")
+    (ucs               . #x33ED)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0034 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN")
+    (ucs               . #x33EE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0035 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN")
+    (ucs               . #x33EF)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0036 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN")
+    (ucs               . #x33F0)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0037 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN")
+    (ucs               . #x33F1)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0038 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN")
+    (ucs               . #x33F2)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0031 #x0039 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY")
+    (ucs               . #x33F3)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0030 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE")
+    (ucs               . #x33F4)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0031 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO")
+    (ucs               . #x33F5)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0032 #x65E5)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE")
+    (ucs               . #x33F6)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0033 #x65E5)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR")
+    (ucs               . #x33F7)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0034 #x65E5)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE")
+    (ucs               . #x33F8)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0035 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX")
+    (ucs               . #x33F9)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0036 #x65E5)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN")
+    (ucs               . #x33FA)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0037 #x65E5)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT")
+    (ucs               . #x33FB)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0038 #x65E5)
+    ))
+(define-char
+  '((name . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE")
+    (ucs               . #x33FC)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0032 #x0039 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY")
+    (ucs               . #x33FD)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0033 #x0030 #x65E5)
+    ))
+(define-char
+  '((name              . "IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE")
+    (ucs               . #x33FE)
+    (general-category  symbol other) ; Informative Category
+    (bidi-category     . "L")
+    (mirrored          . nil)
+    (->decomposition   compat #x0033 #x0031 #x65E5)
+    ))
index 914ec3a..d79e0b4 100644 (file)
@@ -43,9 +43,7 @@ Warning, this variable did not exist in XEmacs versions prior to 20.3")
           (if emacs-patch-level
               (format "(patch %d)" emacs-patch-level)
             "")
-          (if xemacs-betaname
-              (concat " " xemacs-betaname)
-            "")
+          (or xemacs-betaname "")
           (if xemacs-codename
               (concat " \"" xemacs-codename "\"")
             "")
@@ -80,7 +78,7 @@ Warning, this variable did not exist in XEmacs versions prior to 20.3")
 
 (defconst emacs-build-system (system-name))
 
-(defun emacs-version  (&optional arg)
+(defun emacs-version (&optional arg)
   "Return string describing the version of Emacs that is running.
 When called interactively with a prefix argument, insert string at point.
 Don't use this function in programs to choose actions according
@@ -89,7 +87,7 @@ to the system configuration; look at `system-configuration' instead."
   (save-match-data
     (let ((version-string
           (format
-           "XEmacs %s %s(%s%s) of %s %s on %s"
+           "XEmacs %s %s(%s%s)%s of %s %s on %s"
            (substring emacs-version 0 (string-match " XEmacs" emacs-version))
            (if (not (featurep 'infodock))
                "[Lucid] "
@@ -99,6 +97,11 @@ to the system configuration; look at `system-configuration' instead."
                            (featurep 'mule))
                       (memq 'mule features)) ", Mule")
                  (t ""))
+           (cond ((or (and (fboundp 'featurep)
+                           (featurep 'utf-2000))
+                      (memq 'utf-2000 features))
+                  (concat "  UTF-2000 v" utf-2000-version))
+                 (t ""))
            (substring emacs-build-time 0
                       (string-match " *[0-9]*:" emacs-build-time))
            (substring emacs-build-time
index 03a4b77..7307370 100644 (file)
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Qsquare): New variable.
+       (to_char_code): Add `Qsquare'.
+       (syms_of_mule_charset): Add new symbol `square'.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Qcircle): New variable.
+       (to_char_code): Add `Qcircle'.
+       (syms_of_mule_charset): Add new symbol `circle'.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Qfont): New variable.
+       (to_char_code): Add `Qfont'.
+       (syms_of_mule_charset): Add new symbol `font'.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Qsub): New variable.
+       (to_char_code): Add `Qsub'.
+       (syms_of_mule_charset): Add new symbol `sub'.
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Fput_char_attribute): Convert each element of
+       VALUE to GL position if ATTRIBUTE is a GR-set,
+
+1999-11-14  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Fput_char_attribute): Allow GR code-point if a
+       coded-charset is a GR-set.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Fput_char_attribute): Check each element of
+       VALUE is a byte if ATTRIBUTE is a coded-charset or its name.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Vcharset_ethiopic_ucs): New variable in
+       UTF-2000.
+       (Qethiopic_ucs): New variable in UTF-2000.
+       (syms_of_mule_charset): Add new symbol `ethiopic-ucs' in UTF-2000.
+       (complex_vars_of_mule_charset): Add new coded-charset
+       `ethiopic-ucs' in UTF-2000.
+
+       * char-ucs.h (LEADING_BYTE_ETHIOPIC_UCS): New macro.
+       (LEADING_BYTE_HIRAGANA_JISX0208): Changed to `(CHARSET_ID_OFFSET -
+       9)'.
+       (LEADING_BYTE_KATAKANA_JISX0208): Changed to `(CHARSET_ID_OFFSET -
+       10)'.
+       (LEADING_BYTE_PRIVATE): Changed to `(CHARSET_ID_OFFSET - 11)'.
+
+1999-11-13  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Fset_charset_mapping_table): Fix problem with
+       `ascii'.
+
+1999-11-12  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Vcharacter_variant_table): New variable.
+       (Q_ucs): New variable.
+       (Fchar_variants): New function.
+       (Fput_char_attribute): Register `->ucs' value to
+       `Vcharacter_variant_table'.
+       (syms_of_mule_charset): Add new function `char-variants' and new
+       symbol `->ucs'.
+       (vars_of_mule_charset): Setup `Vcharacter_variant_table'.
+
+1999-11-12  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (get_char_code_table): Allow negative character
+       code.
+       (put_char_code_table): Likewise.
+       (Vcharacter_composition_table): New variable.
+       (Q_decomposition): New variable.
+       (Qwide): New variable.
+       (Qnarrow): New variable.
+       (Qcompat): New variable.
+       (QnoBreak): New variable.
+       (Qsuper): New variable.
+       (Qfraction): New variable.
+       (to_char_code): New function.
+       (Fget_composite_char): New function.
+       (Fput_char_attribute): Register `->decomposition' value to
+       `Vcharacter_composition_table'.
+       (syms_of_mule_charset): Add new function `get-composite-char', new
+       symbol `->decomposition', `wide', `narrow', `compat', `noBreak',
+       `super' and `fraction'.
+       (vars_of_mule_charset): Setup `Vcharacter_composition_table'.
+
+1999-11-12  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Fchar_attribute_alist): Check the argument is a
+       character; copy the return value.
+
+1999-11-12  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-ucs.h (SPLIT_CHAR): Use `split_builtin_char'.
+
+       * mule-charset.c (range_charset_code_point): Must use make_int.
+       (split_builtin_char): New function.
+
+1999-11-12  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (char_byte_table): Change name from
+       "char-code-table" to "char-byte-table".
+       (mark_char_code_table): New function.
+       (char_code_table_equal): New function.
+       (char_code_table_hash): New function.
+       (char_code_table_description): New constant.
+       (char_code_table): New type.
+       (make_char_code_table): New function.
+       (copy_char_code_table): New function.
+       (get_char_code_table): Modify for `char_code_table' type.
+       (put_char_code_table): Likewise.
+       (vars_of_mule_charset): Update `utf-2000-version' to 0.12
+       (Kashiwara).
+
+       * char-ucs.h (char_code_table): New type.
+       (XCHAR_CODE_TABLE): New macro.
+       (XSETCHAR_CODE_TABLE): New macro.
+       (CHAR_CODE_TABLE_P): New macro.
+       (GC_CHAR_CODE_TABLE_P): New macro.
+       (struct Lisp_Char_Code_Table): New structure.
+
+1999-11-09  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Fmake_charset): Setup byte_offset for
+       {94|96}^n-set.
+
+1999-11-09  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Fdefine_char): Fix problem with non-UCS
+       character.
+
+1999-11-09  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-ucs.h (SPLIT_CHAR): Don't make new cell if a charset slot
+       is found.
+
+1999-11-09  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Fget_char_attribute): If ATTRIBUTE is a name of
+       charset, it is regarded as a charset.
+       (put_char_attribute): New function in UTF-2000.
+       (Fput_char_attribute): If ATTRIBUTE is a charset or a name of
+       charset, mapping-table of the charset is modified.
+       (Fdefine_char): New function in UTF-2000.
+       (Fset_charset_mapping_table): Use `put_char_attribute' instead of
+       `Fput_char_attribute'.
+       (syms_of_mule_charset): Add new function `define-char' and new
+       symbol `ucs' in UTF-2000.
+       (vars_of_mule_charset): Update `utf-2000-version' to 0.11 (Shiki).
+
+1999-10-29  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Fcharset_name): Define `byte_offset' in
+       non-UTF-2000 configuration.
+
+1999-10-29  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * text-coding.c (char_encode_shift_jis): Use `charset_code_point'
+       not to use `XCHARSET_ENCODING_TABLE (Vcharset_latin_jisx0201)'.
+
+       * mule-charset.c (mark_charset): `cs->encoding_table' has been
+       deleted.
+       (make_charset): Don't use `CHARSET_ENCODING_TABLE(cs)'.
+       (Fset_charset_mapping_table): Likewise.
+
+       * char-ucs.h (struct Lisp_Charset): Delete `encoding_table'.
+       (CHARSET_ENCODING_TABLE): Delete.
+       (XCHARSET_ENCODING_TABLE): Delete.
+       (charset_code_point): New interface.
+
+1999-10-29  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * text-coding.c (char_encode_iso2022): Use `charset_code_point'
+       instead of `charset_get_byte1' and `charset_get_byte2'.
+
+       * mule-charset.c, char-ucs.h (charset_get_byte1): Deleted.
+       (charset_get_byte2): Deleted.
+
+1999-10-28  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-ucs.h (SPLIT_CHAR): New inline function.
+       (breakup_char_1): Use `SPLIT_CHAR'.
+
+       * mule-charset.c (range_charset_code_point): New function.
+       (charset_code_point): New function.
+
+       * char-ucs.h (range_charset_code_point): New interface.
+       (breakup_char_1): Use `range_charset_code_point'.
+
+1999-10-27  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Fmake_charset): Delete unused local variable
+       `code_offset'.
+
+       * char-ucs.h (Vcharacter_attribute_table): New extern variable.
+       (breakup_char_1): Find a charset and code-point in
+       `Vcharacter_attribute_table'.
+
+1999-10-27  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (vars_of_mule_charset): Update `utf-2000-version'
+       to 0.10 (Yao).
+
+1999-10-25  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Vcharacter_attribute_table): New variable.
+       (Fchar_attribute_alist): New function.
+       (Fget_char_attribute): New function.
+       (Fput_char_attribute): New function.
+       (Fset_charset_mapping_table): Setup `Vcharacter_attribute_table'
+       too.
+       (syms_of_mule_charset): Add new function `char-attribute-alist',
+       `get-char-attribute' and `put-char-attribute'.
+       (vars_of_mule_charset): Setup `Vcharacter_attribute_table'.
+
+1999-10-19  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Fmake_charset): Just use
+       `get_unallocated_leading_byte'.
+
+       * char-ucs.h (LEADING_BYTE_*): Use ISO-IR numbers for official
+       sets; don't use final-byte based number for private sets.
+
+1999-10-12  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * doprnt.c (emacs_doprnt_1): Fix problem with %0XXd for a negative
+       integer.
+
+1999-10-12  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (vars_of_mule_charset): Update `utf-2000-version'
+       to 0.9.
+
+1999-10-11  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * regex.c (compile_extended_range): Use `CHAR_CHARSET_ID' instead
+       of `CHAR_LEADING_BYTE' in UTF-2000.
+
+       * insdel.c (find_charsets_in_bufbyte_string): Use
+       `CHAR_CHARSET_ID' instead of `CHAR_LEADING_BYTE' in UTF-2000.
+       (find_charsets_in_emchar_string): Likewise.
+
+       * chartab.h (CHAR_TABLE_NON_ASCII_VALUE_UNSAFE): Use
+       `CHAR_CHARSET_ID' instead of `CHAR_LEADING_BYTE' in UTF-2000.
+
+       * char-ucs.h (CHAR_LEADING_BYTE): Deleted.
+       (CHAR_CHARSET_ID): New macro.
+
+1999-10-11  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * chartab.c (get_char_table): Don't use type `Charset_ID' for
+       charset-id - MIN_LEADING_BYTE.
+       (put_char_table): Likewise.
+
+1999-10-11  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * char-ucs.h (MIN_LEADING_BYTE): Changed to `-0x40'.
+       (NUM_LEADING_BYTES): Changed to (80 * 3 - MIN_LEADING_BYTE).
+       (CHARSET_LEADING_BYTE): Don't cast by `Bufbyte'.
+       (CHARSET_ID_OFFSET): New macro.
+       (LEADING_BYTE_CONTROL_1): Changed to (CHARSET_ID_OFFSET - 1).
+       (LEADING_BYTE_UCS_BMP): Changed to (CHARSET_ID_OFFSET - 2).
+       (LEADING_BYTE_LATIN_VISCII): Changed to (CHARSET_ID_OFFSET - 3).
+       (LEADING_BYTE_HIRAGANA_JISX0208): Changed to (CHARSET_ID_OFFSET -
+       4).
+       (LEADING_BYTE_KATAKANA_JISX0208): Changed to (CHARSET_ID_OFFSET -
+       5).
+       (MIN_LEADING_BYTE_PRIVATE): Changed to `MIN_LEADING_BYTE'.
+       (MAX_LEADING_BYTE_PRIVATE): Changed to (CHARSET_ID_OFFSET - 6).
+       (CHARSET_ID_OFFSET_94): Changed to (CHARSET_ID_OFFSET - '0').
+       (CHARSET_ID_OFFSET_96): Changed to (CHARSET_ID_OFFSET_94 + 80).
+       (CHARSET_ID_OFFSET_94x94): Changed to (CHARSET_ID_OFFSET_96 + 80).
+
+1999-10-11  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (next_allocated_leading_byte): New variable in
+       UTF-2000.
+       (next_allocated_1_byte_leading_byte): Don't define in UTF-2000.
+       (next_allocated_2_byte_leading_byte): Don't define in UTF-2000.
+       (get_unallocated_leading_byte): Simply use
+       `next_allocated_leading_byte' [ignore dimension] in UTF-2000.
+       (vars_of_mule_charset): Setup `next_allocated_leading_byte' in
+       UTF-2000.
+
+       * char-ucs.h (MIN_LEADING_BYTE_PRIVATE): New macro.
+       (MAX_LEADING_BYTE_PRIVATE): New macro.
+       (MIN_LEADING_BYTE_OFFICIAL_2): Deleted.
+       (MAX_LEADING_BYTE_OFFICIAL_2): Deleted.
+
+1999-10-11  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Fmake_charset): Allocate final-byte based
+       charset-id for 94-set, 96-set and 94x94-set.
+
+1999-10-11  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (char_byte_table_equal): Fill braces to avoid
+       ambiguous `else'.
+       (Fmake_charset): Likewise.
+       (complex_vars_of_mule_charset): Modify the font registry of
+       `ucs-bmp' not to match `Ethiopic-Unicode'.
+
+1999-10-10  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (complex_vars_of_mule_charset): Add font
+       registory of `ucs-bmp'.
+
+1999-10-10  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * text-coding.c (char_encode_iso2022): Ignore non-ISO-2022
+       coded-charsets in `default-coded-charset-priority-list' when
+       breaking up a character.
+
+       * mule-charset.c (Vcharset_latin_viscii): New variable.
+       (Qlatin_viscii): New variable.
+       (make_charset): Don't use `decoding_table'.
+       (Fmake_charset): Regard graphic = 2 as 256^n-set; setup
+       byte_offset.
+       (Fset_charset_mapping_table): New implementation.
+       (syms_of_mule_charset): Add new symbol `latin-viscii'.
+       (complex_vars_of_mule_charset): Set `graphic' attribute of charset
+       `ucs-bmp' and `latin_viscii' to 2; change font registry of charset
+       `latin-viscii-lower' to "MULEVISCII-LOWER"; change font registry
+       of charset `latin-viscii-upper' to "MULEVISCII-UPPER"; add new
+       charset `latin_viscii'.
+
+       * char-ucs.h (LEADING_BYTE_LATIN_VISCII): New macro.
+       (CHARSET_TYPE_94X94): Change to 1 from 2.
+       (CHARSET_TYPE_96): Change to 2 from 1.
+       (CHARSET_TYPE_128): New macro.
+       (CHARSET_TYPE_128X128): Change to 5 from 4.
+       (CHARSET_TYPE_256): New macro.
+       (CHARSET_TYPE_256X256): Change to 7 from 5.
+       (MAKE_CHAR): Use `XCHARSET_BYTE_OFFSET(charset)'.
+
+1999-10-10  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * text-coding.c (char_encode_shift_jis): Refer
+       `XCHARSET_ENCODING_TABLE(Vcharset_latin_jisx0201)' instead of
+       `XCHARSET_TO_BYTE1_TABLE(Vcharset_latin_jisx0201)'.
+
+       * mule-charset.c (mark_char_byte_table): New function in UTF-2000.
+       (char_byte_table_equal): New function in UTF-2000.
+       (char_byte_table_hash): New function in UTF-2000.
+       (char_byte_table_description): New constant in UTF-2000.
+       (char_byte_table): New type in UTF-2000.
+       (make_char_byte_table): New function in UTF-2000.
+       (copy_char_byte_table): New function in UTF-2000.
+       (make_char_code_table): New macro in UTF-2000.
+       (get_char_code_table): New function in UTF-2000.
+       (put_char_code_table): New function in UTF-2000.
+       (mark_charset): Mark `cs->encoding_table' in UTF-2000.
+       (charset_description): Add setting in UTF-2000.
+       (make_charset): Setup `CHARSET_ENCODING_TABLE(cs)' instead of
+       `CHARSET_TO_BYTE1_TABLE(cs)'.
+       (charset_get_byte1): Refer `XCHARSET_ENCODING_TABLE(charset)'
+       instead of `XCHARSET_TO_BYTE1_TABLE(charset)'.
+       (charset_get_byte2): Refer `XCHARSET_ENCODING_TABLE(charset)'
+       instead of `XCHARSET_TO_BYTE2_TABLE(charset)'.
+       (Fset_charset_mapping_table): Setup `CHARSET_ENCODING_TABLE(cs)'
+       instead of `CHARSET_TO_BYTE1_TABLE(cs)' and
+       `CHARSET_TO_BYTE2_TABLE(cs)'.
+
+       * char-ucs.h (char_byte_table): New type.
+       (XCHAR_BYTE_TABLE): New macro.
+       (XSETCHAR_BYTE_TABLE): New macro.
+       (CHAR_BYTE_TABLE_P): New macro.
+       (GC_CHAR_BYTE_TABLE_P): New macro.
+       (struct Lisp_Char_Byte_Table): New structure.
+       (get_char_code_table): New interface.
+       (Emchar_to_byte_table): Deleted.
+       (get_byte_from_character_table): Deleted.
+       (struct Lisp_Charset): Add `encoding_table'; delete
+       `to_byte1_table' and `to_byte2_table'.
+       (CHARSET_ENCODING_TABLE): New macro.
+       (CHARSET_TO_BYTE1_TABLE): Deleted.
+       (CHARSET_TO_BYTE2_TABLE): Deleted.
+       (XCHARSET_ENCODING_TABLE): New macro.
+       (XCHARSET_TO_BYTE1_TABLE): Deleted.
+       (XCHARSET_TO_BYTE2_TABLE): Deleted.
+
+1999-10-07  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (syms_of_mule_charset): Delete charset alias
+       `vietnamese-viscii-*'.
+
+1999-10-07  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Qvietnamese_viscii_lower): New variable.
+       (Qvietnamese_viscii_upper): New variable.
+       (Fdefine_charset_alias): New function.
+       (syms_of_mule_charset): Add new function `define-charset-alias'.
+       (syms_of_mule_charset): Rename charset `vietnamese-viscii-*' to
+       `latin-viscii-*'; define `vietnamese-viscii-*' as aliases for
+       `latin-viscii-*'.
+
+1999-10-04  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-ucs.h (MIN_CHAR_OBS_94x94): New macro.
+       (MAX_CHAR_OBS_94x94): New macro.
+       (breakup_char_1): Support obsolete XEmacs-UCS private code space
+       for 94x94 sets.
+
+       * mule-charset.c (put_byte_from_character_table): Change unit size
+       from 128 to 256.
+       (mark_charset): Don't mark `cs->decoding_table' if `UTF2000' is
+       not defined.
+       (Fmake_reverse_direction_charset): Modify dummy argument of
+       `make_charset' for non-UTF-2000 environment.
+
+1999-10-03  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * char-ucs.h (MAKE_CHAR): Allow nested decoding-table.
+
+       * mule-charset.c (destroy_byte_from_character_table): New macro.
+       (latin_jisx0201_to_ucs): Deleted.
+       (latin_iso8859_2_to_ucs): Deleted.
+       (latin_iso8859_3_to_ucs): Deleted.
+       (latin_iso8859_4_to_ucs): Deleted.
+       (latin_iso8859_9_to_ucs): Deleted.
+       (latin_viscii_lower_to_ucs): Deleted.
+       (latin_viscii_upper_to_ucs): Deleted.
+       (mark_charset): Mark `cs->decoding_table'.
+       (Fcharset_mapping_table): Fix DOC-string.
+       (Fset_charset_mapping_table): New function.
+       (syms_of_mule_charset): Add nwe function
+       `set-charset-mapping-table'.
+       (complex_vars_of_mule_charset): Don't setup and use
+       `latin_*_to_ucs'.
+
+1999-10-01  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * char-ucs.h (MAKE_CHAR): Check the result for range-represented
+       charset.
+
+1999-09-30  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (Vcharset_hiragana_jisx0208): New variable.
+       (Vcharset_katakana_jisx0208): New variable.
+       (Qhiragana_jisx0208): New variable.
+       (Qkatakana_jisx0208): New variable.
+       (make_charset): Add new argument `byte_offset'.
+       (charset_get_byte1): Modify for new coded-charset definition; use
+       `XCHARSET_UCS_MIN', `XCHARSET_UCS_MAX', `XCHARSET_CODE_OFFSET' and
+       `XCHARSET_BYTE_OFFSET'.
+       (Fmake_charset): Modify for `make_charset'.
+       (Fmake_reverse_direction_charset): Likewise.
+       (syms_of_mule_charset): Add new symbols `hiragana-jisx0208' and
+       `katakana-jisx0208'.
+       (complex_vars_of_mule_charset): Modify for `make_charset'; quote
+       `.'  in font registry of charset `katakana-jisx0201',
+       `latin-jisx0201', `vietnamese-viscii-lower' and
+       `vietnamese-viscii-upper'; modify DOC-string of charset
+       `japanese-jisx0208-1978' and `japanese-jisx0208'; modify font
+       registry of charset `japanese-jisx0208' not to use font for JIS
+       X0208:1990; add new charset `hiragana-jisx0208' and
+       `katakana-jisx0208'.
+
+       * char-ucs.h (LEADING_BYTE_HIRAGANA_JISX0208): New macro.
+       (LEADING_BYTE_KATAKANA_JISX0208): New macro.
+       (struct Lisp_Charset): Add `byte_offset'.
+       (CHARSET_BYTE_OFFSET): New macro.
+       (XCHARSET_UCS_MIN): New macro.
+       (XCHARSET_UCS_MAX): New macro.
+       (XCHARSET_CODE_OFFSET): New macro.
+       (XCHARSET_BYTE_OFFSET): New macro.
+       (MIN_CHAR_HIRAGANA): New macro.
+       (MAX_CHAR_HIRAGANA): New macro.
+       (MIN_CHAR_KATAKANA): New macro.
+       (MAX_CHAR_KATAKANA): New macro.
+       (MAKE_CHAR): Modify for new coded-charset definition; use
+       `XCHARSET_UCS_MIN', `XCHARSET_UCS_MAX', `XCHARSET_CODE_OFFSET' and
+       `XCHARSET_BYTE_OFFSET'.
+
+1999-09-27  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (CHAR96): Deleted.
+       (latin_jisx0201_to_ucs): Type is changed from array of <Emchar> to
+       <Lisp_Object>.
+       (latin_iso8859_2_to_ucs): Likewise.
+       (latin_iso8859_3_to_ucs): Likewise.
+       (latin_iso8859_4_to_ucs): Likewise.
+       (latin_iso8859_9_to_ucs): Likewise.
+       (latin_viscii_lower_to_ucs): Likewise.
+       (latin_viscii_upper_to_ucs): Likewise.
+       (latin_tcvn5712_to_ucs): Commented out.
+       (make_charset): Change type of argument `decoding_table' from
+       <Emchar*> to <Lisp_Object> [vector of characters].
+       (Fmake_charset): Modify for `make_charset'.
+       (Fmake_reverse_direction_charset): Likewise.
+       (Fcharset_mapping_table): New function in UTF-2000.
+       (syms_of_mule_charset): Setup `Fcharset_mapping_table' in
+       UTF-2000.
+       (complex_vars_of_mule_charset): Modify for type change of
+       `*_to_ucs'; modify for `make_charset'.
+
+       * char-ucs.h (struct Lisp_Charset): Change type of
+       `decoding_table' from <Emchar*> to <Lisp_Object>.
+       (MAKE_CHAR): Modify for new specification of `decoding_table'.
+
+1999-09-23  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Fmake_reverse_direction_charset): Fix compile
+       error with non-UTF-2000-Mule.
+
+1999-09-21  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Vcharset_chinese_cns11643_3): Deleted [defined
+       in lisp again].
+       (Vcharset_chinese_cns11643_4): Likewise.
+       (Vcharset_chinese_cns11643_5): Likewise.
+       (Vcharset_chinese_cns11643_6): Likewise.
+       (Vcharset_chinese_cns11643_7): Likewise.
+       (Qchinese_cns11643_3): Likewise.
+       (Qchinese_cns11643_4): Likewise.
+       (Qchinese_cns11643_5): Likewise.
+       (Qchinese_cns11643_6): Likewise.
+       (Qchinese_cns11643_7): Likewise.
+       (syms_of_mule_charset): Move definitions for `chinese-cns11643-3',
+       `chinese-cns11643-4', `chinese-cns11643-5', `chinese-cns11643-6'
+       and `chinese-cns11643-7' to lisp/mule/chinese.el.
+       (complex_vars_of_mule_charset): Likewise.
+
+1999-09-18  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (charset_get_byte1): Fix bug about 94- and
+       96-set.
+       (Fmake_reverse_direction_charset): Inherit CHARSET_DECODING_TABLE,
+       CHARSET_UCS_MIN, CHARSET_UCS_MAX and CHARSET_CODE_OFFSET.
+
+1999-09-17  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-ucs.h (MIN_CHAR_HALFWIDTH_KATAKANA): Changed to 0xFF61 from
+       0xFF60.
+       (MAKE_CHAR): Change offset for katakana-jisx0201 to 33 from 0x20.
+       (breakup_char_1): Likewise.
+
+       * text-coding.c (char_encode_iso2022): Keep designated charsets if
+       one of them includes the specified character.
+
+1999-09-14  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c: Update `utf-2000-version' to 0.8 (Kami).
+
+1999-09-14  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-ucs.h (MAKE_CHAR): Fix problem in 2-dimension charset.
+
+1999-09-14  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (latin_iso8859_2_to_ucs NULL): Add pseudo
+       definition for non-UTF-2000 Mule.
+       (latin_iso8859_3_to_ucs): Likewise.
+       (latin_iso8859_4_to_ucs): Likewise.
+       (latin_iso8859_9_to_ucs): Likewise.
+       (latin_jisx0201_to_ucs): Likewise.
+       (MIN_CHAR_THAI): Likewise.
+       (MAX_CHAR_THAI): Likewise.
+       (MIN_CHAR_GREEK): Likewise.
+       (MAX_CHAR_GREEK): Likewise.
+       (MIN_CHAR_HEBREW): Likewise.
+       (MAX_CHAR_HEBREW): Likewise.
+       (MIN_CHAR_HALFWIDTH_KATAKANA): Likewise.
+       (MAX_CHAR_HALFWIDTH_KATAKANA): Likewise.
+       (MIN_CHAR_CYRILLIC): Likewise.
+       (MAX_CHAR_CYRILLIC): Likewise.
+
+1999-09-14  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-ucs.h (breakup_char_1): Use
+       `Vdefault_coded_charset_priority_list' for hebrew-iso8859-8,
+       thai-tis620 and katakana-jisx0201 area.
+
+1999-09-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * char-ucs.h (breakup_char_1): Use
+       `Vdefault_coded_charset_priority_list' for cyrillic-iso8859-5
+       area.
+
+       * text-coding.c (reset_encoding_stream): Fixed.
+       (char_encode_ucs4): Delete `& 255'.
+
+       * char-ucs.h (breakup_char_1): Use
+       `Vdefault_coded_charset_priority_list' for greek-iso8859-7 area.
+
+1999-09-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * file-coding.c (Fmake_coding_system): Don't set up
+       `codesys->fixed.size'.
+       (encode_coding_no_conversion): Don't refer
+       `str->codesys->fixed.size'.
+
+1999-09-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c, char-ucs.h (latin_a_char_to_charset): Deleted.
+       (latin_a_char_to_byte1): Deleted.
+       (latin_a_char_to_byte2): Deleted.
+
+1999-09-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (make_charset): Add new argument `ucs_min',
+       `ucs_max' and `code_offset'.
+       (charset_get_byte1): New implementation [delete specific charset
+       depended implementations].
+       (Fmake_charset): Modify for `make_charset'.
+       (Fmake_reverse_direction_charset): Likewise.
+       (complex_vars_of_mule_charset): Likewise.
+
+       * char-ucs.h (struct Lisp_Charset): Add `ucs_min', `ucs_max' and
+       `code_offset'.
+       (CHARSET_UCS_MIN): New macro.
+       (CHARSET_UCS_MAX): New macro.
+       (CHARSET_CODE_OFFSET): New macro.
+       (MAKE_CHAR): Delete charset depended definitions [except
+       katakana-jisx0201].
+
+1999-09-13  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-ucs.h (breakup_char_1): Use
+       `Vdefault_coded_charset_priority_list' for C0-Controls,
+       Basic-Latin, C1-Controls and Latin-1-Supplement area.
+
+1999-09-13  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * char-ucs.h (charset_get_byte1): New function.
+       (XCHARSET_GET_BYTE1): Deleted.
+       (charset_get_byte2): New function.
+       (XCHARSET_GET_BYTE2): Deleted.
+       (Vdefault_coded_charset_priority_list): New external variable.
+       (breakup_char_1): Use `charset_get_byte1', `charset_get_byte2' and
+       `Vdefault_preferred_coded_charset_list'.
+
+       * mule-charset.c (charset_get_byte1): New function.
+       (charset_get_byte2): New function.
+       (Vdefault_coded_charset_priority_list): New variable.
+       (vars_of_mule_charset): Add new variable
+       `default-coded-charset-priority-list'.
+
+1999-09-12  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * char-ucs.h (XCHARSET_GET_BYTE1): New inline function.
+       (XCHARSET_GET_BYTE2): New inline function.
+       (breakup_char_1): Use `XCHARSET_GET_BYTE1' and
+       `XCHARSET_GET_BYTE2'.
+
+1999-09-12  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-charset.c (make_charset): Initialize
+       `CHARSET_TO_BYTE1_TABLE(cs)' and `CHARSET_TO_BYTE2_TABLE(cs)' by
+       NULL if table is not defined.
+
+1999-09-11  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * text-coding.c (char_encode_shift_jis): Use
+       `XCHARSET_TO_BYTE1_TABLE' for `Vcharset_latin_jisx0201' instead of
+       `ucs_to_latin_jisx0201'.
+
+       * mule-charset.c (ucs_to_latin_jisx0201): Deleted.
+       (ucs_to_latin_iso8859_2): Deleted.
+       (ucs_to_latin_iso8859_3): Deleted.
+       (ucs_to_latin_iso8859_4): Deleted.
+       (ucs_to_latin_iso8859_9): Deleted.
+       (ucs_to_latin_viscii_lower): Deleted.
+       (ucs_to_latin_viscii_upper): Deleted.
+       (ucs_to_latin_tcvn5712): Deleted.
+       (make_charset): Add new argument `decoding_table'; set up
+       `CHARSET_DECODING_TABLE(cs)' in UTF-2000; set up
+       `CHARSET_TO_BYTE1_TABLE(cs)' for 94-set and 96-set if
+       `decoding_table' is defined in UTF-2000.
+       (Fmake_charset): Modify for `make_charset'.
+       (Fmake_reverse_direction_charset): Likewise.
+       (complex_vars_of_mule_charset): Likewise; delete `GENERATE_94_SET'
+       and `GENERATE_96_SET'.
+
+       * char-ucs.h (latin_jisx0201_to_ucs): Deleted.
+       (ucs_to_latin_jisx0201): Deleted.
+       (latin_iso8859_2_to_ucs): Deleted.
+       (ucs_to_latin_iso8859_2): Deleted.
+       (latin_iso8859_3_to_ucs): Deleted.
+       (ucs_to_latin_iso8859_3): Deleted.
+       (latin_iso8859_4_to_ucs): Deleted.
+       (ucs_to_latin_iso8859_4): Deleted.
+       (latin_iso8859_9_to_ucs): Deleted.
+       (ucs_to_latin_iso8859_9): Deleted.
+       (latin_viscii_lower_to_ucs): Deleted.
+       (ucs_to_latin_viscii_lower): Deleted.
+       (latin_viscii_upper_to_ucs): Deleted.
+       (ucs_to_latin_viscii_upper): Deleted.
+       (struct Lisp_Charset): Renamed `encoding_table' to
+       `to_byte1_table'; add `to_byte2_table'.
+       (CHARSET_DECODING_TABLE): New macro.
+       (CHARSET_TO_BYTE1_TABLE): New macro.
+       (CHARSET_TO_BYTE2_TABLE): New macro.
+       (XCHARSET_DECODING_TABLE): New macro.
+       (XCHARSET_TO_BYTE1_TABLE): New macro.
+       (XCHARSET_TO_BYTE2_TABLE): New macro.
+       (MAKE_CHAR): Use `XCHARSET_DECODING_TABLE'; don't use `*_to_ucs'
+       tables.
+       (breakup_char_1): Use `XCHARSET_TO_BYTE1_TABLE' if it is defined;
+       don't use `ucs_to_*' tables.
+
+1999-09-11  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * text-coding.c (Fmake_coding_system): Don't set up
+       `codesys->fixed.size'.
+       (encode_coding_no_conversion): Use `if' instead of `switch'.
+
+       * file-coding.h (struct Lisp_Coding_System): Delete `fixed.size'.
+
+1999-09-11  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (make_charset): Delete argument `rep_bytes'.
+       (Fmake_charset): Modify for `make_charset'.
+       (Fmake_reverse_direction_charset): Likewise.
+       (complex_vars_of_mule_charset): Likewise.
+
+1999-09-11  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * text-coding.c (char_encode_shift_jis): Use table
+       `ucs_to_latin_jisx0201' and BREAKUP_CHAR.
+
+1999-09-11  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * text-coding.c (text_encode_generic): Use `if' instead of
+       `switch'.
+       (decode_coding_sjis): Use `MAKE_CHAR' and `DECODE_ADD_UCS_CHAR' to
+       decode JIS-Latin.
+
+1999-09-10  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * text-coding.c (encode_coding_sjis): Deleted.
+       (char_encode_shift_jis): New function.
+       (char_finish_shift_jis): New function.
+       (reset_encoding_stream): Set up `encode_char' and `finish' for
+       `CODESYS_UCS4' and `CODESYS_SHIFT_JIS'.
+       (mule_encode): Use generic encoder for `CODESYS_SHIFT_JIS'.
+       (char_encode_utf8): Treat `eol_type'.
+
+1999-09-10  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * file-coding.c (decode_coding_iso2022): Use
+       `DECODE_ADD_UCS_CHAR'; don't use `XCHARSET_REP_BYTES'.
+
+1999-09-10  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (vars_of_mule_charset): Update `utf-2000-version'
+       to 0.7 (Hirano).
+
+1999-09-10  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-lb.h (CHAR_COLUMNS): New macro.
+
+1999-09-09  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * text-coding.c (char_encode_ucs4): New function.
+       (char_finish_ucs4): New function.
+       (encode_coding_ucs4): Deleted.
+       (mule_encode): Use generic encoder for `CODESYS_UCS4'.
+       (text_encode_generic): Delete local variable `charset' and `half'.
+       (ucs_to_mule_table): Deleted.
+       (mule_to_ucs_table): Deleted.
+       (Fset_ucs_char): Deleted.
+       (ucs_to_char): Deleted.
+       (Fucs_char): Deleted.
+       (Fset_char_ucs): Deleted.
+       (Fchar_ucs): Deleted.
+       (decode_ucs4): Deleted.
+       (mule_char_to_ucs4): Deleted.
+       (encode_ucs4): Deleted.
+       (decode_coding_ucs4): Use `DECODE_ADD_UCS_CHAR'.
+       (decode_coding_utf8): Likewise.
+       (decode_coding_iso2022): Likewise; don't use `XCHARSET_REP_BYTES'.
+       (char_encode_iso2022): Fixed.
+       (syms_of_file_coding): Delete `Fset_ucs_char', `Fucs_char',
+       `Fset_char_ucs' and `Fchar_ucs'.
+       (complex_vars_of_file_coding): Don't initialize
+       `ucs_to_mule_table'.
+
+       * objects-tty.c (tty_initialize_font_instance): Don't use
+       `XCHARSET_COLUMNS'.
+
+       * mule-charset.c (make_charset): Don't set up CHARSET_REP_BYTES in
+       UTF-2000.
+
+       * redisplay-tty.c (tty_output_display_block): Use `CHAR_COLUMNS'
+       instead of `XCHARSET_COLUMNS' and `CHAR_CHARSET'.
+
+       * insdel.c (bufbyte_string_displayed_columns): Use `CHAR_COLUMNS'
+       instead of `XCHARSET_COLUMNS' and `CHAR_CHARSET'.
+       (emchar_string_displayed_columns): Likewise.
+
+       * indent.c (column_at_point): Use `CHAR_COLUMNS' instead of
+       `XCHARSET_COLUMNS' and `CHAR_CHARSET'.
+       (string_column_at_point): Likewise.
+       (Fmove_to_column): Likewise.
+
+       * char-ucs.h (struct Lisp_Charset): Delete `rep_bytes'; add
+       `encoding_table' and `decoding_table'.
+       (CHARSET_REP_BYTES): Deleted.
+       (XCHARSET_REP_BYTES): Deleted.
+       (XCHARSET_COLUMNS): Deleted.
+       (CHAR_COLUMNS): New macro.
+       (lookup_composite_char): Deleted unconditionally.
+       (composite_char_string): Likewise.
+
+1999-09-09  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * char-ucs.h (Emchar_to_byte_table): New type.
+       (get_byte_from_character_table): New function interface.
+       (Vcharset_latin_jisx0201): New variable.
+       (latin_jisx0201_to_ucs): New variable.
+       (ucs_to_latin_jisx0201): New variable.
+       (Vcharset_latin_iso8859_2): New variable.
+       (latin_iso8859_2_to_ucs): New variable.
+       (ucs_to_latin_iso8859_2): New variable.
+       (Vcharset_latin_iso8859_3): New variable.
+       (latin_iso8859_3_to_ucs): New variable.
+       (ucs_to_latin_iso8859_3): New variable.
+       (Vcharset_latin_iso8859_4): New variable.
+       (latin_iso8859_4_to_ucs): New variable.
+       (ucs_to_latin_iso8859_4): New variable.
+       (Vcharset_latin_iso8859_9): New variable.
+       (latin_iso8859_9_to_ucs): New variable.
+       (ucs_to_latin_iso8859_9): New variable.
+       (Vcharset_latin_viscii_lower): New variable.
+       (latin_viscii_lower_to_ucs): New variable.
+       (ucs_to_latin_viscii_lower): New variable.
+       (Vcharset_latin_viscii_upper): New variable.
+       (latin_viscii_upper_to_ucs): New variable.
+       (ucs_to_latin_viscii_upper): New variable.
+       (CHARSET_ID_OFFSET_94): Changed from 0x60 to 0x55.
+       (LEADING_BYTE_LATIN_VISCII_LOWER): New macro.
+       (LEADING_BYTE_LATIN_VISCII_UPPER): New macro.
+       (MAKE_CHAR): Map `latin-iso8859-2', `latin-iso8859-3',
+       `latin-iso8859-4', `latin-iso8859-9', `latin-jisx0201',
+       `vietnamese-viscii-lower' and `vietnamese-viscii-upper' to BMP.
+       (breakup_char_1): Use `ucs_to_latin_iso8859_2',
+       `ucs_to_latin_iso8859_3', `ucs_to_latin_iso8859_4',
+       `ucs_to_latin_iso8859_9', `ucs_to_latin_viscii_lower',
+       `ucs_to_latin_viscii_upper' and `ucs_to_latin_jisx0201' tables.
+
+       * mule-charset.c (Vcharset_latin_viscii_lower): New variable.
+       (Vcharset_latin_viscii_upper): New variable.
+       (make_byte_from_character_table): New function.
+       (put_byte_from_character_table): New function.
+       (get_byte_from_character_table): New function.
+       (CHAR96): New macro.
+       (ucs_to_latin_jisx0201): New variable.
+       (latin_jisx0201_to_ucs): New variable.
+       (ucs_to_latin_iso8859_2): New variable.
+       (latin_iso8859_2_to_ucs): New variable.
+       (ucs_to_latin_iso8859_3): New variable.
+       (latin_iso8859_3_to_ucs): New variable.
+       (ucs_to_latin_iso8859_4): New variable.
+       (latin_iso8859_4_to_ucs): New variable.
+       (ucs_to_latin_iso8859_9): New variable.
+       (latin_iso8859_9_to_ucs): New variable.
+       (ucs_to_latin_viscii_lower): New variable.
+       (latin_viscii_lower_to_ucs): New variable.
+       (ucs_to_latin_viscii_upper): New variable.
+       (latin_viscii_upper_to_ucs): New variable.
+       (ucs_to_latin_tcvn5712): New variable.
+       (latin_tcvn5712_to_ucs): New variable.
+       (Qlatin_viscii_lower): New variable.
+       (Qlatin_viscii_upper): New variable.
+       (syms_of_mule_charset): Set up new symbol
+       `vietnamese-viscii-lower' and `vietnamese-viscii-upper'.
+       (complex_vars_of_mule_charset): Set up new charset
+       `vietnamese-viscii-lower' and `vietnamese-viscii-upper'; new macro
+       `GENERATE_94_SET' and `GENERATE_96_SET'; use them to generate
+       `ucs_to_<CHARSET>' tables.
+
+1999-09-08  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * text-coding.c: New file.
+
+1999-09-07  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Fmake_char): Fix problem of 256-set.
+
+       * char-ucs.h (Vcharset_ucs_bmp): New variable.
+       (MAKE_CHAR): Modify for `ucs-bmp'.
+       (breakup_char_1): Return `ucs-bmp' and code point of BMP for
+       non-MULE characters of BMP.
+
+1999-09-06  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (vars_of_mule_charset):
+       Update `utf-2000-version' to 0.6.
+
+1999-09-05  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * lstream.h:
+       - Include multibyte.h instead of character.h for `BYTE_ASCII_P'.
+       - Include character.h for `CHAR_ASCII_P'.
+
+       * mb-multibyte.h (CHAR_MULTIBYTE_P): Moved from mule-charset.h.
+
+       * mule-charset.h (CHAR_MULTIBYTE_P): Moved to mb-multibyte.h.
+       (CHAR_ASCII_P): Don't use `CHAR_MULTIBYTE_P'.
+
+       * mb-multibyte.h (BYTE_ASCII_P): Moved from char-ucs.h.
+       (BYTE_C0_P): Likewise.
+       (BYTE_C1_P): Likewise.
+       (Lstream_get_emchar_1): Likewise.
+       (Lstream_fput_emchar): Likewise.
+       (Lstream_funget_emchar): Likewise.
+       (copy_internal_to_external): Likewise.
+       (copy_external_to_internal): Likewise.
+
+       * char-ucs.h (BYTE_ASCII_P): Moved to mb-multibyte.h.
+       (BYTE_C0_P): Likewise.
+       (BYTE_C1_P): Likewise.
+       (Lstream_get_emchar_1): Likewise.
+       (Lstream_fput_emchar): Likewise.
+       (Lstream_funget_emchar): Likewise.
+       (copy_internal_to_external): Likewise.
+       (copy_external_to_internal): Likewise.
+
+       * mb-1byte.h (BYTE_ASCII_P): Moved from buffer.h.
+       (REP_BYTES_BY_FIRST_BYTE): Likewise.
+
+       * buffer.h (REP_BYTES_BY_FIRST_BYTE): Moved to mb-1byte.h.
+       (BYTE_ASCII_P): Moved to mb-1byte.h.
+
+1999-09-04  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mb-utf-8.h, mb-lb.h: Include mb-multibyte.h.
+
+       * multibyte.h: Include mb-1byte.h in unibyte-XEmacs.
+       (MAX_EMCHAR_LEN): Moved to mb-1byte.h.
+       (VALID_CHARPTR_P): Moved to mb-*byte.h.
+       (VALIDATE_CHARPTR_BACKWARD): Likewise.
+       (VALIDATE_CHARPTR_FORWARD): Likewise.
+       (simple_charptr_emchar): Moved to mb-multibyte.h.
+       (simple_set_charptr_emchar): Likewise.
+       (simple_charptr_copy_char): Likewise.
+       (non_ascii_charptr_emchar): Likewise.
+       (non_ascii_set_charptr_emchar): Likewise.
+       (non_ascii_charptr_copy_char): Likewise.
+       (charptr_emchar): Moved to mb-*byte.h.
+       (set_charptr_emchar): Likewise.
+       (charptr_copy_char): Likewise.
+
+       * mb-1byte.h, mb-multibyte.h: New files.
+
+1999-09-03  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mb-utf-8.h (MULTIBYTE): New macro.
+       (MAX_EMCHAR_LEN): Moved from buffer.h.
+       (REP_BYTES_BY_FIRST_BYTE): Moved from char-ucs.h.
+
+       * char-ucs.h (REP_BYTES_BY_FIRST_BYTE): Moved to mb-utf-8.h.
+
+       * mb-lb.h, multibyte.h: New files.
+
+       * char-1byte.h (Charset_ID): Moved from buffer.h.
+       (MIN_LEADING_BYTE): Likewise.
+       (LEADING_BYTE_ASCII): Likewise.
+       (NUM_LEADING_BYTES): Likewise.
+       (CHARSETP): Likewise.
+       (CHARSET_BY_LEADING_BYTE): Likewise.
+       (XCHARSET_LEADING_BYTE): Likewise.
+       (XCHARSET_GRAPHIC): Likewise.
+       (XCHARSET_COLUMNS): Likewise.
+       (XCHARSET_DIMENSION): Likewise.
+       (CHAR_CHARSET): Likewise.
+       (CHAR_LEADING_BYTE): Likewise.
+       (BREAKUP_CHAR): Likewise.
+       (Vcharset_ascii): Likewise.
+
+       * buffer.h: Include multibyte.h unconditionally.
+       (VALID_CHARPTR_P): Moved to multibyte.h.
+       (ASSERT_VALID_CHARPTR): Likewise.
+       (REAL_INC_CHARPTR): Likewise.
+       (REAL_INC_CHARBYTIND): Likewise.
+       (REAL_DEC_CHARPTR): Likewise.
+       (INC_CHARPTR): Likewise.
+       (INC_CHARBYTIND): Likewise.
+       (DEC_CHARPTR): Likewise.
+       (VALIDATE_CHARPTR_BACKWARD): Likewise.
+       (VALIDATE_CHARPTR_FORWARD): Likewise.
+       (charptr_n_addr): Likewise.
+       (MAX_EMCHAR_LEN): Moved to mb-*.h.
+       (simple_charptr_emchar): Moved to multibyte.h.
+       (simple_set_charptr_emchar): Likewise.
+       (simple_charptr_copy_char): Likewise.
+       (non_ascii_charptr_emchar): Likewise.
+       (non_ascii_set_charptr_emchar): Likewise.
+       (non_ascii_charptr_copy_char): Likewise.
+       (charptr_emchar): Likewise.
+       (set_charptr_emchar): Likewise.
+       (charptr_copy_char): Likewise.
+       (charptr_emchar_n): Likewise.
+       (Charset_ID): Moved to char-1byte.h.
+       (Vcharset_ascii): Likewise.
+       (CHAR_CHARSET): Likewise.
+       (CHAR_LEADING_BYTE): Likewise.
+       (LEADING_BYTE_ASCII): Likewise.
+       (NUM_LEADING_BYTES): Likewise.
+       (MIN_LEADING_BYTE): Likewise.
+       (CHARSETP): Likewise.
+       (CHARSET_BY_LEADING_BYTE): Likewise.
+       (XCHARSET_LEADING_BYTE): Likewise.
+       (XCHARSET_GRAPHIC): Likewise.
+       (XCHARSET_COLUMNS): Likewise.
+       (XCHARSET_DIMENSION): Likewise.
+       (BREAKUP_CHAR): Likewise.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * character.h: Add document about interface for characters.
+
+       * char-ucs.h (CHAR_ASCII_P): Modify name of argument.
+       (MAKE_CHAR): Delete comment about
+       `FIELD2_TO_OFFICIAL_LEADING_BYTE' and
+       `FIELD2_TO_PRIVATE_LEADING_BYTE'.
+       (BREAKUP_CHAR): Modify name of arguments.
+       (CHAR_CHARSET): Modify name of argument.
+
+       * buffer.h: Delete document about Emchar accessors.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * character.h (CHAR_INTP): Moved from buffer.h
+       (CHAR_OR_CHAR_INTP): Likewise.
+       (XCHAR_OR_CHAR_INT): Likewise.
+       (CHECK_CHAR_COERCE_INT): Likewise.
+
+       * buffer.h (CHAR_INTP): Moved to character.h
+       (CHAR_OR_CHAR_INTP): Likewise.
+       (XCHAR_OR_CHAR_INT): Likewise.
+       (CHECK_CHAR_COERCE_INT): Likewise.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * character.h:
+       - Move definitions about UCS-2000 (UCS-4) to char-ucs.h.
+       - Include char-1byte.h, char-lb.h or char-ucs.h.
+
+       * mb-utf-8.h (CHAR_ASCII_P): Moved to char-ucs.h.
+
+       * buffer.h: Include character unconditionally.
+       (valid_char_p): Moved to char-*.h.
+       (non_ascii_valid_char_p): Moved to char-lb.h.
+
+       * char-1byte.h, char-lb.h, char-ucs.h: New files.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@urania.m17n.org>
+
+       * mule-ccl.c (ccl_driver): Don't define `CCL_WriteMultibyteChar2'
+       in UTF-2000 because it is not ported yet and not to use
+       `FIELD2_TO_OFFICIAL_LEADING_BYTE', `MIN_LEADING_BYTE_OFFICIAL_2',
+       `FIELD1_TO_OFFICIAL_LEADING_BYTE' and
+       `FIELD1_TO_PRIVATE_LEADING_BYTE'.
+
+       * mb-utf-8.h (CHAR_MULTIBYTE_P): Moved from character.h.
+       (CHAR_ASCII_P): Moved from character.h.
+
+       * character.h (CHAR_MULTIBYTE_P): Moved to mb-utf-8.h.
+       (CHAR_ASCII_P): Likewise.
+       (CHAR_FIELD1_MASK): Deleted.
+       (CHAR_FIELD2_MASK): Deleted.
+       (CHAR_FIELD3_MASK): Deleted.
+       (MAX_CHAR_BASIC_LATIN): New macro.
+       (CHAR_FIELD1): Deleted.
+       (CHAR_FIELD2_INTERNAL): Deleted.
+       (CHAR_FIELD3_INTERNAL): Deleted.
+       (FIELD1_TO_PRIVATE_LEADING_BYTE): Deleted.
+       (FIELD1_TO_OFFICIAL_LEADING_BYTE): Deleted.
+       (FIELD2_TO_PRIVATE_LEADING_BYTE): Deleted.
+       (FIELD2_TO_OFFICIAL_LEADING_BYTE): Deleted.
+       (MIN_CHAR_FIELD1_OFFICIAL): Deleted.
+       (MAX_CHAR_FIELD1_OFFICIAL): Deleted.
+       (MIN_CHAR_FIELD2_PRIVATE): Deleted.
+       (MAX_CHAR_FIELD2_PRIVATE): Deleted.
+       (MIN_CHAR_FIELD1_PRIVATE): Deleted.
+       (MAX_CHAR_FIELD1_PRIVATE): Deleted.
+       (MULE_CHAR_PRIVATE_OFFSET): Deleted.
+       (MIN_CHAR_PRIVATE_TYPE9N): Deleted.
+       (MAX_CHAR_PRIVATE_TYPE9N): Deleted.
+       (MIN_CHAR_PRIVATE_TYPE9NX9N): Deleted.
+       (MIN_CHAR_OFFICIAL_TYPE9NX9N): Deleted.
+       (MIN_CHAR_COMPOSITION): Deleted.
+       (breakup_char_1): Use `MAX_CHAR_BASIC_LATIN' instead of
+       `CHAR_ASCII_P'; use `0x7f' instead of `CHAR_FIELD3_INTERNAL'.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@m17n.org>
+
+       * buffer.h: Include mb-utf-8.h in UTF-2000.
+
+       * character.h (BUFBYTE_FIRST_BYTE_P): Moved to mb-utf-8.h.
+
+       * mb-utf-8.h: New file.
+
+1999-09-02  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * chartab.h (CHAR_TABLE_NON_ASCII_VALUE_UNSAFE): Use `Charset_ID'
+       instead of `int'.
+
+       * mule-charset.h, buffer.h (Charset_ID): New type.
+
+1999-09-01  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-canna.c (c2mu): Use `MAKE_CHAR',
+       `Vcharset_japanese_jisx0212' and `Vcharset_japanese_jisx0208'
+       instead of `MULE_CHAR_PRIVATE_OFFSET',
+       `LEADING_BYTE_JAPANESE_JISX0212', `LEADING_BYTE_JAPANESE_JISX0208'
+       and `FIELD1_TO_OFFICIAL_LEADING_BYTE'.
+       (m2c): Use `BREAKUP_CHAR' and `XCHARSET_FINAL'.
+
+       * character.h (Vcharset_japanese_jisx0212): New variable
+       definition.
+
+1999-09-01  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (Vcharset_ucs_bmp): New variable in UTF-2000.
+       (charset_by_attributes): Delete array about direction.
+       (latin_a_char_to_charset): New variable in UTF-2000.
+       (latin_a_char_to_byte1): New variable in UTF-2000.
+       (latin_a_char_to_byte2): New variable in UTF-2000.
+       (Qucs_bmp): New variable.
+       (next_allocated_1_byte_leading_byte): Use `Charset_ID' instead of
+       `Bufbyte'.
+       (next_allocated_2_byte_leading_byte): Likewise.
+       (non_ascii_set_charptr_emchar): Likewise.
+       (make_charset): Likewise; add `CHARSET_TYPE_128X128' and
+       `CHARSET_TYPE_256X256' in UTF-2000; modify for
+       `charset_by_attributes'.
+       (get_unallocated_leading_byte): Use `Charset_ID' instead of `int'.
+       (char-charset): Use `CHAR_CHARSET' instead of `CHAR_LEADING_BYTE'
+       and `CHARSET_BY_LEADING_BYTE'.
+       (syms_of_mule_charset): Set up `ucs-bmp'; move setting of
+       `utf-2000-version' to `vars_of_mule_charset'.
+       (vars_of_mule_charset): Modify for `charset_by_attributes'; don't
+       define `leading-code-private-11' in UTF-2000; move setting of
+       `utf-2000-version' from `syms_of_mule_charset'.
+       (complex_vars_of_mule_charset): Set up charset `ucs-bmp' in
+       UTF-2000.
+
+       * character.h (Charset_ID): New type.
+       (LEADING_BYTE_UCS_BMP): New macro.
+       (LEADING_BYTE_CONTROL_1): Changed from 0x8F to 0x81.
+       (CHARSET_ID_OFFSET_94): New macro.
+       (MIN_CHARSET_ID_PRIVATE_94): New macro.
+       (MAX_CHARSET_ID_PRIVATE_94): New macro.
+       (LEADING_BYTE_ASCII): Changed to use CHARSET_ID_OFFSET_94 and
+       final-byte.
+       (LEADING_BYTE_KATAKANA_JISX0201): Likewise.
+       (LEADING_BYTE_LATIN_JISX0201): Likewise.
+       (CHARSET_ID_OFFSET_96): New macro.
+       (LEADING_BYTE_LATIN_ISO8859_1): Changed to use
+       CHARSET_ID_OFFSET_96 and final-byte.
+       (LEADING_BYTE_LATIN_ISO8859_2): Likewise.
+       (LEADING_BYTE_LATIN_ISO8859_3): Likewise.
+       (LEADING_BYTE_LATIN_ISO8859_4): Likewise.
+       (LEADING_BYTE_GREEK_ISO8859_7): Likewise.
+       (LEADING_BYTE_ARABIC_ISO8859_6): Likewise.
+       (LEADING_BYTE_HEBREW_ISO8859_8): Likewise.
+       (LEADING_BYTE_CYRILLIC_ISO8859_5): Likewise.
+       (LEADING_BYTE_LATIN_ISO8859_9): Likewise.
+       (LEADING_BYTE_THAI_TIS620): Likewise.
+       (MIN_LEADING_BYTE_PRIVATE_1): Changed from 0x0D0 to 0xD0.
+       (MAX_LEADING_BYTE_PRIVATE_1): Changed from 0x11f to 0xDF.
+       (CHARSET_ID_OFFSET_94x94): New macro.
+       (LEADING_BYTE_CHINESE_BIG5_1): Changed to use
+       CHARSET_ID_OFFSET_94x94 and final-byte.
+       (LEADING_BYTE_CHINESE_BIG5_2): Likewise.
+       (MIN_LEADING_BYTE_PRIVATE_2): Likewise.
+       (MAX_LEADING_BYTE_PRIVATE_2): Likewise.
+       (LEADING_BYTE_JAPANESE_JISX0208_1978): Likewise.
+       (LEADING_BYTE_CHINESE_GB2312): Likewise.
+       (LEADING_BYTE_JAPANESE_JISX0208): Likewise.
+       (LEADING_BYTE_KOREAN_KSC5601): Likewise.
+       (LEADING_BYTE_JAPANESE_JISX0212): Likewise.
+       (LEADING_BYTE_CHINESE_CCITT_GB): Likewise.
+       (LEADING_BYTE_CHINESE_CNS11643_*): Likewise.
+       (LEADING_BYTE_KOREAN_KPS9566): Likewise.
+       (CHARSET_TYPE_128X128): New macro.
+       (CHARSET_TYPE_256X256): New macro.
+       (XCHARSET_PRIVATE_P): Delete unconditionally.
+       (charset_by_attributes): Delete array about direction.
+       (CHARSET_BY_LEADING_BYTE): Use `Charset_ID' instead of `int'.
+       (CHARSET_BY_ATTRIBUTES): Modify for `charset_by_attributes'.
+       (MIN_CHAR_94): New macro.
+       (MAX_CHAR_94): New macro.
+       (MIN_CHAR_96): New macro.
+       (MAX_CHAR_96): New macro.
+       (MIN_CHAR_94x94): New macro.
+       (MAX_CHAR_94x94): New macro.
+       (MIN_CHAR_96x96): New macro.
+       (MAX_CHAR_96x96): New macro.
+       (FIELD1_TO_PRIVATE_LEADING_BYTE): Use `CHARSET_ID_OFFSET_94x94'.
+       (FIELD1_TO_OFFICIAL_LEADING_BYTE): Likewise.
+       (FIELD2_TO_PRIVATE_LEADING_BYTE): Use `(MIN_LEADING_BYTE_PRIVATE_1
+       - 32)'.
+       (FIELD2_TO_OFFICIAL_LEADING_BYTE): Use `LEADING_BYTE_ASCII'.
+       (MIN_CHAR_FIELD2_OFFICIAL): Deleted.
+       (MAX_CHAR_FIELD2_OFFICIAL): Deleted.
+       (MIN_CHAR_OFFICIAL_TYPE9N): Deleted.
+       (MAX_CHAR_PRIVATE_TYPE9N): Changed.
+       (MAKE_CHAR): Use `XCHARSET_FINAL' instead of
+       `XCHARSET_LEADING_BYTE' to make code-point.
+       (latin_a_char_to_charset): New variable.
+       (latin_a_char_to_byte1): New variable.
+       (latin_a_char_to_byte2): New variable.
+       (breakup_char_1): Use `latin_a_char_to_{charset|byte1|byte2}' for
+       Latin Extended-A; use `CHARSET_BY_ATTRIBUTES' instead of
+       `CHARSET_BY_LEADING_BYTE' to get charset for ISO-2022 characters.
+
+       * insdel.c (find_charsets_in_bufbyte_string): Use `Charset_ID'
+       instead of `unsigned char'; use `MIN_LEADING_BYTE' instead of 128.
+       (find_charsets_in_emchar_string): Likewise.
+       (vars_of_insdel): Don't define local variable `i' in UTF-2000.
+
+       * file-coding.c (Fdecode_big5_char): Use `Charset_ID' instead of
+       `int'.
+       (decode_coding_iso2022): Likewise.
+
+       * toolbar-x.c (x_output_toolbar_button): Use `Charset_ID' instead
+       of `unsigned char'.
+
+       * redisplay.c (redisplay_text_width_emchar_string): Use
+       `Charset_ID' instead of `unsigned char'.
+       (redisplay_frame_text_width_string): Likewise.
+
+       * glyphs.c (glyph_height_internal): Use `Charset_ID' instead of
+       `unsigned char'.
+
+       * faces.h, faces.c (ensure_face_cachel_complete): Use `Charset_ID'
+       instead of `unsigned char'.
+       (face_cachel_charset_font_metric_info): Likewise.
+
+       * chartab.c (print_char_table): Use `Charset_ID' instead of `int'.
+       (get_non_ascii_char_table_value): Likewise.
+       (get_char_table): Likewise.
+       (put_char_table): Likewise.
+       (map_over_other_charset): Likewise.
+       (map_char_table): Likewise.
+
+       * buffer.h (find_charsets_in_bufbyte_string): Use `Charset_ID'
+       instead of `unsigned char'.
+
+1999-08-31  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * character.h (PRE_LEADING_BYTE_PRIVATE_1): Deleted.
+       (PRE_LEADING_BYTE_PRIVATE_2): Deleted.
+
+       * mule-charset.c (leading_code_private_11): Don't define in
+       UTF-2000.
+
+       * mule-ccl.c (ccl_driver): Don't define `CCL_ReadMultibyteChar2'
+       in UTF-2000 because it is not ported yet and not to use
+       `PRE_LEADING_BYTE_PRIVATE_1' and `PRE_LEADING_BYTE_PRIVATE_2'.
+
+1999-08-30  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * character.h (LEADING_BYTE_COMPOSITE): Deleted.
+
+1999-08-29  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * regex.c (re_compile_fastmap): Don't use `LEADING_BYTE_PREFIX_P'
+       in UTF-2000.
+
+       * chartab.h (CHAR_TABLE_NON_ASCII_VALUE_UNSAFE): Use int instead
+       of unsigned char to store leading-byte.
+
+       * chartab.c (get_non_ascii_char_table_value): Don't use
+       `BREAKUP_CHAR_1_UNSAFE' in UTF-2000.
+
+       * file-coding.c (encode_coding_big5): Delete bogus implementation
+       in UTF2000.
+
+       * character.h (LEADING_BYTE_*): Delete definition for
+       non-UTF-2000.
+       (LEADING_BYTE_PRIVATE_P): Deleted unconditionally.
+       (LEADING_BYTE_PREFIX_P): Deleted.
+       (PRIVATE_LEADING_BYTE_PREFIX): Deleted.
+       (BUFBYTE_FIRST_BYTE_P): Delete definition for non-UTF-2000.
+       (BUFBYTE_LEADING_BYTE_P): Deleted.
+       (CHARSET_PRIVATE_P): Deleted unconditionally.
+       (rep_bytes_by_first_byte): Deleted unconditionally.
+       (REP_BYTES_BY_FIRST_BYTE): Delete definition for non-UTF-2000.
+       (FIELD1_TO_PRIVATE_LEADING_BYTE): Likewise.
+       (FIELD1_TO_OFFICIAL_LEADING_BYTE): Likewise.
+       (FIELD2_TO_PRIVATE_LEADING_BYTE): Likewise.
+       (CHAR_FIELD2): Deleted.
+       (CHAR_FIELD3): Deleted.
+       (MAKE_CHAR): Delete definition for non-UTF-2000.
+       (BREAKUP_CHAR_1_UNSAFE): Deleted.
+       (breakup_char_1): New implementation.
+       (CHAR_CHARSET): Use `BREAKUP_CHAR'.
+       (CHAR_LEADING_BYTE): Use `CHAR_CHARSET'.
+
+1999-08-29  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * character.h (REP_BYTES_BY_FIRST_BYTE): Change order of
+       condition.
+
+1999-08-28  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * character.h (LEADING_BYTE_PRIVATE_P): Don't define in UTF2000.
+       (CHARSET_PRIVATE_P): Likewise.
+       (XCHARSET_PRIVATE_P): Likewise.
+       (MAKE_CHAR): Don't use XCHARSET_PRIVATE_P in UTF2000.
+
+       * file-coding.c (encode_coding_ucs4): Delete bogus implement in
+       UTF2000.
+       (decode_coding_iso2022): Don't use XCHARSET_PRIVATE_P in UTF2000.
+
+1999-08-28  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * character.h (LEADING_BYTE_*): Changed in UTF2000.
+       (NUM_LEADING_BYTES): Changed from 128 to 256.
+       (FIELD1_TO_PRIVATE_LEADING_BYTE): Change value to 0x80 in UTF2000.
+       (FIELD1_TO_OFFICIAL_LEADING_BYTE): Change value to 0x80 in
+       UTF2000.
+       (FIELD2_TO_PRIVATE_LEADING_BYTE): Change value to 0x80 in UTF2000.
+
+       * mule-charset.c (Vcharset_chinese_cns11643_3): New variable in
+       UTF2000.
+       (Vcharset_chinese_cns11643_4): New variable in UTF2000.
+       (Vcharset_chinese_cns11643_5): New variable in UTF2000.
+       (Vcharset_chinese_cns11643_6): New variable in UTF2000.
+       (Vcharset_chinese_cns11643_7): New variable in UTF2000.
+       (Qchinese_cns11643_3): New variable in UTF2000.
+       (Qchinese_cns11643_4): New variable in UTF2000.
+       (Qchinese_cns11643_5): New variable in UTF2000.
+       (Qchinese_cns11643_6): New variable in UTF2000.
+       (Qchinese_cns11643_7): New variable in UTF2000.
+       (syms_of_mule_charset): Define `chinese-cns11643-3',
+       `chinese-cns11643-4', `chinese-cns11643-5', `chinese-cns11643-6'
+       and `chinese-cns11643-7' in UTF2000.
+       (vars_of_mule_charset): Initialize
+       next_allocated_2_byte_leading_byte by LEADING_BYTE_CHINESE_BIG5_2
+       + 1 in UTF2000.
+       (complex_vars_of_mule_charset): Setup charset
+       `chinese-cns11643-3', `chinese-cns11643-4', `chinese-cns11643-5',
+       `chinese-cns11643-6' and `chinese-cns11643-7' in UTF2000.
+
+1999-08-27  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c: Move setting for `leading-code-private-11' from
+       `syms_of_mule_charset' to `vars_of_mule_charset'.
+
+1999-08-27  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.h (CHARSET_BY_LEADING_BYTE): Use `MIN_LEADING_BYTE'
+       and `NUM_LEADING_BYTES' in assert.
+
+1999-08-27  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * character.h (charset_by_leading_byte): Use `NUM_LEADING_BYTES'
+       instead of 128.
+       (CHARSET_BY_LEADING_BYTE): Use `MIN_LEADING_BYTE' and
+       `NUM_LEADING_BYTES' instead of 128.
+
+1999-08-26  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.h (charset_by_leading_byte): Use
+       `NUM_LEADING_BYTES' instead of 128.
+       (CHARSET_BY_LEADING_BYTE): Use `MIN_LEADING_BYTE' instead of 128.
+
+       * mule-charset.c (charset_by_leading_byte): Use
+       `NUM_LEADING_BYTES' instead of 128.
+       (make_charset): Use `MIN_LEADING_BYTE' instead of 128.
+
+       * faces.h (FACE_CACHEL_FONT): Use `MIN_LEADING_BYTE' instead of
+       128.
+
+1999-08-25  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (syms_of_mule_charset): Update to
+       0.4 (Shin-Imamiya).
+
+1999-07-13 Daiki Ueno <ueno@ueda.info.waseda.ac.jp>
+
+       * file-coding.c (encode_coding_sjis): New implementation for
+       UTF2000.  (decode_coding_sjis): Ditto.
+
+1999-06-17  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c, character.h (Bytecount rep_bytes_by_first_byte):
+       Don't define in UTF2000.
+
+       * character.h: Include mule-charset.h if CHAR_IS_UCS4 is not
+       defined.
+
+       * redisplay-msw.c, objects-tty.c, objects-msw.c, mule-wnnfns.c,
+       mule-ccl.c, lstream.h, buffer.h: Include character.h in every
+       MULE.
+
+1999-06-17  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * config.h.in (CHAR_IS_UCS4): New macro.
+
+       * mule-charset.c (rep_bytes_by_first_byte): Modify for
+       conventional MULE representation.
+       (syms_of_mule_charset): Update to 0.3 (Imamiya).
+
+       * mule-charset.h: Reverted to original.
+
+       * redisplay-msw.c, objects-tty.c, objects-msw.c, mule-wnnfns.c,
+       mule-ccl.c, lstream.h, buffer.h: Use "character.h" instead of
+       "mule-charset.h" if CHAR_IS_UCS4 is defined.
+
+       * character.h: New file.
+
+       * file-coding.c (Fmake_coding_system): Set 1 to
+       `codesys->fixed.size' if TYPE is `no-conversion' and UTF2000 is
+       defined.
+       (encode_coding_no_conversion): New implementation for UTF2000.
+
+       * file-coding.h (struct Lisp_Coding_System): Add new member
+       `fixed.size'.
+
+1999-06-16  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * file-coding.c (decode_coding_iso2022): Code-point arguments of
+       `MAKE_CHAR' must be smaller than 0x80 in UTF2000.
+       (encode_coding_iso2022): New implementation for UTF2000.
+
+1999-06-15  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-canna.c (c2mu): New implementation for UTF2000.
+       (m2c): Likewise.
+
+1999-06-15  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * file-coding.c (encode_coding_no_conversion): Modify for UTF2000.
+
+1999-06-15  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * file-coding.c (reset_encoding_stream): Set 0 to
+       `str->iso2022.current_char_boundary' in UTF2000.
+       (encode_utf8): Don't define in UTF2000.
+       (encode_coding_utf8): New implementation for UTF-8 representation
+       of UTF2000.
+       (complex_vars_of_file_coding): Define coding-system `utf-8'.
+
+1999-06-15  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule.c (vars_of_mule): Provide `utf-2000' in UTF2000.
+
+       * mule-charset.h (BUFBYTE_FIRST_BYTE_P): Modify for UTF-8 in
+       UTF2000.
+       (REP_BYTES_BY_FIRST_BYTE): Likewise.
+
+       * buffer.h (non_ascii_valid_char_p): Don't define in UTF2000.
+
+       * mule-charset.c (non_ascii_set_charptr_emchar): Don't define
+       local variables `lb', `c1', `c2' and `charset' in UTF2000; encode
+       as UTF-8 in UTF2000.
+       (non_ascii_charptr_emchar): Decode as UTF-8 in UTF2000.
+       (non_ascii_valid_char_p): Don't define in UTF2000.
+       (non_ascii_charptr_copy_char): Add case 5 and 6 in UTF2000.
+       (Lstream_get_emchar_1): Likewise.
+       (utf-2000-version): New variable in UTF2000.
+
+       * lread.c (read_escape): Add new reader `u'.
+
+       * insdel.c (three_to_one_table): Don't define in UTF2000.
+       (bufpos_to_bytind_func): Use `buf->text->mule_size' instead of
+       `buf->text->mule_shifter' and `buf->text->mule_three_p' in
+       UTF2000.
+       (bytind_to_bufpos_func): Likewise.
+       (buffer_mule_signal_inserted_region): Likewise.
+       (vars_of_insdel): Don't initialize `three_to_one_table'.
+       (init_buffer_text): Use `buf->text->mule_size' instead of
+       `buf->text->mule_shifter' and `buf->text->mule_three_p' in
+       UTF2000.
+
+       * file-coding.c (DECODE_ADD_BINARY_CHAR): New implementation for
+       UTF-8 representation in UTF2000.
+       (DECODE_ADD_UCS_CHAR): New macro in UTF2000.
+       (decode_ucs4): Use `DECODE_ADD_UCS_CHAR' in UTF2000.
+       (decode_coding_iso2022): Don't define local variable `lb' in
+       UTF2000; don't use LEADING_BYTE in UTF2000; use
+       `DECODE_ADD_UCS_CHAR' in UTF2000.
+       (convert_to_external_format): Decode as UTF-8 in UTF2000.
+
+       * config.h.in (UTF2000): New macro.
+
+       * buffer.h (struct buffer_text): Add new member `mule_size' and
+       don't add `mule_shifter' and `mule_three_p' in UTF2000.
+       (valid_char_p): Return always 1 in UTF2000.
+       (MAX_EMCHAR_LEN): 6 in UTF2000.
+       (three_to_one_table): Don't define in UTF2000.
+       (real_bufpos_to_bytind): Modify for UTF-8 representation in
+       UTF2000.
+       (real_bytind_to_bufpos): Likewise.
+
+       * alloc.c (Fmake_string): Add case 5 and 6 for UTF2000.
+
+1999-06-10  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * mule-charset.c (rep_bytes_by_first_byte): Modified for character
+       representation change.
+       (Vutf_2000_version): New variable.
+       (leading_code_private_11): New variable.
+       (syms_of_mule_charset): Add new variables `utf-2000-version' and
+       `leading-code-private-11'.
+
+       * mule-charset.h (LEADING_BYTE_CHINESE_CCITT_GB): New macro.
+       (LEADING_BYTE_CHINESE_BIG5_1): Changed to 0x96 temporally.
+       (LEADING_BYTE_CHINESE_CNS11643_1): Changed to 0x97.
+       (LEADING_BYTE_CHINESE_CNS11643_2): Changed to 0x98.
+       (LEADING_BYTE_CHINESE_CNS11643_3): New macro.
+       (LEADING_BYTE_CHINESE_CNS11643_4): Likewise.
+       (LEADING_BYTE_CHINESE_CNS11643_5): Likewise.
+       (LEADING_BYTE_CHINESE_CNS11643_6): Likewise.
+       (LEADING_BYTE_CHINESE_CNS11643_7): Likewise [but not used].
+       (LEADING_BYTE_CHINESE_BIG5_2): Changed to 0x9D temporally.
+       (LEADING_BYTE_KOREAN_KPS9566): New macro [but not used].
+       (CHAR_FIELD1_MASK): Changed to (0x7F << 14).
+       (MIN_CHAR_GREEK): New macro.
+       (MAX_CHAR_GREEK): New macro.
+       (MIN_CHAR_CYRILLIC): New macro.
+       (MAX_CHAR_CYRILLIC): New macro.
+       (MIN_CHAR_HEBREW): New macro.
+       (MAX_CHAR_HEBREW): New macro.
+       (MIN_CHAR_THAI): New macro.
+       (MAX_CHAR_THAI): New macro.
+       (MIN_CHAR_HALFWIDTH_KATAKANA): New macro.
+       (MAX_CHAR_HALFWIDTH_KATAKANA): New macro.
+       (CHAR_FIELD2_INTERNAL): New macro [renamed from `CHAR_FIELD2'.
+       (CHAR_FIELD3_INTERNAL): New macro [renamed from `CHAR_FIELD3'.
+       (FIELD1_TO_PRIVATE_LEADING_BYTE): Changed to 0xc0.
+       (FIELD1_TO_OFFICIAL_LEADING_BYTE): Changed to 0x50.
+       (CHAR_FIELD2): New inline function.
+       (CHAR_FIELD3): New inline function.
+       (MULE_CHAR_PRIVATE_OFFSET): New macro.
+       (MIN_CHAR_OFFICIAL_TYPE9N): Shifted to `MULE_CHAR_PRIVATE_OFFSET'.
+       (MIN_CHAR_PRIVATE_TYPE9N): Likewise.
+       (MIN_CHAR_PRIVATE_TYPE9NX9N): Likewise.
+       (MIN_CHAR_OFFICIAL_TYPE9NX9N): Likewise.
+       (MIN_CHAR_COMPOSITION): Likewise.
+       (CHAR_LEADING_BYTE): Modified for character representation change.
+       (MAKE_CHAR): Likewise.
+
+       * lisp.h (Vcharset_latin_iso8859_1): New variable.
+       (Vcharset_greek_iso8859_7): Likewise.
+       (Vcharset_cyrillic_iso8859_5): Likewise.
+       (Vcharset_hebrew_iso8859_8): Likewise.
+       (Vcharset_thai_tis620): Likewise.
+       (Vcharset_katakana_jisx0201): Likewise.
+
 1999-12-14  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.24 is released.
index dd9e43b..ca3bb7c 100644 (file)
@@ -2078,6 +2078,10 @@ LENGTH must be an integer and INIT must be a character.
            Bufbyte *init_ptr = init_str;
            switch (len)
              {
+#ifdef UTF2000
+             case 6: *ptr++ = *init_ptr++;
+             case 5: *ptr++ = *init_ptr++;
+#endif
              case 4: *ptr++ = *init_ptr++;
              case 3: *ptr++ = *init_ptr++;
              case 2: *ptr++ = *init_ptr++;
index 6e3d980..02fe840 100644 (file)
@@ -32,9 +32,8 @@ Boston, MA 02111-1307, USA.  */
 #ifndef _XEMACS_BUFFER_H_
 #define _XEMACS_BUFFER_H_
 
-#ifdef MULE
-#include "mule-charset.h"
-#endif
+#include "character.h"
+#include "multibyte.h"
 
 /************************************************************************/
 /*                                                                      */
@@ -94,7 +93,11 @@ struct buffer_text
      This information is text-only so it goes here. */
   Bufpos mule_bufmin, mule_bufmax;
   Bytind mule_bytmin, mule_bytmax;
+#ifdef UTF2000
+  int mule_size;
+#else
   int mule_shifter, mule_three_p;
+#endif
 
   /* And we also cache 16 positions for fairly fast access near those
      positions. */
@@ -277,315 +280,8 @@ for (mps_bufcons = Qunbound,                                                      \
       denoted with the word "unsafe" in their name and are generally
       meant to be called only by other macros that have already
       stored the calling values in temporary variables.
-
-
-   Use the following functions/macros on contiguous strings of data.
-   If the text you're operating on is known to come from a buffer, use
-   the buffer-level functions below -- they know about the gap and may
-   be more efficient.
-
-
-  (A) For working with charptr's (pointers to internally-formatted text):
-  -----------------------------------------------------------------------
-
-   VALID_CHARPTR_P (ptr):
-       Given a charptr, does it point to the beginning of a character?
-
-   ASSERT_VALID_CHARPTR (ptr):
-       If error-checking is enabled, assert that the given charptr
-       points to the beginning of a character.  Otherwise, do nothing.
-
-   INC_CHARPTR (ptr):
-       Given a charptr (assumed to point at the beginning of a character),
-       modify that pointer so it points to the beginning of the next
-       character.
-
-   DEC_CHARPTR (ptr):
-       Given a charptr (assumed to point at the beginning of a
-       character or at the very end of the text), modify that pointer
-       so it points to the beginning of the previous character.
-
-   VALIDATE_CHARPTR_BACKWARD (ptr):
-       Make sure that PTR is pointing to the beginning of a character.
-       If not, back up until this is the case.   Note that there are not
-       too many places where it is legitimate to do this sort of thing.
-       It's an error if you're passed an "invalid" char * pointer.
-       NOTE: PTR *must* be pointing to a valid part of the string (i.e.
-       not the very end, unless the string is zero-terminated or
-       something) in order for this function to not cause crashes.
-
-   VALIDATE_CHARPTR_FORWARD (ptr):
-       Make sure that PTR is pointing to the beginning of a character.
-       If not, move forward until this is the case.  Note that there
-       are not too many places where it is legitimate to do this sort
-       of thing.  It's an error if you're passed an "invalid" char *
-       pointer.
-
-
-   (B) For working with the length (in bytes and characters) of a
-       section of internally-formatted text:
-   --------------------------------------------------------------
-
-   bytecount_to_charcount (ptr, nbi):
-       Given a pointer to a text string and a length in bytes,
-       return the equivalent length in characters.
-
-   charcount_to_bytecount (ptr, nch):
-       Given a pointer to a text string and a length in characters,
-       return the equivalent length in bytes.
-
-   charptr_n_addr (ptr, n):
-       Return a pointer to the beginning of the character offset N
-       (in characters) from PTR.
-
-
-   (C) For retrieving or changing the character pointed to by a charptr:
-   ---------------------------------------------------------------------
-
-   charptr_emchar (ptr):
-       Retrieve the character pointed to by PTR as an Emchar.
-
-   charptr_emchar_n (ptr, n):
-       Retrieve the character at offset N (in characters) from PTR,
-       as an Emchar.
-
-   set_charptr_emchar (ptr, ch):
-       Store the character CH (an Emchar) as internally-formatted
-       text starting at PTR.  Return the number of bytes stored.
-
-   charptr_copy_char (ptr, ptr2):
-       Retrieve the character pointed to by PTR and store it as
-       internally-formatted text in PTR2.
-
-
-   (D) For working with Emchars:
-   -----------------------------
-
-   [Note that there are other functions/macros for working with Emchars
-    in mule-charset.h, for retrieving the charset of an Emchar
-    and such.  These are only valid when MULE is defined.]
-
-   valid_char_p (ch):
-       Return whether the given Emchar is valid.
-
-   CHARP (ch):
-       Return whether the given Lisp_Object is a character.
-
-   CHECK_CHAR_COERCE_INT (ch):
-       Signal an error if CH is not a valid character or integer Lisp_Object.
-       If CH is an integer Lisp_Object, convert it to a character Lisp_Object,
-       but merely by repackaging, without performing tests for char validity.
-
-   MAX_EMCHAR_LEN:
-       Maximum number of buffer bytes per Emacs character.
-
 */
 
-
-/* ---------------------------------------------------------------------- */
-/* (A) For working with charptr's (pointers to internally-formatted text) */
-/* ---------------------------------------------------------------------- */
-
-#ifdef MULE
-# define VALID_CHARPTR_P(ptr) BUFBYTE_FIRST_BYTE_P (* (unsigned char *) ptr)
-#else
-# define VALID_CHARPTR_P(ptr) 1
-#endif
-
-#ifdef ERROR_CHECK_BUFPOS
-# define ASSERT_VALID_CHARPTR(ptr) assert (VALID_CHARPTR_P (ptr))
-#else
-# define ASSERT_VALID_CHARPTR(ptr)
-#endif
-
-/* Note that INC_CHARPTR() and DEC_CHARPTR() have to be written in
-   completely separate ways.  INC_CHARPTR() cannot use the DEC_CHARPTR()
-   trick of looking for a valid first byte because it might run off
-   the end of the string.  DEC_CHARPTR() can't use the INC_CHARPTR()
-   method because it doesn't have easy access to the first byte of
-   the character it's moving over. */
-
-#define REAL_INC_CHARPTR(ptr) \
-  ((void) ((ptr) += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr))))
-
-#define REAL_INC_CHARBYTIND(ptr,pos) \
-  (pos += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr)))
-
-#define REAL_DEC_CHARPTR(ptr) do {     \
-  (ptr)--;                             \
-} while (!VALID_CHARPTR_P (ptr))
-
-#ifdef ERROR_CHECK_BUFPOS
-#define INC_CHARPTR(ptr) do {          \
-  ASSERT_VALID_CHARPTR (ptr);          \
-  REAL_INC_CHARPTR (ptr);              \
-} while (0)
-
-#define INC_CHARBYTIND(ptr,pos) do {           \
-  ASSERT_VALID_CHARPTR (ptr);          \
-  REAL_INC_CHARBYTIND (ptr,pos);               \
-} while (0)
-
-#define DEC_CHARPTR(ptr) do {                  \
-  CONST Bufbyte *dc_ptr1 = (ptr);              \
-  CONST Bufbyte *dc_ptr2 = dc_ptr1;            \
-  REAL_DEC_CHARPTR (dc_ptr2);                  \
-  assert (dc_ptr1 - dc_ptr2 ==                 \
-         REP_BYTES_BY_FIRST_BYTE (*dc_ptr2));  \
-  (ptr) = dc_ptr2;                             \
-} while (0)
-
-#else /* ! ERROR_CHECK_BUFPOS */
-#define INC_CHARBYTIND(ptr,pos) REAL_INC_CHARBYTIND (ptr,pos)
-#define INC_CHARPTR(ptr) REAL_INC_CHARPTR (ptr)
-#define DEC_CHARPTR(ptr) REAL_DEC_CHARPTR (ptr)
-#endif /* ! ERROR_CHECK_BUFPOS */
-
-#ifdef MULE
-
-#define VALIDATE_CHARPTR_BACKWARD(ptr) do {    \
-  while (!VALID_CHARPTR_P (ptr)) ptr--;                \
-} while (0)
-
-/* This needs to be trickier to avoid the possibility of running off
-   the end of the string. */
-
-#define VALIDATE_CHARPTR_FORWARD(ptr) do {     \
-  Bufbyte *vcf_ptr = (ptr);                    \
-  VALIDATE_CHARPTR_BACKWARD (vcf_ptr);         \
-  if (vcf_ptr != (ptr))                                \
-    {                                          \
-      (ptr) = vcf_ptr;                         \
-      INC_CHARPTR (ptr);                       \
-    }                                          \
-} while (0)
-
-#else /* not MULE */
-#define VALIDATE_CHARPTR_BACKWARD(ptr)
-#define VALIDATE_CHARPTR_FORWARD(ptr)
-#endif /* not MULE */
-
-/* -------------------------------------------------------------- */
-/* (B) For working with the length (in bytes and characters) of a */
-/*     section of internally-formatted text                      */
-/* -------------------------------------------------------------- */
-
-INLINE CONST Bufbyte *charptr_n_addr (CONST Bufbyte *ptr, Charcount offset);
-INLINE CONST Bufbyte *
-charptr_n_addr (CONST Bufbyte *ptr, Charcount offset)
-{
-  return ptr + charcount_to_bytecount (ptr, offset);
-}
-
-/* -------------------------------------------------------------------- */
-/* (C) For retrieving or changing the character pointed to by a charptr */
-/* -------------------------------------------------------------------- */
-
-#define simple_charptr_emchar(ptr)             ((Emchar) (ptr)[0])
-#define simple_set_charptr_emchar(ptr, x)      ((ptr)[0] = (Bufbyte) (x), 1)
-#define simple_charptr_copy_char(ptr, ptr2)    ((ptr2)[0] = *(ptr), 1)
-
-#ifdef MULE
-
-Emchar non_ascii_charptr_emchar (CONST Bufbyte *ptr);
-Bytecount non_ascii_set_charptr_emchar (Bufbyte *ptr, Emchar c);
-Bytecount non_ascii_charptr_copy_char (CONST Bufbyte *ptr, Bufbyte *ptr2);
-
-INLINE Emchar charptr_emchar (CONST Bufbyte *ptr);
-INLINE Emchar
-charptr_emchar (CONST Bufbyte *ptr)
-{
-  return BYTE_ASCII_P (*ptr) ?
-    simple_charptr_emchar (ptr) :
-    non_ascii_charptr_emchar (ptr);
-}
-
-INLINE Bytecount set_charptr_emchar (Bufbyte *ptr, Emchar x);
-INLINE Bytecount
-set_charptr_emchar (Bufbyte *ptr, Emchar x)
-{
-  return !CHAR_MULTIBYTE_P (x) ?
-    simple_set_charptr_emchar (ptr, x) :
-    non_ascii_set_charptr_emchar (ptr, x);
-}
-
-INLINE Bytecount charptr_copy_char (CONST Bufbyte *ptr, Bufbyte *ptr2);
-INLINE Bytecount
-charptr_copy_char (CONST Bufbyte *ptr, Bufbyte *ptr2)
-{
-  return BYTE_ASCII_P (*ptr) ?
-    simple_charptr_copy_char (ptr, ptr2) :
-    non_ascii_charptr_copy_char (ptr, ptr2);
-}
-
-#else /* not MULE */
-
-# define charptr_emchar(ptr)           simple_charptr_emchar (ptr)
-# define set_charptr_emchar(ptr, x)    simple_set_charptr_emchar (ptr, x)
-# define charptr_copy_char(ptr, ptr2)  simple_charptr_copy_char (ptr, ptr2)
-
-#endif /* not MULE */
-
-#define charptr_emchar_n(ptr, offset) \
-  charptr_emchar (charptr_n_addr (ptr, offset))
-
-
-/* ---------------------------- */
-/* (D) For working with Emchars */
-/* ---------------------------- */
-
-#ifdef MULE
-
-int non_ascii_valid_char_p (Emchar ch);
-
-INLINE int valid_char_p (Emchar ch);
-INLINE int
-valid_char_p (Emchar ch)
-{
-  return ((unsigned int) (ch) <= 0xff) || non_ascii_valid_char_p (ch);
-}
-
-#else /* not MULE */
-
-#define valid_char_p(ch) ((unsigned int) (ch) <= 0xff)
-
-#endif /* not MULE */
-
-#define CHAR_INTP(x) (INTP (x) && valid_char_p (XINT (x)))
-
-#define CHAR_OR_CHAR_INTP(x) (CHARP (x) || CHAR_INTP (x))
-
-#ifdef ERROR_CHECK_TYPECHECK
-
-INLINE Emchar XCHAR_OR_CHAR_INT (Lisp_Object obj);
-INLINE Emchar
-XCHAR_OR_CHAR_INT (Lisp_Object obj)
-{
-  assert (CHAR_OR_CHAR_INTP (obj));
-  return CHARP (obj) ? XCHAR (obj) : XINT (obj);
-}
-
-#else
-
-#define XCHAR_OR_CHAR_INT(obj) (CHARP (obj) ? XCHAR (obj) : XINT (obj))
-
-#endif
-
-#define CHECK_CHAR_COERCE_INT(x) do {          \
-  if (CHARP (x))                               \
-     ;                                         \
-  else if (CHAR_INTP (x))                      \
-    x = make_char (XINT (x));                  \
-  else                                         \
-    x = wrong_type_argument (Qcharacterp, x);  \
-} while (0)
-
-#ifdef MULE
-# define MAX_EMCHAR_LEN 4
-#else
-# define MAX_EMCHAR_LEN 1
-#endif
-
 \f
 /*----------------------------------------------------------------------*/
 /*         Accessor macros for important positions in a buffer         */
@@ -971,7 +667,9 @@ Bufpos bytind_to_bufpos_func (struct buffer *buf, Bytind x);
    64K for width-three characters.
    */
 
+#ifndef UTF2000
 extern short three_to_one_table[];
+#endif
 
 INLINE int real_bufpos_to_bytind (struct buffer *buf, Bufpos x);
 INLINE int
@@ -979,8 +677,13 @@ real_bufpos_to_bytind (struct buffer *buf, Bufpos x)
 {
   if (x >= buf->text->mule_bufmin && x <= buf->text->mule_bufmax)
     return (buf->text->mule_bytmin +
+#ifdef UTF2000
+           (x - buf->text->mule_bufmin) * buf->text->mule_size
+#else
            ((x - buf->text->mule_bufmin) << buf->text->mule_shifter) +
-           (buf->text->mule_three_p ? (x - buf->text->mule_bufmin) : 0));
+           (buf->text->mule_three_p ? (x - buf->text->mule_bufmin) : 0)
+#endif
+           );
   else
     return bufpos_to_bytind_func (buf, x);
 }
@@ -991,9 +694,15 @@ real_bytind_to_bufpos (struct buffer *buf, Bytind x)
 {
   if (x >= buf->text->mule_bytmin && x <= buf->text->mule_bytmax)
     return (buf->text->mule_bufmin +
+#ifdef UTF2000
+           (buf->text->mule_size == 0 ? 0 :
+            (x - buf->text->mule_bytmin) / buf->text->mule_size)
+#else
            ((buf->text->mule_three_p
              ? three_to_one_table[x - buf->text->mule_bytmin]
-             : (x - buf->text->mule_bytmin) >> buf->text->mule_shifter)));
+             : (x - buf->text->mule_bytmin) >> buf->text->mule_shifter))
+#endif
+           );
   else
     return bytind_to_bufpos_func (buf, x);
 }
@@ -1336,41 +1045,6 @@ Bufbyte *convert_from_external_format (CONST Extbyte *ptr,
 #define GET_C_STRING_CTEXT_DATA_ALLOCA(s, ptr_out)             \
   GET_C_STRING_EXT_DATA_ALLOCA (s, FORMAT_CTEXT, ptr_out)
 
-
-\f
-/************************************************************************/
-/*                                                                      */
-/*                          fake charset functions                      */
-/*                                                                      */
-/************************************************************************/
-
-/* used when MULE is not defined, so that Charset-type stuff can still
-   be done */
-
-#ifndef MULE
-
-#define Vcharset_ascii Qnil
-
-#define CHAR_CHARSET(ch) Vcharset_ascii
-#define CHAR_LEADING_BYTE(ch) LEADING_BYTE_ASCII
-#define LEADING_BYTE_ASCII 0x80
-#define NUM_LEADING_BYTES 1
-#define MIN_LEADING_BYTE 0x80
-#define CHARSETP(cs) 1
-#define CHARSET_BY_LEADING_BYTE(lb) Vcharset_ascii
-#define XCHARSET_LEADING_BYTE(cs) LEADING_BYTE_ASCII
-#define XCHARSET_GRAPHIC(cs) -1
-#define XCHARSET_COLUMNS(cs) 1
-#define XCHARSET_DIMENSION(cs) 1
-#define REP_BYTES_BY_FIRST_BYTE(fb) 1
-#define BREAKUP_CHAR(ch, charset, byte1, byte2) do {   \
-  (charset) = Vcharset_ascii;                          \
-  (byte1) = (ch);                                      \
-  (byte2) = 0;                                         \
-} while (0)
-#define BYTE_ASCII_P(byte) 1
-
-#endif /* ! MULE */
 \f
 /************************************************************************/
 /*                                                                      */
@@ -1601,10 +1275,10 @@ int beginning_of_line_p (struct buffer *b, Bufpos pt);
 
 /* from insdel.c */
 void set_buffer_point (struct buffer *buf, Bufpos pos, Bytind bipos);
-void find_charsets_in_bufbyte_string (unsigned char *charsets,
+void find_charsets_in_bufbyte_string (Charset_ID *charsets,
                                      CONST Bufbyte *str,
                                      Bytecount len);
-void find_charsets_in_emchar_string (unsigned char *charsets,
+void find_charsets_in_emchar_string (Charset_ID *charsets,
                                     CONST Emchar *str,
                                     Charcount len);
 int bufbyte_string_displayed_columns (CONST Bufbyte *str, Bytecount len);
diff --git a/src/char-1byte.h b/src/char-1byte.h
new file mode 100644 (file)
index 0000000..98aefa5
--- /dev/null
@@ -0,0 +1,73 @@
+/* Header for UCS-4 character representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_CHAR_1BYTE_H
+#define _XEMACS_CHAR_1BYTE_H
+
+#define valid_char_p(ch) ((unsigned int) (ch) <= 0xff)
+
+\f
+/************************************************************************/
+/*                    Definition of leading bytes                       */
+/************************************************************************/
+
+typedef int Charset_ID;
+
+#define MIN_LEADING_BYTE 0x80
+#define LEADING_BYTE_ASCII 0x80
+#define NUM_LEADING_BYTES 1
+
+\f
+/************************************************************************/
+/*            Information about a particular character set              */
+/************************************************************************/
+
+#define CHARSETP(cs) 1
+#define CHARSET_BY_LEADING_BYTE(lb) Vcharset_ascii
+#define XCHARSET_LEADING_BYTE(cs) LEADING_BYTE_ASCII
+#define XCHARSET_GRAPHIC(cs) -1
+#define XCHARSET_COLUMNS(cs) 1
+#define XCHARSET_DIMENSION(cs) 1
+
+\f
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+#define CHAR_CHARSET(ch) Vcharset_ascii
+#define CHAR_LEADING_BYTE(ch) LEADING_BYTE_ASCII
+
+#define BREAKUP_CHAR(ch, charset, byte1, byte2) do {   \
+  (charset) = Vcharset_ascii;                          \
+  (byte1) = (ch);                                      \
+  (byte2) = 0;                                         \
+} while (0)
+
+\f
+/************************************************************************/
+/*                            Exported functions                        */
+/************************************************************************/
+
+#define Vcharset_ascii Qnil
+
+#endif /* _XEMACS_CHAR_1BYTE_H */
diff --git a/src/char-lb.h b/src/char-lb.h
new file mode 100644 (file)
index 0000000..01ec5d5
--- /dev/null
@@ -0,0 +1,40 @@
+/* Header for leading-byte character representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_CHAR_LB_H
+#define _XEMACS_CHAR_LB_H
+
+#include "mule-charset.h"
+
+int non_ascii_valid_char_p (Emchar ch);
+
+INLINE int valid_char_p (Emchar ch);
+INLINE int
+valid_char_p (Emchar ch)
+{
+  return ((unsigned int) (ch) <= 0xff) || non_ascii_valid_char_p (ch);
+}
+
+#define CHAR_COLUMNS(c)     (XCHARSET_COLUMNS(CHAR_CHARSET(c)))
+
+#endif /* _XEMACS_CHAR_LB_H */
diff --git a/src/char-ucs.h b/src/char-ucs.h
new file mode 100644 (file)
index 0000000..addba55
--- /dev/null
@@ -0,0 +1,580 @@
+/* Header for UCS-4 character representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_CHAR_UCS_H
+#define _XEMACS_CHAR_UCS_H
+
+#define valid_char_p(ch) 1
+
+#define CHAR_ASCII_P(ch) ((ch) <= 0x7F)
+
+\f
+DECLARE_LRECORD (char_byte_table, struct Lisp_Char_Byte_Table);
+#define XCHAR_BYTE_TABLE(x) \
+  XRECORD (x, char_byte_table, struct Lisp_Char_Byte_Table)
+#define XSETCHAR_BYTE_TABLE(x, p) XSETRECORD (x, p, char_byte_table)
+#define CHAR_BYTE_TABLE_P(x) RECORDP (x, char_byte_table)
+#define GC_CHAR_BYTE_TABLE_P(x) GC_RECORDP (x, char_byte_table)
+/* #define CHECK_CHAR_BYTE_TABLE(x) CHECK_RECORD (x, char_byte_table)
+   char table entries should never escape to Lisp */
+
+struct Lisp_Char_Byte_Table
+{
+  struct lcrecord_header header;
+
+  Lisp_Object property[256];
+};
+
+
+DECLARE_LRECORD (char_code_table, struct Lisp_Char_Code_Table);
+#define XCHAR_CODE_TABLE(x) \
+  XRECORD (x, char_code_table, struct Lisp_Char_Code_Table)
+#define XSETCHAR_CODE_TABLE(x, p) XSETRECORD (x, p, char_code_table)
+#define CHAR_CODE_TABLE_P(x) RECORDP (x, char_code_table)
+#define GC_CHAR_CODE_TABLE_P(x) GC_RECORDP (x, char_code_table)
+/* #define CHECK_CHAR_CODE_TABLE(x) CHECK_RECORD (x, char_code_table)
+   char table entries should never escape to Lisp */
+
+struct Lisp_Char_Code_Table
+{
+  struct lcrecord_header header;
+
+  Lisp_Object table;
+};
+
+Lisp_Object get_char_code_table (Emchar ch, Lisp_Object table);
+
+
+extern Lisp_Object Vcharset_ucs_bmp;
+extern Lisp_Object Vcharset_latin_jisx0201;
+extern Lisp_Object Vcharset_latin_iso8859_2;
+extern Lisp_Object Vcharset_latin_iso8859_3;
+extern Lisp_Object Vcharset_latin_iso8859_4;
+extern Lisp_Object Vcharset_latin_iso8859_9;
+extern Lisp_Object Vcharset_latin_viscii_lower;
+extern Lisp_Object Vcharset_latin_viscii_upper;
+
+\f
+/************************************************************************/
+/*                    Definition of leading bytes                       */
+/************************************************************************/
+
+typedef int Charset_ID;
+
+#define MIN_LEADING_BYTE               -0x40
+#define CHARSET_ID_OFFSET              0x00
+
+/* represent normal 80-9F */
+#define LEADING_BYTE_CONTROL_1         (CHARSET_ID_OFFSET - 1)
+
+/* ISO/IEC 10646 BMP */
+#define LEADING_BYTE_UCS_BMP           (CHARSET_ID_OFFSET - 2)
+
+/* VISCII 1.1 */
+#define LEADING_BYTE_LATIN_VISCII      (CHARSET_ID_OFFSET - 3)
+
+/* MULE VISCII-LOWER                   (CHARSET_ID_OFFSET_96 + '1') */
+#define LEADING_BYTE_LATIN_VISCII_LOWER        (CHARSET_ID_OFFSET - 4)
+
+/* MULE VISCII-UPPER                   (CHARSET_ID_OFFSET_96 + '2') */
+#define LEADING_BYTE_LATIN_VISCII_UPPER        (CHARSET_ID_OFFSET - 5)
+
+/* Big5 Level 1                        2/4 2/{(8),9,10,11} 4/0 '0' */
+#define LEADING_BYTE_CHINESE_BIG5_1    (CHARSET_ID_OFFSET - 6)
+
+/* Big5 Level 2                        2/4 2/{(8),9,10,11} 4/0 '1' */
+#define LEADING_BYTE_CHINESE_BIG5_2    (CHARSET_ID_OFFSET - 7)
+
+#define LEADING_BYTE_ETHIOPIC_UCS      (CHARSET_ID_OFFSET - 8)
+
+#define LEADING_BYTE_HIRAGANA_JISX0208 (CHARSET_ID_OFFSET - 9)
+#define LEADING_BYTE_KATAKANA_JISX0208 (CHARSET_ID_OFFSET - 10)
+
+#define MIN_LEADING_BYTE_PRIVATE       MIN_LEADING_BYTE
+#define MAX_LEADING_BYTE_PRIVATE       (CHARSET_ID_OFFSET - 11)
+
+
+/* #define CHARSET_ID_OFFSET_94                (CHARSET_ID_OFFSET - '0') */
+
+/* #define MIN_CHARSET_ID_PRIVATE_94   (CHARSET_ID_OFFSET_94 + '0') */
+/* #define MAX_CHARSET_ID_PRIVATE_94   (CHARSET_ID_OFFSET_94 + '?') */
+
+/* ISO 646 IRV */
+#define LEADING_BYTE_ASCII               6 /* (CHARSET_ID_OFFSET_94 + 'B') */
+
+/* Right half of JIS X0201-1976 */
+#define LEADING_BYTE_KATAKANA_JISX0201  13 /* (CHARSET_ID_OFFSET_94 + 'I') */
+
+/* Left  half of JIS X0201-1976 */
+#define LEADING_BYTE_LATIN_JISX0201     14 /* (CHARSET_ID_OFFSET_94 + 'J') */
+
+
+/* #define CHARSET_ID_OFFSET_96                (CHARSET_ID_OFFSET_94 + 80) */
+
+/* Right half of ISO 8859-1 */
+#define LEADING_BYTE_LATIN_ISO8859_1   100 /* (CHARSET_ID_OFFSET_96 + 'A') */
+
+/* Right half of ISO 8859-2 */
+#define LEADING_BYTE_LATIN_ISO8859_2   101 /* (CHARSET_ID_OFFSET_96 + 'B') */
+
+/* Right half of ISO 8859-3 */
+#define LEADING_BYTE_LATIN_ISO8859_3   109 /* (CHARSET_ID_OFFSET_96 + 'C') */
+
+/* Right half of ISO 8859-4 */
+#define LEADING_BYTE_LATIN_ISO8859_4   110 /* (CHARSET_ID_OFFSET_96 + 'D') */
+
+/* Right half of ISO 8859-7 */
+#define LEADING_BYTE_GREEK_ISO8859_7   126 /* (CHARSET_ID_OFFSET_96 + 'F') */
+
+/* Right half of ISO 8859-6 */
+#define LEADING_BYTE_ARABIC_ISO8859_6  127 /* (CHARSET_ID_OFFSET_96 + 'G') */
+
+/* Right half of ISO 8859-8 */
+#define LEADING_BYTE_HEBREW_ISO8859_8  138 /* (CHARSET_ID_OFFSET_96 + 'H') */
+
+/* Right half of ISO 8859-5 */
+#define LEADING_BYTE_CYRILLIC_ISO8859_5        144 /* (CHARSET_ID_OFFSET_96 + 'L') */
+
+/* Right half of ISO 8859-9 */
+#define LEADING_BYTE_LATIN_ISO8859_9   148 /* (CHARSET_ID_OFFSET_96 + 'M') */
+
+/* TIS620-2533 */
+#define LEADING_BYTE_THAI_TIS620       166 /* (CHARSET_ID_OFFSET_96 + 'T') */
+
+
+/* #define CHARSET_ID_OFFSET_94x94             (CHARSET_ID_OFFSET_96 + 80) */
+
+
+/* #define MIN_LEADING_BYTE_PRIVATE_2  ('0' + CHARSET_ID_OFFSET_94x94) */
+/* #define MAX_LEADING_BYTE_PRIVATE_2  ('?' + CHARSET_ID_OFFSET_94x94) */
+
+/* Japanese JIS X0208-1978     2/4 2/{(8),9,10,11} 4/0 (@) */
+#define LEADING_BYTE_JAPANESE_JISX0208_1978     42
+
+/* Chinese Hanzi GB2312-1980   2/4 2/{(8),9,10,11} 4/1 (A) */
+#define LEADING_BYTE_CHINESE_GB2312             58
+
+/* Japanese JIS X0208-1983     2/4 2/{(8),9,10,11} 4/2 (B) */
+#define LEADING_BYTE_JAPANESE_JISX0208          87
+
+/* Hangul KS C5601-1987                2/4 2/{8,9,10,11} 4/3 (C) */
+#define LEADING_BYTE_KOREAN_KSC5601            149
+
+/* Japanese JIS X0212-1990     2/4 2/{8,9,10,11} 4/4 (D) */
+#define LEADING_BYTE_JAPANESE_JISX0212         159
+
+/* CCITT Extended GB           2/4 2/{8,9,10,11} 4/5 (E) */
+#define LEADING_BYTE_CHINESE_CCITT_GB          165
+
+/* Chinese CNS11643 Set 1      2/4 2/{8,9,10,11} 4/7 (G) */
+#define LEADING_BYTE_CHINESE_CNS11643_1                171
+
+/* Chinese CNS11643 Set 2      2/4 2/{8,9,10,11} 4/8 (H) */
+#define LEADING_BYTE_CHINESE_CNS11643_2                172
+
+/* Chinese CNS11643 Set 3      2/4 2/{8,9,10,11} 4/9 (I) */
+#define LEADING_BYTE_CHINESE_CNS11643_3                183
+
+/* Chinese CNS11643 Set 4      2/4 2/{8,9,10,11} 4/10 (J) */
+#define LEADING_BYTE_CHINESE_CNS11643_4                184
+
+/* Chinese CNS11643 Set 5      2/4 2/{8,9,10,11} 4/11 (K) */
+#define LEADING_BYTE_CHINESE_CNS11643_5                185
+
+/* Chinese CNS11643 Set 6      2/4 2/{8,9,10,11} 4/12 (L) */
+#define LEADING_BYTE_CHINESE_CNS11643_6                186
+
+/* Chinese CNS11643 Set 7      2/4 2/{8,9,10,11} 4/13 (M) */
+#define LEADING_BYTE_CHINESE_CNS11643_7                187
+
+/* DPRK Hangul KPS 9566-1997   2/4 2/{8,9,10,11} 4/14 (N) */
+#define LEADING_BYTE_KOREAN_KPS9566            202
+
+
+#define NUM_LEADING_BYTES      (80 * 3 - MIN_LEADING_BYTE)
+
+\f
+/************************************************************************/
+/*            Information about a particular character set              */
+/************************************************************************/
+
+struct Lisp_Charset
+{
+  struct lcrecord_header header;
+
+  int id;
+  Lisp_Object name;
+  Lisp_Object doc_string, registry, short_name, long_name;
+
+  Lisp_Object reverse_direction_charset;
+
+  Lisp_Object ccl_program;
+
+  /* Final byte of this character set in ISO2022 designating escape sequence */
+  Bufbyte final;
+
+  /* Number of columns a character in this charset takes up, on TTY
+     devices.  Not used for X devices. */
+  unsigned int columns;
+
+  /* Direction of this character set */
+  unsigned int direction;
+
+  /* Type of this character set (94, 96, 94x94, 96x96) */
+  unsigned int type;
+
+  /* Number of bytes used in encoding of this character set (1 or 2) */
+  unsigned int dimension;
+
+  /* Number of chars in each dimension (usually 94 or 96) */
+  unsigned int chars;
+
+  /* Which half of font to be used to display this character set */
+  unsigned int graphic;
+
+  /* Byte->character mapping table */
+  Lisp_Object decoding_table;
+
+  /* Range of character code */
+  Emchar ucs_min, ucs_max;
+
+  /* Offset for external code */
+  Emchar code_offset;
+
+  /* Offset for each byte */
+  Emchar byte_offset;
+};
+
+DECLARE_LRECORD (charset, struct Lisp_Charset);
+#define XCHARSET(x) XRECORD (x, charset, struct Lisp_Charset)
+#define XSETCHARSET(x, p) XSETRECORD (x, p, charset)
+#define CHARSETP(x) RECORDP (x, charset)
+#define GC_CHARSETP(x) GC_RECORDP (x, charset)
+#define CHECK_CHARSET(x) CHECK_RECORD (x, charset)
+#define CONCHECK_CHARSET(x) CONCHECK_RECORD (x, charset)
+
+#define CHARSET_TYPE_94      0 /* This charset includes 94      characters. */
+#define CHARSET_TYPE_94X94   1 /* This charset includes 94x94   characters. */
+#define CHARSET_TYPE_96      2 /* This charset includes 96      characters. */
+#define CHARSET_TYPE_96X96   3 /* This charset includes 96x96   characters. */
+#define CHARSET_TYPE_128     4 /* This charset includes 128     characters. */
+#define CHARSET_TYPE_128X128 5 /* This charset includes 128x128 characters. */
+#define CHARSET_TYPE_256     6 /* This charset includes 256     characters. */
+#define CHARSET_TYPE_256X256 7 /* This charset includes 256x256 characters. */
+
+#define CHARSET_LEFT_TO_RIGHT  0
+#define CHARSET_RIGHT_TO_LEFT  1
+
+/* Leading byte and id have been regrouped. -- OG */
+#define CHARSET_ID(cs)          ((cs)->id)
+#define CHARSET_LEADING_BYTE(cs) (CHARSET_ID(cs))
+#define CHARSET_NAME(cs)        ((cs)->name)
+#define CHARSET_SHORT_NAME(cs)  ((cs)->short_name)
+#define CHARSET_LONG_NAME(cs)   ((cs)->long_name)
+#define CHARSET_COLUMNS(cs)     ((cs)->columns)
+#define CHARSET_GRAPHIC(cs)     ((cs)->graphic)
+#define CHARSET_TYPE(cs)        ((cs)->type)
+#define CHARSET_DIRECTION(cs)   ((cs)->direction)
+#define CHARSET_FINAL(cs)       ((cs)->final)
+#define CHARSET_DOC_STRING(cs)  ((cs)->doc_string)
+#define CHARSET_REGISTRY(cs)    ((cs)->registry)
+#define CHARSET_CCL_PROGRAM(cs)  ((cs)->ccl_program)
+#define CHARSET_DIMENSION(cs)   ((cs)->dimension)
+#define CHARSET_CHARS(cs)       ((cs)->chars)
+#define CHARSET_REVERSE_DIRECTION_CHARSET(cs) ((cs)->reverse_direction_charset)
+#define CHARSET_DECODING_TABLE(cs) ((cs)->decoding_table)
+#define CHARSET_UCS_MIN(cs)     ((cs)->ucs_min)
+#define CHARSET_UCS_MAX(cs)     ((cs)->ucs_max)
+#define CHARSET_CODE_OFFSET(cs)         ((cs)->code_offset)
+#define CHARSET_BYTE_OFFSET(cs)         ((cs)->byte_offset)
+
+
+#define XCHARSET_ID(cs)                  CHARSET_ID           (XCHARSET (cs))
+#define XCHARSET_NAME(cs)        CHARSET_NAME         (XCHARSET (cs))
+#define XCHARSET_SHORT_NAME(cs)          CHARSET_SHORT_NAME   (XCHARSET (cs))
+#define XCHARSET_LONG_NAME(cs)   CHARSET_LONG_NAME    (XCHARSET (cs))
+#define XCHARSET_GRAPHIC(cs)      CHARSET_GRAPHIC      (XCHARSET (cs))
+#define XCHARSET_TYPE(cs)        CHARSET_TYPE         (XCHARSET (cs))
+#define XCHARSET_DIRECTION(cs)   CHARSET_DIRECTION    (XCHARSET (cs))
+#define XCHARSET_FINAL(cs)       CHARSET_FINAL        (XCHARSET (cs))
+#define XCHARSET_DOC_STRING(cs)          CHARSET_DOC_STRING   (XCHARSET (cs))
+#define XCHARSET_REGISTRY(cs)    CHARSET_REGISTRY     (XCHARSET (cs))
+#define XCHARSET_LEADING_BYTE(cs) CHARSET_LEADING_BYTE (XCHARSET (cs))
+#define XCHARSET_CCL_PROGRAM(cs)  CHARSET_CCL_PROGRAM  (XCHARSET (cs))
+#define XCHARSET_DIMENSION(cs)   CHARSET_DIMENSION    (XCHARSET (cs))
+#define XCHARSET_CHARS(cs)       CHARSET_CHARS        (XCHARSET (cs))
+#define XCHARSET_REVERSE_DIRECTION_CHARSET(cs) \
+  CHARSET_REVERSE_DIRECTION_CHARSET (XCHARSET (cs))
+#define XCHARSET_DECODING_TABLE(cs) CHARSET_DECODING_TABLE(XCHARSET(cs))
+#define XCHARSET_UCS_MIN(cs)     CHARSET_UCS_MIN(XCHARSET(cs))
+#define XCHARSET_UCS_MAX(cs)     CHARSET_UCS_MAX(XCHARSET(cs))
+#define XCHARSET_CODE_OFFSET(cs)  CHARSET_CODE_OFFSET(XCHARSET(cs))
+#define XCHARSET_BYTE_OFFSET(cs)  CHARSET_BYTE_OFFSET(XCHARSET(cs))
+
+struct charset_lookup {
+  /* Table of charsets indexed by (leading byte - 128). */
+  Lisp_Object charset_by_leading_byte[NUM_LEADING_BYTES];
+  
+  /* Table of charsets indexed by type/final-byte/direction. */
+  Lisp_Object charset_by_attributes[4][128];
+};
+
+extern struct charset_lookup *chlook;
+
+#ifdef ERROR_CHECK_TYPECHECK
+/* int not Bufbyte even though that is the actual type of a leading byte.
+   This way, out-ot-range values will get caught rather than automatically
+   truncated. */
+INLINE Lisp_Object CHARSET_BY_LEADING_BYTE (Charset_ID lb);
+INLINE Lisp_Object
+CHARSET_BY_LEADING_BYTE (Charset_ID lb)
+{
+  assert (lb >= MIN_LEADING_BYTE &&
+         lb < (MIN_LEADING_BYTE + NUM_LEADING_BYTES));
+  return chlook->charset_by_leading_byte[lb - MIN_LEADING_BYTE];
+}
+
+#else
+
+#define CHARSET_BY_LEADING_BYTE(lb) \
+  (chlook->charset_by_leading_byte[(lb) - MIN_LEADING_BYTE])
+
+#endif
+
+#define CHARSET_BY_ATTRIBUTES(type, final, dir) \
+  (chlook->charset_by_attributes[type][final])
+
+\f
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+#define MAX_CHAR_BASIC_LATIN   0x007F
+
+#define MIN_CHAR_GREEK         0x0370
+#define MAX_CHAR_GREEK         0x03CF
+
+#define MIN_CHAR_CYRILLIC      0x0400
+#define MAX_CHAR_CYRILLIC      0x045F
+
+#define MIN_CHAR_HEBREW                0x0590
+#define MAX_CHAR_HEBREW                0x05EF
+
+#define MIN_CHAR_THAI          0x0E00
+#define MAX_CHAR_THAI          0x0E5F
+
+#define MIN_CHAR_HIRAGANA      0x3041
+#define MAX_CHAR_HIRAGANA      0x3093
+
+#define MIN_CHAR_KATAKANA      0x30A1
+#define MAX_CHAR_KATAKANA      0x30F6
+
+#define MIN_CHAR_HALFWIDTH_KATAKANA    0xFF61
+#define MAX_CHAR_HALFWIDTH_KATAKANA    0xFF9F
+
+#define MIN_CHAR_OBS_94x94     0xE00000
+#define MAX_CHAR_OBS_94x94     (0xE00000 + 94 * 94 * 14 - 1)
+
+#define MIN_CHAR_94            0xE90940
+#define MAX_CHAR_94            (MIN_CHAR_94 + 94 * 80 - 1)
+#define MIN_CHAR_96            (MIN_CHAR_94 + 94 * 80)
+#define MAX_CHAR_96            (MIN_CHAR_96 + 96 * 80 - 1)
+
+#define MIN_CHAR_94x94         0xE9F6C0
+#define MAX_CHAR_94x94         (MIN_CHAR_94x94 + 94 * 94 * 80 - 1)
+#define MIN_CHAR_96x96         0xF4C000
+#define MAX_CHAR_96x96         (MIN_CHAR_96x96 + 96 * 96 * 80 - 1)
+
+
+/* Return a character whose charset is CHARSET and position-codes
+   are C1 and C2.  TYPE9N character ignores C2. */
+
+INLINE Emchar MAKE_CHAR (Lisp_Object charset, int c1, int c2);
+INLINE Emchar
+MAKE_CHAR (Lisp_Object charset, int c1, int c2)
+{
+  Lisp_Object decoding_table = XCHARSET_DECODING_TABLE (charset);
+  int idx;
+  Lisp_Object ch;
+
+  if (!EQ (decoding_table, Qnil)
+      && (0 <= (idx = c1 - XCHARSET_BYTE_OFFSET (charset)))
+      && (idx < XVECTOR_LENGTH (decoding_table))
+      && !EQ (ch = XVECTOR_DATA(decoding_table)[idx], Qnil))
+    {
+      if (VECTORP (ch))
+       {
+         if ((0 <= (idx = c2 - XCHARSET_BYTE_OFFSET (charset)))
+             && (idx < XVECTOR_LENGTH (ch))
+             && !EQ (ch = XVECTOR_DATA(ch)[idx], Qnil))
+           return XCHAR (ch);
+       }
+      else
+       return XCHAR (ch);
+    }
+  if (EQ (charset, Vcharset_katakana_jisx0201))
+    if (c1 < 0x60)
+      return c1 + MIN_CHAR_HALFWIDTH_KATAKANA - 33;
+    else
+      /* return MIN_CHAR_94 + ('I' - '0') * 94 + (c1 - 33); */
+      return ' ';
+  else if (XCHARSET_UCS_MAX (charset))
+    {
+      Emchar code
+       = (XCHARSET_DIMENSION (charset) == 1
+          ?
+          c1 - XCHARSET_BYTE_OFFSET (charset)
+          :
+          (c1 - XCHARSET_BYTE_OFFSET (charset)) * XCHARSET_CHARS (charset)
+          + c2  - XCHARSET_BYTE_OFFSET (charset))
+       - XCHARSET_CODE_OFFSET (charset) + XCHARSET_UCS_MIN (charset);
+      if ((code < XCHARSET_UCS_MIN (charset))
+         || (XCHARSET_UCS_MAX (charset) < code))
+       signal_simple_error ("Arguments makes invalid character",
+                            make_char (code));
+      return code;
+    }
+  else if (XCHARSET_DIMENSION (charset) == 1)
+    {
+      switch (XCHARSET_CHARS (charset))
+       {
+       case 94:
+         return MIN_CHAR_94
+           + (XCHARSET_FINAL (charset) - '0') * 94 + (c1 - 33);
+       case 96:
+         return MIN_CHAR_96
+           + (XCHARSET_FINAL (charset) - '0') * 96 + (c1 - 32);
+       default:
+         abort ();
+       }
+    }
+  else
+    {
+      switch (XCHARSET_CHARS (charset))
+       {
+       case 94:
+         return MIN_CHAR_94x94
+           + (XCHARSET_FINAL (charset) - '0') * 94 * 94
+           + (c1 - 33) * 94 + (c2 - 33);
+       case 96:
+         return MIN_CHAR_96x96
+           + (XCHARSET_FINAL (charset) - '0') * 96 * 96
+           + (c1 - 32) * 96 + (c2 - 32);
+       default:
+         abort ();
+       }
+    }
+}
+
+extern Lisp_Object Vcharacter_attribute_table;
+
+Lisp_Object split_builtin_char (Emchar c);
+Lisp_Object range_charset_code_point (Lisp_Object charset, Emchar ch);
+Lisp_Object charset_code_point (Lisp_Object charset, Emchar ch);
+
+extern Lisp_Object Vdefault_coded_charset_priority_list;
+EXFUN (Ffind_charset, 1);
+
+INLINE Lisp_Object SPLIT_CHAR (Emchar c);
+INLINE Lisp_Object
+SPLIT_CHAR (Emchar c)
+{
+  Lisp_Object cdef = get_char_code_table (c, Vcharacter_attribute_table);
+
+  if (!EQ (cdef, Qnil))
+    {
+      Lisp_Object charsets = Vdefault_coded_charset_priority_list;
+      Lisp_Object field;
+
+      while (!EQ (charsets, Qnil))
+       {
+         Lisp_Object charset = Ffind_charset (Fcar (charsets));
+
+         if (!EQ (charset, Qnil))
+           {
+             if (!NILP (field = Fassq (charset, cdef)))
+               return field;
+             else if (!NILP (field = range_charset_code_point (charset, c)))
+               return Fcons (charset, field);
+           }
+         charsets = Fcdr (charsets);         
+       }
+    }
+  
+  /* otherwise --- maybe for bootstrap */
+  return split_builtin_char (c);
+}
+
+INLINE void breakup_char_1 (Emchar c, Lisp_Object *charset, int *c1, int *c2);
+INLINE void
+breakup_char_1 (Emchar c, Lisp_Object *charset, int *c1, int *c2)
+{
+  Lisp_Object ret = SPLIT_CHAR (c);
+
+  *charset = Fcar (ret);
+  ret = Fcdr (ret);
+  if (INTP (Fcar (ret)))
+    {
+      *c1 = XINT (Fcar (ret));
+      ret = Fcdr (ret);
+      if (INTP (Fcar (ret)))
+       *c2 = XINT (Fcar (ret));
+      else
+       *c2 = 0;
+    }
+  else
+    {
+      *c1 = *c2 = 0;
+    }
+}
+
+#define BREAKUP_CHAR(ch, charset, b1, b2) \
+  breakup_char_1 (ch, &(charset), &(b1), &(b2))
+
+INLINE Lisp_Object CHAR_CHARSET (Emchar ch);
+INLINE Lisp_Object
+CHAR_CHARSET (Emchar ch)
+{
+  Lisp_Object charset;
+  int b1, b2;
+
+  BREAKUP_CHAR(ch, charset, b1, b2);
+  return charset;
+}
+
+#define CHAR_CHARSET_ID(c)  (XCHARSET_ID(CHAR_CHARSET(c)))
+#define CHAR_COLUMNS(c)     (CHARSET_COLUMNS(XCHARSET(CHAR_CHARSET(c))))
+
+\f
+/************************************************************************/
+/*                            Exported functions                        */
+/************************************************************************/
+
+EXFUN (Fget_charset, 1);
+
+extern Lisp_Object Vcharset_chinese_big5_1;
+extern Lisp_Object Vcharset_chinese_big5_2;
+extern Lisp_Object Vcharset_japanese_jisx0208;
+extern Lisp_Object Vcharset_japanese_jisx0212;
+
+#endif /* _XEMACS_CHAR_UCS_H */
diff --git a/src/character.h b/src/character.h
new file mode 100644 (file)
index 0000000..9f89559
--- /dev/null
@@ -0,0 +1,103 @@
+/* Header for character representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_CHARACTER_H
+#define _XEMACS_CHARACTER_H
+
+#if !defined(MULE) /* unibyte representation */
+# include "char-1byte.h"
+#elif !defined(CHAR_IS_UCS4) /* leading-byte representation */
+# include "char-lb.h"
+#else /* CHAR_IS_UCS4 */
+# include "char-ucs.h"
+#endif /* CHAR_IS_UCS4 */
+
+/********************************/
+/*                              */
+/*   Interface for characters   */
+/*                              */
+/********************************/
+/*
+   valid_char_p (ch):
+       Return whether the given Emchar is valid.
+
+   CHARP (ch):
+       Return whether the given Lisp_Object is a character.
+
+   CHECK_CHAR_COERCE_INT (ch):
+       Signal an error if CH is not a valid character or integer
+       Lisp_Object.
+       If CH is an integer Lisp_Object, convert it to a character
+       Lisp_Object, but merely by repackaging, without performing
+       tests for char validity.
+
+Functions/macros when MULE is defined:
+
+   CHAR_ASCII_P (ch):
+        Return whether the given Emchar is ASCII.
+
+   MAKE_CHAR (CHARSET, B1, B2):
+       Return a character whose coded-charset is CHARSET and
+       position-codes are B1 and B2.  1 byte character ignores B2.
+
+   BREAKUP_CHAR (ch, charset, B1, B2):
+       Break up the given Emchar, and store found coded-charset and
+       position-codes to CHARSET, B1 and B2.
+
+   CHAR_CHARSET (CH):
+        Return coded-charset object of Emchar CH.
+
+   CHAR_LEADING_BYTE (CH):
+        Return Charset-ID of Emchar CH.
+*/
+
+#define CHAR_INTP(x) (INTP (x) && valid_char_p (XINT (x)))
+
+#define CHAR_OR_CHAR_INTP(x) (CHARP (x) || CHAR_INTP (x))
+
+#ifdef ERROR_CHECK_TYPECHECK
+
+INLINE Emchar XCHAR_OR_CHAR_INT (Lisp_Object obj);
+INLINE Emchar
+XCHAR_OR_CHAR_INT (Lisp_Object obj)
+{
+  assert (CHAR_OR_CHAR_INTP (obj));
+  return CHARP (obj) ? XCHAR (obj) : XINT (obj);
+}
+
+#else
+
+#define XCHAR_OR_CHAR_INT(obj) (CHARP ((obj)) ? XCHAR ((obj)) : XINT ((obj)))
+
+#endif
+
+#define CHECK_CHAR_COERCE_INT(x) do {          \
+  if (CHARP (x))                               \
+     ;                                         \
+  else if (CHAR_INTP (x))                      \
+    x = make_char (XINT (x));                  \
+  else                                         \
+    x = wrong_type_argument (Qcharacterp, x);  \
+} while (0)
+
+#endif /* _XEMACS_CHARACTER_H */
index 475c87f..0096b43 100644 (file)
@@ -356,7 +356,7 @@ print_char_table (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
 
 #ifdef MULE
   {
-    int i;
+    Charset_ID i;
 
     for (i = MIN_LEADING_BYTE; i < MIN_LEADING_BYTE + NUM_LEADING_BYTES;
         i++)
@@ -775,14 +775,22 @@ decode_char_table_range (Lisp_Object range, struct chartab_range *outrange)
 
 /* called from CHAR_TABLE_VALUE(). */
 Lisp_Object
-get_non_ascii_char_table_value (struct Lisp_Char_Table *ct, int leading_byte,
-                              Emchar c)
+get_non_ascii_char_table_value (struct Lisp_Char_Table *ct,
+                               Charset_ID leading_byte, Emchar c)
 {
   Lisp_Object val;
+#ifdef UTF2000
+  Lisp_Object charset;
+#else
   Lisp_Object charset = CHARSET_BY_LEADING_BYTE (leading_byte);
+#endif
   int byte1, byte2;
 
+#ifdef UTF2000
+  BREAKUP_CHAR (c, charset, byte1, byte2);
+#else
   BREAKUP_CHAR_1_UNSAFE (c, charset, byte1, byte2);
+#endif
   val = ct->level1[leading_byte - MIN_LEADING_BYTE];
   if (CHAR_TABLE_ENTRYP (val))
     {
@@ -1267,7 +1275,7 @@ map_over_charset_row (struct Lisp_Char_Table_Entry *cte,
 
 
 static int
-map_over_other_charset (struct Lisp_Char_Table *ct, int lb,
+map_over_other_charset (struct Lisp_Char_Table *ct, Charset_ID lb,
                        int (*fn) (struct chartab_range *range,
                                   Lisp_Object val, void *arg),
                        void *arg)
@@ -1344,9 +1352,9 @@ map_char_table (struct Lisp_Char_Table *ct,
        if (retval)
          return retval;
        {
-         int i;
-         int start = MIN_LEADING_BYTE;
-         int stop  = start + NUM_LEADING_BYTES;
+         Charset_ID i;
+         Charset_ID start = MIN_LEADING_BYTE;
+         Charset_ID stop  = start + NUM_LEADING_BYTES;
 
          for (i = start, retval = 0; i < stop && retval == 0; i++)
            {
@@ -1365,7 +1373,8 @@ map_char_table (struct Lisp_Char_Table *ct,
 
     case CHARTAB_RANGE_ROW:
       {
-       Lisp_Object val = ct->level1[XCHARSET_LEADING_BYTE (range->charset) - MIN_LEADING_BYTE];
+       Lisp_Object val = ct->level1[XCHARSET_LEADING_BYTE (range->charset)
+                                   - MIN_LEADING_BYTE];
        if (!CHAR_TABLE_ENTRYP (val))
          {
            struct chartab_range rainj;
index 7ae8051..7fd20dd 100644 (file)
@@ -139,7 +139,11 @@ CHAR_TABLE_NON_ASCII_VALUE_UNSAFE (struct Lisp_Char_Table *ct, Emchar ch);
 INLINE Lisp_Object
 CHAR_TABLE_NON_ASCII_VALUE_UNSAFE (struct Lisp_Char_Table *ct, Emchar ch)
 {
-  unsigned char lb = CHAR_LEADING_BYTE (ch);
+#ifdef UTF2000
+  Charset_ID lb = CHAR_CHARSET_ID (ch);
+#else
+  Charset_ID lb = CHAR_LEADING_BYTE (ch);
+#endif
   if (!CHAR_TABLE_ENTRYP ((ct)->level1[lb - MIN_LEADING_BYTE]))
     return (ct)->level1[lb - MIN_LEADING_BYTE];
   else
index 3aa4aba..ade27a5 100644 (file)
@@ -471,6 +471,10 @@ char *alloca();
    if you're working with ASCII files. */
 #undef MULE
 
+#undef UTF2000
+
+#undef CHAR_IS_UCS4
+
 /* Define this if you want file coding support */
 #undef FILE_CODING
 
index c62ee1b..c9db857 100644 (file)
@@ -8,46 +8,46 @@ LISP_UNION_H=lisp-disunion.h
 LISP_H = lisp.h config.h $(LISP_UNION_H)
 #ifdef HAVE_MS_WINDOWS
 console-msw.o: $(LISP_H) conslots.h console-msw.h console.h events.h lisp-disunion.h lisp-union.h lrecord.h opaque.h symeval.h symsinit.h systime.h
-device-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h
-dialog-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
-dired-msw.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h nt.h regex.h symeval.h symsinit.h sysdir.h sysfile.h sysproc.h systime.h
-event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
-frame-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
-glyphs-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h
+device-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h
+dialog-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
+dired-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h nt.h regex.h symeval.h symsinit.h sysdir.h sysfile.h sysproc.h systime.h
+event-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar-msw.h mule-charset.h multibyte.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
+frame-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+glyphs-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h
 gui-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h elhash.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
-menubar-msw.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h menubar-msw.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
-objects-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h specifier.h symeval.h symsinit.h
-redisplay-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h debug.h device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h window.h winslots.h
+menubar-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar-msw.h menubar.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+objects-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-msw.h console.h device.h hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-msw.h objects.h specifier.h symeval.h symsinit.h
+redisplay-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-msw.h console.h debug.h device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h window.h winslots.h
 scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
-select-msw.o: $(LISP_H) conslots.h console-msw.h console.h lisp-disunion.h lisp-union.h lrecord.h select.h symeval.h symsinit.h
-toolbar-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+select-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h toolbar.h
+toolbar-msw.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-msw.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 #endif
 #ifdef HAVE_X_WINDOWS
 balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h xintrinsic.h
 console-x.o: $(LISP_H) conslots.h console-x.h console.h lisp-disunion.h lisp-union.h lrecord.h process.h redisplay.h symeval.h symsinit.h xintrinsic.h
-device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h conslots.h console-x.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
-dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h conslots.h console-x.h console.h device.h dragdrop.h events-mod.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
-glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h conslots.h console-x.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
-gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h xintrinsic.h
-input-method-xfs.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-objects-x.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h specifier.h symeval.h symsinit.h xintrinsic.h
-redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h conslots.h console-x.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
+dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h dragdrop.h events-mod.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
+gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h xintrinsic.h
+input-method-xfs.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+objects-x.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h specifier.h symeval.h symsinit.h xintrinsic.h
+redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
 scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar-x.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h xintrinsic.h
-select-x.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h systime.h toolbar.h xintrinsic.h
-toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+select-x.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h systime.h toolbar.h xintrinsic.h
+toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
 #endif
 #ifdef HAVE_DATABASE
-database.o: $(LISP_H) buffer.h bufslots.h database.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfile.h
+database.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h database.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h sysfile.h
 #endif
 #ifdef MULE
-mule-canna.o: $(LISP_H) buffer.h bufslots.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
-mule-ccl.o: $(LISP_H) buffer.h bufslots.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h symeval.h symsinit.h
-mule-charset.o: $(LISP_H) buffer.h bufslots.h chartab.h conslots.h console.h device.h elhash.h faces.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-ccl.h mule-charset.h symeval.h symsinit.h
-mule-mcpath.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfile.h
-mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h symeval.h symsinit.h sysdep.h window.h winslots.h
+mule-canna.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h
+mule-ccl.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h symeval.h symsinit.h
+mule-charset.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h elhash.h faces.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h symeval.h symsinit.h
+mule-mcpath.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h sysfile.h
+mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h symeval.h symsinit.h sysdep.h window.h winslots.h
 mule.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h regex.h symeval.h symsinit.h
 #endif
 #ifdef EXTERNAL_WIDGET
@@ -57,125 +57,125 @@ ExternalShell.o: ExternalShell.h ExternalShellP.h config.h extw-Xlib.h extw-Xt.h
 extw-Xlib.o: config.h extw-Xlib.h
 extw-Xt.o: config.h extw-Xlib.h extw-Xt.h
 #endif
-EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h buffer.h bufslots.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
 EmacsManager.o: EmacsManager.h EmacsManagerP.h config.h xintrinsicp.h xmmanagerp.h
 EmacsShell-sub.o: EmacsShell.h EmacsShellP.h config.h xintrinsic.h xintrinsicp.h
 EmacsShell.o: EmacsShell.h ExternalShell.h config.h xintrinsicp.h
-abbrev.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h symeval.h symsinit.h syntax.h window.h winslots.h
-alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h chartab.h conslots.h console-stream.h console.h device.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h systime.h toolbar.h window.h winslots.h
+abbrev.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h symeval.h symsinit.h syntax.h window.h winslots.h
+alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console-stream.h console.h device.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h systime.h toolbar.h window.h winslots.h
 alloca.o: config.h
 balloon_help.o: balloon_help.h config.h xintrinsic.h
 blocktype.o: $(LISP_H) blocktype.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-buffer.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h conslots.h console.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
-bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h syntax.h
-callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h commands.h events.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h symeval.h symsinit.h systime.h window.h winslots.h
-callproc.o: $(LISP_H) buffer.h bufslots.h commands.h file-coding.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h nt.h process.h redisplay.h scrollbar.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h window.h winslots.h
-casefiddle.o: $(LISP_H) buffer.h bufslots.h chartab.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
-casetab.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h
-chartab.o: $(LISP_H) buffer.h bufslots.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
-cm.o: $(LISP_H) conslots.h console-tty.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systty.h toolbar.h
-cmdloop.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
-cmds.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
+buffer.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h symeval.h symsinit.h syntax.h
+callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h commands.h events.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h symeval.h symsinit.h systime.h window.h winslots.h
+callproc.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h file-coding.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h nt.h process.h redisplay.h scrollbar.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h window.h winslots.h
+casefiddle.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h syntax.h
+casetab.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h symeval.h symsinit.h
+chartab.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h syntax.h
+cm.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-tty.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systty.h toolbar.h
+cmdloop.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+cmds.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h syntax.h
 console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-console-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h
-console.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-data.o: $(LISP_H) buffer.h bufslots.h bytecode.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfloat.h syssignal.h
+console-tty.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-stream.h console-tty.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h
+console.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+data.o: $(LISP_H) buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h sysfloat.h syssignal.h
 debug.o: $(LISP_H) bytecode.h debug.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-device-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h
-device.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
+device-tty.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-stream.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h
+device.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
 dgif_lib.o: gifrlib.h
 dialog.o: $(LISP_H) conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
-dired.o: $(LISP_H) buffer.h bufslots.h commands.h elhash.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h opaque.h regex.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h
-doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfile.h
-doprnt.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h symeval.h symsinit.h
+dired.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h elhash.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h opaque.h regex.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h
+doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h sysfile.h
+doprnt.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h
 dragdrop.o: $(LISP_H) dragdrop.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 dynarr.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 ecrt0.o: config.h
-editfns.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
-eldap.o: $(LISP_H) buffer.h bufslots.h eldap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h sysdep.h
+editfns.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h commands.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
+eldap.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h eldap.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h symeval.h symsinit.h sysdep.h
 elhash.o: $(LISP_H) bytecode.h elhash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h commands.h conslots.h console.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h paths.h process.h redisplay.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h
-emodules.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h toolbar.h window.h winslots.h
+emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h paths.h process.h redisplay.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h
+emodules.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h toolbar.h window.h winslots.h
 esd.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h symsinit.h
-eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h commands.h conslots.h console.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h
-event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h blocktype.h buffer.h bufslots.h conslots.h console-tty.h console-x.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h toolbar.h xintrinsic.h xintrinsicp.h
-event-stream.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h blocktype.h buffer.h bufslots.h commands.h conslots.h console-x.h console.h device.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui-x.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h macros.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h symeval.h symsinit.h
+event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h blocktype.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-tty.h console-x.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h toolbar.h xintrinsic.h xintrinsicp.h
+event-stream.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h blocktype.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console-x.h console.h device.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui-x.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h macros.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h xintrinsic.h
 event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
-event-unixoid.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h events.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h process.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
-events.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console-x.h console.h device.h events-mod.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
-extents.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h debug.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
-faces.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-file-coding.o: $(LISP_H) buffer.h bufslots.h chartab.h elhash.h file-coding.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-ccl.h mule-charset.h symeval.h symsinit.h
-fileio.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h ndir.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h toolbar.h window.h winslots.h
-filelock.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h paths.h symeval.h symsinit.h sysdir.h sysfile.h syspwd.h syssignal.h
+event-unixoid.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-stream.h console-tty.h console.h device.h events.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
+events.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-tty.h console-x.h console.h device.h events-mod.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+extents.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h debug.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
+faces.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+file-coding.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h elhash.h file-coding.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h symeval.h symsinit.h
+fileio.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h toolbar.h window.h winslots.h
+filelock.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h paths.h symeval.h symsinit.h sysdir.h sysfile.h syspwd.h syssignal.h
 filemode.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysfile.h
 floatfns.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysfloat.h syssignal.h
-fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h
-font-lock.o: $(LISP_H) buffer.h bufslots.h chartab.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
+fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h
+font-lock.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h syntax.h
 frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systime.h systty.h toolbar.h
-frame.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+frame.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 free-hook.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 general.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 getloadavg.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysfile.h
 gif_io.o: gifrlib.h sysfile.h
-glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h
-glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h
+glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 gmalloc.o: config.h getpagesize.h
-gpmevent.o: $(LISP_H) commands.h conslots.h console-tty.h console.h device.h events-mod.h events.h gpmevent.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h process.h symeval.h symsinit.h sysdep.h sysproc.h syssignal.h systime.h systty.h
+gpmevent.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console-tty.h console.h device.h events-mod.h events.h gpmevent.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h symeval.h symsinit.h sysdep.h sysproc.h syssignal.h systime.h systty.h
 gui.o: $(LISP_H) bytecode.h elhash.h gui.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-gutter.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+gutter.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 hash.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 hftctl.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 hpplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 imgproc.o: $(LISP_H) imgproc.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-indent.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h chartab.h conslots.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h process.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syntax.h systime.h toolbar.h tooltalk.h window.h winslots.h xintrinsic.h
+indent.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h process.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syntax.h systime.h toolbar.h tooltalk.h window.h winslots.h xintrinsic.h
 input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h xintrinsic.h
-insdel.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
+insdel.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
 intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h elhash.h events-mod.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h elhash.h events-mod.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 libsst.o: $(LISP_H) libsst.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-line-number.o: $(LISP_H) buffer.h bufslots.h line-number.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
+line-number.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h line-number.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h
 linuxplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h symsinit.h sysfile.h syssignal.h
-lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h elhash.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h symeval.h symsinit.h sysfile.h sysfloat.h
-lstream.o: $(LISP_H) buffer.h bufslots.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h symeval.h symsinit.h sysfile.h
-macros.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h elhash.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h symeval.h symsinit.h sysfile.h sysfloat.h
+lstream.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h sysfile.h
+macros.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h macros.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 malloc.o: config.h getpagesize.h
-marker.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
-md5.o: $(LISP_H) buffer.h bufslots.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h symeval.h symsinit.h
-menubar.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-minibuf.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-stream.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+marker.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h
+md5.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h
+menubar.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+minibuf.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console-stream.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 miscplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h symsinit.h sysfile.h syssignal.h
 nas.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysdep.h syssignal.h
 nt.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nt.h ntheap.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h
 ntheap.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h ntheap.h symeval.h symsinit.h
 ntplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysfile.h
-ntproc.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h nt.h ntheap.h process.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h syswait.h
-objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-tty.h objects.h specifier.h symeval.h symsinit.h syssignal.h systty.h
-objects.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+ntproc.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h nt.h ntheap.h process.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h syswait.h
+objects-tty.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-tty.h console.h device.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-tty.h objects.h specifier.h symeval.h symsinit.h syssignal.h systty.h
+objects.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h
 opaque.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h opaque.h symeval.h symsinit.h
-print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h conslots.h console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h syssignal.h systty.h toolbar.h
-process-nt.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h process.h procimpl.h symeval.h symsinit.h sysdep.h
-process-unix.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
-process.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h syssignal.h systty.h toolbar.h
+process-nt.o: $(LISP_H) char-1byte.h char-lb.h char-ucs.h character.h hash.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h procimpl.h symeval.h symsinit.h sysdep.h
+process-unix.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+process.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
 profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h syssignal.h systime.h
 ralloc.o: $(LISP_H) getpagesize.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 rangetab.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h rangetab.h symeval.h symsinit.h
 realpath.o: config.h
-redisplay-output.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-redisplay-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-redisplay.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-tty.h console.h debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systty.h toolbar.h window.h winslots.h
-regex.o: $(LISP_H) buffer.h bufslots.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h regex.h symeval.h symsinit.h syntax.h
-scrollbar.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-search.o: $(LISP_H) buffer.h bufslots.h chartab.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h regex.h symeval.h symsinit.h syntax.h
-select.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h toolbar.h
+redisplay-output.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+redisplay-tty.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+redisplay.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console-tty.h console.h debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h menubar.h mule-charset.h multibyte.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systty.h toolbar.h window.h winslots.h
+regex.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h regex.h symeval.h symsinit.h syntax.h
+scrollbar.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+search.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h regex.h symeval.h symsinit.h syntax.h
+select.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h toolbar.h
 sgiplay.o: $(LISP_H) libst.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 sheap.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h sheap-adjust.h symeval.h symsinit.h
 signal.o: $(LISP_H) conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h toolbar.h
-sound.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h symeval.h symsinit.h sysdep.h xintrinsic.h
-specifier.o: $(LISP_H) buffer.h bufslots.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+sound.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-x.h console.h device.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h symeval.h symsinit.h sysdep.h xintrinsic.h
+specifier.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 strcat.o: config.h
 strcmp.o: config.h
 strcpy.o: config.h
@@ -183,16 +183,17 @@ strftime.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.
 sunOS-fix.o: config.h
 sunplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysdep.h syssignal.h
 sunpro.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-symbols.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h elhash.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
-syntax.o: $(LISP_H) buffer.h bufslots.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
-sysdep.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h ntheap.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+symbols.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h elhash.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h
+syntax.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h syntax.h
+sysdep.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console-stream.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h ndir.h ntheap.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
 sysdll.o: config.h sysdll.h
 termcap.o: $(LISP_H) conslots.h console.h device.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 terminfo.o: config.h
-toolbar.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
-tooltalk.o: $(LISP_H) buffer.h bufslots.h elhash.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h process.h symeval.h symsinit.h tooltalk.h
+text-coding.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h chartab.h elhash.h file-coding.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-ccl.h mule-charset.h multibyte.h symeval.h symsinit.h
+toolbar.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+tooltalk.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h elhash.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h process.h symeval.h symsinit.h tooltalk.h
 tparam.o: config.h
-undo.o: $(LISP_H) buffer.h bufslots.h extents.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
+undo.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h extents.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h
 unexaix.o: $(LISP_H) getpagesize.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 unexalpha.o: config.h
 unexapollo.o: config.h
@@ -209,7 +210,7 @@ unexmips.o: config.h getpagesize.h
 unexnt.o: config.h ntheap.h
 unexsunos4.o: config.h
 vm-limit.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h mem-limits.h symeval.h symsinit.h
-widget.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
-window.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+widget.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h symeval.h symsinit.h
+window.o: $(LISP_H) buffer.h bufslots.h char-1byte.h char-lb.h char-ucs.h character.h commands.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mb-1byte.h mb-lb.h mb-multibyte.h mb-utf-8.h mule-charset.h multibyte.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 xgccache.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h xgccache.h
 xmu.o: config.h
index b0ed31c..43524ee 100644 (file)
@@ -657,16 +657,24 @@ emacs_doprnt_1 (Lisp_Object stream, CONST Bufbyte *format_nonreloc,
                  long_to_string (constructed_spec + strlen (constructed_spec),
                                  spec->precision);
                }
+#if 0
              sprintf (constructed_spec + strlen (constructed_spec), "%c", ch);
+#endif
 
              /* sprintf the mofo */
              /* we have to use separate calls to sprintf(), rather than
                 a single big conditional, because of the different types
                 of the arguments */
              if (strchr (double_converters, ch))
-               sprintf (text_to_print, constructed_spec, arg.d);
+               {
+                 sprintf (constructed_spec + strlen (constructed_spec),
+                          "%c", ch);
+                 sprintf (text_to_print, constructed_spec, arg.d);
+               }
              else if (strchr (unsigned_int_converters, ch))
                {
+                 sprintf (constructed_spec + strlen (constructed_spec),
+                          "%c", ch);
                  if (spec->l_flag)
                    sprintf (text_to_print, constructed_spec, arg.ul);
                  else
@@ -674,6 +682,12 @@ emacs_doprnt_1 (Lisp_Object stream, CONST Bufbyte *format_nonreloc,
                }
              else
                {
+                 if (spec->zero_flag && spec->minwidth)
+                   sprintf (constructed_spec + strlen (constructed_spec),
+                            "0%d%c", spec->minwidth, ch);
+                 else
+                   sprintf (constructed_spec + strlen (constructed_spec),
+                            "%c", ch);
                  if (spec->l_flag)
                    sprintf (text_to_print, constructed_spec, arg.l);
                  else
index 0c678f2..c1a50a5 100644 (file)
@@ -1096,7 +1096,7 @@ ensure_face_cachel_contains_charset (struct face_cachel *cachel,
 
 void
 ensure_face_cachel_complete (struct face_cachel *cachel,
-                            Lisp_Object domain, unsigned char *charsets)
+                            Lisp_Object domain, Charset_ID *charsets)
 {
   int i;
 
@@ -1111,7 +1111,7 @@ ensure_face_cachel_complete (struct face_cachel *cachel,
 
 void
 face_cachel_charset_font_metric_info (struct face_cachel *cachel,
-                                     unsigned char *charsets,
+                                     Charset_ID *charsets,
                                      struct font_metric_info *fm)
 {
   int i;
index 2814f49..f96e0a6 100644 (file)
@@ -233,12 +233,12 @@ Lisp_Object ensure_face_cachel_contains_charset (struct face_cachel *cachel,
                                                 Lisp_Object charset);
 void ensure_face_cachel_complete (struct face_cachel *cachel,
                                  Lisp_Object domain,
-                                 unsigned char *charsets);
+                                 Charset_ID *charsets);
 void update_face_cachel_data (struct face_cachel *cachel,
                              Lisp_Object domain,
                              Lisp_Object face);
 void face_cachel_charset_font_metric_info (struct face_cachel *cachel,
-                                          unsigned char *charsets,
+                                          Charset_ID *charsets,
                                           struct font_metric_info *fm);
 void mark_face_cachels (face_cachel_dynarr *elements);
 void mark_face_cachels_as_clean (struct window *w);
@@ -279,7 +279,7 @@ void default_face_height_and_width_1 (Lisp_Object domain,
                                      int *height, int *width);
 
 #define FACE_CACHEL_FONT(cachel, charset) \
-  (cachel->font[XCHARSET_LEADING_BYTE (charset) - 128])
+  (cachel->font[XCHARSET_LEADING_BYTE (charset) - MIN_LEADING_BYTE])
 
 #define WINDOW_FACE_CACHEL(window, index) \
   Dynarr_atp ((window)->face_cachels, index)
index 4ced792..f16f659 100644 (file)
@@ -1881,6 +1881,62 @@ do {                                                             \
 /* C should be a binary character in the range 0 - 255; convert
    to internal format and add to Dynarr DST. */
 
+#ifdef UTF2000
+#define DECODE_ADD_BINARY_CHAR(c, dst) \
+do {                                           \
+  if (BYTE_ASCII_P (c))                                \
+    Dynarr_add (dst, c);                       \
+  else                                         \
+    {                                          \
+      Dynarr_add (dst, (c >> 6) | 0xc0);       \
+      Dynarr_add (dst, (c & 0x3f) | 0x80);     \
+    }                                          \
+} while (0)
+
+INLINE void
+DECODE_ADD_UCS_CHAR(Emchar c, unsigned_char_dynarr* dst)
+{
+  if ( c <= 0x7f )
+    {
+      Dynarr_add (dst, c);
+    }
+  else if ( c <= 0x7ff )
+    {
+      Dynarr_add (dst, (c >> 6) | 0xc0);
+      Dynarr_add (dst, (c & 0x3f) | 0x80);
+    }
+  else if ( c <= 0xffff )
+    {
+      Dynarr_add (dst,  (c >> 12) | 0xe0);
+      Dynarr_add (dst, ((c >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (c        & 0x3f) | 0x80);
+    }
+  else if ( c <= 0x1fffff )
+    {
+      Dynarr_add (dst,  (c >> 18) | 0xf0);
+      Dynarr_add (dst, ((c >> 12) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (c        & 0x3f) | 0x80);
+    }
+  else if ( c <= 0x3ffffff )
+    {
+      Dynarr_add (dst,  (c >> 24) | 0xf8);
+      Dynarr_add (dst, ((c >> 18) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >> 12) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (c        & 0x3f) | 0x80);
+    }
+  else
+    {
+      Dynarr_add (dst,  (c >> 30) | 0xfc);
+      Dynarr_add (dst, ((c >> 24) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >> 18) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >> 12) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (c        & 0x3f) | 0x80);
+    }
+}
+#else
 #define DECODE_ADD_BINARY_CHAR(c, dst)         \
 do {                                           \
   if (BYTE_ASCII_P (c))                                \
@@ -1896,6 +1952,7 @@ do {                                              \
       Dynarr_add (dst, c);                     \
     }                                          \
 } while (0)
+#endif
 
 #define DECODE_OUTPUT_PARTIAL_CHAR(ch) \
 do {                                   \
@@ -2555,7 +2612,11 @@ reset_encoding_stream (struct encoding_stream *str)
        str->iso2022.register_right = 1;
        str->iso2022.current_charset = Qnil;
        str->iso2022.current_half = 0;
+#ifdef UTF2000
+       str->iso2022.current_char_boundary = 0;
+#else
        str->iso2022.current_char_boundary = 1;
+#endif
        break;
       }
     case CODESYS_CCL:
@@ -2849,10 +2910,16 @@ decode_coding_sjis (Lstream *decoding, CONST unsigned char *src,
            {
              unsigned char e1, e2;
 
-             Dynarr_add (dst, LEADING_BYTE_JAPANESE_JISX0208);
              DECODE_SJIS (ch, c, e1, e2);
+#ifdef UTF2000
+             DECODE_ADD_UCS_CHAR(MAKE_CHAR(Vcharset_japanese_jisx0208,
+                                           e1 & 0x7F,
+                                           e2 & 0x7F), dst);
+#else
+             Dynarr_add (dst, LEADING_BYTE_JAPANESE_JISX0208);
              Dynarr_add (dst, e1);
              Dynarr_add (dst, e2);
+#endif
            }
          else
            {
@@ -2868,8 +2935,13 @@ decode_coding_sjis (Lstream *decoding, CONST unsigned char *src,
            ch = c;
          else if (BYTE_SJIS_KATAKANA_P (c))
            {
+#ifdef UTF2000
+             DECODE_ADD_UCS_CHAR(MAKE_CHAR(Vcharset_katakana_jisx0201,
+                                           c & 0x7F, 0), dst);
+#else
              Dynarr_add (dst, LEADING_BYTE_KATAKANA_JISX0201);
              Dynarr_add (dst, c);
+#endif
            }
          else
            DECODE_ADD_BINARY_CHAR (c, dst);
@@ -2894,10 +2966,82 @@ encode_coding_sjis (Lstream *encoding, CONST unsigned char *src,
   unsigned int flags  = str->flags;
   unsigned int ch     = str->ch;
   eol_type_t eol_type = CODING_SYSTEM_EOL_TYPE (str->codesys);
+#ifdef UTF2000
+  unsigned char char_boundary = str->iso2022.current_char_boundary;
+#endif
 
   while (n--)
     {
       c = *src++;
+#ifdef UTF2000
+      switch (char_boundary)
+       {
+       case 0:
+         if ( c >= 0xfc )
+           {
+             ch = c & 0x01;
+             char_boundary = 5;
+           }
+         else if ( c >= 0xf8 )
+           {
+             ch = c & 0x03;
+             char_boundary = 4;
+           }
+         else if ( c >= 0xf0 )
+           {
+             ch = c & 0x07;
+             char_boundary = 3;
+           }
+         else if ( c >= 0xe0 )
+           {
+             ch = c & 0x0f;
+             char_boundary = 2;
+           }
+         else if ( c >= 0xc0 )
+           {
+             ch = c & 0x1f;
+             char_boundary = 1;
+           }
+         else
+           {
+             ch = 0;
+             if (c == '\n')
+               {
+                 if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+                   Dynarr_add (dst, '\r');
+                 if (eol_type != EOL_CR)
+                   Dynarr_add (dst, c);
+               }
+             else
+               Dynarr_add (dst, c);
+             char_boundary = 0;
+           }
+         break;
+       case 1:
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         {
+           Lisp_Object charset;
+           unsigned int c1, c2, s1, s2;
+           
+           BREAKUP_CHAR (ch, charset, c1, c2);
+           if (EQ(charset, Vcharset_katakana_jisx0201))
+             {
+               Dynarr_add (dst, c1 | 0x80);
+             }
+           else if (EQ(charset, Vcharset_japanese_jisx0208))
+             {
+               ENCODE_SJIS (c1 | 0x80, c2 | 0x80, s1, s2);
+               Dynarr_add (dst, s1);
+               Dynarr_add (dst, s2);
+             }
+         }
+         char_boundary = 0;
+         break;
+       default:
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         char_boundary--;
+       }
+#else
       if (c == '\n')
        {
          if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
@@ -2934,10 +3078,14 @@ encode_coding_sjis (Lstream *encoding, CONST unsigned char *src,
              ch = 0;
            }
        }
+#endif
     }
 
   str->flags = flags;
   str->ch    = ch;
+#ifdef UTF2000
+  str->iso2022.current_char_boundary = char_boundary;
+#endif
 }
 
 DEFUN ("decode-shift-jis-char", Fdecode_shift_jis_char, 1, 1, 0, /*
@@ -3169,6 +3317,7 @@ static void
 encode_coding_big5 (Lstream *encoding, CONST unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
+#ifndef UTF2000
   unsigned char c;
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
   unsigned int flags  = str->flags;
@@ -3223,6 +3372,7 @@ encode_coding_big5 (Lstream *encoding, CONST unsigned char *src,
 
   str->flags = flags;
   str->ch    = ch;
+#endif
 }
 
 
@@ -3243,7 +3393,7 @@ Return the corresponding character.
   if (BYTE_BIG5_TWO_BYTE_1_P (b1) &&
       BYTE_BIG5_TWO_BYTE_2_P (b2))
     {
-      int leading_byte;
+      Charset_ID leading_byte;
       Lisp_Object charset;
       DECODE_BIG5 (b1, b2, leading_byte, c1, c2);
       charset = CHARSET_BY_LEADING_BYTE (leading_byte);
@@ -3359,6 +3509,9 @@ Return the UCS code (a positive integer) corresponding to CHARACTER.
   return Fget_char_table (character, mule_to_ucs_table);
 }
 
+#ifdef UTF2000
+#define decode_ucs4 DECODE_ADD_UCS_CHAR
+#else
 /* Decode a UCS-4 character into a buffer.  If the lookup fails, use
    <GETA MARK> (U+3013) of JIS X 0208, which means correct character
    is not found, instead.
@@ -3387,6 +3540,7 @@ decode_ucs4 (unsigned long ch, unsigned_char_dynarr *dst)
       Dynarr_add (dst, 46 + 128);
     }
 }
+#endif
 
 static unsigned long
 mule_char_to_ucs4 (Lisp_Object charset,
@@ -3497,6 +3651,7 @@ static void
 encode_coding_ucs4 (Lstream *encoding, CONST unsigned char *src,
                    unsigned_char_dynarr *dst, unsigned int n)
 {
+#ifndef UTF2000
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
   unsigned int flags = str->flags;
   unsigned int ch = str->ch;
@@ -3625,6 +3780,7 @@ encode_coding_ucs4 (Lstream *encoding, CONST unsigned char *src,
   str->iso2022.current_charset = charset;
 
   /* Verbum caro factum est! */
+#endif
 }
 
 \f
@@ -3735,6 +3891,7 @@ decode_coding_utf8 (Lstream *decoding, CONST unsigned char *src,
   str->counter = counter;
 }
 
+#ifndef UTF2000
 static void
 encode_utf8 (Lisp_Object charset,
             unsigned char h, unsigned char l, unsigned_char_dynarr *dst)
@@ -3780,6 +3937,7 @@ encode_utf8 (Lisp_Object charset,
       Dynarr_add (dst,  (code        & 0x3f) | 0x80);
     }
 }
+#endif
 
 static void
 encode_coding_utf8 (Lstream *encoding, CONST unsigned char *src,
@@ -3790,6 +3948,63 @@ encode_coding_utf8 (Lstream *encoding, CONST unsigned char *src,
   unsigned int ch     = str->ch;
   eol_type_t eol_type = CODING_SYSTEM_EOL_TYPE (str->codesys);
   unsigned char char_boundary = str->iso2022.current_char_boundary;
+#ifdef UTF2000
+
+  while (n--)
+    {
+      unsigned char c = *src++;          
+      switch (char_boundary)
+       {
+       case 0:
+         if ( c >= 0xfc )
+           {
+             Dynarr_add (dst, c);
+             char_boundary = 5;
+           }
+         else if ( c >= 0xf8 )
+           {
+             Dynarr_add (dst, c);
+             char_boundary = 4;
+           }
+         else if ( c >= 0xf0 )
+           {
+             Dynarr_add (dst, c);
+             char_boundary = 3;
+           }
+         else if ( c >= 0xe0 )
+           {
+             Dynarr_add (dst, c);
+             char_boundary = 2;
+           }
+         else if ( c >= 0xc0 )
+           {
+             Dynarr_add (dst, c);
+             char_boundary = 1;
+           }
+         else
+           {
+             if (c == '\n')
+               {
+                 if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+                   Dynarr_add (dst, '\r');
+                 if (eol_type != EOL_CR)
+                   Dynarr_add (dst, c);
+               }
+             else
+               Dynarr_add (dst, c);
+             char_boundary = 0;
+           }
+         break;
+       case 1:
+         Dynarr_add (dst, c);
+         char_boundary = 0;
+         break;
+       default:
+         Dynarr_add (dst, c);
+         char_boundary--;
+       }
+    }
+#else /* not UTF2000 */
   Lisp_Object charset = str->iso2022.current_charset;
 
 #ifdef ENABLE_COMPOSITE_CHARS
@@ -3913,10 +4128,13 @@ encode_coding_utf8 (Lstream *encoding, CONST unsigned char *src,
     }
 #endif
 
+#endif /* not UTF2000 */
   str->flags = flags;
   str->ch    = ch;
   str->iso2022.current_char_boundary = char_boundary;
+#ifndef UTF2000
   str->iso2022.current_charset = charset;
+#endif
 
   /* Verbum caro factum est! */
 }
@@ -4816,7 +5034,9 @@ decode_coding_iso2022 (Lstream *decoding, CONST unsigned char *src,
       else
        {                       /* Graphic characters */
          Lisp_Object charset;
-         int lb;
+#ifndef UTF2000
+         Charset_ID lb;
+#endif
          int reg;
 
          DECODE_HANDLE_EOL_TYPE (eol_type, c, flags, dst);
@@ -4859,6 +5079,22 @@ decode_coding_iso2022 (Lstream *decoding, CONST unsigned char *src,
                    charset = new_charset;
                }
 
+#ifdef UTF2000
+             if (XCHARSET_DIMENSION (charset) == 1)
+               {
+                 DECODE_OUTPUT_PARTIAL_CHAR (ch);
+                 DECODE_ADD_UCS_CHAR
+                   (MAKE_CHAR (charset, c & 0x7F, 0), dst);
+               }
+             else if (ch)
+               {
+                 DECODE_ADD_UCS_CHAR
+                   (MAKE_CHAR (charset, ch & 0x7F, c & 0x7F), dst);
+                 ch = 0;
+               }
+             else
+               ch = c;
+#else
              lb = XCHARSET_LEADING_BYTE (charset);
              switch (XCHARSET_REP_BYTES (charset))
                {
@@ -4907,6 +5143,7 @@ decode_coding_iso2022 (Lstream *decoding, CONST unsigned char *src,
                  else
                    ch = c;
                }
+#endif
            }
 
          if (!ch)
@@ -5024,12 +5261,15 @@ encode_coding_iso2022 (Lstream *encoding, CONST unsigned char *src,
   unsigned char char_boundary;
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
   unsigned int flags          = str->flags;
-  unsigned int ch             = str->ch;
+  Emchar ch                   = str->ch;
   Lisp_Coding_System *codesys = str->codesys;
   eol_type_t eol_type         = CODING_SYSTEM_EOL_TYPE (str->codesys);
   int i;
   Lisp_Object charset;
   int half;
+#ifdef UTF2000
+  unsigned int byte1, byte2;
+#endif
 
 #ifdef ENABLE_COMPOSITE_CHARS
   /* flags for handling composite chars.  We do a little switcharoo
@@ -5046,6 +5286,216 @@ encode_coding_iso2022 (Lstream *encoding, CONST unsigned char *src,
 #ifdef ENABLE_COMPOSITE_CHARS
  back_to_square_n:
 #endif
+#ifdef UTF2000
+  while (n--)
+    {
+      c = *src++;
+
+      switch (char_boundary)
+       {
+       case 0:
+         if ( c >= 0xfc )
+           {
+             ch = c & 0x01;
+             char_boundary = 5;
+           }
+         else if ( c >= 0xf8 )
+           {
+             ch = c & 0x03;
+             char_boundary = 4;
+           }
+         else if ( c >= 0xf0 )
+           {
+             ch = c & 0x07;
+             char_boundary = 3;
+           }
+         else if ( c >= 0xe0 )
+           {
+             ch = c & 0x0f;
+             char_boundary = 2;
+           }
+         else if ( c >= 0xc0 )
+           {
+             ch = c & 0x1f;
+             char_boundary = 1;
+           }
+         else
+           {
+             ch = 0;
+
+             restore_left_to_right_direction (codesys, dst, &flags, 0);
+             
+             /* Make sure G0 contains ASCII */
+             if ((c > ' ' && c < ISO_CODE_DEL) ||
+                 !CODING_SYSTEM_ISO2022_NO_ASCII_CNTL (codesys))
+               {
+                 ensure_normal_shift (str, dst);
+                 iso2022_designate (Vcharset_ascii, 0, str, dst);
+               }
+             
+             /* If necessary, restore everything to the default state
+                at end-of-line */
+             if (c == '\n' &&
+                 !(CODING_SYSTEM_ISO2022_NO_ASCII_EOL (codesys)))
+               {
+                 restore_left_to_right_direction (codesys, dst, &flags, 0);
+
+                 ensure_normal_shift (str, dst);
+
+                 for (i = 0; i < 4; i++)
+                   {
+                     Lisp_Object initial_charset =
+                       CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, i);
+                     iso2022_designate (initial_charset, i, str, dst);
+                   }
+               }
+             if (c == '\n')
+               {
+                 if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+                   Dynarr_add (dst, '\r');
+                 if (eol_type != EOL_CR)
+                   Dynarr_add (dst, c);
+               }
+             else
+               {
+                 if (CODING_SYSTEM_ISO2022_ESCAPE_QUOTED (codesys)
+                     && fit_to_be_escape_quoted (c))
+                   Dynarr_add (dst, ISO_CODE_ESC);
+                 Dynarr_add (dst, c);
+               }
+             char_boundary = 0;
+           }
+         break;
+       case 1:
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         
+         char_boundary = 0;
+         if ( (0x80 <= ch) && (ch <= 0x9f) )
+           {
+             charmask = (half == 0 ? 0x00 : 0x80);
+         
+             if (CODING_SYSTEM_ISO2022_ESCAPE_QUOTED (codesys)
+                 && fit_to_be_escape_quoted (ch))
+               Dynarr_add (dst, ISO_CODE_ESC);
+             /* you asked for it ... */
+             Dynarr_add (dst, ch);
+           }
+         else
+           {
+             int reg;
+
+             BREAKUP_CHAR (ch, charset, byte1, byte2);
+             ensure_correct_direction (XCHARSET_DIRECTION (charset),
+                                       codesys, dst, &flags, 0);
+
+             /* Now determine which register to use. */
+             reg = -1;
+             for (i = 0; i < 4; i++)
+               {
+                 if (EQ (charset, str->iso2022.charset[i]) ||
+                     EQ (charset,
+                         CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, i)))
+                   {
+                     reg = i;
+                     break;
+                   }
+               }
+             
+             if (reg == -1)
+               {
+                 if (XCHARSET_GRAPHIC (charset) != 0)
+                   {
+                     if (!NILP (str->iso2022.charset[1]) &&
+                         (!CODING_SYSTEM_ISO2022_SEVEN (codesys) ||
+                          CODING_SYSTEM_ISO2022_LOCK_SHIFT (codesys)))
+                       reg = 1;
+                     else if (!NILP (str->iso2022.charset[2]))
+                       reg = 2;
+                     else if (!NILP (str->iso2022.charset[3]))
+                       reg = 3;
+                     else
+                       reg = 0;
+                   }
+                 else
+                   reg = 0;
+               }
+             
+             iso2022_designate (charset, reg, str, dst);
+             
+             /* Now invoke that register. */
+             switch (reg)
+               {
+               case 0:
+                 ensure_normal_shift (str, dst);
+                 half = 0;
+                 break;
+                 
+               case 1:
+                 if (CODING_SYSTEM_ISO2022_SEVEN (codesys))
+                   {
+                     ensure_shift_out (str, dst);
+                     half = 0;
+                   }
+                 else
+                   half = 1;
+                 break;
+                 
+               case 2:
+                 if (CODING_SYSTEM_ISO2022_SEVEN (str->codesys))
+                   {
+                     Dynarr_add (dst, ISO_CODE_ESC);
+                     Dynarr_add (dst, 'N');
+                     half = 0;
+                   }
+                 else
+                   {
+                     Dynarr_add (dst, ISO_CODE_SS2);
+                     half = 1;
+                   }
+                 break;
+                 
+               case 3:
+                 if (CODING_SYSTEM_ISO2022_SEVEN (str->codesys))
+                   {
+                     Dynarr_add (dst, ISO_CODE_ESC);
+                     Dynarr_add (dst, 'O');
+                     half = 0;
+                   }
+                 else
+                   {
+                     Dynarr_add (dst, ISO_CODE_SS3);
+                     half = 1;
+                   }
+                 break;
+                 
+               default:
+                 abort ();
+               }
+             
+             charmask = (half == 0 ? 0x00 : 0x80);
+             
+             switch (XCHARSET_DIMENSION (charset))
+               {
+               case 1:
+                 Dynarr_add (dst, byte1 | charmask);
+                 break;
+               case 2:
+                 Dynarr_add (dst, byte1 | charmask);
+                 Dynarr_add (dst, byte2 | charmask);
+                 break;
+               default:
+                 abort ();
+               }
+           }
+         ch =0;
+         break;
+       default:
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         char_boundary--;
+       }
+    }
+#else /* not UTF2000 */
+
   while (n--)
     {
       c = *src++;
@@ -5283,6 +5733,7 @@ encode_coding_iso2022 (Lstream *encoding, CONST unsigned char *src,
            }
        }
     }
+#endif /* not UTF2000 */
 
 #ifdef ENABLE_COMPOSITE_CHARS
   if (in_composite)
@@ -5296,7 +5747,11 @@ encode_coding_iso2022 (Lstream *encoding, CONST unsigned char *src,
     }
 #endif /* ENABLE_COMPOSITE_CHARS */
 
+#ifdef UTF2000
+  if ( (char_boundary == 0) && flags & CODING_STATE_END)
+#else
   if (char_boundary && flags & CODING_STATE_END)
+#endif
     {
       restore_left_to_right_direction (codesys, dst, &flags, 0);
       ensure_normal_shift (str, dst);
@@ -5359,10 +5814,68 @@ encode_coding_no_conversion (Lstream *encoding, CONST unsigned char *src,
   unsigned int flags  = str->flags;
   unsigned int ch     = str->ch;
   eol_type_t eol_type = CODING_SYSTEM_EOL_TYPE (str->codesys);
+#ifdef UTF2000
+  unsigned char char_boundary = str->iso2022.current_char_boundary;
+#endif
 
   while (n--)
     {
-      c = *src++;
+      c = *src++;        
+#ifdef UTF2000
+      switch (char_boundary)
+       {
+       case 0:
+         if ( c >= 0xfc )
+           {
+             ch = c & 0x01;
+             char_boundary = 5;
+           }
+         else if ( c >= 0xf8 )
+           {
+             ch = c & 0x03;
+             char_boundary = 4;
+           }
+         else if ( c >= 0xf0 )
+           {
+             ch = c & 0x07;
+             char_boundary = 3;
+           }
+         else if ( c >= 0xe0 )
+           {
+             ch = c & 0x0f;
+             char_boundary = 2;
+           }
+         else if ( c >= 0xc0 )
+           {
+             ch = c & 0x1f;
+             char_boundary = 1;
+           }
+         else
+           {
+             ch = 0;
+
+             if (c == '\n')
+               {
+                 if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+                   Dynarr_add (dst, '\r');
+                 if (eol_type != EOL_CR)
+                   Dynarr_add (dst, c);
+               }
+             else
+               Dynarr_add (dst, c);
+             char_boundary = 0;
+           }
+         break;
+       case 1:
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         Dynarr_add (dst, ch & 0xff);
+         char_boundary = 0;
+         break;
+       default:
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         char_boundary--;
+       }
+#else /* not UTF2000 */
       if (c == '\n')
        {
          if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
@@ -5398,10 +5911,14 @@ encode_coding_no_conversion (Lstream *encoding, CONST unsigned char *src,
             untranslatable character, so ignore it */
          ch = 0;
        }
+#endif /* not UTF2000 */
     }
 
   str->flags = flags;
   str->ch    = ch;
+#ifdef UTF2000
+  str->iso2022.current_char_boundary = char_boundary;
+#endif
 }
 
 \f
@@ -5455,12 +5972,17 @@ convert_to_external_format (CONST Bufbyte *ptr,
 
       for (; ptr < end;)
         {
+#ifdef UTF2000
+          Bufbyte c =
+           (*ptr < 0xc0) ? *ptr :
+           ((*ptr & 0x1f) << 6) | (*(ptr+1) & 0x3f);
+#else
           Bufbyte c =
             (BYTE_ASCII_P (*ptr))                 ? *ptr :
             (*ptr == LEADING_BYTE_CONTROL_1)      ? (*(ptr+1) - 0x20) :
             (*ptr == LEADING_BYTE_LATIN_ISO8859_1) ? (*(ptr+1)) :
             '~';
-
+#endif
           Dynarr_add (conversion_out_dynarr, (Extbyte) c);
           INC_CHARPTR (ptr);
         }
@@ -5822,12 +6344,24 @@ complex_vars_of_file_coding (void)
      list4 (Qeol_type, Qlf,
            Qmnemonic, build_string ("Binary")));
 
+#ifdef UTF2000
+  Fmake_coding_system
+    (Qutf8, Qutf8,
+     build_string ("Coding-system of ISO/IEC 10646 UTF-8."),
+     list2 (Qmnemonic, build_string ("UTF8")));
+#endif
+
   Fdefine_coding_system_alias (Qno_conversion, Qraw_text);
 
   /* Need this for bootstrapping */
   fcd->coding_category_system[CODING_CATEGORY_NO_CONVERSION] =
     Fget_coding_system (Qraw_text);
 
+#ifdef UTF2000
+  fcd->coding_category_system[CODING_CATEGORY_UTF8]
+   = Fget_coding_system (Qutf8);
+#endif
+
 #ifdef MULE
   {
     unsigned int i;
index 0e327f4..4a47fd2 100644 (file)
@@ -3339,7 +3339,7 @@ glyph_height_internal (Lisp_Object glyph_or_image, Lisp_Object frame_face,
       {
        struct font_metric_info fm;
        Lisp_Object string = XIMAGE_INSTANCE_TEXT_STRING (instance);
-       unsigned char charsets[NUM_LEADING_BYTES];
+       Charset_ID charsets[NUM_LEADING_BYTES];
        struct face_cachel frame_cachel;
        struct face_cachel *cachel;
 
index 8de057e..f72f020 100644 (file)
@@ -169,7 +169,7 @@ column_at_point (struct buffer *buf, Bufpos init_pos, int cur_col)
                     + displayed_glyphs->end_columns));
 #else /* XEmacs */
 #ifdef MULE
-         col += XCHARSET_COLUMNS (CHAR_CHARSET (c));
+         col += CHAR_COLUMNS (c);
 #else
          col ++;
 #endif /* MULE */
@@ -226,7 +226,7 @@ string_column_at_point (struct Lisp_String* s, Bufpos init_pos, int tab_width)
        break;
       else
 #ifdef MULE
-         col += XCHARSET_COLUMNS (CHAR_CHARSET (c));
+         col += CHAR_COLUMNS (c);
 #else
          col ++;
 #endif /* MULE */
@@ -456,7 +456,7 @@ Returns the actual column that it moved to.
                     + displayed_glyphs->end_columns));
 #else /* XEmacs */
 #ifdef MULE
-         col += XCHARSET_COLUMNS (CHAR_CHARSET (c));
+         col += CHAR_COLUMNS (c);
 #else
          col ++;
 #endif /* MULE */
index ae3c614..bec55be 100644 (file)
@@ -219,7 +219,9 @@ Boston, MA 02111-1307, USA.  */
 #define MAX_BUFPOS_GAP_SIZE_3 (65535/3)
 #define MAX_BYTIND_GAP_SIZE_3 (3 * MAX_BUFPOS_GAP_SIZE_3)
 
+#ifndef UTF2000
 short three_to_one_table[1 + MAX_BYTIND_GAP_SIZE_3];
+#endif
 
 /* Various macros modelled along the lines of those in buffer.h.
    Purposefully omitted from buffer.h because files other than this
@@ -431,7 +433,11 @@ bufpos_to_bytind_func (struct buffer *buf, Bufpos x)
   bufmax = buf->text->mule_bufmax;
   bytmin = buf->text->mule_bytmin;
   bytmax = buf->text->mule_bytmax;
+#ifdef UTF2000
+  size = buf->text->mule_size;
+#else
   size = (1 << buf->text->mule_shifter) + !!buf->text->mule_three_p;
+#endif
 
   /* The basic idea here is that we shift the "known region" up or down
      until it overlaps the specified position.  We do this by moving
@@ -626,11 +632,16 @@ bufpos_to_bytind_func (struct buffer *buf, Bufpos x)
      discovered isn't too large, because we use a fixed-length
      table to divide by 3. */
 
+#ifdef UTF2000
+  buf->text->mule_size = size;
+#endif
   if (size == 3)
     {
       int gap = bytmax - bytmin;
+#ifndef UTF2000
       buf->text->mule_three_p = 1;
       buf->text->mule_shifter = 1;
+#endif
 
       if (gap > MAX_BYTIND_GAP_SIZE_3)
        {
@@ -648,11 +659,13 @@ bufpos_to_bytind_func (struct buffer *buf, Bufpos x)
     }
   else
     {
+#ifndef UTF2000
       buf->text->mule_three_p = 0;
       if (size == 4)
        buf->text->mule_shifter = 2;
       else
        buf->text->mule_shifter = size - 1;
+#endif
     }
 
   buf->text->mule_bufmin = bufmin;
@@ -708,7 +721,11 @@ bytind_to_bufpos_func (struct buffer *buf, Bytind x)
   bufmax = buf->text->mule_bufmax;
   bytmin = buf->text->mule_bytmin;
   bytmax = buf->text->mule_bytmax;
+#ifdef UTF2000
+  size = buf->text->mule_size;
+#else
   size = (1 << buf->text->mule_shifter) + !!buf->text->mule_three_p;
+#endif
 
   /* The basic idea here is that we shift the "known region" up or down
      until it overlaps the specified position.  We do this by moving
@@ -903,11 +920,16 @@ bytind_to_bufpos_func (struct buffer *buf, Bytind x)
      discovered isn't too large, because we use a fixed-length
      table to divide by 3. */
 
+#ifdef UTF2000
+  buf->text->mule_size = size;
+  #endif
   if (size == 3)
     {
       int gap = bytmax - bytmin;
+#ifndef UTF2000
       buf->text->mule_three_p = 1;
       buf->text->mule_shifter = 1;
+#endif
 
       if (gap > MAX_BYTIND_GAP_SIZE_3)
        {
@@ -925,11 +947,13 @@ bytind_to_bufpos_func (struct buffer *buf, Bytind x)
     }
   else
     {
+#ifndef UTF2000
       buf->text->mule_three_p = 0;
       if (size == 4)
        buf->text->mule_shifter = 2;
       else
        buf->text->mule_shifter = size - 1;
+#endif
     }
 
   buf->text->mule_bufmin = bufmin;
@@ -965,7 +989,11 @@ buffer_mule_signal_inserted_region (struct buffer *buf, Bufpos start,
                                    Bytecount bytelength,
                                    Charcount charlength)
 {
+#ifdef UTF2000
+  int size = buf->text->mule_size;
+#else
   int size = (1 << buf->text->mule_shifter) + !!buf->text->mule_three_p;
+#endif
   int i;
 
   /* Adjust the cache of known positions. */
@@ -3079,7 +3107,7 @@ barf_if_buffer_read_only (struct buffer *buf, Bufpos from, Bufpos to)
 }
 
 void
-find_charsets_in_bufbyte_string (unsigned char *charsets, CONST Bufbyte *str,
+find_charsets_in_bufbyte_string (Charset_ID *charsets, CONST Bufbyte *str,
                                 Bytecount len)
 {
 #ifndef MULE
@@ -3087,18 +3115,25 @@ find_charsets_in_bufbyte_string (unsigned char *charsets, CONST Bufbyte *str,
   charsets[0] = 1;
 #else
   CONST Bufbyte *strend = str + len;
-  memset (charsets, 0, NUM_LEADING_BYTES);
+  memset (charsets, 0, NUM_LEADING_BYTES * sizeof(Charset_ID));
 
   while (str < strend)
     {
-      charsets[CHAR_LEADING_BYTE (charptr_emchar (str)) - 128] = 1;
+#ifdef UTF2000
+      charsets[CHAR_CHARSET_ID (charptr_emchar (str))
+             - MIN_LEADING_BYTE] = 1;
+#else /* I'm not sure the definition for UTF2000 works with leading-byte
+        representation. */
+      charsets[CHAR_LEADING_BYTE (charptr_emchar (str))
+             - MIN_LEADING_BYTE] = 1;
+#endif
       INC_CHARPTR (str);
     }
 #endif
 }
 
 void
-find_charsets_in_emchar_string (unsigned char *charsets, CONST Emchar *str,
+find_charsets_in_emchar_string (Charset_ID *charsets, CONST Emchar *str,
                                Charcount len)
 {
 #ifndef MULE
@@ -3107,10 +3142,15 @@ find_charsets_in_emchar_string (unsigned char *charsets, CONST Emchar *str,
 #else
   int i;
 
-  memset (charsets, 0, NUM_LEADING_BYTES);
+  memset (charsets, 0, NUM_LEADING_BYTES * sizeof(Charset_ID));
   for (i = 0; i < len; i++)
     {
-      charsets[CHAR_LEADING_BYTE (str[i]) - 128] = 1;
+#ifdef UTF2000
+      charsets[CHAR_CHARSET_ID (str[i]) - MIN_LEADING_BYTE] = 1;
+#else /* I'm not sure the definition for UTF2000 works with leading-byte
+        representation. */
+      charsets[CHAR_LEADING_BYTE (str[i]) - MIN_LEADING_BYTE] = 1;
+#endif
     }
 #endif
 }
@@ -3125,7 +3165,7 @@ bufbyte_string_displayed_columns (CONST Bufbyte *str, Bytecount len)
     {
 #ifdef MULE
       Emchar ch = charptr_emchar (str);
-      cols += XCHARSET_COLUMNS (CHAR_CHARSET (ch));
+      cols += CHAR_COLUMNS (ch);
 #else
       cols++;
 #endif
@@ -3143,7 +3183,7 @@ emchar_string_displayed_columns (CONST Emchar *str, Charcount len)
   int i;
 
   for (i = 0; i < len; i++)
-    cols += XCHARSET_COLUMNS (CHAR_CHARSET (str[i]));
+    cols += CHAR_COLUMNS (str[i]);
 
   return cols;
 #else  /* not MULE */
@@ -3236,13 +3276,17 @@ convert_emchar_string_into_malloced_string (Emchar *arr, int nels,
 void
 reinit_vars_of_insdel (void)
 {
+#ifndef UTF2000
   int i;
+#endif
 
   inside_change_hook = 0;
   in_first_change = 0;
 
+#ifndef UTF2000
   for (i = 0; i <= MAX_BYTIND_GAP_SIZE_3; i++)
     three_to_one_table[i] = i / 3;
+#endif
 }
 
 void
@@ -3272,8 +3316,12 @@ init_buffer_text (struct buffer *b)
 
        b->text->mule_bufmin = b->text->mule_bufmax = 1;
        b->text->mule_bytmin = b->text->mule_bytmax = 1;
+#ifdef UTF2000
+       b->text->mule_size = 0;
+#else
        b->text->mule_shifter = 0;
        b->text->mule_three_p = 0;
+#endif
 
        for (i = 0; i < 16; i++)
          {
index 883070a..8580240 100644 (file)
@@ -2880,6 +2880,9 @@ extern Lisp_Object Vascii_downcase_table, Vascii_eqv_table;
 extern Lisp_Object Vascii_upcase_table, Vautoload_queue, Vbinary_process_input;
 extern Lisp_Object Vbinary_process_output, Vblank_menubar;
 extern Lisp_Object Vcharset_ascii, Vcharset_composite, Vcharset_control_1;
+extern Lisp_Object Vcharset_latin_iso8859_1, Vcharset_greek_iso8859_7;
+extern Lisp_Object Vcharset_cyrillic_iso8859_5, Vcharset_hebrew_iso8859_8;
+extern Lisp_Object Vcharset_thai_tis620, Vcharset_katakana_jisx0201;
 extern Lisp_Object Vcoding_system_for_read, Vcoding_system_for_write;
 extern Lisp_Object Vcoding_system_hash_table, Vcommand_history;
 extern Lisp_Object Vcommand_line_args, Vconfigure_info_directory;
index a92fc18..da3a48e 100644 (file)
@@ -1815,6 +1815,25 @@ read_escape (Lisp_Object readcharfun)
          }
        return i;
       }
+    case 'u':
+      {
+       REGISTER Emchar i = 0;
+       REGISTER int count = 0;
+       while (++count <= 6)
+         {
+           c = readchar (readcharfun);
+           /* Remember, can't use isdigit(), isalpha() etc. on Emchars */
+           if      (c >= '0' && c <= '9')  i = (i << 4) + (c - '0');
+           else if (c >= 'a' && c <= 'f')  i = (i << 4) + (c - 'a') + 10;
+            else if (c >= 'A' && c <= 'F')  i = (i << 4) + (c - 'A') + 10;
+           else
+             {
+               unreadchar (readcharfun, c);
+               break;
+             }
+         }
+       return i;
+      }
 
 #ifdef MULE
       /* #### need some way of reading an extended character with
index 1108045..623a24e 100644 (file)
@@ -265,7 +265,11 @@ void Lstream_set_character_mode (Lstream *str);
 #ifdef MULE
 
 #ifndef BYTE_ASCII_P
-#include "mule-charset.h"
+#include "multibyte.h"
+#endif
+
+#ifndef CHAR_ASCII_P
+#include "character.h"
 #endif
 
 INLINE Emchar Lstream_get_emchar (Lstream *stream);
diff --git a/src/mb-1byte.h b/src/mb-1byte.h
new file mode 100644 (file)
index 0000000..82b84ed
--- /dev/null
@@ -0,0 +1,64 @@
+/* Header for 1-byte string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_MB_1BYTE_H
+#define _XEMACS_MB_1BYTE_H
+
+/* Maximum number of buffer bytes per Emacs character. */
+# define MAX_EMCHAR_LEN 1
+
+/************************************************************************/
+/*                     Operations on individual bytes                   */
+/*                             of any format                            */
+/************************************************************************/
+
+/* Argument `c' should be (unsigned int) or (unsigned char). */
+/* Note that SP and DEL are not included. */
+
+#define BYTE_ASCII_P(byte) 1
+
+
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+#define REP_BYTES_BY_FIRST_BYTE(fb) 1
+
+\f
+/* ---------------------------------------------------------------------- */
+/* (A) For working with charptr's (pointers to internally-formatted text) */
+/* ---------------------------------------------------------------------- */
+
+#define VALID_CHARPTR_P(ptr) 1
+#define VALIDATE_CHARPTR_BACKWARD(ptr)
+#define VALIDATE_CHARPTR_FORWARD(ptr)
+
+/* -------------------------------------------------------------------- */
+/* (C) For retrieving or changing the character pointed to by a charptr */
+/* -------------------------------------------------------------------- */
+
+#define charptr_emchar(ptr)            ((Emchar) (ptr)[0])
+#define set_charptr_emchar(ptr, x)     ((ptr)[0] = (Bufbyte) (x), 1)
+#define charptr_copy_char(ptr, ptr2)   ((ptr2)[0] = *(ptr), 1)
+
+#endif /* _XEMACS_MB_1BYTE_H */
diff --git a/src/mb-lb.h b/src/mb-lb.h
new file mode 100644 (file)
index 0000000..26d9359
--- /dev/null
@@ -0,0 +1,35 @@
+/* Header for leading-byte based string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_MB_LB_H
+#define _XEMACS_MB_LB_H
+
+#define MULTIBYTE
+
+/* Maximum number of buffer bytes per Emacs character. */
+#define MAX_EMCHAR_LEN 4
+
+
+#include "mb-multibyte.h"
+
+#endif /* _XEMACS_MB_LB_H */
diff --git a/src/mb-multibyte.h b/src/mb-multibyte.h
new file mode 100644 (file)
index 0000000..3d2aa08
--- /dev/null
@@ -0,0 +1,126 @@
+/* Header for generic multibyte string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Rewritten by MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_MB_MULTIBYTE_H
+#define _XEMACS_MB_MULTIBYTE_H
+
+/************************************************************************/
+/*                     Operations on individual bytes                   */
+/*                             of any format                            */
+/************************************************************************/
+
+/* Argument `c' should be (unsigned int) or (unsigned char). */
+/* Note that SP and DEL are not included. */
+
+#define BYTE_ASCII_P(c) ((c) < 0x80)
+#define BYTE_C0_P(c) ((c) < 0x20)
+/* Do some forced casting just to make *sure* things are gotten right. */
+#define BYTE_C1_P(c) ((unsigned int) ((unsigned int) (c) - 0x80) < 0x20)
+
+
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+/* Is this character represented by more than one byte in a string? */
+
+#define CHAR_MULTIBYTE_P(c) ((c) >= 0x80)
+
+
+/* ---------------------------------------------------------------------- */
+/* (A) For working with charptr's (pointers to internally-formatted text) */
+/* ---------------------------------------------------------------------- */
+
+# define VALID_CHARPTR_P(ptr) BUFBYTE_FIRST_BYTE_P (* (unsigned char *) ptr)
+
+#define VALIDATE_CHARPTR_BACKWARD(ptr) do {    \
+  while (!VALID_CHARPTR_P (ptr)) ptr--;                \
+} while (0)
+
+/* This needs to be trickier to avoid the possibility of running off
+   the end of the string. */
+
+#define VALIDATE_CHARPTR_FORWARD(ptr) do {     \
+  Bufbyte *vcf_ptr = (ptr);                    \
+  VALIDATE_CHARPTR_BACKWARD (vcf_ptr);         \
+  if (vcf_ptr != (ptr))                                \
+    {                                          \
+      (ptr) = vcf_ptr;                         \
+      INC_CHARPTR (ptr);                       \
+    }                                          \
+} while (0)
+
+/* -------------------------------------------------------------------- */
+/* (C) For retrieving or changing the character pointed to by a charptr */
+/* -------------------------------------------------------------------- */
+
+#define simple_charptr_emchar(ptr)             ((Emchar) (ptr)[0])
+#define simple_set_charptr_emchar(ptr, x)      ((ptr)[0] = (Bufbyte) (x), 1)
+#define simple_charptr_copy_char(ptr, ptr2)    ((ptr2)[0] = *(ptr), 1)
+
+Emchar non_ascii_charptr_emchar (CONST Bufbyte *ptr);
+Bytecount non_ascii_set_charptr_emchar (Bufbyte *ptr, Emchar c);
+Bytecount non_ascii_charptr_copy_char (CONST Bufbyte *ptr, Bufbyte *ptr2);
+
+INLINE Emchar charptr_emchar (CONST Bufbyte *ptr);
+INLINE Emchar
+charptr_emchar (CONST Bufbyte *ptr)
+{
+  return BYTE_ASCII_P (*ptr) ?
+    simple_charptr_emchar (ptr) :
+    non_ascii_charptr_emchar (ptr);
+}
+
+INLINE Bytecount set_charptr_emchar (Bufbyte *ptr, Emchar x);
+INLINE Bytecount
+set_charptr_emchar (Bufbyte *ptr, Emchar x)
+{
+  return !CHAR_MULTIBYTE_P (x) ?
+    simple_set_charptr_emchar (ptr, x) :
+    non_ascii_set_charptr_emchar (ptr, x);
+}
+
+INLINE Bytecount charptr_copy_char (CONST Bufbyte *ptr, Bufbyte *ptr2);
+INLINE Bytecount
+charptr_copy_char (CONST Bufbyte *ptr, Bufbyte *ptr2)
+{
+  return BYTE_ASCII_P (*ptr) ?
+    simple_charptr_copy_char (ptr, ptr2) :
+    non_ascii_charptr_copy_char (ptr, ptr2);
+}
+
+
+/************************************************************************/
+/*                            Exported functions                        */
+/************************************************************************/
+
+Emchar Lstream_get_emchar_1 (Lstream *stream, int first_char);
+int Lstream_fput_emchar (Lstream *stream, Emchar ch);
+void Lstream_funget_emchar (Lstream *stream, Emchar ch);
+
+int copy_internal_to_external (CONST Bufbyte *internal, Bytecount len,
+                              unsigned char *external);
+Bytecount copy_external_to_internal (CONST unsigned char *external,
+                                    int len, Bufbyte *internal);
+
+#endif /* _XEMACS_MB_MULTIBYTE_H */
diff --git a/src/mb-utf-8.h b/src/mb-utf-8.h
new file mode 100644 (file)
index 0000000..63cf457
--- /dev/null
@@ -0,0 +1,76 @@
+/* Header for UTF-8 string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Author: MORIOKA Tomohiko <tomo@m17n.org>. */
+
+#ifndef _XEMACS_MB_UTF_8_H
+#define _XEMACS_MB_UTF_8_H
+
+#define MULTIBYTE
+
+/* Maximum number of buffer bytes per Emacs character. */
+#define MAX_EMCHAR_LEN 6
+
+/************************************************************************/
+/*                     Operations on individual bytes                   */
+/*                       in a Mule-formatted string                     */
+/************************************************************************/
+
+/* Does this byte represent the first byte of a character? */
+
+INLINE int
+BUFBYTE_FIRST_BYTE_P(Bufbyte c)
+{
+  return (c <= 0x7f) || (0xc0 <= c);
+}
+
+\f
+/************************************************************************/
+/*                        Dealing with characters                       */
+/************************************************************************/
+
+/* Is this character represented by more than one byte in a string? */
+
+#define CHAR_MULTIBYTE_P(c) ((c) >= 0x80)
+
+
+INLINE int REP_BYTES_BY_FIRST_BYTE (int fb);
+INLINE int
+REP_BYTES_BY_FIRST_BYTE (int fb)
+{
+  if ( fb < 0xc0 )
+    return 1;
+  else if ( fb < 0xe0 )
+    return 2;
+  else if ( fb < 0xf0 )
+    return 3;
+  else if ( fb < 0xf8 )
+    return 4;
+  else if ( fb < 0xfc )
+    return 5;
+  else
+    return 6;
+}
+
+
+#include "mb-multibyte.h"
+
+#endif /* _XEMACS_MB_UTF_8_H */
index 069c7b5..839ab98 100644 (file)
@@ -1776,6 +1776,76 @@ For canna
 
 /* EUC multibyte string to MULE internal string */
 
+#ifdef UTF2000
+static void
+c2mu (unsigned char *cp, int l, unsigned char *mp)
+{
+  Emchar chr;
+  unsigned char        ch, *ep = cp+l;
+
+  while ((cp < ep) && (ch = *cp++))
+    {
+      if (ch == ISO_CODE_SS2)
+       {
+         chr = (*cp++) + MIN_CHAR_HALFWIDTH_KATAKANA - 0x20;
+       }
+      else if (ch == ISO_CODE_SS3)
+       {
+         chr = MAKE_CHAR (Vcharset_japanese_jisx0212,
+                          (*cp++) & 0x7f, (*cp++) & 0x7f);
+       }
+      else if (ch & 0x80)
+       {
+         chr = MAKE_CHAR (Vcharset_japanese_jisx0208,
+                          ch & 0x7f, (*cp++) & 0x7f);
+        }
+      else
+       {
+         chr = ch;
+       }
+      if ( chr <= 0x7f )
+        {
+         *mp++ = chr;
+       }
+      else if ( chr <= 0x7ff )
+        {
+         *mp++ = (chr >> 6) | 0xc0;
+         *mp++ = (chr & 0x3f) | 0x80;
+       }
+      else if ( chr <= 0xffff )
+        {
+         *mp++ =  (chr >> 12) | 0xe0;
+         *mp++ = ((chr >>  6) & 0x3f) | 0x80;
+         *mp++ =  (chr        & 0x3f) | 0x80;
+       }
+      else if ( chr <= 0x1fffff )
+       {
+         *mp++ =  (chr >> 18) | 0xf0;
+         *mp++ = ((chr >> 12) & 0x3f) | 0x80;
+         *mp++ = ((chr >>  6) & 0x3f) | 0x80;
+         *mp++ =  (chr        & 0x3f) | 0x80;
+       }
+      else if ( chr <= 0x3ffffff )
+       {
+         *mp++ =  (chr >> 24) | 0xf8;
+         *mp++ = ((chr >> 18) & 0x3f) | 0x80;
+         *mp++ = ((chr >> 12) & 0x3f) | 0x80;
+         *mp++ = ((chr >>  6) & 0x3f) | 0x80;
+         *mp++ =  (chr        & 0x3f) | 0x80;
+       }
+      else
+        {
+         *mp++ =  (chr >> 30) | 0xfc;
+         *mp++ = ((chr >> 24) & 0x3f) | 0x80;
+         *mp++ = ((chr >> 18) & 0x3f) | 0x80;
+         *mp++ = ((chr >> 12) & 0x3f) | 0x80;
+         *mp++ = ((chr >>  6) & 0x3f) | 0x80;
+         *mp++ =  (chr        & 0x3f) | 0x80;
+       }
+    }
+  *mp = 0;
+}
+#else
 static void
 c2mu (char *cp, int l, char *mp)
 {
@@ -1803,6 +1873,7 @@ c2mu (char *cp, int l, char *mp)
     }
   *mp = 0;
 }
+#endif
 
 /* MULE internal string to EUC multibyte string */
 
@@ -1810,9 +1881,74 @@ static void
 m2c (unsigned char *mp, int l, unsigned char *cp)
 {
   unsigned char        ch, *ep = mp + l;
+#ifdef UTF2000
+  unsigned char fb;
+  int len;
+  Emchar chr;
+#endif
 
   while ((mp < ep) && (ch = *mp++))
     {
+#ifdef UTF2000
+      if ( ch >= 0xfc )
+       {
+         chr = (ch & 0x01);
+         len = 5;
+       }
+      else if ( ch >= 0xf8 )
+       {
+         chr = ch & 0x03;
+         len = 4;
+       }
+      else if ( ch >= 0xf0 )
+       {
+         chr = ch & 0x07;
+         len = 3;
+       }
+      else if ( ch >= 0xe0 )
+       {
+         chr = ch & 0x0f;
+         len = 2;
+       }
+      else if ( ch >= 0xc0 )
+       {
+         chr = ch & 0x1f;
+         len = 1;
+       }
+      else
+       {
+         chr = ch;
+         len = 0;
+       }
+      for( ; len > 0; len-- )
+       {
+         ch = *mp++;
+         chr = ( chr << 6 ) | ( ch & 0x3f );
+       }
+      if ( chr <= 0x7f )
+       *cp++ = chr;
+      else if ( chr <= MAX_CHAR_HALFWIDTH_KATAKANA )
+       {
+         *cp++ = ISO_CODE_SS2;
+         *cp++ = ( chr & 0x7f ) | 0x80;
+       }
+      else
+       {
+         Lisp_Object charset;
+         int c1, c2;
+
+         BREAKUP_CHAR (chr, charset, c1, c2);
+         fb = XCHARSET_FINAL (charset);
+         switch (fb)
+           {
+           case 'D':
+             *cp++ = ISO_CODE_SS3;
+           default:
+             *cp++ = c1;
+             *cp++ = c2;
+           }
+       }
+#else
       switch (ch)
        {
        case LEADING_BYTE_KATAKANA_JISX0201:
@@ -1829,6 +1965,7 @@ m2c (unsigned char *mp, int l, unsigned char *cp)
          *cp++ = ch;
          break;
        }
+#endif
     }
   *cp = 0;
 }
index 7e92134..5fb3c52 100644 (file)
@@ -34,7 +34,7 @@ Boston, MA 02111-1307, USA.  */
 
 #include "lisp.h"
 #include "buffer.h"
-#include "mule-charset.h"
+#include "character.h"
 #include "mule-ccl.h"
 #include "file-coding.h"
 
@@ -1127,6 +1127,7 @@ ccl_driver (struct ccl_program *ccl, CONST unsigned char *source,
        case CCL_Extention:
          switch (EXCMD)
            {
+#ifndef UTF2000
            case CCL_ReadMultibyteChar2:
              if (!src)
                CCL_INVALID_CMD;
@@ -1240,7 +1241,9 @@ ccl_driver (struct ccl_program *ccl, CONST unsigned char *source,
                CCL_SUSPEND (CCL_STAT_SUSPEND_BY_SRC);
 
              break;
+#endif
 
+#ifndef UTF2000
            case CCL_WriteMultibyteChar2:
              i = reg[RRR]; /* charset */
              if (i == LEADING_BYTE_ASCII)
@@ -1260,6 +1263,7 @@ ccl_driver (struct ccl_program *ccl, CONST unsigned char *source,
              CCL_WRITE_CHAR (i);
 
              break;
+#endif
 
 #if 0
            case CCL_TranslateCharacter:
index b0a60fa..6a87dc0 100644 (file)
@@ -57,6 +57,15 @@ Lisp_Object Vcharset_korean_ksc5601;
 Lisp_Object Vcharset_japanese_jisx0212;
 Lisp_Object Vcharset_chinese_cns11643_1;
 Lisp_Object Vcharset_chinese_cns11643_2;
+#ifdef UTF2000
+Lisp_Object Vcharset_ucs_bmp;
+Lisp_Object Vcharset_latin_viscii;
+Lisp_Object Vcharset_latin_viscii_lower;
+Lisp_Object Vcharset_latin_viscii_upper;
+Lisp_Object Vcharset_ethiopic_ucs;
+Lisp_Object Vcharset_hiragana_jisx0208;
+Lisp_Object Vcharset_katakana_jisx0208;
+#endif
 Lisp_Object Vcharset_chinese_big5_1;
 Lisp_Object Vcharset_chinese_big5_2;
 
@@ -77,8 +86,13 @@ static int composite_char_col_next;
 struct charset_lookup *chlook;
 
 static const struct lrecord_description charset_lookup_description_1[] = {
-  { XD_LISP_OBJECT, offsetof(struct charset_lookup, charset_by_leading_byte), 128+4*128*2 },
-  { XD_END }
+  { XD_LISP_OBJECT, offsetof(struct charset_lookup, charset_by_leading_byte),
+#ifdef UTF2000
+    128+4*128
+#else
+    128+4*128*2 
+#endif
+  }, { XD_END }
 };
 
 static const struct struct_description charset_lookup_description = {
@@ -86,6 +100,7 @@ static const struct struct_description charset_lookup_description = {
   charset_lookup_description_1
 };
 
+#ifndef UTF2000
 /* Table of number of bytes in the string representation of a character
    indexed by the first byte of that representation.
 
@@ -105,12 +120,670 @@ Bytecount rep_bytes_by_first_byte[0xA0] =
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   /* 0x80 - 0x8f are for Dimension-1 official charsets */
+#ifdef CHAR_IS_UCS4
+  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
+#else
   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+#endif
   /* 0x90 - 0x9d are for Dimension-2 official charsets */
   /* 0x9e is for Dimension-1 private charsets */
   /* 0x9f is for Dimension-2 private charsets */
   3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4
 };
+#endif
+
+#ifdef UTF2000
+
+static Lisp_Object
+mark_char_byte_table (Lisp_Object obj)
+{
+  struct Lisp_Char_Byte_Table *cte = XCHAR_BYTE_TABLE (obj);
+  int i;
+
+  for (i = 0; i < 256; i++)
+    {
+      mark_object (cte->property[i]);
+    }
+  return Qnil;
+}
+
+static int
+char_byte_table_equal (Lisp_Object obj1, Lisp_Object obj2, int depth)
+{
+  struct Lisp_Char_Byte_Table *cte1 = XCHAR_BYTE_TABLE (obj1);
+  struct Lisp_Char_Byte_Table *cte2 = XCHAR_BYTE_TABLE (obj2);
+  int i;
+
+  for (i = 0; i < 256; i++)
+    if (CHAR_BYTE_TABLE_P (cte1->property[i]))
+      {
+       if (CHAR_BYTE_TABLE_P (cte2->property[i]))
+         {
+           if (!char_byte_table_equal (cte1->property[i],
+                                       cte2->property[i], depth + 1))
+             return 0;
+         }
+       else
+         return 0;
+      }
+    else
+      if (!internal_equal (cte1->property[i], cte2->property[i], depth + 1))
+       return 0;
+  return 1;
+}
+
+static unsigned long
+char_byte_table_hash (Lisp_Object obj, int depth)
+{
+  struct Lisp_Char_Byte_Table *cte = XCHAR_BYTE_TABLE (obj);
+
+  return internal_array_hash (cte->property, 256, depth);
+}
+
+static const struct lrecord_description char_byte_table_description[] = {
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Char_Byte_Table, property), 256 },
+  { XD_END }
+};
+
+DEFINE_LRECORD_IMPLEMENTATION ("char-byte-table", char_byte_table,
+                               mark_char_byte_table,
+                              internal_object_printer,
+                              0, char_byte_table_equal,
+                              char_byte_table_hash,
+                              char_byte_table_description,
+                              struct Lisp_Char_Byte_Table);
+
+static Lisp_Object
+make_char_byte_table (Lisp_Object initval)
+{
+  Lisp_Object obj;
+  int i;
+  struct Lisp_Char_Byte_Table *cte =
+    alloc_lcrecord_type (struct Lisp_Char_Byte_Table,
+                        &lrecord_char_byte_table);
+
+  for (i = 0; i < 256; i++)
+    cte->property[i] = initval;
+
+  XSETCHAR_BYTE_TABLE (obj, cte);
+  return obj;
+}
+
+static Lisp_Object
+copy_char_byte_table (Lisp_Object entry)
+{
+  struct Lisp_Char_Byte_Table *cte = XCHAR_BYTE_TABLE (entry);
+  Lisp_Object obj;
+  int i;
+  struct Lisp_Char_Byte_Table *ctenew =
+    alloc_lcrecord_type (struct Lisp_Char_Byte_Table,
+                        &lrecord_char_byte_table);
+
+  for (i = 0; i < 256; i++)
+    {
+      Lisp_Object new = cte->property[i];
+      if (CHAR_BYTE_TABLE_P (new))
+       ctenew->property[i] = copy_char_byte_table (new);
+      else
+       ctenew->property[i] = new;
+    }
+
+  XSETCHAR_BYTE_TABLE (obj, ctenew);
+  return obj;
+}
+
+
+static Lisp_Object
+mark_char_code_table (Lisp_Object obj)
+{
+  struct Lisp_Char_Code_Table *cte = XCHAR_CODE_TABLE (obj);
+
+  return cte->table;
+}
+
+static int
+char_code_table_equal (Lisp_Object obj1, Lisp_Object obj2, int depth)
+{
+  struct Lisp_Char_Code_Table *cte1 = XCHAR_CODE_TABLE (obj1);
+  struct Lisp_Char_Code_Table *cte2 = XCHAR_CODE_TABLE (obj2);
+
+  return char_byte_table_equal (cte1->table, cte2->table, depth + 1);
+}
+
+static unsigned long
+char_code_table_hash (Lisp_Object obj, int depth)
+{
+  struct Lisp_Char_Code_Table *cte = XCHAR_CODE_TABLE (obj);
+
+  return char_code_table_hash (cte->table, depth + 1);
+}
+
+static const struct lrecord_description char_code_table_description[] = {
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Char_Code_Table, table), 1 },
+  { XD_END }
+};
+
+DEFINE_LRECORD_IMPLEMENTATION ("char-code-table", char_code_table,
+                               mark_char_code_table,
+                              internal_object_printer,
+                              0, char_code_table_equal,
+                              char_code_table_hash,
+                              char_code_table_description,
+                              struct Lisp_Char_Code_Table);
+
+static Lisp_Object
+make_char_code_table (Lisp_Object initval)
+{
+  Lisp_Object obj;
+  struct Lisp_Char_Code_Table *cte =
+    alloc_lcrecord_type (struct Lisp_Char_Code_Table,
+                        &lrecord_char_code_table);
+
+  cte->table = make_char_byte_table (initval);
+
+  XSETCHAR_CODE_TABLE (obj, cte);
+  return obj;
+}
+
+static Lisp_Object
+copy_char_code_table (Lisp_Object entry)
+{
+  struct Lisp_Char_Code_Table *cte = XCHAR_CODE_TABLE (entry);
+  Lisp_Object obj;
+  struct Lisp_Char_Code_Table *ctenew =
+    alloc_lcrecord_type (struct Lisp_Char_Code_Table,
+                        &lrecord_char_code_table);
+
+  ctenew->table = copy_char_byte_table (cte->table);
+  XSETCHAR_CODE_TABLE (obj, ctenew);
+  return obj;
+}
+
+
+Lisp_Object
+get_char_code_table (Emchar ch, Lisp_Object table)
+{
+  unsigned int code = ch;
+  struct Lisp_Char_Byte_Table* cpt
+    = XCHAR_BYTE_TABLE (XCHAR_CODE_TABLE (table)->table);
+  Lisp_Object ret = cpt->property [(unsigned char)(code >> 24)];
+
+  if (CHAR_BYTE_TABLE_P (ret))
+    cpt = XCHAR_BYTE_TABLE (ret);
+  else
+    return ret;
+
+  ret = cpt->property [(unsigned char) (code >> 16)];
+  if (CHAR_BYTE_TABLE_P (ret))
+    cpt = XCHAR_BYTE_TABLE (ret);
+  else
+    return ret;
+
+  ret = cpt->property [(unsigned char) (code >> 8)];
+  if (CHAR_BYTE_TABLE_P (ret))
+    cpt = XCHAR_BYTE_TABLE (ret);
+  else
+    return ret;
+  
+  return cpt->property [(unsigned char) code];
+}
+
+void
+put_char_code_table (Emchar ch, Lisp_Object value, Lisp_Object table)
+{
+  unsigned int code = ch;
+  struct Lisp_Char_Byte_Table* cpt1
+    = XCHAR_BYTE_TABLE (XCHAR_CODE_TABLE (table)->table);
+  Lisp_Object ret = cpt1->property[(unsigned char)(code >> 24)];
+
+  if (CHAR_BYTE_TABLE_P (ret))
+    {
+      struct Lisp_Char_Byte_Table* cpt2 = XCHAR_BYTE_TABLE (ret);
+      
+      ret = cpt2->property[(unsigned char)(code >> 16)];
+      if (CHAR_BYTE_TABLE_P (ret))
+       {
+         struct Lisp_Char_Byte_Table* cpt3 = XCHAR_BYTE_TABLE (ret);
+         
+         ret = cpt3->property[(unsigned char)(code >> 8)];
+         if (CHAR_BYTE_TABLE_P (ret))
+           {
+             struct Lisp_Char_Byte_Table* cpt4
+               = XCHAR_BYTE_TABLE (ret);
+             
+             cpt4->property[(unsigned char)code] = value;
+           }
+         else if (!EQ (ret, value))
+           {
+             Lisp_Object cpt4 = make_char_byte_table (ret);
+             
+             XCHAR_BYTE_TABLE(cpt4)->property[(unsigned char)code] = value;
+             cpt3->property[(unsigned char)(code >> 8)] = cpt4;
+           }
+       }
+      else if (!EQ (ret, value))
+       {
+         Lisp_Object cpt3 = make_char_byte_table (ret);
+         Lisp_Object cpt4 = make_char_byte_table (ret);
+         
+         XCHAR_BYTE_TABLE(cpt4)->property[(unsigned char)code] = value;
+         XCHAR_BYTE_TABLE(cpt3)->property[(unsigned char)(code >> 8)]
+           = cpt4;
+         cpt2->property[(unsigned char)(code >> 16)] = cpt3;
+       }
+    }
+  else if (!EQ (ret, value))
+    {
+      Lisp_Object cpt2 = make_char_byte_table (ret);
+      Lisp_Object cpt3 = make_char_byte_table (ret);
+      Lisp_Object cpt4 = make_char_byte_table (ret);
+      
+      XCHAR_BYTE_TABLE(cpt4)->property[(unsigned char)code] = value;
+      XCHAR_BYTE_TABLE(cpt3)->property[(unsigned char)(code >>  8)] = cpt4;
+      XCHAR_BYTE_TABLE(cpt2)->property[(unsigned char)(code >> 16)] = cpt3;
+      cpt1->property[(unsigned char)(code >> 24)] = cpt2;
+    }
+}
+
+
+Lisp_Object Vcharacter_attribute_table;
+Lisp_Object Vcharacter_composition_table;
+Lisp_Object Vcharacter_variant_table;
+
+Lisp_Object Q_decomposition;
+Lisp_Object Q_ucs;
+Lisp_Object Qcompat;
+Lisp_Object QnoBreak;
+Lisp_Object Qfraction;
+Lisp_Object Qsuper;
+Lisp_Object Qsub;
+Lisp_Object Qcircle;
+Lisp_Object Qsquare;
+Lisp_Object Qwide;
+Lisp_Object Qnarrow;
+Lisp_Object Qfont;
+
+Emchar
+to_char_code (Lisp_Object v, char* err_msg, Lisp_Object err_arg)
+{
+  if (INTP (v))
+    return XINT (v);
+  if (CHARP (v))
+    return XCHAR (v);
+  else if (EQ (v, Qcompat))
+    return -1;
+  else if (EQ (v, QnoBreak))
+    return -2;
+  else if (EQ (v, Qfraction))
+    return -3;
+  else if (EQ (v, Qsuper))
+    return -4;
+  else if (EQ (v, Qsub))
+    return -5;
+  else if (EQ (v, Qcircle))
+    return -6;
+  else if (EQ (v, Qsquare))
+    return -7;
+  else if (EQ (v, Qwide))
+    return -8;
+  else if (EQ (v, Qnarrow))
+    return -9;
+  else if (EQ (v, Qfont))
+    return -10;
+  else 
+    signal_simple_error (err_msg, err_arg);
+}
+
+DEFUN ("get-composite-char", Fget_composite_char, 1, 1, 0, /*
+Return character corresponding with list.
+*/
+       (list))
+{
+  Lisp_Object table = Vcharacter_composition_table;
+  Lisp_Object rest = list;
+
+  while (CONSP (rest))
+    {
+      Lisp_Object v = Fcar (rest);
+      Lisp_Object ret;
+      Emchar c = to_char_code (v, "Invalid value for composition", list);
+
+      ret = get_char_code_table (c, table);
+
+      rest = Fcdr (rest);
+      if (NILP (rest))
+       {
+         if (!CHAR_CODE_TABLE_P (ret))
+           return ret;
+         else
+           return Qt;
+       }
+      else if (!CONSP (rest))
+       break;
+      else if (CHAR_CODE_TABLE_P (ret))
+       table = ret;
+      else
+       signal_simple_error ("Invalid table is found with", list);
+    }
+  signal_simple_error ("Invalid value for composition", list);
+}
+
+DEFUN ("char-variants", Fchar_variants, 1, 1, 0, /*
+Return variants of CHARACTER.
+*/
+       (character))
+{
+  CHECK_CHAR (character);
+  return Fcopy_list (get_char_code_table (XCHAR (character),
+                                         Vcharacter_variant_table));
+}
+
+DEFUN ("char-attribute-alist", Fchar_attribute_alist, 1, 1, 0, /*
+Return the alist of attributes of CHARACTER.
+*/
+       (character))
+{
+  CHECK_CHAR (character);
+  return Fcopy_alist (get_char_code_table (XCHAR (character),
+                                          Vcharacter_attribute_table));
+}
+
+DEFUN ("get-char-attribute", Fget_char_attribute, 2, 2, 0, /*
+Return the value of CHARACTER's ATTRIBUTE.
+*/
+       (character, attribute))
+{
+  Lisp_Object ret
+    = get_char_code_table (XCHAR (character), Vcharacter_attribute_table);
+  Lisp_Object ccs;
+
+  if (EQ (ret, Qnil))
+    return Qnil;
+
+  if (!NILP (ccs = Ffind_charset (attribute)))
+    attribute = ccs;
+
+  return Fcdr (Fassq (attribute, ret));
+}
+
+Lisp_Object
+put_char_attribute (Lisp_Object character, Lisp_Object attribute,
+                   Lisp_Object value)
+{
+  Emchar char_code = XCHAR (character);
+  Lisp_Object ret
+    = get_char_code_table (char_code, Vcharacter_attribute_table);
+  Lisp_Object cell;
+
+  cell = Fassq (attribute, ret);
+
+  if (NILP (cell))
+    {
+      ret = Fcons (Fcons (attribute, value), ret);
+    }
+  else if (!EQ (Fcdr (cell), value))
+    {
+      Fsetcdr (cell, value);
+    }
+  put_char_code_table (char_code, ret, Vcharacter_attribute_table);
+  return ret;
+}
+  
+DEFUN ("put-char-attribute", Fput_char_attribute, 3, 3, 0, /*
+Store CHARACTER's ATTRIBUTE with VALUE.
+*/
+       (character, attribute, value))
+{
+  Lisp_Object ccs;
+
+  ccs = Ffind_charset (attribute);
+  if (!NILP (ccs))
+    {
+      Lisp_Object rest;
+      Lisp_Object v = XCHARSET_DECODING_TABLE (ccs);
+      Lisp_Object nv;
+      int i = -1;
+      int ccs_len;
+
+      /* ad-hoc method for `ascii' */
+      if ((XCHARSET_CHARS (ccs) == 94) &&
+         (XCHARSET_BYTE_OFFSET (ccs) != 33))
+       ccs_len = 128 - XCHARSET_BYTE_OFFSET (ccs);
+      else
+       ccs_len = XCHARSET_CHARS (ccs);
+         
+      if (!CONSP (value))
+       signal_simple_error ("Invalid value for coded-charset",
+                            value);
+
+      attribute = ccs;
+      rest = Fget_char_attribute (character, attribute);
+      if (VECTORP (v))
+       {
+         if (!NILP (rest))
+           {
+             while (!NILP (rest))
+               {
+                 Lisp_Object ei = Fcar (rest);
+                 
+                 i = XINT (ei) - XCHARSET_BYTE_OFFSET (ccs);
+                 nv = XVECTOR_DATA(v)[i];
+                 if (!VECTORP (nv))
+                   break;
+                 v = nv;
+                 rest = Fcdr (rest);
+               }
+             if (i >= 0)
+               XVECTOR_DATA(v)[i] = Qnil;
+             v = XCHARSET_DECODING_TABLE (ccs);
+           }
+       }
+      else
+       {
+         XCHARSET_DECODING_TABLE (ccs) = v = make_vector (ccs_len, Qnil);
+       }
+
+      if (XCHARSET_GRAPHIC (ccs) == 1)
+       value = Fcopy_list (value);
+      rest = value;
+      i = -1;
+      while (CONSP (rest))
+       {
+         Lisp_Object ei = Fcar (rest);
+         
+         if (!INTP (ei))
+           signal_simple_error ("Invalid value for coded-charset", value);
+         i = XINT (ei);
+         if ((i < 0) || (255 < i))
+           signal_simple_error ("Invalid value for coded-charset", value);
+         if (XCHARSET_GRAPHIC (ccs) == 1)
+           {
+             i &= 0x7F;
+             Fsetcar (rest, make_int (i));
+           }
+         i -= XCHARSET_BYTE_OFFSET (ccs);
+         nv = XVECTOR_DATA(v)[i];
+         rest = Fcdr (rest);
+         if (CONSP (rest))
+           {
+             if (!VECTORP (nv))
+               {
+                 nv = (XVECTOR_DATA(v)[i] = make_vector (ccs_len, Qnil));
+               }
+             v = nv;
+           }
+         else
+           break;
+       }
+      XVECTOR_DATA(v)[i] = character;
+    }
+  else if (EQ (attribute, Q_decomposition))
+    {
+      Lisp_Object rest = value;
+      Lisp_Object table = Vcharacter_composition_table;
+
+      if (!CONSP (value))
+       signal_simple_error ("Invalid value for ->decomposition",
+                            value);
+
+      while (CONSP (rest))
+       {
+         Lisp_Object v = Fcar (rest);
+         Lisp_Object ntable;
+         Emchar c
+           = to_char_code (v, "Invalid value for ->decomposition", value);
+
+         rest = Fcdr (rest);
+         if (!CONSP (rest))
+           {
+             put_char_code_table (c, character, table);
+             break;
+           }
+         else
+           {
+             ntable = get_char_code_table (c, table);
+             if (!CHAR_CODE_TABLE_P (ntable))
+               {
+                 ntable = make_char_code_table (Qnil);
+                 put_char_code_table (c, ntable, table);
+               }
+             table = ntable;
+           }
+       }
+    }
+  else if (EQ (attribute, Q_ucs))
+    {
+      Lisp_Object ret;
+      Emchar c;
+
+      if (!INTP (value))
+       signal_simple_error ("Invalid value for ->ucs", value);
+
+      c = XINT (value);
+
+      ret = get_char_code_table (c, Vcharacter_variant_table);
+      if (NILP (Fmemq (character, ret)))
+       {
+         put_char_code_table (c, Fcons (character, ret),
+                              Vcharacter_variant_table);
+       }
+    }
+  return put_char_attribute (character, attribute, value);
+}
+
+Lisp_Object Qucs;
+
+DEFUN ("define-char", Fdefine_char, 1, 1, 0, /*
+Store character's ATTRIBUTES.
+*/
+       (attributes))
+{
+  Lisp_Object rest = attributes;
+  Lisp_Object code = Fcdr (Fassq (Qucs, attributes));
+  Lisp_Object character;
+
+  if (NILP (code))
+    {
+      while (CONSP (rest))
+       {
+         Lisp_Object cell = Fcar (rest);
+         Lisp_Object ccs;
+
+         if (!LISTP (cell))
+           signal_simple_error ("Invalid argument", attributes);
+         if (!NILP (ccs = Ffind_charset (Fcar (cell)))
+             && XCHARSET_FINAL (ccs))
+           {
+             Emchar code;
+
+             if (XCHARSET_DIMENSION (ccs) == 1)
+               {
+                 Lisp_Object eb1 = Fcar (Fcdr (cell));
+                 int b1;
+
+                 if (!INTP (eb1))
+                   signal_simple_error ("Invalid argument", attributes);
+                 b1 = XINT (eb1);
+                 switch (XCHARSET_CHARS (ccs))
+                   {
+                   case 94:
+                     code = MIN_CHAR_94
+                       + (XCHARSET_FINAL (ccs) - '0') * 94 + (b1 - 33);
+                     break;
+                   case 96:
+                     code = MIN_CHAR_96
+                       + (XCHARSET_FINAL (ccs) - '0') * 96 + (b1 - 32);
+                     break;
+                   default:
+                     abort ();
+                   }
+               }
+             else if (XCHARSET_DIMENSION (ccs) == 2)
+               {
+                 Lisp_Object eb1 = Fcar (Fcdr (cell));
+                 Lisp_Object eb2 = Fcar (Fcdr (Fcdr (cell)));
+                 int b1, b2;
+
+                 if (!INTP (eb1))
+                   signal_simple_error ("Invalid argument", attributes);
+                 b1 = XINT (eb1);
+                 if (!INTP (eb2))
+                   signal_simple_error ("Invalid argument", attributes);
+                 b2 = XINT (eb2);
+                 switch (XCHARSET_CHARS (ccs))
+                   {
+                   case 94:
+                     code = MIN_CHAR_94x94
+                       + (XCHARSET_FINAL (ccs) - '0') * 94 * 94
+                       + (b1 - 33) * 94 + (b2 - 33);
+                     break;
+                   case 96:
+                     code = MIN_CHAR_96x96
+                       + (XCHARSET_FINAL (ccs) - '0') * 96 * 96
+                       + (b1 - 32) * 96 + (b2 - 32);
+                     break;
+                   default:
+                     abort ();
+                   }
+               }
+             else
+               {
+                 rest = Fcdr (rest);
+                 continue;
+               }
+             character = make_char (code);
+             goto setup_attributes;
+           }
+         rest = Fcdr (rest);
+       }
+      return Qnil;
+    }
+  else if (!INTP (code))
+    signal_simple_error ("Invalid argument", attributes);
+  else
+    character = make_char (XINT (code));
+
+ setup_attributes:
+  rest = attributes;
+  while (CONSP (rest))
+    {
+      Lisp_Object cell = Fcar (rest);
+
+      if (!LISTP (cell))
+       signal_simple_error ("Invalid argument", attributes);
+      Fput_char_attribute (character, Fcar (cell), Fcdr (cell));
+      rest = Fcdr (rest);
+    }
+  return
+    get_char_code_table (XCHAR (character), Vcharacter_attribute_table);
+}
+
+Lisp_Object Vutf_2000_version;
+#endif
+
+#ifndef UTF2000
+int leading_code_private_11;
+#endif
 
 Lisp_Object Qcharsetp;
 
@@ -142,6 +815,17 @@ Lisp_Object Qascii,
   Qjapanese_jisx0212,
   Qchinese_cns11643_1,
   Qchinese_cns11643_2,
+#ifdef UTF2000
+  Qucs_bmp,
+  Qlatin_viscii,
+  Qlatin_viscii_lower,
+  Qlatin_viscii_upper,
+  Qvietnamese_viscii_lower,
+  Qvietnamese_viscii_upper,
+  Qethiopic_ucs,
+  Qhiragana_jisx0208,
+  Qkatakana_jisx0208,
+#endif
   Qchinese_big5_1,
   Qchinese_big5_2,
   Qcomposite;
@@ -150,8 +834,12 @@ Lisp_Object Ql2r, Qr2l;
 
 Lisp_Object Vcharset_hash_table;
 
-static Bufbyte next_allocated_1_byte_leading_byte;
-static Bufbyte next_allocated_2_byte_leading_byte;
+#ifdef UTF2000
+static Charset_ID next_allocated_leading_byte;
+#else
+static Charset_ID next_allocated_1_byte_leading_byte;
+static Charset_ID next_allocated_2_byte_leading_byte;
+#endif
 
 /* Composite characters are characters constructed by overstriking two
    or more regular characters.
@@ -196,11 +884,54 @@ Bytecount
 non_ascii_set_charptr_emchar (Bufbyte *str, Emchar c)
 {
   Bufbyte *p;
-  Bufbyte lb;
+#ifndef UTF2000
+  Charset_ID lb;
   int c1, c2;
   Lisp_Object charset;
+#endif
 
   p = str;
+#ifdef UTF2000
+  if ( c <= 0x7f )
+    {
+      *p++ = c;
+    }
+  else if ( c <= 0x7ff )
+    {
+      *p++ = (c >> 6) | 0xc0;
+      *p++ = (c & 0x3f) | 0x80;
+    }
+  else if ( c <= 0xffff )
+    {
+      *p++ =  (c >> 12) | 0xe0;
+      *p++ = ((c >>  6) & 0x3f) | 0x80;
+      *p++ =  (c        & 0x3f) | 0x80;
+    }
+  else if ( c <= 0x1fffff )
+    {
+      *p++ =  (c >> 18) | 0xf0;
+      *p++ = ((c >> 12) & 0x3f) | 0x80;
+      *p++ = ((c >>  6) & 0x3f) | 0x80;
+      *p++ =  (c        & 0x3f) | 0x80;
+    }
+  else if ( c <= 0x3ffffff )
+    {
+      *p++ =  (c >> 24) | 0xf8;
+      *p++ = ((c >> 18) & 0x3f) | 0x80;
+      *p++ = ((c >> 12) & 0x3f) | 0x80;
+      *p++ = ((c >>  6) & 0x3f) | 0x80;
+      *p++ =  (c        & 0x3f) | 0x80;
+    }
+  else
+    {
+      *p++ =  (c >> 30) | 0xfc;
+      *p++ = ((c >> 24) & 0x3f) | 0x80;
+      *p++ = ((c >> 18) & 0x3f) | 0x80;
+      *p++ = ((c >> 12) & 0x3f) | 0x80;
+      *p++ = ((c >>  6) & 0x3f) | 0x80;
+      *p++ =  (c        & 0x3f) | 0x80;
+    }
+#else
   BREAKUP_CHAR (c, charset, c1, c2);
   lb = CHAR_LEADING_BYTE (c);
   if (LEADING_BYTE_PRIVATE_P (lb))
@@ -211,7 +942,7 @@ non_ascii_set_charptr_emchar (Bufbyte *str, Emchar c)
   *p++ = c1 | 0x80;
   if (c2)
     *p++ = c2 | 0x80;
-
+#endif
   return (p - str);
 }
 
@@ -222,6 +953,49 @@ non_ascii_set_charptr_emchar (Bufbyte *str, Emchar c)
 Emchar
 non_ascii_charptr_emchar (CONST Bufbyte *str)
 {
+#ifdef UTF2000
+  Bufbyte b;
+  Emchar ch;
+  int len;
+
+  b = *str++;
+  if ( b >= 0xfc )
+    {
+      ch = (b & 0x01);
+      len = 5;
+    }
+  else if ( b >= 0xf8 )
+    {
+      ch = b & 0x03;
+      len = 4;
+    }
+  else if ( b >= 0xf0 )
+    {
+      ch = b & 0x07;
+      len = 3;
+    }
+  else if ( b >= 0xe0 )
+    {
+      ch = b & 0x0f;
+      len = 2;
+    }
+  else if ( b >= 0xc0 )
+    {
+      ch = b & 0x1f;
+      len = 1;
+    }
+  else
+    {
+      ch = b;
+      len = 0;
+    }
+  for( ; len > 0; len-- )
+    {
+      b = *str++;
+      ch = ( ch << 6 ) | ( b & 0x3f );
+    }
+  return ch;
+#else
   Bufbyte i0 = *str, i1, i2 = 0;
   Lisp_Object charset;
 
@@ -238,11 +1012,13 @@ non_ascii_charptr_emchar (CONST Bufbyte *str)
     i2 = *++str & 0x7F;
 
   return MAKE_CHAR (charset, i1, i2);
+#endif
 }
 
 /* Return whether CH is a valid Emchar, assuming it's non-ASCII.
    Do not call this directly.  Use the macro valid_char_p() instead. */
 
+#ifndef UTF2000
 int
 non_ascii_valid_char_p (Emchar ch)
 {
@@ -319,6 +1095,7 @@ non_ascii_valid_char_p (Emchar ch)
       return (XCHARSET_CHARS (charset) == 96);
     }
 }
+#endif
 
 \f
 /************************************************************************/
@@ -337,6 +1114,10 @@ non_ascii_charptr_copy_char (CONST Bufbyte *ptr, Bufbyte *str)
   switch (REP_BYTES_BY_FIRST_BYTE (*strptr))
     {
       /* Notice fallthrough. */
+#ifdef UTF2000
+    case 6: *++strptr = *ptr++;
+    case 5: *++strptr = *ptr++;
+#endif
     case 4: *++strptr = *ptr++;
     case 3: *++strptr = *ptr++;
     case 2: *++strptr = *ptr;
@@ -366,6 +1147,16 @@ Lstream_get_emchar_1 (Lstream *stream, int ch)
   switch (REP_BYTES_BY_FIRST_BYTE (ch))
     {
       /* Notice fallthrough. */
+#ifdef UTF2000
+    case 6:
+      ch = Lstream_getc (stream);
+      assert (ch >= 0);
+      *++strptr = (Bufbyte) ch;
+    case 5:
+      ch = Lstream_getc (stream);
+      assert (ch >= 0);
+      *++strptr = (Bufbyte) ch;
+#endif
     case 4:
       ch = Lstream_getc (stream);
       assert (ch >= 0);
@@ -416,6 +1207,9 @@ mark_charset (Lisp_Object obj)
   mark_object (cs->doc_string);
   mark_object (cs->registry);
   mark_object (cs->ccl_program);
+#ifdef UTF2000
+  mark_object (cs->decoding_table);
+#endif
   return cs->name;
 }
 
@@ -455,20 +1249,28 @@ print_charset (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
 
 static const struct lrecord_description charset_description[] = {
   { XD_LISP_OBJECT, offsetof(struct Lisp_Charset, name), 7 },
+#ifdef UTF2000
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Charset, decoding_table), 2 },
+#endif
   { XD_END }
 };
 
 DEFINE_LRECORD_IMPLEMENTATION ("charset", charset,
-                               mark_charset, print_charset, 0, 0, 0, charset_description,
+                               mark_charset, print_charset, 0, 0, 0,
+                              charset_description,
                               struct Lisp_Charset);
+
 /* Make a new charset. */
 
 static Lisp_Object
-make_charset (int id, Lisp_Object name, unsigned char rep_bytes,
+make_charset (Charset_ID id, Lisp_Object name,
              unsigned char type, unsigned char columns, unsigned char graphic,
-             Bufbyte final, unsigned char direction,  Lisp_Object short_name,
+             Bufbyte final, unsigned char direction, Lisp_Object short_name,
              Lisp_Object long_name, Lisp_Object doc,
-             Lisp_Object reg)
+             Lisp_Object reg,
+             Lisp_Object decoding_table,
+             Emchar ucs_min, Emchar ucs_max,
+             Emchar code_offset, unsigned char byte_offset)
 {
   Lisp_Object obj;
   struct Lisp_Charset *cs =
@@ -479,7 +1281,6 @@ make_charset (int id, Lisp_Object name, unsigned char rep_bytes,
   CHARSET_NAME         (cs) = name;
   CHARSET_SHORT_NAME   (cs) = short_name;
   CHARSET_LONG_NAME    (cs) = long_name;
-  CHARSET_REP_BYTES    (cs) = rep_bytes;
   CHARSET_DIRECTION    (cs) = direction;
   CHARSET_TYPE         (cs) = type;
   CHARSET_COLUMNS      (cs) = columns;
@@ -489,26 +1290,85 @@ make_charset (int id, Lisp_Object name, unsigned char rep_bytes,
   CHARSET_REGISTRY     (cs) = reg;
   CHARSET_CCL_PROGRAM  (cs) = Qnil;
   CHARSET_REVERSE_DIRECTION_CHARSET (cs) = Qnil;
+#ifdef UTF2000
+  CHARSET_DECODING_TABLE(cs) = Qnil;
+  CHARSET_UCS_MIN(cs) = ucs_min;
+  CHARSET_UCS_MAX(cs) = ucs_max;
+  CHARSET_CODE_OFFSET(cs) = code_offset;
+  CHARSET_BYTE_OFFSET(cs) = byte_offset;
+#endif
 
-  CHARSET_DIMENSION     (cs) = (CHARSET_TYPE (cs) == CHARSET_TYPE_94 ||
-                               CHARSET_TYPE (cs) == CHARSET_TYPE_96) ? 1 : 2;
-  CHARSET_CHARS         (cs) = (CHARSET_TYPE (cs) == CHARSET_TYPE_94 ||
-                               CHARSET_TYPE (cs) == CHARSET_TYPE_94X94) ? 94 : 96;
+  switch (CHARSET_TYPE (cs))
+    {
+    case CHARSET_TYPE_94:
+      CHARSET_DIMENSION (cs) = 1;
+      CHARSET_CHARS (cs) = 94;
+      break;
+    case CHARSET_TYPE_96:
+      CHARSET_DIMENSION (cs) = 1;
+      CHARSET_CHARS (cs) = 96;
+      break;
+    case CHARSET_TYPE_94X94:
+      CHARSET_DIMENSION (cs) = 2;
+      CHARSET_CHARS (cs) = 94;
+      break;
+    case CHARSET_TYPE_96X96:
+      CHARSET_DIMENSION (cs) = 2;
+      CHARSET_CHARS (cs) = 96;
+      break;
+#ifdef UTF2000
+    case CHARSET_TYPE_128:
+      CHARSET_DIMENSION (cs) = 1;
+      CHARSET_CHARS (cs) = 128;
+      break;
+    case CHARSET_TYPE_128X128:
+      CHARSET_DIMENSION (cs) = 2;
+      CHARSET_CHARS (cs) = 128;
+      break;
+    case CHARSET_TYPE_256:
+      CHARSET_DIMENSION (cs) = 1;
+      CHARSET_CHARS (cs) = 256;
+      break;
+    case CHARSET_TYPE_256X256:
+      CHARSET_DIMENSION (cs) = 2;
+      CHARSET_CHARS (cs) = 256;
+      break;
+#endif
+    }
 
+#ifndef UTF2000
+  if (id == LEADING_BYTE_ASCII)
+    CHARSET_REP_BYTES (cs) = 1;
+  else if (id < 0xA0)
+    CHARSET_REP_BYTES (cs) = CHARSET_DIMENSION (cs) + 1;
+  else
+    CHARSET_REP_BYTES (cs) = CHARSET_DIMENSION (cs) + 2;
+#endif
+  
   if (final)
     {
       /* some charsets do not have final characters.  This includes
         ASCII, Control-1, Composite, and the two faux private
         charsets. */
+#if UTF2000
+      if (code_offset == 0)
+       {
+         assert (NILP (chlook->charset_by_attributes[type][final]));
+         chlook->charset_by_attributes[type][final] = obj;
+       }
+#else
       assert (NILP (chlook->charset_by_attributes[type][final][direction]));
       chlook->charset_by_attributes[type][final][direction] = obj;
+#endif
     }
 
-  assert (NILP (chlook->charset_by_leading_byte[id - 128]));
-  chlook->charset_by_leading_byte[id - 128] = obj;
+  assert (NILP (chlook->charset_by_leading_byte[id - MIN_LEADING_BYTE]));
+  chlook->charset_by_leading_byte[id - MIN_LEADING_BYTE] = obj;
+#ifndef UTF2000
   if (id < 0xA0)
     /* official leading byte */
-    rep_bytes_by_first_byte[id] = rep_bytes;
+    rep_bytes_by_first_byte[id] = CHARSET_REP_BYTES (cs);
+#endif
 
   /* Some charsets are "faux" and don't have names or really exist at
      all except in the leading-byte table. */
@@ -520,8 +1380,14 @@ make_charset (int id, Lisp_Object name, unsigned char rep_bytes,
 static int
 get_unallocated_leading_byte (int dimension)
 {
-  int lb;
+  Charset_ID lb;
 
+#ifdef UTF2000
+  if (next_allocated_leading_byte > MAX_LEADING_BYTE_PRIVATE)
+    lb = 0;
+  else
+    lb = next_allocated_leading_byte++;
+#else
   if (dimension == 1)
     {
       if (next_allocated_1_byte_leading_byte > MAX_LEADING_BYTE_PRIVATE_1)
@@ -536,6 +1402,7 @@ get_unallocated_leading_byte (int dimension)
       else
        lb = next_allocated_2_byte_leading_byte++;
     }
+#endif
 
   if (!lb)
     signal_simple_error
@@ -545,6 +1412,208 @@ get_unallocated_leading_byte (int dimension)
   return lb;
 }
 
+#ifdef UTF2000
+Lisp_Object
+range_charset_code_point (Lisp_Object charset, Emchar ch)
+{
+  int d;
+
+  if ((XCHARSET_UCS_MIN (charset) <= ch)
+      && (ch <= XCHARSET_UCS_MAX (charset)))
+    {
+      d = ch - XCHARSET_UCS_MIN (charset) + XCHARSET_CODE_OFFSET (charset);
+                      
+      if (XCHARSET_DIMENSION (charset) == 1)
+       return list1 (make_int (d + XCHARSET_BYTE_OFFSET (charset)));
+      else if (XCHARSET_DIMENSION (charset) == 2)
+       return list2 (make_int (d / XCHARSET_CHARS (charset)
+                               + XCHARSET_BYTE_OFFSET (charset)),
+                     make_int (d % XCHARSET_CHARS (charset)
+                               + XCHARSET_BYTE_OFFSET (charset)));
+      else if (XCHARSET_DIMENSION (charset) == 3)
+       return list3 (make_int (d / (XCHARSET_CHARS (charset)
+                                       * XCHARSET_CHARS (charset))
+                               + XCHARSET_BYTE_OFFSET (charset)),
+                     make_int (d / XCHARSET_CHARS (charset)
+                               % XCHARSET_CHARS (charset)
+                               + XCHARSET_BYTE_OFFSET (charset)),
+                     make_int (d % XCHARSET_CHARS (charset)
+                               + XCHARSET_BYTE_OFFSET (charset)));
+      else /* if (XCHARSET_DIMENSION (charset) == 4) */
+       return list4 (make_int (d / (XCHARSET_CHARS (charset)
+                                       * XCHARSET_CHARS (charset)
+                                       * XCHARSET_CHARS (charset))
+                               + XCHARSET_BYTE_OFFSET (charset)),
+                     make_int (d / (XCHARSET_CHARS (charset)
+                                       * XCHARSET_CHARS (charset))
+                               % XCHARSET_CHARS (charset)
+                               + XCHARSET_BYTE_OFFSET (charset)),
+                     make_int (d / XCHARSET_CHARS (charset)
+                               % XCHARSET_CHARS (charset)
+                               + XCHARSET_BYTE_OFFSET (charset)),
+                     make_int (d % XCHARSET_CHARS (charset)
+                               + XCHARSET_BYTE_OFFSET (charset)));
+    }
+  else if (XCHARSET_CODE_OFFSET (charset) == 0)
+    {
+      if (XCHARSET_DIMENSION (charset) == 1)
+       {
+         if (XCHARSET_CHARS (charset) == 94)
+           {
+             if (((d = ch - (MIN_CHAR_94
+                             + (XCHARSET_FINAL (charset) - '0') * 94)) >= 0)
+                 && (d < 94))
+               return list1 (make_int (d + 33));
+           }
+         else if (XCHARSET_CHARS (charset) == 96)
+           {
+             if (((d = ch - (MIN_CHAR_96
+                             + (XCHARSET_FINAL (charset) - '0') * 96)) >= 0)
+                 && (d < 96))
+               return list1 (make_int (d + 32));
+           }
+         else
+           return Qnil;
+       }
+      else if (XCHARSET_DIMENSION (charset) == 2)
+       {
+         if (XCHARSET_CHARS (charset) == 94)
+           {
+             if (((d = ch - (MIN_CHAR_94x94
+                             + (XCHARSET_FINAL (charset) - '0') * 94 * 94))
+                  >= 0)
+                 && (d < 94 * 94))
+               return list2 (make_int ((d / 94) + 33),
+                             make_int (d % 94 + 33));
+           }
+         else if (XCHARSET_CHARS (charset) == 96)
+           {
+             if (((d = ch - (MIN_CHAR_96x96
+                             + (XCHARSET_FINAL (charset) - '0') * 96 * 96))
+                  >= 0)
+                 && (d < 96 * 96))
+               return list2 (make_int ((d / 96) + 32),
+                             make_int (d % 96 + 32));
+           }
+       }
+    }
+  return Qnil;
+}
+
+Lisp_Object
+split_builtin_char (Emchar c)
+{
+  if (c < MIN_CHAR_OBS_94x94)
+    {
+      if (c <= MAX_CHAR_BASIC_LATIN)
+       {
+         return list2 (Vcharset_ascii, make_int (c));
+       }
+      else if (c < 0xA0)
+       {
+         return list2 (Vcharset_control_1, make_int (c & 0x7F));
+       }
+      else if (c <= 0xff)
+       {
+         return list2 (Vcharset_latin_iso8859_1, make_int (c & 0x7F));
+       }
+      else if ((MIN_CHAR_GREEK <= c) && (c <= MAX_CHAR_GREEK))
+       {
+         return list2 (Vcharset_greek_iso8859_7,
+                       make_int (c - MIN_CHAR_GREEK + 0x20));
+       }
+      else if ((MIN_CHAR_CYRILLIC <= c) && (c <= MAX_CHAR_CYRILLIC))
+       {
+         return list2 (Vcharset_cyrillic_iso8859_5,
+                       make_int (c - MIN_CHAR_CYRILLIC + 0x20));
+       }
+      else if ((MIN_CHAR_HEBREW <= c) && (c <= MAX_CHAR_HEBREW))
+       {
+         return list2 (Vcharset_hebrew_iso8859_8,
+                       make_int (c - MIN_CHAR_HEBREW + 0x20));
+       }
+      else if ((MIN_CHAR_THAI <= c) && (c <= MAX_CHAR_THAI))
+       {
+         return list2 (Vcharset_thai_tis620,
+                       make_int (c - MIN_CHAR_THAI + 0x20));
+       }
+      else if ((MIN_CHAR_HALFWIDTH_KATAKANA <= c)
+              && (c <= MAX_CHAR_HALFWIDTH_KATAKANA))
+       {
+         return list2 (Vcharset_katakana_jisx0201,
+                       make_int (c - MIN_CHAR_HALFWIDTH_KATAKANA + 33));
+       }
+      else
+       {
+         return list3 (Vcharset_ucs_bmp,
+                       make_int (c >> 8), make_int (c & 0xff));
+       }
+    }
+  else if (c <= MAX_CHAR_OBS_94x94)
+    {
+      return list3 (CHARSET_BY_ATTRIBUTES
+                   (CHARSET_TYPE_94X94,
+                    ((c - MIN_CHAR_OBS_94x94) / (94 * 94)) + '@',
+                    CHARSET_LEFT_TO_RIGHT),
+                   make_int ((((c - MIN_CHAR_OBS_94x94) / 94) % 94) + 33),
+                   make_int (((c - MIN_CHAR_OBS_94x94) % 94) + 33));
+    }
+  else if (c <= MAX_CHAR_94)
+    {
+      return list2 (CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_94,
+                                          ((c - MIN_CHAR_94) / 94) + '0',
+                                          CHARSET_LEFT_TO_RIGHT),
+                   make_int (((c - MIN_CHAR_94) % 94) + 33));
+    }
+  else if (c <= MAX_CHAR_96)
+    {
+      return list2 (CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_96,
+                                          ((c - MIN_CHAR_96) / 96) + '0',
+                                          CHARSET_LEFT_TO_RIGHT),
+                   make_int (((c - MIN_CHAR_96) % 96) + 32));
+    }
+  else if (c <= MAX_CHAR_94x94)
+    {
+      return list3 (CHARSET_BY_ATTRIBUTES
+                   (CHARSET_TYPE_94X94,
+                    ((c - MIN_CHAR_94x94) / (94 * 94)) + '0',
+                    CHARSET_LEFT_TO_RIGHT),
+                   make_int ((((c - MIN_CHAR_94x94) / 94) % 94) + 33),
+                   make_int (((c - MIN_CHAR_94x94) % 94) + 33));
+    }
+  else if (c <= MAX_CHAR_96x96)
+    {
+      return list3 (CHARSET_BY_ATTRIBUTES
+                   (CHARSET_TYPE_96X96,
+                    ((c - MIN_CHAR_96x96) / (96 * 96)) + '0',
+                    CHARSET_LEFT_TO_RIGHT),
+                   make_int ((((c - MIN_CHAR_96x96) / 96) % 96) + 32),
+                   make_int (((c - MIN_CHAR_96x96) % 96) + 32));
+    }
+  else
+    {
+      return Qnil;
+    }
+}
+
+Lisp_Object
+charset_code_point (Lisp_Object charset, Emchar ch)
+{
+  Lisp_Object cdef = get_char_code_table (ch, Vcharacter_attribute_table);
+
+  if (!EQ (cdef, Qnil))
+    {
+      Lisp_Object field = Fassq (charset, cdef);
+
+      if (!EQ (field, Qnil))
+       return Fcdr (field);
+    }
+  return range_charset_code_point (charset, ch);
+}
+
+Lisp_Object Vdefault_coded_charset_priority_list;
+#endif
+
 \f
 /************************************************************************/
 /*                      Basic charset Lisp functions                    */
@@ -691,6 +1760,7 @@ character set.  Recognized properties are:
   Lisp_Object rest, keyword, value;
   Lisp_Object ccl_program = Qnil;
   Lisp_Object short_name = Qnil, long_name = Qnil;
+  int byte_offset = -1;
 
   CHECK_SYMBOL (name);
   if (!NILP (doc_string))
@@ -742,7 +1812,11 @@ character set.  Recognized properties are:
        {
          CHECK_INT (value);
          graphic = XINT (value);
+#ifdef UTF2000
+         if (graphic < 0 || graphic > 2)
+#else
          if (graphic < 0 || graphic > 1)
+#endif
            signal_simple_error ("Invalid value for 'graphic", value);
        }
 
@@ -813,8 +1887,21 @@ character set.  Recognized properties are:
 
   if (columns == -1)
     columns = dimension;
-  charset = make_charset (id, name, dimension + 2, type, columns, graphic,
-                         final, direction, short_name, long_name, doc_string, registry);
+
+  if (byte_offset < 0)
+    {
+      if (chars == 94)
+       byte_offset = 33;
+      else if (chars == 96)
+       byte_offset = 32;
+      else
+       byte_offset = 0;
+    }
+
+  charset = make_charset (id, name, type, columns, graphic,
+                         final, direction, short_name, long_name,
+                         doc_string, registry,
+                         Qnil, 0, 0, 0, byte_offset);
   if (!NILP (ccl_program))
     XCHARSET_CCL_PROGRAM (charset) = ccl_program;
   return charset;
@@ -859,9 +1946,19 @@ NEW-NAME is the name of the new charset.  Return the new charset.
   long_name = CHARSET_LONG_NAME (cs);
   registry = CHARSET_REGISTRY (cs);
 
-  new_charset = make_charset (id, new_name, dimension + 2, type, columns,
+  new_charset = make_charset (id, new_name, type, columns,
                              graphic, final, direction, short_name, long_name,
-                             doc_string, registry);
+                             doc_string, registry,
+#ifdef UTF2000
+                             CHARSET_DECODING_TABLE(cs),
+                             CHARSET_UCS_MIN(cs),
+                             CHARSET_UCS_MAX(cs),
+                             CHARSET_CODE_OFFSET(cs),
+                             CHARSET_BYTE_OFFSET(cs)
+#else
+                             Qnil, 0, 0, 0, 0
+#endif
+);
 
   CHARSET_REVERSE_DIRECTION_CHARSET (cs) = new_charset;
   XCHARSET_REVERSE_DIRECTION_CHARSET (new_charset) = charset;
@@ -869,6 +1966,16 @@ NEW-NAME is the name of the new charset.  Return the new charset.
   return new_charset;
 }
 
+DEFUN ("define-charset-alias", Fdefine_charset_alias, 2, 2, 0, /*
+Define symbol ALIAS as an alias for CHARSET.
+*/
+       (alias, charset))
+{
+  CHECK_SYMBOL (alias);
+  charset = Fget_charset (charset);
+  return Fputhash (alias, charset, Vcharset_hash_table);
+}
+
 /* #### Reverse direction charsets not yet implemented.  */
 #if 0
 DEFUN ("charset-reverse-direction-charset", Fcharset_reverse_direction_charset,
@@ -1047,7 +2154,6 @@ invalidate_charset_font_caches (Lisp_Object charset)
     }
 }
 
-/* Japanese folks may want to (set-charset-registry 'ascii "jisx0201") */
 DEFUN ("set-charset-registry", Fset_charset_registry, 2, 2, 0, /*
 Set the 'registry property of CHARSET to REGISTRY.
 */
@@ -1061,6 +2167,105 @@ Set the 'registry property of CHARSET to REGISTRY.
   return Qnil;
 }
 
+#ifdef UTF2000
+DEFUN ("charset-mapping-table", Fcharset_mapping_table, 1, 1, 0, /*
+Return mapping-table of CHARSET.
+*/
+       (charset))
+{
+  return XCHARSET_DECODING_TABLE (Fget_charset (charset));
+}
+
+DEFUN ("set-charset-mapping-table", Fset_charset_mapping_table, 2, 2, 0, /*
+Set mapping-table of CHARSET to TABLE.
+*/
+       (charset, table))
+{
+  struct Lisp_Charset *cs;
+  Lisp_Object old_table;
+  size_t i;
+
+  charset = Fget_charset (charset);
+  cs = XCHARSET (charset);
+
+  if (EQ (table, Qnil))
+    {
+      CHARSET_DECODING_TABLE(cs) = table;
+      return table;
+    }
+  else if (VECTORP (table))
+    {
+      int ccs_len;
+
+      /* ad-hoc method for `ascii' */
+      if ((CHARSET_CHARS (cs) == 94) &&
+         (CHARSET_BYTE_OFFSET (cs) != 33))
+       ccs_len = 128 - CHARSET_BYTE_OFFSET (cs);
+      else
+       ccs_len = CHARSET_CHARS (cs);
+
+      if (XVECTOR_LENGTH (table) > ccs_len)
+       args_out_of_range (table, make_int (CHARSET_CHARS (cs)));
+      old_table = CHARSET_DECODING_TABLE(cs);
+      CHARSET_DECODING_TABLE(cs) = table;
+    }
+  else
+    signal_error (Qwrong_type_argument,
+                 list2 (build_translated_string ("vector-or-nil-p"),
+                        table));
+  /* signal_simple_error ("Wrong type argument: vector-or-nil-p", table); */
+
+  switch (CHARSET_DIMENSION (cs))
+    {
+    case 1:
+      for (i = 0; i < XVECTOR_LENGTH (table); i++)
+       {
+         Lisp_Object c = XVECTOR_DATA(table)[i];
+
+         if (CHARP (c))
+           put_char_attribute
+             (c, charset,
+              list1 (make_int (i + CHARSET_BYTE_OFFSET (cs))));
+       }
+      break;
+    case 2:
+      for (i = 0; i < XVECTOR_LENGTH (table); i++)
+       {
+         Lisp_Object v = XVECTOR_DATA(table)[i];
+
+         if (VECTORP (v))
+           {
+             size_t j;
+
+             if (XVECTOR_LENGTH (v) > CHARSET_CHARS (cs))
+               {
+                 CHARSET_DECODING_TABLE(cs) = old_table;
+                 args_out_of_range (v, make_int (CHARSET_CHARS (cs)));
+               }
+             for (j = 0; j < XVECTOR_LENGTH (v); j++)
+               {
+                 Lisp_Object c = XVECTOR_DATA(v)[j];
+
+                 if (CHARP (c))
+                   put_char_attribute (c, charset,
+                                       list2
+                                       (make_int
+                                        (i + CHARSET_BYTE_OFFSET (cs)),
+                                        make_int
+                                        (j + CHARSET_BYTE_OFFSET (cs))));
+               }
+           }
+         else if (CHARP (v))
+           put_char_attribute (v, charset,
+                               list1
+                               (make_int (i + CHARSET_BYTE_OFFSET (cs))));
+       }
+      break;
+    }
+  return table;
+}
+#endif
+
 \f
 /************************************************************************/
 /*              Lisp primitives for working with characters             */
@@ -1083,6 +2288,9 @@ character s with caron.
 
   if      (EQ (charset, Vcharset_ascii))     lowlim =  0, highlim = 127;
   else if (EQ (charset, Vcharset_control_1)) lowlim =  0, highlim =  31;
+#ifdef UTF2000
+  else if (CHARSET_CHARS (cs) == 256)        lowlim =  0, highlim = 255;
+#endif
   else if (CHARSET_CHARS (cs) == 94)         lowlim = 33, highlim = 126;
   else /* CHARSET_CHARS (cs) == 96) */      lowlim = 32, highlim = 127;
 
@@ -1091,7 +2299,13 @@ character s with caron.
      the 8th bit off ARG1 and ARG2 becaue it allows programmers to
      write (make-char 'latin-iso8859-2 CODE) where code is the actual
      Latin 2 code of the character.  */
-  a1 = XINT (arg1) & 0x7f;
+#ifdef UTF2000
+  a1 = XINT (arg1);
+  if (highlim < 128)
+    a1 &= 0x7f;
+#else
+  a1 = XINT (arg1);
+#endif
   if (a1 < lowlim || a1 > highlim)
     args_out_of_range_3 (arg1, make_int (lowlim), make_int (highlim));
 
@@ -1104,7 +2318,13 @@ character s with caron.
     }
 
   CHECK_INT (arg2);
+#ifdef UTF2000
+  a2 = XINT (arg2);
+  if (highlim < 128)
+    a2 &= 0x7f;
+#else
   a2 = XINT (arg2) & 0x7f;
+#endif
   if (a2 < lowlim || a2 > highlim)
     args_out_of_range_3 (arg2, make_int (lowlim), make_int (highlim));
 
@@ -1118,8 +2338,7 @@ Return the character set of char CH.
 {
   CHECK_CHAR_COERCE_INT (ch);
 
-  return XCHARSET_NAME (CHARSET_BY_LEADING_BYTE
-                       (CHAR_LEADING_BYTE (XCHAR (ch))));
+  return XCHARSET_NAME (CHAR_CHARSET (XCHAR (ch)));
 }
 
 DEFUN ("split-char", Fsplit_char, 1, 1, 0, /*
@@ -1241,6 +2460,7 @@ syms_of_mule_charset (void)
   DEFSUBR (Fmake_charset);
   DEFSUBR (Fmake_reverse_direction_charset);
   /*  DEFSUBR (Freverse_direction_charset); */
+  DEFSUBR (Fdefine_charset_alias);
   DEFSUBR (Fcharset_from_attributes);
   DEFSUBR (Fcharset_short_name);
   DEFSUBR (Fcharset_long_name);
@@ -1250,6 +2470,16 @@ syms_of_mule_charset (void)
   DEFSUBR (Fcharset_id);
   DEFSUBR (Fset_charset_ccl_program);
   DEFSUBR (Fset_charset_registry);
+#ifdef UTF2000
+  DEFSUBR (Fchar_attribute_alist);
+  DEFSUBR (Fget_char_attribute);
+  DEFSUBR (Fput_char_attribute);
+  DEFSUBR (Fdefine_char);
+  DEFSUBR (Fchar_variants);
+  DEFSUBR (Fget_composite_char);
+  DEFSUBR (Fcharset_mapping_table);
+  DEFSUBR (Fset_charset_mapping_table);
+#endif
 
   DEFSUBR (Fmake_char);
   DEFSUBR (Fchar_charset);
@@ -1295,6 +2525,30 @@ syms_of_mule_charset (void)
   defsymbol (&Qjapanese_jisx0212,      "japanese-jisx0212");
   defsymbol (&Qchinese_cns11643_1,     "chinese-cns11643-1");
   defsymbol (&Qchinese_cns11643_2,     "chinese-cns11643-2");
+#ifdef UTF2000
+  defsymbol (&Q_ucs,                   "->ucs");
+  defsymbol (&Q_decomposition,         "->decomposition");
+  defsymbol (&Qcompat,                 "compat");
+  defsymbol (&QnoBreak,                        "noBreak");
+  defsymbol (&Qfraction,               "fraction");
+  defsymbol (&Qsuper,                  "super");
+  defsymbol (&Qsub,                    "sub");
+  defsymbol (&Qcircle,                 "circle");
+  defsymbol (&Qsquare,                 "square");
+  defsymbol (&Qwide,                   "wide");
+  defsymbol (&Qnarrow,                 "narrow");
+  defsymbol (&Qfont,                   "font");
+  defsymbol (&Qucs,                    "ucs");
+  defsymbol (&Qucs_bmp,                        "ucs-bmp");
+  defsymbol (&Qlatin_viscii,           "latin-viscii");
+  defsymbol (&Qlatin_viscii_lower,     "latin-viscii-lower");
+  defsymbol (&Qlatin_viscii_upper,     "latin-viscii-upper");
+  defsymbol (&Qvietnamese_viscii_lower,        "vietnamese-viscii-lower");
+  defsymbol (&Qvietnamese_viscii_upper,        "vietnamese-viscii-upper");
+  defsymbol (&Qethiopic_ucs,           "ethiopic-ucs");
+  defsymbol (&Qhiragana_jisx0208,      "hiragana-jisx0208");
+  defsymbol (&Qkatakana_jisx0208,      "katakana-jisx0208");
+#endif
   defsymbol (&Qchinese_big5_1,         "chinese-big5-1");
   defsymbol (&Qchinese_big5_2,         "chinese-big5-2");
 
@@ -1304,7 +2558,10 @@ syms_of_mule_charset (void)
 void
 vars_of_mule_charset (void)
 {
-  int i, j, k;
+  int i, j;
+#ifndef UTF2000
+  int k;
+#endif
 
   chlook = xnew (struct charset_lookup);
   dumpstruct (&chlook, &charset_lookup_description);
@@ -1313,14 +2570,55 @@ vars_of_mule_charset (void)
   for (i = 0; i < countof (chlook->charset_by_leading_byte); i++)
     chlook->charset_by_leading_byte[i] = Qnil;
 
+#ifdef UTF2000
+  /* Table of charsets indexed by type/final-byte. */
+  for (i = 0; i < countof (chlook->charset_by_attributes); i++)
+    for (j = 0; j < countof (chlook->charset_by_attributes[0]); j++)
+      chlook->charset_by_attributes[i][j] = Qnil;
+#else
   /* Table of charsets indexed by type/final-byte/direction. */
   for (i = 0; i < countof (chlook->charset_by_attributes); i++)
     for (j = 0; j < countof (chlook->charset_by_attributes[0]); j++)
       for (k = 0; k < countof (chlook->charset_by_attributes[0][0]); k++)
        chlook->charset_by_attributes[i][j][k] = Qnil;
+#endif
 
+#ifdef UTF2000
+  next_allocated_leading_byte = MIN_LEADING_BYTE_PRIVATE;
+#else
   next_allocated_1_byte_leading_byte = MIN_LEADING_BYTE_PRIVATE_1;
   next_allocated_2_byte_leading_byte = MIN_LEADING_BYTE_PRIVATE_2;
+#endif
+
+#ifndef UTF2000
+  leading_code_private_11 = PRE_LEADING_BYTE_PRIVATE_1;
+  DEFVAR_INT ("leading-code-private-11", &leading_code_private_11 /*
+Leading-code of private TYPE9N charset of column-width 1.
+*/ );
+  leading_code_private_11 = PRE_LEADING_BYTE_PRIVATE_1;
+#endif
+
+#ifdef UTF2000
+  Vutf_2000_version = build_string("0.12 (Kashiwara)");
+  DEFVAR_LISP ("utf-2000-version", &Vutf_2000_version /*
+Version number of UTF-2000.
+*/ );
+
+  staticpro (&Vcharacter_attribute_table);
+  Vcharacter_attribute_table = make_char_code_table (Qnil);
+
+  staticpro (&Vcharacter_composition_table);
+  Vcharacter_composition_table = make_char_code_table (Qnil);
+
+  staticpro (&Vcharacter_variant_table);
+  Vcharacter_variant_table = make_char_code_table (Qnil);
+
+  Vdefault_coded_charset_priority_list = Qnil;
+  DEFVAR_LISP ("default-coded-charset-priority-list",
+              &Vdefault_coded_charset_priority_list /*
+Default order of preferred coded-character-sets.
+*/ );
+#endif
 }
 
 void
@@ -1333,221 +2631,332 @@ complex_vars_of_mule_charset (void)
   /* Predefined character sets.  We store them into variables for
      ease of access. */
 
+#ifdef UTF2000
+  staticpro (&Vcharset_ucs_bmp);
+  Vcharset_ucs_bmp =
+    make_charset (LEADING_BYTE_UCS_BMP, Qucs_bmp,
+                 CHARSET_TYPE_256X256, 1, 2, 0,
+                 CHARSET_LEFT_TO_RIGHT,
+                 build_string ("BMP"),
+                 build_string ("BMP"),
+                 build_string ("ISO/IEC 10646 Group 0 Plane 0 (BMP)"),
+                 build_string ("\\(ISO10646.*-1\\|UNICODE[23]?-0\\)"),
+                 Qnil, 0, 0xFFFF, 0, 0);
+#else
+# define MIN_CHAR_THAI 0
+# define MAX_CHAR_THAI 0
+# define MIN_CHAR_GREEK 0
+# define MAX_CHAR_GREEK 0
+# define MIN_CHAR_HEBREW 0
+# define MAX_CHAR_HEBREW 0
+# define MIN_CHAR_HALFWIDTH_KATAKANA 0
+# define MAX_CHAR_HALFWIDTH_KATAKANA 0
+# define MIN_CHAR_CYRILLIC 0
+# define MAX_CHAR_CYRILLIC 0
+#endif
   staticpro (&Vcharset_ascii);
   Vcharset_ascii =
-    make_charset (LEADING_BYTE_ASCII, Qascii, 1,
+    make_charset (LEADING_BYTE_ASCII, Qascii,
                  CHARSET_TYPE_94, 1, 0, 'B',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("ASCII"),
                  build_string ("ASCII)"),
                  build_string ("ASCII (ISO646 IRV)"),
-                 build_string ("\\(iso8859-[0-9]*\\|-ascii\\)"));
+                 build_string ("\\(iso8859-[0-9]*\\|-ascii\\)"),
+                 Qnil, 0, 0x7F, 0, 0);
   staticpro (&Vcharset_control_1);
   Vcharset_control_1 =
-    make_charset (LEADING_BYTE_CONTROL_1, Qcontrol_1, 2,
+    make_charset (LEADING_BYTE_CONTROL_1, Qcontrol_1,
                  CHARSET_TYPE_94, 1, 1, 0,
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("C1"),
                  build_string ("Control characters"),
                  build_string ("Control characters 128-191"),
-                 build_string (""));
+                 build_string (""),
+                 Qnil, 0x80, 0x9F, 0, 0);
   staticpro (&Vcharset_latin_iso8859_1);
   Vcharset_latin_iso8859_1 =
-    make_charset (LEADING_BYTE_LATIN_ISO8859_1, Qlatin_iso8859_1, 2,
+    make_charset (LEADING_BYTE_LATIN_ISO8859_1, Qlatin_iso8859_1,
                  CHARSET_TYPE_96, 1, 1, 'A',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("Latin-1"),
                  build_string ("ISO8859-1 (Latin-1)"),
                  build_string ("ISO8859-1 (Latin-1)"),
-                 build_string ("iso8859-1"));
+                 build_string ("iso8859-1"),
+                 Qnil, 0xA0, 0xFF, 0, 32);
   staticpro (&Vcharset_latin_iso8859_2);
   Vcharset_latin_iso8859_2 =
-    make_charset (LEADING_BYTE_LATIN_ISO8859_2, Qlatin_iso8859_2, 2,
+    make_charset (LEADING_BYTE_LATIN_ISO8859_2, Qlatin_iso8859_2,
                  CHARSET_TYPE_96, 1, 1, 'B',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("Latin-2"),
                  build_string ("ISO8859-2 (Latin-2)"),
                  build_string ("ISO8859-2 (Latin-2)"),
-                 build_string ("iso8859-2"));
+                 build_string ("iso8859-2"),
+                 Qnil, 0, 0, 0, 32);
   staticpro (&Vcharset_latin_iso8859_3);
   Vcharset_latin_iso8859_3 =
-    make_charset (LEADING_BYTE_LATIN_ISO8859_3, Qlatin_iso8859_3, 2,
+    make_charset (LEADING_BYTE_LATIN_ISO8859_3, Qlatin_iso8859_3,
                  CHARSET_TYPE_96, 1, 1, 'C',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("Latin-3"),
                  build_string ("ISO8859-3 (Latin-3)"),
                  build_string ("ISO8859-3 (Latin-3)"),
-                 build_string ("iso8859-3"));
+                 build_string ("iso8859-3"),
+                 Qnil, 0, 0, 0, 32);
   staticpro (&Vcharset_latin_iso8859_4);
   Vcharset_latin_iso8859_4 =
-    make_charset (LEADING_BYTE_LATIN_ISO8859_4, Qlatin_iso8859_4, 2,
+    make_charset (LEADING_BYTE_LATIN_ISO8859_4, Qlatin_iso8859_4,
                  CHARSET_TYPE_96, 1, 1, 'D',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("Latin-4"),
                  build_string ("ISO8859-4 (Latin-4)"),
                  build_string ("ISO8859-4 (Latin-4)"),
-                 build_string ("iso8859-4"));
+                 build_string ("iso8859-4"),
+                 Qnil, 0, 0, 0, 32);
   staticpro (&Vcharset_thai_tis620);
   Vcharset_thai_tis620 =
-    make_charset (LEADING_BYTE_THAI_TIS620, Qthai_tis620, 2,
+    make_charset (LEADING_BYTE_THAI_TIS620, Qthai_tis620,
                  CHARSET_TYPE_96, 1, 1, 'T',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("TIS620"),
                  build_string ("TIS620 (Thai)"),
                  build_string ("TIS620.2529 (Thai)"),
-                 build_string ("tis620"));
+                 build_string ("tis620"),
+                 Qnil, MIN_CHAR_THAI, MAX_CHAR_THAI, 0, 32);
   staticpro (&Vcharset_greek_iso8859_7);
   Vcharset_greek_iso8859_7 =
-    make_charset (LEADING_BYTE_GREEK_ISO8859_7, Qgreek_iso8859_7, 2,
+    make_charset (LEADING_BYTE_GREEK_ISO8859_7, Qgreek_iso8859_7,
                  CHARSET_TYPE_96, 1, 1, 'F',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("ISO8859-7"),
                  build_string ("ISO8859-7 (Greek)"),
                  build_string ("ISO8859-7 (Greek)"),
-                 build_string ("iso8859-7"));
+                 build_string ("iso8859-7"),
+                 Qnil, MIN_CHAR_GREEK, MAX_CHAR_GREEK, 0, 32);
   staticpro (&Vcharset_arabic_iso8859_6);
   Vcharset_arabic_iso8859_6 =
-    make_charset (LEADING_BYTE_ARABIC_ISO8859_6, Qarabic_iso8859_6, 2,
+    make_charset (LEADING_BYTE_ARABIC_ISO8859_6, Qarabic_iso8859_6,
                  CHARSET_TYPE_96, 1, 1, 'G',
                  CHARSET_RIGHT_TO_LEFT,
                  build_string ("ISO8859-6"),
                  build_string ("ISO8859-6 (Arabic)"),
                  build_string ("ISO8859-6 (Arabic)"),
-                 build_string ("iso8859-6"));
+                 build_string ("iso8859-6"),
+                 Qnil, 0, 0, 0, 32);
   staticpro (&Vcharset_hebrew_iso8859_8);
   Vcharset_hebrew_iso8859_8 =
-    make_charset (LEADING_BYTE_HEBREW_ISO8859_8, Qhebrew_iso8859_8, 2,
+    make_charset (LEADING_BYTE_HEBREW_ISO8859_8, Qhebrew_iso8859_8,
                  CHARSET_TYPE_96, 1, 1, 'H',
                  CHARSET_RIGHT_TO_LEFT,
                  build_string ("ISO8859-8"),
                  build_string ("ISO8859-8 (Hebrew)"),
                  build_string ("ISO8859-8 (Hebrew)"),
-                 build_string ("iso8859-8"));
+                 build_string ("iso8859-8"),
+                 Qnil, MIN_CHAR_HEBREW, MAX_CHAR_HEBREW, 0, 32);
   staticpro (&Vcharset_katakana_jisx0201);
   Vcharset_katakana_jisx0201 =
-    make_charset (LEADING_BYTE_KATAKANA_JISX0201, Qkatakana_jisx0201, 2,
+    make_charset (LEADING_BYTE_KATAKANA_JISX0201, Qkatakana_jisx0201,
                  CHARSET_TYPE_94, 1, 1, 'I',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("JISX0201 Kana"),
                  build_string ("JISX0201.1976 (Japanese Kana)"),
                  build_string ("JISX0201.1976 Japanese Kana"),
-                 build_string ("jisx0201.1976"));
+                 build_string ("jisx0201\\.1976"),
+                 Qnil,
+                 MIN_CHAR_HALFWIDTH_KATAKANA,
+                 MAX_CHAR_HALFWIDTH_KATAKANA, 0, 33);
   staticpro (&Vcharset_latin_jisx0201);
   Vcharset_latin_jisx0201 =
-    make_charset (LEADING_BYTE_LATIN_JISX0201, Qlatin_jisx0201, 2,
+    make_charset (LEADING_BYTE_LATIN_JISX0201, Qlatin_jisx0201,
                  CHARSET_TYPE_94, 1, 0, 'J',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("JISX0201 Roman"),
                  build_string ("JISX0201.1976 (Japanese Roman)"),
                  build_string ("JISX0201.1976 Japanese Roman"),
-                 build_string ("jisx0201.1976"));
+                 build_string ("jisx0201\\.1976"),
+                 Qnil, 0, 0, 0, 33);
   staticpro (&Vcharset_cyrillic_iso8859_5);
   Vcharset_cyrillic_iso8859_5 =
-    make_charset (LEADING_BYTE_CYRILLIC_ISO8859_5, Qcyrillic_iso8859_5, 2,
+    make_charset (LEADING_BYTE_CYRILLIC_ISO8859_5, Qcyrillic_iso8859_5,
                  CHARSET_TYPE_96, 1, 1, 'L',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("ISO8859-5"),
                  build_string ("ISO8859-5 (Cyrillic)"),
                  build_string ("ISO8859-5 (Cyrillic)"),
-                 build_string ("iso8859-5"));
+                 build_string ("iso8859-5"),
+                 Qnil, MIN_CHAR_CYRILLIC, MAX_CHAR_CYRILLIC, 0, 32);
   staticpro (&Vcharset_latin_iso8859_9);
   Vcharset_latin_iso8859_9 =
-    make_charset (LEADING_BYTE_LATIN_ISO8859_9, Qlatin_iso8859_9, 2,
+    make_charset (LEADING_BYTE_LATIN_ISO8859_9, Qlatin_iso8859_9,
                  CHARSET_TYPE_96, 1, 1, 'M',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("Latin-5"),
                  build_string ("ISO8859-9 (Latin-5)"),
                  build_string ("ISO8859-9 (Latin-5)"),
-                 build_string ("iso8859-9"));
+                 build_string ("iso8859-9"),
+                 Qnil, 0, 0, 0, 32);
   staticpro (&Vcharset_japanese_jisx0208_1978);
   Vcharset_japanese_jisx0208_1978 =
-    make_charset (LEADING_BYTE_JAPANESE_JISX0208_1978, Qjapanese_jisx0208_1978, 3,
+    make_charset (LEADING_BYTE_JAPANESE_JISX0208_1978, Qjapanese_jisx0208_1978,
                  CHARSET_TYPE_94X94, 2, 0, '@',
                  CHARSET_LEFT_TO_RIGHT,
-                 build_string ("JISX0208.1978"),
-                 build_string ("JISX0208.1978 (Japanese)"),
+                 build_string ("JIS X0208:1978"),
+                 build_string ("JIS X0208:1978 (Japanese)"),
                  build_string
-                 ("JISX0208.1978 Japanese Kanji (so called \"old JIS\")"),
-                 build_string ("\\(jisx0208\\|jisc6226\\)\\.1978"));
+                 ("JIS X0208:1978 Japanese Kanji (so called \"old JIS\")"),
+                 build_string ("\\(jisx0208\\|jisc6226\\)\\.1978"),
+                 Qnil, 0, 0, 0, 33);
   staticpro (&Vcharset_chinese_gb2312);
   Vcharset_chinese_gb2312 =
-    make_charset (LEADING_BYTE_CHINESE_GB2312, Qchinese_gb2312, 3,
+    make_charset (LEADING_BYTE_CHINESE_GB2312, Qchinese_gb2312,
                  CHARSET_TYPE_94X94, 2, 0, 'A',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("GB2312"),
                  build_string ("GB2312)"),
                  build_string ("GB2312 Chinese simplified"),
-                 build_string ("gb2312"));
+                 build_string ("gb2312"),
+                 Qnil, 0, 0, 0, 33);
   staticpro (&Vcharset_japanese_jisx0208);
   Vcharset_japanese_jisx0208 =
-    make_charset (LEADING_BYTE_JAPANESE_JISX0208, Qjapanese_jisx0208, 3,
+    make_charset (LEADING_BYTE_JAPANESE_JISX0208, Qjapanese_jisx0208,
                  CHARSET_TYPE_94X94, 2, 0, 'B',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("JISX0208"),
-                 build_string ("JISX0208.1983/1990 (Japanese)"),
-                 build_string ("JISX0208.1983/1990 Japanese Kanji"),
-                 build_string ("jisx0208.19\\(83\\|90\\)"));
+                 build_string ("JIS X0208:1983 (Japanese)"),
+                 build_string ("JIS X0208:1983 Japanese Kanji"),
+                 build_string ("jisx0208\\.1983"),
+                 Qnil, 0, 0, 0, 33);
   staticpro (&Vcharset_korean_ksc5601);
   Vcharset_korean_ksc5601 =
-    make_charset (LEADING_BYTE_KOREAN_KSC5601, Qkorean_ksc5601, 3,
+    make_charset (LEADING_BYTE_KOREAN_KSC5601, Qkorean_ksc5601,
                  CHARSET_TYPE_94X94, 2, 0, 'C',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("KSC5601"),
                  build_string ("KSC5601 (Korean"),
                  build_string ("KSC5601 Korean Hangul and Hanja"),
-                 build_string ("ksc5601"));
+                 build_string ("ksc5601"),
+                 Qnil, 0, 0, 0, 33);
   staticpro (&Vcharset_japanese_jisx0212);
   Vcharset_japanese_jisx0212 =
-    make_charset (LEADING_BYTE_JAPANESE_JISX0212, Qjapanese_jisx0212, 3,
+    make_charset (LEADING_BYTE_JAPANESE_JISX0212, Qjapanese_jisx0212,
                  CHARSET_TYPE_94X94, 2, 0, 'D',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("JISX0212"),
                  build_string ("JISX0212 (Japanese)"),
                  build_string ("JISX0212 Japanese Supplement"),
-                 build_string ("jisx0212"));
+                 build_string ("jisx0212"),
+                 Qnil, 0, 0, 0, 33);
 
 #define CHINESE_CNS_PLANE_RE(n) "cns11643[.-]\\(.*[.-]\\)?" n "$"
   staticpro (&Vcharset_chinese_cns11643_1);
   Vcharset_chinese_cns11643_1 =
-    make_charset (LEADING_BYTE_CHINESE_CNS11643_1, Qchinese_cns11643_1, 3,
+    make_charset (LEADING_BYTE_CHINESE_CNS11643_1, Qchinese_cns11643_1,
                  CHARSET_TYPE_94X94, 2, 0, 'G',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("CNS11643-1"),
                  build_string ("CNS11643-1 (Chinese traditional)"),
                  build_string
                  ("CNS 11643 Plane 1 Chinese traditional"),
-                 build_string (CHINESE_CNS_PLANE_RE("1")));
+                 build_string (CHINESE_CNS_PLANE_RE("1")),
+                 Qnil, 0, 0, 0, 33);
   staticpro (&Vcharset_chinese_cns11643_2);
   Vcharset_chinese_cns11643_2 =
-    make_charset (LEADING_BYTE_CHINESE_CNS11643_2, Qchinese_cns11643_2, 3,
+    make_charset (LEADING_BYTE_CHINESE_CNS11643_2, Qchinese_cns11643_2,
                  CHARSET_TYPE_94X94, 2, 0, 'H',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("CNS11643-2"),
                  build_string ("CNS11643-2 (Chinese traditional)"),
                  build_string
                  ("CNS 11643 Plane 2 Chinese traditional"),
-                 build_string (CHINESE_CNS_PLANE_RE("2")));
+                 build_string (CHINESE_CNS_PLANE_RE("2")),
+                 Qnil, 0, 0, 0, 33);
+#ifdef UTF2000
+  staticpro (&Vcharset_latin_viscii_lower);
+  Vcharset_latin_viscii_lower =
+    make_charset (LEADING_BYTE_LATIN_VISCII_LOWER, Qlatin_viscii_lower,
+                 CHARSET_TYPE_96, 1, 1, '1',
+                 CHARSET_LEFT_TO_RIGHT,
+                 build_string ("VISCII lower"),
+                 build_string ("VISCII lower (Vietnamese)"),
+                 build_string ("VISCII lower (Vietnamese)"),
+                 build_string ("MULEVISCII-LOWER"),
+                 Qnil, 0, 0, 0, 32);
+  staticpro (&Vcharset_latin_viscii_upper);
+  Vcharset_latin_viscii_upper =
+    make_charset (LEADING_BYTE_LATIN_VISCII_UPPER, Qlatin_viscii_upper,
+                 CHARSET_TYPE_96, 1, 1, '2',
+                 CHARSET_LEFT_TO_RIGHT,
+                 build_string ("VISCII upper"),
+                 build_string ("VISCII upper (Vietnamese)"),
+                 build_string ("VISCII upper (Vietnamese)"),
+                 build_string ("MULEVISCII-UPPER"),
+                 Qnil, 0, 0, 0, 32);
+  staticpro (&Vcharset_latin_viscii);
+  Vcharset_latin_viscii =
+    make_charset (LEADING_BYTE_LATIN_VISCII, Qlatin_viscii,
+                 CHARSET_TYPE_256, 1, 2, 0,
+                 CHARSET_LEFT_TO_RIGHT,
+                 build_string ("VISCII"),
+                 build_string ("VISCII 1.1 (Vietnamese)"),
+                 build_string ("VISCII 1.1 (Vietnamese)"),
+                 build_string ("VISCII1\\.1"),
+                 Qnil, 0, 0, 0, 0);
+  staticpro (&Vcharset_ethiopic_ucs);
+  Vcharset_ethiopic_ucs =
+    make_charset (LEADING_BYTE_ETHIOPIC_UCS, Qethiopic_ucs,
+                 CHARSET_TYPE_256X256, 2, 2, 0,
+                 CHARSET_LEFT_TO_RIGHT,
+                 build_string ("Ethiopic (UCS)"),
+                 build_string ("Ethiopic (UCS)"),
+                 build_string ("Ethiopic of UCS"),
+                 build_string ("Ethiopic-Unicode"),
+                 Qnil, 0x1200, 0x137F, 0x1200, 0);
+  staticpro (&Vcharset_hiragana_jisx0208);
+  Vcharset_hiragana_jisx0208 =
+    make_charset (LEADING_BYTE_HIRAGANA_JISX0208, Qhiragana_jisx0208,
+                 CHARSET_TYPE_94X94, 2, 0, 'B',
+                 CHARSET_LEFT_TO_RIGHT,
+                 build_string ("Hiragana"),
+                 build_string ("Hiragana of JIS X0208"),
+                 build_string ("Japanese Hiragana of JIS X0208"),
+                 build_string ("jisx0208\\.19\\(78\\|83\\|90\\)"),
+                 Qnil, MIN_CHAR_HIRAGANA, MAX_CHAR_HIRAGANA,
+                 (0x24 - 33) * 94 + (0x21 - 33), 33);
+  staticpro (&Vcharset_katakana_jisx0201);
+  Vcharset_katakana_jisx0208 =
+    make_charset (LEADING_BYTE_KATAKANA_JISX0208, Qkatakana_jisx0208,
+                 CHARSET_TYPE_94X94, 2, 0, 'B',
+                 CHARSET_LEFT_TO_RIGHT,
+                 build_string ("Katakana"),
+                 build_string ("Katakana of JIS X0208"),
+                 build_string ("Japanese Katakana of JIS X0208"),
+                 build_string ("jisx0208\\.19\\(78\\|83\\|90\\)"),
+                 Qnil, MIN_CHAR_KATAKANA, MAX_CHAR_KATAKANA,
+                 (0x25 - 33) * 94 + (0x21 - 33), 33);
+#endif
   staticpro (&Vcharset_chinese_big5_1);
   Vcharset_chinese_big5_1 =
-    make_charset (LEADING_BYTE_CHINESE_BIG5_1, Qchinese_big5_1, 3,
+    make_charset (LEADING_BYTE_CHINESE_BIG5_1, Qchinese_big5_1,
                  CHARSET_TYPE_94X94, 2, 0, '0',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("Big5"),
                  build_string ("Big5 (Level-1)"),
                  build_string
                  ("Big5 Level-1 Chinese traditional"),
-                 build_string ("big5"));
+                 build_string ("big5"),
+                 Qnil, 0, 0, 0, 33);
   staticpro (&Vcharset_chinese_big5_2);
   Vcharset_chinese_big5_2 =
-    make_charset (LEADING_BYTE_CHINESE_BIG5_2, Qchinese_big5_2, 3,
+    make_charset (LEADING_BYTE_CHINESE_BIG5_2, Qchinese_big5_2,
                  CHARSET_TYPE_94X94, 2, 0, '1',
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("Big5"),
                  build_string ("Big5 (Level-2)"),
                  build_string
                  ("Big5 Level-2 Chinese traditional"),
-                 build_string ("big5"));
-
+                 build_string ("big5"),
+                 Qnil, 0, 0, 0, 33);
 
 #ifdef ENABLE_COMPOSITE_CHARS
   /* #### For simplicity, we put composite chars into a 96x96 charset.
@@ -1555,7 +2964,7 @@ complex_vars_of_mule_charset (void)
      room, esp. as we don't yet recycle numbers. */
   staticpro (&Vcharset_composite);
   Vcharset_composite =
-    make_charset (LEADING_BYTE_COMPOSITE, Qcomposite, 3,
+    make_charset (LEADING_BYTE_COMPOSITE, Qcomposite,
                  CHARSET_TYPE_96X96, 2, 0, 0,
                  CHARSET_LEFT_TO_RIGHT,
                  build_string ("Composite"),
index 07f72df..5948f1b 100644 (file)
@@ -324,6 +324,8 @@ Boston, MA 02111-1307, USA.  */
 /*                    Definition of leading bytes                       */
 /************************************************************************/
 
+typedef int Charset_ID;
+
 #define MIN_LEADING_BYTE               0x80
 /* These need special treatment in a string and/or character */
 #define LEADING_BYTE_ASCII             0x8E /* Omitted in a buffer */
@@ -548,8 +550,8 @@ DECLARE_LRECORD (charset, struct Lisp_Charset);
   CHARSET_REVERSE_DIRECTION_CHARSET (XCHARSET (cs))
 
 struct charset_lookup {
-  /* Table of charsets indexed by leading byte. */
-  Lisp_Object charset_by_leading_byte[128];
+  /* Table of charsets indexed by (leading byte - MIN_LEADING_BYTE). */
+  Lisp_Object charset_by_leading_byte[NUM_LEADING_BYTES];
   
   /* Table of charsets indexed by type/final-byte/direction. */
   Lisp_Object charset_by_attributes[4][128][2];
@@ -576,13 +578,15 @@ INLINE Lisp_Object CHARSET_BY_LEADING_BYTE (int lb);
 INLINE Lisp_Object
 CHARSET_BY_LEADING_BYTE (int lb)
 {
-  assert (lb >= 0x80 && lb <= 0xFF);
-  return chlook->charset_by_leading_byte[lb - 128];
+  assert (lb >= MIN_LEADING_BYTE &&
+         lb < (MIN_LEADING_BYTE + NUM_LEADING_BYTES));
+  return chlook->charset_by_leading_byte[lb - MIN_LEADING_BYTE];
 }
 
 #else
 
-#define CHARSET_BY_LEADING_BYTE(lb) (chlook->charset_by_leading_byte[(lb) - 128])
+#define CHARSET_BY_LEADING_BYTE(lb) \
+  (chlook->charset_by_leading_byte[(lb) - MIN_LEADING_BYTE])
 
 #endif
 
@@ -609,11 +613,7 @@ REP_BYTES_BY_FIRST_BYTE (int fb)
 /*                        Dealing with characters                       */
 /************************************************************************/
 
-/* Is this character represented by more than one byte in a string? */
-
-#define CHAR_MULTIBYTE_P(c) ((c) >= 0x80)
-
-#define CHAR_ASCII_P(c) (!CHAR_MULTIBYTE_P (c))
+#define CHAR_ASCII_P(ch) ((ch) <= 0x7F)
 
 /* The bit fields of character are divided into 3 parts:
    FIELD1(5bits):FIELD2(7bits):FIELD3(7bits) */
index 6c475f3..50d2840 100644 (file)
@@ -271,7 +271,7 @@ Boston, MA 02111-1307, USA.  */
 #include "sysdep.h"
 
 #include "wnn/commonhd.h"
-#include "mule-charset.h"
+#include "character.h"
 #include "wnn/jllib.h"
 #include "wnn/cplib.h"
 
index 36274cf..3ebc9f8 100644 (file)
@@ -114,6 +114,10 @@ vars_of_mule (void)
 
   Fprovide (intern ("mule"));
 
+#ifdef UTF2000
+  Fprovide (intern ("utf-2000"));
+#endif
+
 #ifdef HAVE_EGG
   Fprovide (intern ("egg"));
 #endif
diff --git a/src/multibyte.h b/src/multibyte.h
new file mode 100644 (file)
index 0000000..fc43bb6
--- /dev/null
@@ -0,0 +1,202 @@
+/* Header for multibyte buffer/string representation.
+   Copyright (C) 1999 Electrotechnical Laboratory, JAPAN.
+   Licensed to the Free Software Foundation.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Authorship:
+
+   Ben Wing: almost completely rewritten for Mule, 19.12 in buffer.h.
+   MORIOKA Tomohiko: rewritten for UTF-2000.
+
+ */
+
+#ifndef _XEMACS_MULTIBYTE_H
+#define _XEMACS_MULTIBYTE_H
+
+/************************************************************************/
+/*                                                                     */
+/*                working with raw internal-format data                */
+/*                                                                     */
+/************************************************************************/
+
+/*
+   Use the following functions/macros on contiguous strings of data.
+   If the text you're operating on is known to come from a buffer, use
+   the buffer-level functions in buffer.h -- they know about the gap
+   and may be more efficient.
+
+
+  (A) For working with charptr's (pointers to internally-formatted text):
+  -----------------------------------------------------------------------
+
+   VALID_CHARPTR_P (ptr):
+       Given a charptr, does it point to the beginning of a character?
+
+   ASSERT_VALID_CHARPTR (ptr):
+       If error-checking is enabled, assert that the given charptr
+       points to the beginning of a character.  Otherwise, do nothing.
+
+   INC_CHARPTR (ptr):
+       Given a charptr (assumed to point at the beginning of a character),
+       modify that pointer so it points to the beginning of the next
+       character.
+
+   DEC_CHARPTR (ptr):
+       Given a charptr (assumed to point at the beginning of a
+       character or at the very end of the text), modify that pointer
+       so it points to the beginning of the previous character.
+
+   VALIDATE_CHARPTR_BACKWARD (ptr):
+       Make sure that PTR is pointing to the beginning of a character.
+       If not, back up until this is the case.   Note that there are not
+       too many places where it is legitimate to do this sort of thing.
+       It's an error if you're passed an "invalid" char * pointer.
+       NOTE: PTR *must* be pointing to a valid part of the string (i.e.
+       not the very end, unless the string is zero-terminated or
+       something) in order for this function to not cause crashes.
+
+   VALIDATE_CHARPTR_FORWARD (ptr):
+       Make sure that PTR is pointing to the beginning of a character.
+       If not, move forward until this is the case.  Note that there
+       are not too many places where it is legitimate to do this sort
+       of thing.  It's an error if you're passed an "invalid" char *
+       pointer.
+
+
+   (B) For working with the length (in bytes and characters) of a
+       section of internally-formatted text:
+   --------------------------------------------------------------
+
+   bytecount_to_charcount (ptr, nbi):
+       Given a pointer to a text string and a length in bytes,
+       return the equivalent length in characters.
+
+   charcount_to_bytecount (ptr, nch):
+       Given a pointer to a text string and a length in characters,
+       return the equivalent length in bytes.
+
+   charptr_n_addr (ptr, n):
+       Return a pointer to the beginning of the character offset N
+       (in characters) from PTR.
+
+   MAX_EMCHAR_LEN:
+       Maximum number of buffer bytes per Emacs character.
+
+
+   (C) For retrieving or changing the character pointed to by a charptr:
+   ---------------------------------------------------------------------
+
+   charptr_emchar (ptr):
+       Retrieve the character pointed to by PTR as an Emchar.
+
+   charptr_emchar_n (ptr, n):
+       Retrieve the character at offset N (in characters) from PTR,
+       as an Emchar.
+
+   set_charptr_emchar (ptr, ch):
+       Store the character CH (an Emchar) as internally-formatted
+       text starting at PTR.  Return the number of bytes stored.
+
+   charptr_copy_char (ptr, ptr2):
+       Retrieve the character pointed to by PTR and store it as
+       internally-formatted text in PTR2.
+
+*/
+
+#ifdef UTF2000
+# include "mb-utf-8.h"
+#elif defined(MULE)
+# include "mb-lb.h"
+#else
+# include "mb-1byte.h"
+#endif
+
+/* ---------------------------------------------------------------------- */
+/* (A) For working with charptr's (pointers to internally-formatted text) */
+/* ---------------------------------------------------------------------- */
+
+#ifdef ERROR_CHECK_BUFPOS
+# define ASSERT_VALID_CHARPTR(ptr) assert (VALID_CHARPTR_P (ptr))
+#else
+# define ASSERT_VALID_CHARPTR(ptr)
+#endif
+
+/* Note that INC_CHARPTR() and DEC_CHARPTR() have to be written in
+   completely separate ways.  INC_CHARPTR() cannot use the DEC_CHARPTR()
+   trick of looking for a valid first byte because it might run off
+   the end of the string.  DEC_CHARPTR() can't use the INC_CHARPTR()
+   method because it doesn't have easy access to the first byte of
+   the character it's moving over. */
+
+#define REAL_INC_CHARPTR(ptr) \
+  ((void) ((ptr) += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr))))
+
+#define REAL_INC_CHARBYTIND(ptr,pos) \
+  (pos += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr)))
+
+#define REAL_DEC_CHARPTR(ptr) do {     \
+  (ptr)--;                             \
+} while (!VALID_CHARPTR_P (ptr))
+
+#ifdef ERROR_CHECK_BUFPOS
+#define INC_CHARPTR(ptr) do {          \
+  ASSERT_VALID_CHARPTR (ptr);          \
+  REAL_INC_CHARPTR (ptr);              \
+} while (0)
+
+#define INC_CHARBYTIND(ptr,pos) do {           \
+  ASSERT_VALID_CHARPTR (ptr);          \
+  REAL_INC_CHARBYTIND (ptr,pos);               \
+} while (0)
+
+#define DEC_CHARPTR(ptr) do {                  \
+  CONST Bufbyte *dc_ptr1 = (ptr);              \
+  CONST Bufbyte *dc_ptr2 = dc_ptr1;            \
+  REAL_DEC_CHARPTR (dc_ptr2);                  \
+  assert (dc_ptr1 - dc_ptr2 ==                 \
+         REP_BYTES_BY_FIRST_BYTE (*dc_ptr2));  \
+  (ptr) = dc_ptr2;                             \
+} while (0)
+
+#else /* ! ERROR_CHECK_BUFPOS */
+#define INC_CHARBYTIND(ptr,pos) REAL_INC_CHARBYTIND (ptr,pos)
+#define INC_CHARPTR(ptr) REAL_INC_CHARPTR (ptr)
+#define DEC_CHARPTR(ptr) REAL_DEC_CHARPTR (ptr)
+#endif /* ! ERROR_CHECK_BUFPOS */
+
+/* -------------------------------------------------------------- */
+/* (B) For working with the length (in bytes and characters) of a */
+/*     section of internally-formatted text                      */
+/* -------------------------------------------------------------- */
+
+INLINE CONST Bufbyte *charptr_n_addr (CONST Bufbyte *ptr, Charcount offset);
+INLINE CONST Bufbyte *
+charptr_n_addr (CONST Bufbyte *ptr, Charcount offset)
+{
+  return ptr + charcount_to_bytecount (ptr, offset);
+}
+
+/* -------------------------------------------------------------------- */
+/* (C) For retrieving or changing the character pointed to by a charptr */
+/* -------------------------------------------------------------------- */
+
+#define charptr_emchar_n(ptr, offset) \
+  charptr_emchar (charptr_n_addr (ptr, offset))
+
+#endif /* _XEMACS_MULTIBYTE_H */
index 9190490..b7a8309 100644 (file)
@@ -42,7 +42,7 @@ Boston, MA 02111-1307, USA.  */
 #include "objects-msw.h"
 
 #ifdef MULE
-#include "mule-charset.h"
+#include "character.h"
 #endif
 
 #include "buffer.h"
index 0b38de4..376b6bf 100644 (file)
@@ -29,7 +29,7 @@ Boston, MA 02111-1307, USA.  */
 #include "objects-tty.h"
 #ifdef MULE
 #include "device.h"
-#include "mule-charset.h"
+#include "character.h"
 #endif
 
 /* An alist mapping from color names to a cons of (FG-STRING, BG-STRING). */
@@ -242,7 +242,7 @@ tty_initialize_font_instance (struct Lisp_Font_Instance *f, Lisp_Object name,
   FONT_INSTANCE_TTY_CHARSET (f) = charset;
 #ifdef MULE
   if (CHARSETP (charset))
-    f->width = XCHARSET_COLUMNS (charset);
+    f->width = CHARSET_COLUMNS (XCHARSET (charset));
   else
 #endif
     f->width = 1;
index b9288e7..9ac8e95 100644 (file)
@@ -49,7 +49,7 @@ Boston, MA 02111-1307, USA.  */
 #include "windows.h"
 #ifdef MULE
 #include "mule-ccl.h"
-#include "mule-charset.h"
+#include "character.h"
 #endif
 
 #define MSWINDOWS_EOL_CURSOR_WIDTH     5
index bb4c243..bf89187 100644 (file)
@@ -357,7 +357,7 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block,
                          {
 #ifdef MULE
                            Emchar ch = charptr_emchar (temptemp);
-                           i += XCHARSET_COLUMNS (CHAR_CHARSET (ch));
+                           i += CHAR_COLUMNS (ch);
 #else
                            i++; /* telescope this */
 #endif
index fa3e3b3..ea20973 100644 (file)
@@ -495,7 +495,7 @@ static int
 redisplay_text_width_emchar_string (struct window *w, int findex,
                                    Emchar *str, Charcount len)
 {
-  unsigned char charsets[NUM_LEADING_BYTES];
+  Charset_ID charsets[NUM_LEADING_BYTES];
   Lisp_Object window;
 
   find_charsets_in_emchar_string (charsets, str, len);
@@ -532,7 +532,7 @@ redisplay_frame_text_width_string (struct frame *f, Lisp_Object face,
                                   Bufbyte *nonreloc, Lisp_Object reloc,
                                   Bytecount offset, Bytecount len)
 {
-  unsigned char charsets[NUM_LEADING_BYTES];
+  Charset_ID charsets[NUM_LEADING_BYTES];
   Lisp_Object frame;
   struct face_cachel cachel;
 
index d7618d1..c5cdf34 100644 (file)
@@ -3318,8 +3318,12 @@ compile_extended_range (CONST char **p_ptr, CONST char *pend, char *translate,
      ranges entirely within the first 256 chars. */
 
   if ((range_start >= 0x100 || range_end >= 0x100)
-      && CHAR_LEADING_BYTE (range_start) !=
-      CHAR_LEADING_BYTE (range_end))
+#ifdef UTF2000
+      && CHAR_CHARSET_ID (range_start) != CHAR_CHARSET_ID (range_end)
+#else
+      && CHAR_LEADING_BYTE (range_start) != CHAR_LEADING_BYTE (range_end)
+#endif
+      )
     return REG_ERANGESPAN;
 
   /* As advertised, translations only work over the 0 - 0x7F range.
@@ -3605,11 +3609,13 @@ re_compile_fastmap (struct re_pattern_buffer *bufp)
              fastmap[j] = 1;
          for (j = 0x80; j < 0xA0; j++)
            {
+#ifndef UTF2000
              if (LEADING_BYTE_PREFIX_P(j))
                /* too complicated to calculate this right */
                fastmap[j] = 1;
              else
                {
+#endif
                  int multi_p;
                  Lisp_Object cset;
 
@@ -3621,7 +3627,9 @@ re_compile_fastmap (struct re_pattern_buffer *bufp)
                          == Sword || multi_p)
                        fastmap[j] = 1;
                    }
+#ifndef UTF2000
                }
+#endif
            }
 #else /* ! MULE */
          for (j = 0; j < (1 << BYTEWIDTH); j++)
@@ -3646,11 +3654,13 @@ re_compile_fastmap (struct re_pattern_buffer *bufp)
              fastmap[j] = 1;
          for (j = 0x80; j < 0xA0; j++)
            {
+#ifndef UTF2000
              if (LEADING_BYTE_PREFIX_P(j))
                /* too complicated to calculate this right */
                fastmap[j] = 1;
              else
                {
+#endif
                  int multi_p;
                  Lisp_Object cset;
 
@@ -3662,7 +3672,9 @@ re_compile_fastmap (struct re_pattern_buffer *bufp)
                          != Sword || multi_p)
                        fastmap[j] = 1;
                    }
+#ifndef UTF2000
                }
+#endif
            }
 #else /* ! MULE */
          for (j = 0; j < (1 << BYTEWIDTH); j++)
diff --git a/src/text-coding.c b/src/text-coding.c
new file mode 100644 (file)
index 0000000..fd1dc8f
--- /dev/null
@@ -0,0 +1,5530 @@
+/* Code conversion functions.
+   Copyright (C) 1991, 1995 Free Software Foundation, Inc.
+   Copyright (C) 1995 Sun Microsystems, Inc.
+
+This file is part of XEmacs.
+
+XEmacs is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+XEmacs 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 General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: Mule 2.3.   Not in FSF. */
+
+/* Rewritten by Ben Wing <ben@xemacs.org>. */
+
+#include <config.h>
+#include "lisp.h"
+
+#include "buffer.h"
+#include "elhash.h"
+#include "insdel.h"
+#include "lstream.h"
+#ifdef MULE
+#include "mule-ccl.h"
+#include "chartab.h"
+#endif
+#include "file-coding.h"
+
+Lisp_Object Qbuffer_file_coding_system, Qcoding_system_error;
+
+Lisp_Object Vkeyboard_coding_system;
+Lisp_Object Vterminal_coding_system;
+Lisp_Object Vcoding_system_for_read;
+Lisp_Object Vcoding_system_for_write;
+Lisp_Object Vfile_name_coding_system;
+
+/* Table of symbols identifying each coding category. */
+Lisp_Object coding_category_symbol[CODING_CATEGORY_LAST + 1];
+
+/* Coding system currently associated with each coding category. */
+Lisp_Object coding_category_system[CODING_CATEGORY_LAST + 1];
+
+/* Table of all coding categories in decreasing order of priority.
+   This describes a permutation of the possible coding categories. */
+int coding_category_by_priority[CODING_CATEGORY_LAST + 1];
+
+Lisp_Object Qcoding_system_p;
+
+Lisp_Object Qraw_text, Qno_conversion, Qccl, Qiso2022;
+/* Qinternal in general.c */
+
+Lisp_Object Qmnemonic, Qeol_type;
+Lisp_Object Qcr, Qcrlf, Qlf;
+Lisp_Object Qeol_cr, Qeol_crlf, Qeol_lf;
+Lisp_Object Qpost_read_conversion;
+Lisp_Object Qpre_write_conversion;
+
+#ifdef MULE
+Lisp_Object Qucs4, Qutf8;
+Lisp_Object Qbig5, Qshift_jis;
+Lisp_Object Qcharset_g0, Qcharset_g1, Qcharset_g2, Qcharset_g3;
+Lisp_Object Qforce_g0_on_output, Qforce_g1_on_output;
+Lisp_Object Qforce_g2_on_output, Qforce_g3_on_output;
+Lisp_Object Qno_iso6429;
+Lisp_Object Qinput_charset_conversion, Qoutput_charset_conversion;
+Lisp_Object Qctext, Qescape_quoted;
+Lisp_Object Qshort, Qno_ascii_eol, Qno_ascii_cntl, Qseven, Qlock_shift;
+#endif
+Lisp_Object Qencode, Qdecode;
+
+Lisp_Object Vcoding_system_hash_table;
+
+int enable_multibyte_characters;
+
+#ifdef MULE
+/* Additional information used by the ISO2022 decoder and detector. */
+struct iso2022_decoder
+{
+  /* CHARSET holds the character sets currently assigned to the G0
+     through G3 variables.  It is initialized from the array
+     INITIAL_CHARSET in CODESYS. */
+  Lisp_Object charset[4];
+
+  /* Which registers are currently invoked into the left (GL) and
+     right (GR) halves of the 8-bit encoding space? */
+  int register_left, register_right;
+
+  /* ISO_ESC holds a value indicating part of an escape sequence
+     that has already been seen. */
+  enum iso_esc_flag esc;
+
+  /* This records the bytes we've seen so far in an escape sequence,
+     in case the sequence is invalid (we spit out the bytes unchanged). */
+  unsigned char esc_bytes[8];
+
+  /* Index for next byte to store in ISO escape sequence. */
+  int esc_bytes_index;
+
+#ifdef ENABLE_COMPOSITE_CHARS
+  /* Stuff seen so far when composing a string. */
+  unsigned_char_dynarr *composite_chars;
+#endif
+
+  /* If we saw an invalid designation sequence for a particular
+     register, we flag it here and switch to ASCII.  The next time we
+     see a valid designation for this register, we turn off the flag
+     and do the designation normally, but pretend the sequence was
+     invalid.  The effect of all this is that (most of the time) the
+     escape sequences for both the switch to the unknown charset, and
+     the switch back to the known charset, get inserted literally into
+     the buffer and saved out as such.  The hope is that we can
+     preserve the escape sequences so that the resulting written out
+     file makes sense.  If we don't do any of this, the designation
+     to the invalid charset will be preserved but that switch back
+     to the known charset will probably get eaten because it was
+     the same charset that was already present in the register. */
+  unsigned char invalid_designated[4];
+
+  /* We try to do similar things as above for direction-switching
+     sequences.  If we encountered a direction switch while an
+     invalid designation was present, or an invalid designation
+     just after a direction switch (i.e. no valid designation
+     encountered yet), we insert the direction-switch escape
+     sequence literally into the output stream, and later on
+     insert the corresponding direction-restoring escape sequence
+     literally also. */
+  unsigned int switched_dir_and_no_valid_charset_yet :1;
+  unsigned int invalid_switch_dir :1;
+
+  /* Tells the decoder to output the escape sequence literally
+     even though it was valid.  Used in the games we play to
+     avoid lossage when we encounter invalid designations. */
+  unsigned int output_literally :1;
+  /* We encountered a direction switch followed by an invalid
+     designation.  We didn't output the direction switch
+     literally because we didn't know about the invalid designation;
+     but we have to do so now. */
+  unsigned int output_direction_sequence :1;
+};
+#endif /* MULE */
+EXFUN (Fcopy_coding_system, 2);
+#ifdef MULE
+struct detection_state;
+
+static void
+text_encode_generic (Lstream *encoding, CONST unsigned char *src,
+                    unsigned_char_dynarr *dst, unsigned int n);
+
+static int detect_coding_sjis (struct detection_state *st,
+                              CONST unsigned char *src,
+                              unsigned int n);
+static void decode_coding_sjis (Lstream *decoding,
+                               CONST unsigned char *src,
+                               unsigned_char_dynarr *dst,
+                               unsigned int n);
+void char_encode_shift_jis (struct encoding_stream *str, Emchar c,
+                           unsigned_char_dynarr *dst, unsigned int *flags);
+void char_finish_shift_jis (struct encoding_stream *str,
+                           unsigned_char_dynarr *dst, unsigned int *flags);
+
+static int detect_coding_big5 (struct detection_state *st,
+                              CONST unsigned char *src,
+                              unsigned int n);
+static void decode_coding_big5 (Lstream *decoding,
+                               CONST unsigned char *src,
+                               unsigned_char_dynarr *dst, unsigned int n);
+static void encode_coding_big5 (Lstream *encoding,
+                               CONST unsigned char *src,
+                               unsigned_char_dynarr *dst, unsigned int n);
+static int detect_coding_ucs4 (struct detection_state *st,
+                              CONST unsigned char *src,
+                              unsigned int n);
+static void decode_coding_ucs4 (Lstream *decoding,
+                               CONST unsigned char *src,
+                               unsigned_char_dynarr *dst, unsigned int n);
+void char_encode_ucs4 (struct encoding_stream *str, Emchar c,
+                      unsigned_char_dynarr *dst, unsigned int *flags);
+void char_finish_ucs4 (struct encoding_stream *str,
+                      unsigned_char_dynarr *dst, unsigned int *flags);
+
+static int detect_coding_utf8 (struct detection_state *st,
+                              CONST unsigned char *src,
+                              unsigned int n);
+static void decode_coding_utf8 (Lstream *decoding,
+                               CONST unsigned char *src,
+                               unsigned_char_dynarr *dst, unsigned int n);
+void char_encode_utf8 (struct encoding_stream *str, Emchar c,
+                      unsigned_char_dynarr *dst, unsigned int *flags);
+void char_finish_utf8 (struct encoding_stream *str,
+                      unsigned_char_dynarr *dst, unsigned int *flags);
+
+static int postprocess_iso2022_mask (int mask);
+static void reset_iso2022 (Lisp_Object coding_system,
+                          struct iso2022_decoder *iso);
+static int detect_coding_iso2022 (struct detection_state *st,
+                                 CONST unsigned char *src,
+                                 unsigned int n);
+static void decode_coding_iso2022 (Lstream *decoding,
+                                  CONST unsigned char *src,
+                                  unsigned_char_dynarr *dst, unsigned int n);
+void char_encode_iso2022 (struct encoding_stream *str, Emchar c,
+                         unsigned_char_dynarr *dst, unsigned int *flags);
+void char_finish_iso2022 (struct encoding_stream *str,
+                         unsigned_char_dynarr *dst, unsigned int *flags);
+#endif /* MULE */
+static void decode_coding_no_conversion (Lstream *decoding,
+                                        CONST unsigned char *src,
+                                        unsigned_char_dynarr *dst,
+                                        unsigned int n);
+static void encode_coding_no_conversion (Lstream *encoding,
+                                        CONST unsigned char *src,
+                                        unsigned_char_dynarr *dst,
+                                        unsigned int n);
+static void mule_decode (Lstream *decoding, CONST unsigned char *src,
+                        unsigned_char_dynarr *dst, unsigned int n);
+static void mule_encode (Lstream *encoding, CONST unsigned char *src,
+                        unsigned_char_dynarr *dst, unsigned int n);
+
+typedef struct codesys_prop codesys_prop;
+struct codesys_prop
+{
+  Lisp_Object sym;
+  int prop_type;
+};
+
+typedef struct
+{
+  Dynarr_declare (codesys_prop);
+} codesys_prop_dynarr;
+
+codesys_prop_dynarr *the_codesys_prop_dynarr;
+
+enum codesys_prop_enum
+{
+  CODESYS_PROP_ALL_OK,
+  CODESYS_PROP_ISO2022,
+  CODESYS_PROP_CCL
+};
+
+\f
+/************************************************************************/
+/*                       Coding system functions                        */
+/************************************************************************/
+
+static Lisp_Object mark_coding_system (Lisp_Object, void (*) (Lisp_Object));
+static void print_coding_system (Lisp_Object, Lisp_Object, int);
+static void finalize_coding_system (void *header, int for_disksave);
+
+#ifdef MULE
+static const struct lrecord_description ccs_description_1[] = {
+  { XD_LISP_OBJECT, offsetof(charset_conversion_spec, from_charset), 2 },
+  { XD_END }
+};
+
+static const struct struct_description ccs_description = {
+  sizeof(charset_conversion_spec),
+  ccs_description_1
+};
+  
+static const struct lrecord_description ccsd_description_1[] = {
+  XD_DYNARR_DESC(charset_conversion_spec_dynarr, &ccs_description),
+  { XD_END }
+};
+
+static const struct struct_description ccsd_description = {
+  sizeof(charset_conversion_spec_dynarr),
+  ccsd_description_1
+};
+#endif
+
+static const struct lrecord_description coding_system_description[] = {
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Coding_System, name), 2 },
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Coding_System, mnemonic), 3 },
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Coding_System, eol_lf), 3 },
+#ifdef MULE
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Coding_System, iso2022.initial_charset), 4 },
+  { XD_STRUCT_PTR,  offsetof(struct Lisp_Coding_System, iso2022.input_conv),  1, &ccsd_description },
+  { XD_STRUCT_PTR,  offsetof(struct Lisp_Coding_System, iso2022.output_conv), 1, &ccsd_description },
+  { XD_LISP_OBJECT, offsetof(struct Lisp_Coding_System, ccl.decode), 2 },
+#endif
+  { XD_END }
+};
+
+DEFINE_LRECORD_IMPLEMENTATION ("coding-system", coding_system,
+                              mark_coding_system, print_coding_system,
+                              finalize_coding_system,
+                              0, 0, coding_system_description,
+                              struct Lisp_Coding_System);
+
+static Lisp_Object
+mark_coding_system (Lisp_Object obj, void (*markobj) (Lisp_Object))
+{
+  Lisp_Coding_System *codesys = XCODING_SYSTEM (obj);
+
+  markobj (CODING_SYSTEM_NAME (codesys));
+  markobj (CODING_SYSTEM_DOC_STRING (codesys));
+  markobj (CODING_SYSTEM_MNEMONIC (codesys));
+  markobj (CODING_SYSTEM_EOL_LF (codesys));
+  markobj (CODING_SYSTEM_EOL_CRLF (codesys));
+  markobj (CODING_SYSTEM_EOL_CR (codesys));
+
+  switch (CODING_SYSTEM_TYPE (codesys))
+    {
+#ifdef MULE
+      int i;
+    case CODESYS_ISO2022:
+      for (i = 0; i < 4; i++)
+       markobj (CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, i));
+      if (codesys->iso2022.input_conv)
+       {
+         for (i = 0; i < Dynarr_length (codesys->iso2022.input_conv); i++)
+           {
+             struct charset_conversion_spec *ccs =
+               Dynarr_atp (codesys->iso2022.input_conv, i);
+             markobj (ccs->from_charset);
+             markobj (ccs->to_charset);
+           }
+       }
+      if (codesys->iso2022.output_conv)
+       {
+         for (i = 0; i < Dynarr_length (codesys->iso2022.output_conv); i++)
+           {
+             struct charset_conversion_spec *ccs =
+               Dynarr_atp (codesys->iso2022.output_conv, i);
+             markobj (ccs->from_charset);
+             markobj (ccs->to_charset);
+           }
+       }
+      break;
+
+    case CODESYS_CCL:
+      markobj (CODING_SYSTEM_CCL_DECODE (codesys));
+      markobj (CODING_SYSTEM_CCL_ENCODE (codesys));
+      break;
+#endif /* MULE */
+    default:
+      break;
+    }
+
+  markobj (CODING_SYSTEM_PRE_WRITE_CONVERSION (codesys));
+  return CODING_SYSTEM_POST_READ_CONVERSION (codesys);
+}
+
+static void
+print_coding_system (Lisp_Object obj, Lisp_Object printcharfun,
+                    int escapeflag)
+{
+  Lisp_Coding_System *c = XCODING_SYSTEM (obj);
+  if (print_readably)
+    error ("printing unreadable object #<coding_system 0x%x>",
+          c->header.uid);
+
+  write_c_string ("#<coding_system ", printcharfun);
+  print_internal (c->name, printcharfun, 1);
+  write_c_string (">", printcharfun);
+}
+
+static void
+finalize_coding_system (void *header, int for_disksave)
+{
+  Lisp_Coding_System *c = (Lisp_Coding_System *) header;
+  /* Since coding systems never go away, this function is not
+     necessary.  But it would be necessary if we changed things
+     so that coding systems could go away. */
+  if (!for_disksave) /* see comment in lstream.c */
+    {
+      switch (CODING_SYSTEM_TYPE (c))
+       {
+#ifdef MULE
+       case CODESYS_ISO2022:
+         if (c->iso2022.input_conv)
+           {
+             Dynarr_free (c->iso2022.input_conv);
+             c->iso2022.input_conv = 0;
+           }
+         if (c->iso2022.output_conv)
+           {
+             Dynarr_free (c->iso2022.output_conv);
+             c->iso2022.output_conv = 0;
+           }
+         break;
+#endif /* MULE */
+       default:
+         break;
+       }
+    }
+}
+
+static enum eol_type
+symbol_to_eol_type (Lisp_Object symbol)
+{
+  CHECK_SYMBOL (symbol);
+  if (NILP (symbol))      return EOL_AUTODETECT;
+  if (EQ (symbol, Qlf))   return EOL_LF;
+  if (EQ (symbol, Qcrlf)) return EOL_CRLF;
+  if (EQ (symbol, Qcr))   return EOL_CR;
+
+  signal_simple_error ("Unrecognized eol type", symbol);
+  return EOL_AUTODETECT; /* not reached */
+}
+
+static Lisp_Object
+eol_type_to_symbol (enum eol_type type)
+{
+  switch (type)
+    {
+    default: abort ();
+    case EOL_LF:         return Qlf;
+    case EOL_CRLF:       return Qcrlf;
+    case EOL_CR:         return Qcr;
+    case EOL_AUTODETECT: return Qnil;
+    }
+}
+
+static void
+setup_eol_coding_systems (Lisp_Coding_System *codesys)
+{
+  Lisp_Object codesys_obj;
+  int len = string_length (XSYMBOL (CODING_SYSTEM_NAME (codesys))->name);
+  char *codesys_name = (char *) alloca (len + 7);
+  int mlen = -1;
+  char *codesys_mnemonic=0;
+
+  Lisp_Object codesys_name_sym, sub_codesys_obj;
+
+  /* kludge */
+
+  XSETCODING_SYSTEM (codesys_obj, codesys);
+
+  memcpy (codesys_name,
+         string_data (XSYMBOL (CODING_SYSTEM_NAME (codesys))->name), len);
+
+  if (STRINGP (CODING_SYSTEM_MNEMONIC (codesys)))
+    {
+      mlen = XSTRING_LENGTH (CODING_SYSTEM_MNEMONIC (codesys));
+      codesys_mnemonic = (char *) alloca (mlen + 7);
+      memcpy (codesys_mnemonic,
+             XSTRING_DATA (CODING_SYSTEM_MNEMONIC (codesys)), mlen);
+    }
+
+#define DEFINE_SUB_CODESYS(op_sys, op_sys_abbr, Type) do {                     \
+  strcpy (codesys_name + len, "-" op_sys);                                     \
+  if (mlen != -1)                                                              \
+    strcpy (codesys_mnemonic + mlen, op_sys_abbr);                             \
+  codesys_name_sym = intern (codesys_name);                                    \
+  sub_codesys_obj = Fcopy_coding_system (codesys_obj, codesys_name_sym);       \
+  XCODING_SYSTEM_EOL_TYPE (sub_codesys_obj) = Type;                            \
+  if (mlen != -1)                                                              \
+    XCODING_SYSTEM_MNEMONIC(sub_codesys_obj) =                                 \
+      build_string (codesys_mnemonic);                                         \
+  CODING_SYSTEM_##Type (codesys) = sub_codesys_obj;                            \
+} while (0)
+
+  DEFINE_SUB_CODESYS("unix", "", EOL_LF);
+  DEFINE_SUB_CODESYS("dos",  ":T", EOL_CRLF);
+  DEFINE_SUB_CODESYS("mac",  ":t", EOL_CR);
+}
+
+DEFUN ("coding-system-p", Fcoding_system_p, 1, 1, 0, /*
+Return t if OBJECT is a coding system.
+A coding system is an object that defines how text containing multiple
+character sets is encoded into a stream of (typically 8-bit) bytes.
+The coding system is used to decode the stream into a series of
+characters (which may be from multiple charsets) when the text is read
+from a file or process, and is used to encode the text back into the
+same format when it is written out to a file or process.
+
+For example, many ISO2022-compliant coding systems (such as Compound
+Text, which is used for inter-client data under the X Window System)
+use escape sequences to switch between different charsets -- Japanese
+Kanji, for example, is invoked with "ESC $ ( B"; ASCII is invoked
+with "ESC ( B"; and Cyrillic is invoked with "ESC - L".  See
+`make-coding-system' for more information.
+
+Coding systems are normally identified using a symbol, and the
+symbol is accepted in place of the actual coding system object whenever
+a coding system is called for. (This is similar to how faces work.)
+*/
+       (object))
+{
+  return CODING_SYSTEMP (object) ? Qt : Qnil;
+}
+
+DEFUN ("find-coding-system", Ffind_coding_system, 1, 1, 0, /*
+Retrieve the coding system of the given name.
+
+If CODING-SYSTEM-OR-NAME is a coding-system object, it is simply
+returned.  Otherwise, CODING-SYSTEM-OR-NAME should be a symbol.
+If there is no such coding system, nil is returned.  Otherwise the
+associated coding system object is returned.
+*/
+       (coding_system_or_name))
+{
+  if (CODING_SYSTEMP (coding_system_or_name))
+    return coding_system_or_name;
+
+  if (NILP (coding_system_or_name))
+    coding_system_or_name = Qbinary;
+  else
+    CHECK_SYMBOL (coding_system_or_name);
+
+  return Fgethash (coding_system_or_name, Vcoding_system_hash_table, Qnil);
+}
+
+DEFUN ("get-coding-system", Fget_coding_system, 1, 1, 0, /*
+Retrieve the coding system of the given name.
+Same as `find-coding-system' except that if there is no such
+coding system, an error is signaled instead of returning nil.
+*/
+       (name))
+{
+  Lisp_Object coding_system = Ffind_coding_system (name);
+
+  if (NILP (coding_system))
+    signal_simple_error ("No such coding system", name);
+  return coding_system;
+}
+
+/* We store the coding systems in hash tables with the names as the key and the
+   actual coding system object as the value.  Occasionally we need to use them
+   in a list format.  These routines provide us with that. */
+struct coding_system_list_closure
+{
+  Lisp_Object *coding_system_list;
+};
+
+static int
+add_coding_system_to_list_mapper (Lisp_Object key, Lisp_Object value,
+                                 void *coding_system_list_closure)
+{
+  /* This function can GC */
+  struct coding_system_list_closure *cscl =
+    (struct coding_system_list_closure *) coding_system_list_closure;
+  Lisp_Object *coding_system_list = cscl->coding_system_list;
+
+  *coding_system_list = Fcons (XCODING_SYSTEM (value)->name,
+                              *coding_system_list);
+  return 0;
+}
+
+DEFUN ("coding-system-list", Fcoding_system_list, 0, 0, 0, /*
+Return a list of the names of all defined coding systems.
+*/
+       ())
+{
+  Lisp_Object coding_system_list = Qnil;
+  struct gcpro gcpro1;
+  struct coding_system_list_closure coding_system_list_closure;
+
+  GCPRO1 (coding_system_list);
+  coding_system_list_closure.coding_system_list = &coding_system_list;
+  elisp_maphash (add_coding_system_to_list_mapper, Vcoding_system_hash_table,
+                &coding_system_list_closure);
+  UNGCPRO;
+
+  return coding_system_list;
+}
+
+DEFUN ("coding-system-name", Fcoding_system_name, 1, 1, 0, /*
+Return the name of the given coding system.
+*/
+       (coding_system))
+{
+  coding_system = Fget_coding_system (coding_system);
+  return XCODING_SYSTEM_NAME (coding_system);
+}
+
+static Lisp_Coding_System *
+allocate_coding_system (enum coding_system_type type, Lisp_Object name)
+{
+  Lisp_Coding_System *codesys =
+    alloc_lcrecord_type (Lisp_Coding_System, &lrecord_coding_system);
+
+  zero_lcrecord (codesys);
+  CODING_SYSTEM_PRE_WRITE_CONVERSION (codesys) = Qnil;
+  CODING_SYSTEM_POST_READ_CONVERSION (codesys) = Qnil;
+  CODING_SYSTEM_EOL_TYPE (codesys) = EOL_AUTODETECT;
+  CODING_SYSTEM_EOL_CRLF (codesys) = Qnil;
+  CODING_SYSTEM_EOL_CR   (codesys) = Qnil;
+  CODING_SYSTEM_EOL_LF   (codesys) = Qnil;
+  CODING_SYSTEM_TYPE     (codesys) = type;
+  CODING_SYSTEM_MNEMONIC (codesys) = Qnil;
+#ifdef MULE
+  if (type == CODESYS_ISO2022)
+    {
+      int i;
+      for (i = 0; i < 4; i++)
+       CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, i) = Qnil;
+    }
+  else if (type == CODESYS_CCL)
+    {
+      CODING_SYSTEM_CCL_DECODE (codesys) = Qnil;
+      CODING_SYSTEM_CCL_ENCODE (codesys) = Qnil;
+    }
+#endif /* MULE */
+  CODING_SYSTEM_NAME (codesys) = name;
+
+  return codesys;
+}
+
+#ifdef MULE
+/* Given a list of charset conversion specs as specified in a Lisp
+   program, parse it into STORE_HERE. */
+
+static void
+parse_charset_conversion_specs (charset_conversion_spec_dynarr *store_here,
+                               Lisp_Object spec_list)
+{
+  Lisp_Object rest;
+
+  EXTERNAL_LIST_LOOP (rest, spec_list)
+    {
+      Lisp_Object car = XCAR (rest);
+      Lisp_Object from, to;
+      struct charset_conversion_spec spec;
+
+      if (!CONSP (car) || !CONSP (XCDR (car)) || !NILP (XCDR (XCDR (car))))
+       signal_simple_error ("Invalid charset conversion spec", car);
+      from = Fget_charset (XCAR (car));
+      to = Fget_charset (XCAR (XCDR (car)));
+      if (XCHARSET_TYPE (from) != XCHARSET_TYPE (to))
+       signal_simple_error_2
+         ("Attempted conversion between different charset types",
+          from, to);
+      spec.from_charset = from;
+      spec.to_charset = to;
+
+      Dynarr_add (store_here, spec);
+    }
+}
+
+/* Given a dynarr LOAD_HERE of internally-stored charset conversion
+   specs, return the equivalent as the Lisp programmer would see it.
+
+   If LOAD_HERE is 0, return Qnil. */
+
+static Lisp_Object
+unparse_charset_conversion_specs (charset_conversion_spec_dynarr *load_here)
+{
+  int i;
+  Lisp_Object result;
+
+  if (!load_here)
+    return Qnil;
+  for (i = 0, result = Qnil; i < Dynarr_length (load_here); i++)
+    {
+      struct charset_conversion_spec *ccs = Dynarr_atp (load_here, i);
+      result = Fcons (list2 (ccs->from_charset, ccs->to_charset), result);
+    }
+
+  return Fnreverse (result);
+}
+
+#endif /* MULE */
+
+DEFUN ("make-coding-system", Fmake_coding_system, 2, 4, 0, /*
+Register symbol NAME as a coding system.
+
+TYPE describes the conversion method used and should be one of
+
+nil or 'undecided
+     Automatic conversion.  XEmacs attempts to detect the coding system
+     used in the file.
+'no-conversion
+     No conversion.  Use this for binary files and such.  On output,
+     graphic characters that are not in ASCII or Latin-1 will be
+     replaced by a ?. (For a no-conversion-encoded buffer, these
+     characters will only be present if you explicitly insert them.)
+'shift-jis
+     Shift-JIS (a Japanese encoding commonly used in PC operating systems).
+'ucs-4
+     ISO 10646 UCS-4 encoding.
+'utf-8
+     ISO 10646 UTF-8 encoding.
+'iso2022
+     Any ISO2022-compliant encoding.  Among other things, this includes
+     JIS (the Japanese encoding commonly used for e-mail), EUC (the
+     standard Unix encoding for Japanese and other languages), and
+     Compound Text (the encoding used in X11).  You can specify more
+     specific information about the conversion with the FLAGS argument.
+'big5
+     Big5 (the encoding commonly used for Taiwanese).
+'ccl
+     The conversion is performed using a user-written pseudo-code
+     program.  CCL (Code Conversion Language) is the name of this
+     pseudo-code.
+'internal
+     Write out or read in the raw contents of the memory representing
+     the buffer's text.  This is primarily useful for debugging
+     purposes, and is only enabled when XEmacs has been compiled with
+     DEBUG_XEMACS defined (via the --debug configure option).
+     WARNING: Reading in a file using 'internal conversion can result
+     in an internal inconsistency in the memory representing a
+     buffer's text, which will produce unpredictable results and may
+     cause XEmacs to crash.  Under normal circumstances you should
+     never use 'internal conversion.
+
+DOC-STRING is a string describing the coding system.
+
+PROPS is a property list, describing the specific nature of the
+character set.  Recognized properties are:
+
+'mnemonic
+     String to be displayed in the modeline when this coding system is
+     active.
+
+'eol-type
+     End-of-line conversion to be used.  It should be one of
+
+       nil
+               Automatically detect the end-of-line type (LF, CRLF,
+               or CR).  Also generate subsidiary coding systems named
+               `NAME-unix', `NAME-dos', and `NAME-mac', that are
+               identical to this coding system but have an EOL-TYPE
+               value of 'lf, 'crlf, and 'cr, respectively.
+       'lf
+               The end of a line is marked externally using ASCII LF.
+               Since this is also the way that XEmacs represents an
+               end-of-line internally, specifying this option results
+               in no end-of-line conversion.  This is the standard
+               format for Unix text files.
+       'crlf
+               The end of a line is marked externally using ASCII
+               CRLF.  This is the standard format for MS-DOS text
+               files.
+       'cr
+               The end of a line is marked externally using ASCII CR.
+               This is the standard format for Macintosh text files.
+       t
+               Automatically detect the end-of-line type but do not
+               generate subsidiary coding systems.  (This value is
+               converted to nil when stored internally, and
+               `coding-system-property' will return nil.)
+
+'post-read-conversion
+     Function called after a file has been read in, to perform the
+     decoding.  Called with two arguments, BEG and END, denoting
+     a region of the current buffer to be decoded.
+
+'pre-write-conversion
+     Function called before a file is written out, to perform the
+     encoding.  Called with two arguments, BEG and END, denoting
+     a region of the current buffer to be encoded.
+
+
+The following additional properties are recognized if TYPE is 'iso2022:
+
+'charset-g0
+'charset-g1
+'charset-g2
+'charset-g3
+     The character set initially designated to the G0 - G3 registers.
+     The value should be one of
+
+          -- A charset object (designate that character set)
+         -- nil (do not ever use this register)
+         -- t (no character set is initially designated to
+               the register, but may be later on; this automatically
+               sets the corresponding `force-g*-on-output' property)
+
+'force-g0-on-output
+'force-g1-on-output
+'force-g2-on-output
+'force-g2-on-output
+     If non-nil, send an explicit designation sequence on output before
+     using the specified register.
+
+'short
+     If non-nil, use the short forms "ESC $ @", "ESC $ A", and
+     "ESC $ B" on output in place of the full designation sequences
+     "ESC $ ( @", "ESC $ ( A", and "ESC $ ( B".
+
+'no-ascii-eol
+     If non-nil, don't designate ASCII to G0 at each end of line on output.
+     Setting this to non-nil also suppresses other state-resetting that
+     normally happens at the end of a line.
+
+'no-ascii-cntl
+     If non-nil, don't designate ASCII to G0 before control chars on output.
+
+'seven
+     If non-nil, use 7-bit environment on output.  Otherwise, use 8-bit
+     environment.
+
+'lock-shift
+     If non-nil, use locking-shift (SO/SI) instead of single-shift
+     or designation by escape sequence.
+
+'no-iso6429
+     If non-nil, don't use ISO6429's direction specification.
+
+'escape-quoted
+     If non-nil, literal control characters that are the same as
+     the beginning of a recognized ISO2022 or ISO6429 escape sequence
+     (in particular, ESC (0x1B), SO (0x0E), SI (0x0F), SS2 (0x8E),
+     SS3 (0x8F), and CSI (0x9B)) are "quoted" with an escape character
+     so that they can be properly distinguished from an escape sequence.
+     (Note that doing this results in a non-portable encoding.) This
+     encoding flag is used for byte-compiled files.  Note that ESC
+     is a good choice for a quoting character because there are no
+     escape sequences whose second byte is a character from the Control-0
+     or Control-1 character sets; this is explicitly disallowed by the
+     ISO2022 standard.
+
+'input-charset-conversion
+     A list of conversion specifications, specifying conversion of
+     characters in one charset to another when decoding is performed.
+     Each specification is a list of two elements: the source charset,
+     and the destination charset.
+
+'output-charset-conversion
+     A list of conversion specifications, specifying conversion of
+     characters in one charset to another when encoding is performed.
+     The form of each specification is the same as for
+     'input-charset-conversion.
+
+
+The following additional properties are recognized (and required)
+if TYPE is 'ccl:
+
+'decode
+     CCL program used for decoding (converting to internal format).
+
+'encode
+     CCL program used for encoding (converting to external format).
+*/
+       (name, type, doc_string, props))
+{
+  Lisp_Coding_System *codesys;
+  Lisp_Object rest, key, value;
+  enum coding_system_type ty;
+  int need_to_setup_eol_systems = 1;
+
+  /* Convert type to constant */
+  if (NILP (type) || EQ (type, Qundecided))
+                                      { ty = CODESYS_AUTODETECT; }
+#ifdef MULE
+  else if (EQ (type, Qshift_jis))     { ty = CODESYS_SHIFT_JIS; }
+  else if (EQ (type, Qiso2022))       { ty = CODESYS_ISO2022; }
+  else if (EQ (type, Qbig5))          { ty = CODESYS_BIG5; }
+  else if (EQ (type, Qucs4))          { ty = CODESYS_UCS4; }
+  else if (EQ (type, Qutf8))          { ty = CODESYS_UTF8; }
+  else if (EQ (type, Qccl))           { ty = CODESYS_CCL; }
+#endif
+  else if (EQ (type, Qno_conversion)) { ty = CODESYS_NO_CONVERSION; }
+#ifdef DEBUG_XEMACS
+  else if (EQ (type, Qinternal))      { ty = CODESYS_INTERNAL; }
+#endif
+  else
+    signal_simple_error ("Invalid coding system type", type);
+
+  CHECK_SYMBOL (name);
+
+  codesys = allocate_coding_system (ty, name);
+
+  if (NILP (doc_string))
+    doc_string = build_string ("");
+  else
+    CHECK_STRING (doc_string);
+  CODING_SYSTEM_DOC_STRING (codesys) = doc_string;
+
+  EXTERNAL_PROPERTY_LIST_LOOP (rest, key, value, props)
+    {
+      if (EQ (key, Qmnemonic))
+       {
+          if (!NILP (value))
+           CHECK_STRING (value);
+         CODING_SYSTEM_MNEMONIC (codesys) = value;
+       }
+
+      else if (EQ (key, Qeol_type))
+       {
+         need_to_setup_eol_systems = NILP (value);
+         if (EQ (value, Qt))
+           value = Qnil;
+         CODING_SYSTEM_EOL_TYPE (codesys) = symbol_to_eol_type (value);
+       }
+
+      else if (EQ (key, Qpost_read_conversion)) CODING_SYSTEM_POST_READ_CONVERSION (codesys) = value;
+      else if (EQ (key, Qpre_write_conversion)) CODING_SYSTEM_PRE_WRITE_CONVERSION (codesys) = value;
+#ifdef MULE
+      else if (ty == CODESYS_ISO2022)
+       {
+#define FROB_INITIAL_CHARSET(charset_num) \
+  CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, charset_num) = \
+    ((EQ (value, Qt) || EQ (value, Qnil)) ? value : Fget_charset (value))
+
+         if      (EQ (key, Qcharset_g0)) FROB_INITIAL_CHARSET (0);
+         else if (EQ (key, Qcharset_g1)) FROB_INITIAL_CHARSET (1);
+         else if (EQ (key, Qcharset_g2)) FROB_INITIAL_CHARSET (2);
+         else if (EQ (key, Qcharset_g3)) FROB_INITIAL_CHARSET (3);
+
+#define FROB_FORCE_CHARSET(charset_num) \
+  CODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT (codesys, charset_num) = !NILP (value)
+
+         else if (EQ (key, Qforce_g0_on_output)) FROB_FORCE_CHARSET (0);
+         else if (EQ (key, Qforce_g1_on_output)) FROB_FORCE_CHARSET (1);
+         else if (EQ (key, Qforce_g2_on_output)) FROB_FORCE_CHARSET (2);
+         else if (EQ (key, Qforce_g3_on_output)) FROB_FORCE_CHARSET (3);
+
+#define FROB_BOOLEAN_PROPERTY(prop) \
+  CODING_SYSTEM_ISO2022_##prop (codesys) = !NILP (value)
+
+         else if (EQ (key, Qshort))         FROB_BOOLEAN_PROPERTY (SHORT);
+         else if (EQ (key, Qno_ascii_eol))  FROB_BOOLEAN_PROPERTY (NO_ASCII_EOL);
+         else if (EQ (key, Qno_ascii_cntl)) FROB_BOOLEAN_PROPERTY (NO_ASCII_CNTL);
+         else if (EQ (key, Qseven))         FROB_BOOLEAN_PROPERTY (SEVEN);
+         else if (EQ (key, Qlock_shift))    FROB_BOOLEAN_PROPERTY (LOCK_SHIFT);
+         else if (EQ (key, Qno_iso6429))    FROB_BOOLEAN_PROPERTY (NO_ISO6429);
+         else if (EQ (key, Qescape_quoted)) FROB_BOOLEAN_PROPERTY (ESCAPE_QUOTED);
+
+         else if (EQ (key, Qinput_charset_conversion))
+           {
+             codesys->iso2022.input_conv =
+               Dynarr_new (charset_conversion_spec);
+             parse_charset_conversion_specs (codesys->iso2022.input_conv,
+                                             value);
+           }
+         else if (EQ (key, Qoutput_charset_conversion))
+           {
+             codesys->iso2022.output_conv =
+               Dynarr_new (charset_conversion_spec);
+             parse_charset_conversion_specs (codesys->iso2022.output_conv,
+                                             value);
+           }
+         else
+           signal_simple_error ("Unrecognized property", key);
+       }
+      else if (EQ (type, Qccl))
+       {
+         if (EQ (key, Qdecode))
+           {
+             CHECK_VECTOR (value);
+             CODING_SYSTEM_CCL_DECODE (codesys) = value;
+           }
+         else if (EQ (key, Qencode))
+           {
+             CHECK_VECTOR (value);
+             CODING_SYSTEM_CCL_ENCODE (codesys) = value;
+           }
+         else
+           signal_simple_error ("Unrecognized property", key);
+       }
+#endif /* MULE */
+      else
+       signal_simple_error ("Unrecognized property", key);
+    }
+
+  if (need_to_setup_eol_systems)
+    setup_eol_coding_systems (codesys);
+
+  {
+    Lisp_Object codesys_obj;
+    XSETCODING_SYSTEM (codesys_obj, codesys);
+    Fputhash (name, codesys_obj, Vcoding_system_hash_table);
+    return codesys_obj;
+  }
+}
+
+DEFUN ("copy-coding-system", Fcopy_coding_system, 2, 2, 0, /*
+Copy OLD-CODING-SYSTEM to NEW-NAME.
+If NEW-NAME does not name an existing coding system, a new one will
+be created.
+*/
+       (old_coding_system, new_name))
+{
+  Lisp_Object new_coding_system;
+  old_coding_system = Fget_coding_system (old_coding_system);
+  new_coding_system = Ffind_coding_system (new_name);
+  if (NILP (new_coding_system))
+    {
+      XSETCODING_SYSTEM (new_coding_system,
+                        allocate_coding_system
+                        (XCODING_SYSTEM_TYPE (old_coding_system),
+                         new_name));
+      Fputhash (new_name, new_coding_system, Vcoding_system_hash_table);
+    }
+
+  {
+    Lisp_Coding_System *to = XCODING_SYSTEM (new_coding_system);
+    Lisp_Coding_System *from = XCODING_SYSTEM (old_coding_system);
+    memcpy (((char *) to  ) + sizeof (to->header),
+           ((char *) from) + sizeof (from->header),
+           sizeof (*from) - sizeof (from->header));
+    to->name = new_name;
+  }
+  return new_coding_system;
+}
+
+DEFUN ("define-coding-system-alias", Fdefine_coding_system_alias, 2, 2, 0, /*
+Define symbol ALIAS as an alias for coding system CODING-SYSTEM.
+*/
+       (alias, coding_system))
+{
+  CHECK_SYMBOL (alias);
+  if (!NILP (Ffind_coding_system (alias)))
+    signal_simple_error ("Symbol already names a coding system", alias);
+  coding_system = Fget_coding_system (coding_system);
+  Fputhash (alias, coding_system, Vcoding_system_hash_table);
+
+  /* Set up aliases for subsidiaries. */
+  if (XCODING_SYSTEM_EOL_TYPE (coding_system) == EOL_AUTODETECT)
+    {
+      Lisp_Object str;
+      XSETSTRING (str, symbol_name (XSYMBOL (alias)));
+#define FROB(type, name)                                                       \
+      do {                                                                     \
+       Lisp_Object subsidiary = XCODING_SYSTEM_EOL_##type (coding_system);     \
+       if (!NILP (subsidiary))                                                 \
+         Fdefine_coding_system_alias                                           \
+           (Fintern (concat2 (str, build_string (name)), Qnil), subsidiary);   \
+      } while (0)
+      FROB (LF,   "-unix");
+      FROB (CRLF, "-dos");
+      FROB (CR,   "-mac");
+#undef FROB
+    }
+  /* FSF return value is a vector of [ALIAS-unix ALIAS-doc ALIAS-mac],
+     but it doesn't look intentional, so I'd rather return something
+     meaningful or nothing at all. */
+  return Qnil;
+}
+
+static Lisp_Object
+subsidiary_coding_system (Lisp_Object coding_system, enum eol_type type)
+{
+  Lisp_Coding_System *cs = XCODING_SYSTEM (coding_system);
+  Lisp_Object new_coding_system;
+
+  if (CODING_SYSTEM_EOL_TYPE (cs) != EOL_AUTODETECT)
+    return coding_system;
+
+  switch (type)
+    {
+    case EOL_AUTODETECT: return coding_system;
+    case EOL_LF:   new_coding_system = CODING_SYSTEM_EOL_LF   (cs); break;
+    case EOL_CR:   new_coding_system = CODING_SYSTEM_EOL_CR   (cs); break;
+    case EOL_CRLF: new_coding_system = CODING_SYSTEM_EOL_CRLF (cs); break;
+    default:       abort ();
+    }
+
+  return NILP (new_coding_system) ? coding_system : new_coding_system;
+}
+
+DEFUN ("subsidiary-coding-system", Fsubsidiary_coding_system, 2, 2, 0, /*
+Return the subsidiary coding system of CODING-SYSTEM with eol type EOL-TYPE.
+*/
+       (coding_system, eol_type))
+{
+  coding_system = Fget_coding_system (coding_system);
+
+  return subsidiary_coding_system (coding_system,
+                                  symbol_to_eol_type (eol_type));
+}
+
+\f
+/************************************************************************/
+/*                         Coding system accessors                      */
+/************************************************************************/
+
+DEFUN ("coding-system-doc-string", Fcoding_system_doc_string, 1, 1, 0, /*
+Return the doc string for CODING-SYSTEM.
+*/
+       (coding_system))
+{
+  coding_system = Fget_coding_system (coding_system);
+  return XCODING_SYSTEM_DOC_STRING (coding_system);
+}
+
+DEFUN ("coding-system-type", Fcoding_system_type, 1, 1, 0, /*
+Return the type of CODING-SYSTEM.
+*/
+       (coding_system))
+{
+  switch (XCODING_SYSTEM_TYPE (Fget_coding_system (coding_system)))
+    {
+    default: abort ();
+    case CODESYS_AUTODETECT:   return Qundecided;
+#ifdef MULE
+    case CODESYS_SHIFT_JIS:    return Qshift_jis;
+    case CODESYS_ISO2022:      return Qiso2022;
+    case CODESYS_BIG5:         return Qbig5;
+    case CODESYS_UCS4:         return Qucs4;
+    case CODESYS_UTF8:         return Qutf8;
+    case CODESYS_CCL:          return Qccl;
+#endif
+    case CODESYS_NO_CONVERSION:        return Qno_conversion;
+#ifdef DEBUG_XEMACS
+    case CODESYS_INTERNAL:     return Qinternal;
+#endif
+    }
+}
+
+#ifdef MULE
+static
+Lisp_Object coding_system_charset (Lisp_Object coding_system, int gnum)
+{
+  Lisp_Object cs
+    = XCODING_SYSTEM_ISO2022_INITIAL_CHARSET (coding_system, gnum);
+
+  return CHARSETP (cs) ? XCHARSET_NAME (cs) : Qnil;
+}
+
+DEFUN ("coding-system-charset", Fcoding_system_charset, 2, 2, 0, /*
+Return initial charset of CODING-SYSTEM designated to GNUM.
+GNUM allows 0 .. 3.
+*/
+       (coding_system, gnum))
+{
+  coding_system = Fget_coding_system (coding_system);
+  CHECK_INT (gnum);
+
+  return coding_system_charset (coding_system, XINT (gnum));
+}
+#endif /* MULE */
+
+DEFUN ("coding-system-property", Fcoding_system_property, 2, 2, 0, /*
+Return the PROP property of CODING-SYSTEM.
+*/
+       (coding_system, prop))
+{
+  int i, ok = 0;
+  enum coding_system_type type;
+
+  coding_system = Fget_coding_system (coding_system);
+  CHECK_SYMBOL (prop);
+  type = XCODING_SYSTEM_TYPE (coding_system);
+
+  for (i = 0; !ok && i < Dynarr_length (the_codesys_prop_dynarr); i++)
+    if (EQ (Dynarr_at (the_codesys_prop_dynarr, i).sym, prop))
+      {
+       ok = 1;
+       switch (Dynarr_at (the_codesys_prop_dynarr, i).prop_type)
+         {
+         case CODESYS_PROP_ALL_OK:
+           break;
+#ifdef MULE
+         case CODESYS_PROP_ISO2022:
+           if (type != CODESYS_ISO2022)
+             signal_simple_error
+               ("Property only valid in ISO2022 coding systems",
+                prop);
+           break;
+
+         case CODESYS_PROP_CCL:
+           if (type != CODESYS_CCL)
+             signal_simple_error
+               ("Property only valid in CCL coding systems",
+                prop);
+           break;
+#endif /* MULE */
+         default:
+           abort ();
+         }
+      }
+
+  if (!ok)
+    signal_simple_error ("Unrecognized property", prop);
+
+  if (EQ (prop, Qname))
+    return XCODING_SYSTEM_NAME (coding_system);
+  else if (EQ (prop, Qtype))
+    return Fcoding_system_type (coding_system);
+  else if (EQ (prop, Qdoc_string))
+    return XCODING_SYSTEM_DOC_STRING (coding_system);
+  else if (EQ (prop, Qmnemonic))
+    return XCODING_SYSTEM_MNEMONIC (coding_system);
+  else if (EQ (prop, Qeol_type))
+    return eol_type_to_symbol (XCODING_SYSTEM_EOL_TYPE (coding_system));
+  else if (EQ (prop, Qeol_lf))
+    return XCODING_SYSTEM_EOL_LF (coding_system);
+  else if (EQ (prop, Qeol_crlf))
+    return XCODING_SYSTEM_EOL_CRLF (coding_system);
+  else if (EQ (prop, Qeol_cr))
+    return XCODING_SYSTEM_EOL_CR (coding_system);
+  else if (EQ (prop, Qpost_read_conversion))
+    return XCODING_SYSTEM_POST_READ_CONVERSION (coding_system);
+  else if (EQ (prop, Qpre_write_conversion))
+    return XCODING_SYSTEM_PRE_WRITE_CONVERSION (coding_system);
+#ifdef MULE
+  else if (type == CODESYS_ISO2022)
+    {
+      if (EQ (prop, Qcharset_g0))
+       return coding_system_charset (coding_system, 0);
+      else if (EQ (prop, Qcharset_g1))
+       return coding_system_charset (coding_system, 1);
+      else if (EQ (prop, Qcharset_g2))
+       return coding_system_charset (coding_system, 2);
+      else if (EQ (prop, Qcharset_g3))
+       return coding_system_charset (coding_system, 3);
+
+#define FORCE_CHARSET(charset_num) \
+  (XCODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT \
+   (coding_system, charset_num) ? Qt : Qnil)
+
+      else if (EQ (prop, Qforce_g0_on_output)) return FORCE_CHARSET (0);
+      else if (EQ (prop, Qforce_g1_on_output)) return FORCE_CHARSET (1);
+      else if (EQ (prop, Qforce_g2_on_output)) return FORCE_CHARSET (2);
+      else if (EQ (prop, Qforce_g3_on_output)) return FORCE_CHARSET (3);
+
+#define LISP_BOOLEAN(prop) \
+  (XCODING_SYSTEM_ISO2022_##prop (coding_system) ? Qt : Qnil)
+
+      else if (EQ (prop, Qshort))         return LISP_BOOLEAN (SHORT);
+      else if (EQ (prop, Qno_ascii_eol))  return LISP_BOOLEAN (NO_ASCII_EOL);
+      else if (EQ (prop, Qno_ascii_cntl)) return LISP_BOOLEAN (NO_ASCII_CNTL);
+      else if (EQ (prop, Qseven))         return LISP_BOOLEAN (SEVEN);
+      else if (EQ (prop, Qlock_shift))    return LISP_BOOLEAN (LOCK_SHIFT);
+      else if (EQ (prop, Qno_iso6429))    return LISP_BOOLEAN (NO_ISO6429);
+      else if (EQ (prop, Qescape_quoted)) return LISP_BOOLEAN (ESCAPE_QUOTED);
+
+      else if (EQ (prop, Qinput_charset_conversion))
+       return
+         unparse_charset_conversion_specs
+           (XCODING_SYSTEM (coding_system)->iso2022.input_conv);
+      else if (EQ (prop, Qoutput_charset_conversion))
+       return
+         unparse_charset_conversion_specs
+           (XCODING_SYSTEM (coding_system)->iso2022.output_conv);
+      else
+       abort ();
+    }
+  else if (type == CODESYS_CCL)
+    {
+      if (EQ (prop, Qdecode))
+       return XCODING_SYSTEM_CCL_DECODE (coding_system);
+      else if (EQ (prop, Qencode))
+       return XCODING_SYSTEM_CCL_ENCODE (coding_system);
+      else
+       abort ();
+    }
+#endif /* MULE */
+  else
+    abort ();
+
+  return Qnil; /* not reached */
+}
+
+\f
+/************************************************************************/
+/*                       Coding category functions                      */
+/************************************************************************/
+
+static int
+decode_coding_category (Lisp_Object symbol)
+{
+  int i;
+
+  CHECK_SYMBOL (symbol);
+  for (i = 0; i <= CODING_CATEGORY_LAST; i++)
+    if (EQ (coding_category_symbol[i], symbol))
+      return i;
+
+  signal_simple_error ("Unrecognized coding category", symbol);
+  return 0; /* not reached */
+}
+
+DEFUN ("coding-category-list", Fcoding_category_list, 0, 0, 0, /*
+Return a list of all recognized coding categories.
+*/
+       ())
+{
+  int i;
+  Lisp_Object list = Qnil;
+
+  for (i = CODING_CATEGORY_LAST; i >= 0; i--)
+    list = Fcons (coding_category_symbol[i], list);
+  return list;
+}
+
+DEFUN ("set-coding-priority-list", Fset_coding_priority_list, 1, 1, 0, /*
+Change the priority order of the coding categories.
+LIST should be list of coding categories, in descending order of
+priority.  Unspecified coding categories will be lower in priority
+than all specified ones, in the same relative order they were in
+previously.
+*/
+       (list))
+{
+  int category_to_priority[CODING_CATEGORY_LAST + 1];
+  int i, j;
+  Lisp_Object rest;
+
+  /* First generate a list that maps coding categories to priorities. */
+
+  for (i = 0; i <= CODING_CATEGORY_LAST; i++)
+    category_to_priority[i] = -1;
+
+  /* Highest priority comes from the specified list. */
+  i = 0;
+  EXTERNAL_LIST_LOOP (rest, list)
+    {
+      int cat = decode_coding_category (XCAR (rest));
+
+      if (category_to_priority[cat] >= 0)
+       signal_simple_error ("Duplicate coding category in list", XCAR (rest));
+      category_to_priority[cat] = i++;
+    }
+
+  /* Now go through the existing categories by priority to retrieve
+     the categories not yet specified and preserve their priority
+     order. */
+  for (j = 0; j <= CODING_CATEGORY_LAST; j++)
+    {
+      int cat = coding_category_by_priority[j];
+      if (category_to_priority[cat] < 0)
+       category_to_priority[cat] = i++;
+    }
+
+  /* Now we need to construct the inverse of the mapping we just
+     constructed. */
+
+  for (i = 0; i <= CODING_CATEGORY_LAST; i++)
+    coding_category_by_priority[category_to_priority[i]] = i;
+
+  /* Phew!  That was confusing. */
+  return Qnil;
+}
+
+DEFUN ("coding-priority-list", Fcoding_priority_list, 0, 0, 0, /*
+Return a list of coding categories in descending order of priority.
+*/
+       ())
+{
+  int i;
+  Lisp_Object list = Qnil;
+
+  for (i = CODING_CATEGORY_LAST; i >= 0; i--)
+    list = Fcons (coding_category_symbol[coding_category_by_priority[i]],
+                 list);
+  return list;
+}
+
+DEFUN ("set-coding-category-system", Fset_coding_category_system, 2, 2, 0, /*
+Change the coding system associated with a coding category.
+*/
+       (coding_category, coding_system))
+{
+  int cat = decode_coding_category (coding_category);
+
+  coding_system = Fget_coding_system (coding_system);
+  coding_category_system[cat] = coding_system;
+  return Qnil;
+}
+
+DEFUN ("coding-category-system", Fcoding_category_system, 1, 1, 0, /*
+Return the coding system associated with a coding category.
+*/
+       (coding_category))
+{
+  int cat = decode_coding_category (coding_category);
+  Lisp_Object sys = coding_category_system[cat];
+
+  if (!NILP (sys))
+    return XCODING_SYSTEM_NAME (sys);
+  return Qnil;
+}
+
+\f
+/************************************************************************/
+/*                     Detecting the encoding of data                   */
+/************************************************************************/
+
+struct detection_state
+{
+  enum eol_type eol_type;
+  int seen_non_ascii;
+  int mask;
+#ifdef MULE
+  struct
+    {
+      int mask;
+      int in_second_byte;
+    }
+  big5;
+
+  struct
+    {
+      int mask;
+      int in_second_byte;
+    }
+  shift_jis;
+
+  struct
+    {
+      int mask;
+      int in_byte;
+  }
+  ucs4;
+
+  struct
+    {
+      int mask;
+      int in_byte;
+    }
+  utf8;
+
+  struct
+    {
+      int mask;
+      int initted;
+      struct iso2022_decoder iso;
+      unsigned int flags;
+      int high_byte_count;
+      unsigned int saw_single_shift:1;
+    }
+  iso2022;
+#endif
+  struct
+    {
+      int seen_anything;
+      int just_saw_cr;
+    }
+  eol;
+};
+
+static int
+acceptable_control_char_p (int c)
+{
+  switch (c)
+    {
+      /* Allow and ignore control characters that you might
+        reasonably see in a text file */
+    case '\r':
+    case '\n':
+    case '\t':
+    case  7: /* bell */
+    case  8: /* backspace */
+    case 11: /* vertical tab */
+    case 12: /* form feed */
+    case 26: /* MS-DOS C-z junk */
+    case 31: /* '^_' -- for info */
+      return 1;
+    default:
+      return 0;
+    }
+}
+
+static int
+mask_has_at_most_one_bit_p (int mask)
+{
+  /* Perhaps the only thing useful you learn from intensive Microsoft
+     technical interviews */
+  return (mask & (mask - 1)) == 0;
+}
+
+static enum eol_type
+detect_eol_type (struct detection_state *st, CONST unsigned char *src,
+                unsigned int n)
+{
+  int c;
+
+  while (n--)
+    {
+      c = *src++;
+      if (c == '\r')
+       st->eol.just_saw_cr = 1;
+      else
+       {
+         if (c == '\n')
+           {
+             if (st->eol.just_saw_cr)
+               return EOL_CRLF;
+             else if (st->eol.seen_anything)
+               return EOL_LF;
+           }
+         else if (st->eol.just_saw_cr)
+           return EOL_CR;
+         st->eol.just_saw_cr = 0;
+       }
+      st->eol.seen_anything = 1;
+    }
+
+  return EOL_AUTODETECT;
+}
+
+/* Attempt to determine the encoding and EOL type of the given text.
+   Before calling this function for the first type, you must initialize
+   st->eol_type as appropriate and initialize st->mask to ~0.
+
+   st->eol_type holds the determined EOL type, or EOL_AUTODETECT if
+   not yet known.
+
+   st->mask holds the determined coding category mask, or ~0 if only
+   ASCII has been seen so far.
+
+   Returns:
+
+   0 == st->eol_type is EOL_AUTODETECT and/or more than coding category
+        is present in st->mask
+   1 == definitive answers are here for both st->eol_type and st->mask
+*/
+
+static int
+detect_coding_type (struct detection_state *st, CONST unsigned char *src,
+                   unsigned int n, int just_do_eol)
+{
+  int c;
+
+  if (st->eol_type == EOL_AUTODETECT)
+    st->eol_type = detect_eol_type (st, src, n);
+
+  if (just_do_eol)
+    return st->eol_type != EOL_AUTODETECT;
+
+  if (!st->seen_non_ascii)
+    {
+      for (; n; n--, src++)
+       {
+         c = *src;
+         if ((c < 0x20 && !acceptable_control_char_p (c)) || c >= 0x80)
+           {
+             st->seen_non_ascii = 1;
+#ifdef MULE
+             st->shift_jis.mask = ~0;
+             st->big5.mask = ~0;
+             st->ucs4.mask = ~0;
+             st->utf8.mask = ~0;
+             st->iso2022.mask = ~0;
+#endif
+             break;
+           }
+       }
+    }
+
+  if (!n)
+    return 0;
+#ifdef MULE
+  if (!mask_has_at_most_one_bit_p (st->iso2022.mask))
+    st->iso2022.mask = detect_coding_iso2022 (st, src, n);
+  if (!mask_has_at_most_one_bit_p (st->shift_jis.mask))
+    st->shift_jis.mask = detect_coding_sjis (st, src, n);
+  if (!mask_has_at_most_one_bit_p (st->big5.mask))
+    st->big5.mask = detect_coding_big5 (st, src, n);
+  if (!mask_has_at_most_one_bit_p (st->utf8.mask))
+    st->utf8.mask = detect_coding_utf8 (st, src, n);
+  if (!mask_has_at_most_one_bit_p (st->ucs4.mask))
+    st->ucs4.mask = detect_coding_ucs4 (st, src, n);
+
+  st->mask
+    = st->iso2022.mask | st->shift_jis.mask | st->big5.mask
+    | st->utf8.mask | st->ucs4.mask;
+#endif
+  {
+    int retval = mask_has_at_most_one_bit_p (st->mask);
+    st->mask |= CODING_CATEGORY_NO_CONVERSION_MASK;
+    return retval && st->eol_type != EOL_AUTODETECT;
+  }
+}
+
+static Lisp_Object
+coding_system_from_mask (int mask)
+{
+  if (mask == ~0)
+    {
+      /* If the file was entirely or basically ASCII, use the
+        default value of `buffer-file-coding-system'. */
+      Lisp_Object retval =
+       XBUFFER (Vbuffer_defaults)->buffer_file_coding_system;
+      if (!NILP (retval))
+       {
+         retval = Ffind_coding_system (retval);
+         if (NILP (retval))
+           {
+             warn_when_safe
+               (Qbad_variable, Qwarning,
+                "Invalid `default-buffer-file-coding-system', set to nil");
+             XBUFFER (Vbuffer_defaults)->buffer_file_coding_system = Qnil;
+           }
+       }
+      if (NILP (retval))
+       retval = Fget_coding_system (Qraw_text);
+      return retval;
+    }
+  else
+    {
+      int i;
+      int cat = -1;
+#ifdef MULE
+      mask = postprocess_iso2022_mask (mask);
+#endif
+      /* Look through the coding categories by priority and find
+        the first one that is allowed. */
+      for (i = 0; i <= CODING_CATEGORY_LAST; i++)
+       {
+         cat = coding_category_by_priority[i];
+         if ((mask & (1 << cat)) &&
+             !NILP (coding_category_system[cat]))
+           break;
+       }
+      if (cat >= 0)
+       return coding_category_system[cat];
+      else
+       return Fget_coding_system (Qraw_text);
+    }
+}
+
+/* Given a seekable read stream and potential coding system and EOL type
+   as specified, do any autodetection that is called for.  If the
+   coding system and/or EOL type are not autodetect, they will be left
+   alone; but this function will never return an autodetect coding system
+   or EOL type.
+
+   This function does not automatically fetch subsidiary coding systems;
+   that should be unnecessary with the explicit eol-type argument. */
+
+void
+determine_real_coding_system (Lstream *stream, Lisp_Object *codesys_in_out,
+                             enum eol_type *eol_type_in_out)
+{
+  struct detection_state decst;
+
+  if (*eol_type_in_out == EOL_AUTODETECT)
+    *eol_type_in_out = XCODING_SYSTEM_EOL_TYPE (*codesys_in_out);
+
+  xzero (decst);
+  decst.eol_type = *eol_type_in_out;
+  decst.mask = ~0;
+
+  /* If autodetection is called for, do it now. */
+  if (XCODING_SYSTEM_TYPE (*codesys_in_out) == CODESYS_AUTODETECT ||
+      *eol_type_in_out == EOL_AUTODETECT)
+    {
+      unsigned char random_buffer[4096];
+      int nread;
+      Lisp_Object coding_system = Qnil;
+
+      nread = Lstream_read (stream, random_buffer, sizeof (random_buffer));
+      if (nread)
+       {
+         unsigned char *cp = random_buffer;
+
+         while (cp < random_buffer + nread)
+           {
+             if ((*cp++ == 'c') && (cp < random_buffer + nread) &&
+                 (*cp++ == 'o') && (cp < random_buffer + nread) &&
+                 (*cp++ == 'd') && (cp < random_buffer + nread) &&
+                 (*cp++ == 'i') && (cp < random_buffer + nread) &&
+                 (*cp++ == 'n') && (cp < random_buffer + nread) &&
+                 (*cp++ == 'g') && (cp < random_buffer + nread) &&
+                 (*cp++ == ':') && (cp < random_buffer + nread))
+               {
+                 unsigned char coding_system_name[4096 - 6];
+                 unsigned char *np = coding_system_name;
+
+                 while ( (cp < random_buffer + nread)
+                         && ((*cp == ' ') || (*cp == '\t')) )
+                   {
+                     cp++;
+                   }
+                 while ( (cp < random_buffer + nread) &&
+                         (*cp != ' ') && (*cp != '\t') && (*cp != ';') )
+                   {
+                     *np++ = *cp++;
+                   }
+                 *np = 0;
+                 coding_system
+                   = Ffind_coding_system (intern (coding_system_name));
+                 break;
+               }
+           }
+         if (EQ(coding_system, Qnil))
+           do{
+             if (detect_coding_type (&decst, random_buffer, nread,
+                                     XCODING_SYSTEM_TYPE (*codesys_in_out)
+                                     != CODESYS_AUTODETECT))
+               break;
+             nread = Lstream_read (stream,
+                                   random_buffer, sizeof (random_buffer));
+             if (!nread)
+               break;
+           } while(1);
+       }
+      *eol_type_in_out = decst.eol_type;
+      if (XCODING_SYSTEM_TYPE (*codesys_in_out) == CODESYS_AUTODETECT)
+       {
+         if (EQ(coding_system, Qnil))
+           *codesys_in_out = coding_system_from_mask (decst.mask);
+         else
+           *codesys_in_out = coding_system;
+       }
+    }
+  /* If we absolutely can't determine the EOL type, just assume LF. */
+  if (*eol_type_in_out == EOL_AUTODETECT)
+    *eol_type_in_out = EOL_LF;
+
+  Lstream_rewind (stream);
+}
+
+DEFUN ("detect-coding-region", Fdetect_coding_region, 2, 3, 0, /*
+Detect coding system of the text in the region between START and END.
+Returned a list of possible coding systems ordered by priority.
+If only ASCII characters are found, it returns 'undecided or one of
+its subsidiary coding systems according to a detected end-of-line
+type.  Optional arg BUFFER defaults to the current buffer.
+*/
+       (start, end, buffer))
+{
+  Lisp_Object val = Qnil;
+  struct buffer *buf = decode_buffer (buffer, 0);
+  Bufpos b, e;
+  Lisp_Object instream, lb_instream;
+  Lstream *istr, *lb_istr;
+  struct detection_state decst;
+  struct gcpro gcpro1, gcpro2;
+
+  get_buffer_range_char (buf, start, end, &b, &e, 0);
+  lb_instream = make_lisp_buffer_input_stream (buf, b, e, 0);
+  lb_istr = XLSTREAM (lb_instream);
+  instream = make_encoding_input_stream (lb_istr, Fget_coding_system (Qbinary));
+  istr = XLSTREAM (instream);
+  GCPRO2 (instream, lb_instream);
+  xzero (decst);
+  decst.eol_type = EOL_AUTODETECT;
+  decst.mask = ~0;
+  while (1)
+    {
+      unsigned char random_buffer[4096];
+      int nread = Lstream_read (istr, random_buffer, sizeof (random_buffer));
+
+      if (!nread)
+       break;
+      if (detect_coding_type (&decst, random_buffer, nread, 0))
+       break;
+    }
+
+  if (decst.mask == ~0)
+    val = subsidiary_coding_system (Fget_coding_system (Qundecided),
+                                   decst.eol_type);
+  else
+    {
+      int i;
+
+      val = Qnil;
+#ifdef MULE
+      decst.mask = postprocess_iso2022_mask (decst.mask);
+#endif
+      for (i = CODING_CATEGORY_LAST; i >= 0; i--)
+       {
+         int sys = coding_category_by_priority[i];
+         if (decst.mask & (1 << sys))
+           {
+             Lisp_Object codesys = coding_category_system[sys];
+             if (!NILP (codesys))
+               codesys = subsidiary_coding_system (codesys, decst.eol_type);
+             val = Fcons (codesys, val);
+           }
+       }
+    }
+  Lstream_close (istr);
+  UNGCPRO;
+  Lstream_delete (istr);
+  Lstream_delete (lb_istr);
+  return val;
+}
+
+\f
+/************************************************************************/
+/*           Converting to internal Mule format ("decoding")            */
+/************************************************************************/
+
+/* A decoding stream is a stream used for decoding text (i.e.
+   converting from some external format to internal format).
+   The decoding-stream object keeps track of the actual coding
+   stream, the stream that is at the other end, and data that
+   needs to be persistent across the lifetime of the stream. */
+
+/* Handle the EOL stuff related to just-read-in character C.
+   EOL_TYPE is the EOL type of the coding stream.
+   FLAGS is the current value of FLAGS in the coding stream, and may
+   be modified by this macro.  (The macro only looks at the
+   CODING_STATE_CR flag.)  DST is the Dynarr to which the decoded
+   bytes are to be written.  You need to also define a local goto
+   label "label_continue_loop" that is at the end of the main
+   character-reading loop.
+
+   If C is a CR character, then this macro handles it entirely and
+   jumps to label_continue_loop.  Otherwise, this macro does not add
+   anything to DST, and continues normally.  You should continue
+   processing C normally after this macro. */
+
+#define DECODE_HANDLE_EOL_TYPE(eol_type, c, flags, dst)                \
+do {                                                           \
+  if (c == '\r')                                               \
+    {                                                          \
+      if (eol_type == EOL_CR)                                  \
+       Dynarr_add (dst, '\n');                                 \
+      else if (eol_type != EOL_CRLF || flags & CODING_STATE_CR)        \
+       Dynarr_add (dst, c);                                    \
+      else                                                     \
+       flags |= CODING_STATE_CR;                               \
+      goto label_continue_loop;                                        \
+    }                                                          \
+  else if (flags & CODING_STATE_CR)                            \
+    {  /* eol_type == CODING_SYSTEM_EOL_CRLF */                \
+      if (c != '\n')                                           \
+       Dynarr_add (dst, '\r');                                 \
+      flags &= ~CODING_STATE_CR;                               \
+    }                                                          \
+} while (0)
+
+/* C should be a binary character in the range 0 - 255; convert
+   to internal format and add to Dynarr DST. */
+
+#ifdef UTF2000
+#define DECODE_ADD_BINARY_CHAR(c, dst) \
+do {                                           \
+  if (BYTE_ASCII_P (c))                                \
+    Dynarr_add (dst, c);                       \
+  else                                         \
+    {                                          \
+      Dynarr_add (dst, (c >> 6) | 0xc0);       \
+      Dynarr_add (dst, (c & 0x3f) | 0x80);     \
+    }                                          \
+} while (0)
+
+INLINE void
+DECODE_ADD_UCS_CHAR(Emchar c, unsigned_char_dynarr* dst)
+{
+  if ( c <= 0x7f )
+    {
+      Dynarr_add (dst, c);
+    }
+  else if ( c <= 0x7ff )
+    {
+      Dynarr_add (dst, (c >> 6) | 0xc0);
+      Dynarr_add (dst, (c & 0x3f) | 0x80);
+    }
+  else if ( c <= 0xffff )
+    {
+      Dynarr_add (dst,  (c >> 12) | 0xe0);
+      Dynarr_add (dst, ((c >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (c        & 0x3f) | 0x80);
+    }
+  else if ( c <= 0x1fffff )
+    {
+      Dynarr_add (dst,  (c >> 18) | 0xf0);
+      Dynarr_add (dst, ((c >> 12) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (c        & 0x3f) | 0x80);
+    }
+  else if ( c <= 0x3ffffff )
+    {
+      Dynarr_add (dst,  (c >> 24) | 0xf8);
+      Dynarr_add (dst, ((c >> 18) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >> 12) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (c        & 0x3f) | 0x80);
+    }
+  else
+    {
+      Dynarr_add (dst,  (c >> 30) | 0xfc);
+      Dynarr_add (dst, ((c >> 24) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >> 18) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >> 12) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((c >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (c        & 0x3f) | 0x80);
+    }
+}
+#else
+#define DECODE_ADD_BINARY_CHAR(c, dst)         \
+do {                                           \
+  if (BYTE_ASCII_P (c))                                \
+    Dynarr_add (dst, c);                       \
+  else if (BYTE_C1_P (c))                      \
+    {                                          \
+      Dynarr_add (dst, LEADING_BYTE_CONTROL_1);        \
+      Dynarr_add (dst, c + 0x20);              \
+    }                                          \
+  else                                         \
+    {                                          \
+      Dynarr_add (dst, LEADING_BYTE_LATIN_ISO8859_1); \
+      Dynarr_add (dst, c);                     \
+    }                                          \
+} while (0)
+#endif
+
+#define DECODE_OUTPUT_PARTIAL_CHAR(ch) \
+do {                                   \
+  if (ch)                              \
+    {                                  \
+      DECODE_ADD_BINARY_CHAR (ch, dst);        \
+      ch = 0;                          \
+    }                                  \
+} while (0)
+
+#define DECODE_HANDLE_END_OF_CONVERSION(flags, ch, dst)        \
+do {                                   \
+  if (flags & CODING_STATE_END)                \
+    {                                  \
+      DECODE_OUTPUT_PARTIAL_CHAR (ch); \
+      if (flags & CODING_STATE_CR)     \
+       Dynarr_add (dst, '\r');         \
+    }                                  \
+} while (0)
+
+#define DECODING_STREAM_DATA(stream) LSTREAM_TYPE_DATA (stream, decoding)
+
+struct decoding_stream
+{
+  /* Coding system that governs the conversion. */
+  Lisp_Coding_System *codesys;
+
+  /* Stream that we read the encoded data from or
+     write the decoded data to. */
+  Lstream *other_end;
+
+  /* If we are reading, then we can return only a fixed amount of
+     data, so if the conversion resulted in too much data, we store it
+     here for retrieval the next time around. */
+  unsigned_char_dynarr *runoff;
+
+  /* FLAGS holds flags indicating the current state of the decoding.
+     Some of these flags are dependent on the coding system. */
+  unsigned int flags;
+
+  /* CH holds a partially built-up character.  Since we only deal
+     with one- and two-byte characters at the moment, we only use
+     this to store the first byte of a two-byte character. */
+  unsigned int ch;
+
+  /* EOL_TYPE specifies the type of end-of-line conversion that
+     currently applies.  We need to keep this separate from the
+     EOL type stored in CODESYS because the latter might indicate
+     automatic EOL-type detection while the former will always
+     indicate a particular EOL type. */
+  enum eol_type eol_type;
+#ifdef MULE
+  /* Additional ISO2022 information.  We define the structure above
+     because it's also needed by the detection routines. */
+  struct iso2022_decoder iso2022;
+
+  /* Additional information (the state of the running CCL program)
+     used by the CCL decoder. */
+  struct ccl_program ccl;
+
+  /* counter for UTF-8 or UCS-4 */
+  unsigned char counter;
+#endif
+  struct detection_state decst;
+};
+
+static int decoding_reader     (Lstream *stream,       unsigned char *data, size_t size);
+static int decoding_writer     (Lstream *stream, CONST unsigned char *data, size_t size);
+static int decoding_rewinder   (Lstream *stream);
+static int decoding_seekable_p (Lstream *stream);
+static int decoding_flusher    (Lstream *stream);
+static int decoding_closer     (Lstream *stream);
+
+static Lisp_Object decoding_marker (Lisp_Object stream,
+                                   void (*markobj) (Lisp_Object));
+
+DEFINE_LSTREAM_IMPLEMENTATION ("decoding", lstream_decoding,
+                              sizeof (struct decoding_stream));
+
+static Lisp_Object
+decoding_marker (Lisp_Object stream, void (*markobj) (Lisp_Object))
+{
+  Lstream *str = DECODING_STREAM_DATA (XLSTREAM (stream))->other_end;
+  Lisp_Object str_obj;
+
+  /* We do not need to mark the coding systems or charsets stored
+     within the stream because they are stored in a global list
+     and automatically marked. */
+
+  XSETLSTREAM (str_obj, str);
+  markobj (str_obj);
+  if (str->imp->marker)
+    return (str->imp->marker) (str_obj, markobj);
+  else
+    return Qnil;
+}
+
+/* Read SIZE bytes of data and store it into DATA.  We are a decoding stream
+   so we read data from the other end, decode it, and store it into DATA. */
+
+static int
+decoding_reader (Lstream *stream, unsigned char *data, size_t size)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (stream);
+  unsigned char *orig_data = data;
+  int read_size;
+  int error_occurred = 0;
+
+  /* We need to interface to mule_decode(), which expects to take some
+     amount of data and store the result into a Dynarr.  We have
+     mule_decode() store into str->runoff, and take data from there
+     as necessary. */
+
+  /* We loop until we have enough data, reading chunks from the other
+     end and decoding it. */
+  while (1)
+    {
+      /* Take data from the runoff if we can.  Make sure to take at
+        most SIZE bytes, and delete the data from the runoff. */
+      if (Dynarr_length (str->runoff) > 0)
+       {
+         size_t chunk = min (size, (size_t) Dynarr_length (str->runoff));
+         memcpy (data, Dynarr_atp (str->runoff, 0), chunk);
+         Dynarr_delete_many (str->runoff, 0, chunk);
+         data += chunk;
+         size -= chunk;
+       }
+
+      if (size == 0)
+       break; /* No more room for data */
+
+      if (str->flags & CODING_STATE_END)
+       /* This means that on the previous iteration, we hit the EOF on
+          the other end.  We loop once more so that mule_decode() can
+          output any final stuff it may be holding, or any "go back
+          to a sane state" escape sequences. (This latter makes sense
+          during encoding.) */
+       break;
+
+      /* Exhausted the runoff, so get some more.  DATA has at least
+        SIZE bytes left of storage in it, so it's OK to read directly
+        into it.  (We'll be overwriting above, after we've decoded it
+        into the runoff.) */
+      read_size = Lstream_read (str->other_end, data, size);
+      if (read_size < 0)
+       {
+         error_occurred = 1;
+         break;
+       }
+      if (read_size == 0)
+       /* There might be some more end data produced in the translation.
+          See the comment above. */
+       str->flags |= CODING_STATE_END;
+      mule_decode (stream, data, str->runoff, read_size);
+    }
+
+  if (data - orig_data == 0)
+    return error_occurred ? -1 : 0;
+  else
+    return data - orig_data;
+}
+
+static int
+decoding_writer (Lstream *stream, CONST unsigned char *data, size_t size)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (stream);
+  int retval;
+
+  /* Decode all our data into the runoff, and then attempt to write
+     it all out to the other end.  Remove whatever chunk we succeeded
+     in writing. */
+  mule_decode (stream, data, str->runoff, size);
+  retval = Lstream_write (str->other_end, Dynarr_atp (str->runoff, 0),
+                         Dynarr_length (str->runoff));
+  if (retval > 0)
+    Dynarr_delete_many (str->runoff, 0, retval);
+  /* Do NOT return retval.  The return value indicates how much
+     of the incoming data was written, not how many bytes were
+     written. */
+  return size;
+}
+
+static void
+reset_decoding_stream (struct decoding_stream *str)
+{
+#ifdef MULE
+  if (CODING_SYSTEM_TYPE (str->codesys) == CODESYS_ISO2022)
+    {
+      Lisp_Object coding_system;
+      XSETCODING_SYSTEM (coding_system, str->codesys);
+      reset_iso2022 (coding_system, &str->iso2022);
+    }
+  else if (CODING_SYSTEM_TYPE (str->codesys) == CODESYS_CCL)
+    {
+      setup_ccl_program (&str->ccl, CODING_SYSTEM_CCL_DECODE (str->codesys));
+    }
+  str->counter = 0;
+#endif /* MULE */
+  str->flags = str->ch = 0;
+}
+
+static int
+decoding_rewinder (Lstream *stream)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (stream);
+  reset_decoding_stream (str);
+  Dynarr_reset (str->runoff);
+  return Lstream_rewind (str->other_end);
+}
+
+static int
+decoding_seekable_p (Lstream *stream)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (stream);
+  return Lstream_seekable_p (str->other_end);
+}
+
+static int
+decoding_flusher (Lstream *stream)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (stream);
+  return Lstream_flush (str->other_end);
+}
+
+static int
+decoding_closer (Lstream *stream)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (stream);
+  if (stream->flags & LSTREAM_FL_WRITE)
+    {
+      str->flags |= CODING_STATE_END;
+      decoding_writer (stream, 0, 0);
+    }
+  Dynarr_free (str->runoff);
+#ifdef MULE
+#ifdef ENABLE_COMPOSITE_CHARS
+  if (str->iso2022.composite_chars)
+    Dynarr_free (str->iso2022.composite_chars);
+#endif
+#endif
+  return Lstream_close (str->other_end);
+}
+
+Lisp_Object
+decoding_stream_coding_system (Lstream *stream)
+{
+  Lisp_Object coding_system;
+  struct decoding_stream *str = DECODING_STREAM_DATA (stream);
+
+  XSETCODING_SYSTEM (coding_system, str->codesys);
+  return subsidiary_coding_system (coding_system, str->eol_type);
+}
+
+void
+set_decoding_stream_coding_system (Lstream *lstr, Lisp_Object codesys)
+{
+  Lisp_Coding_System *cs = XCODING_SYSTEM (codesys);
+  struct decoding_stream *str = DECODING_STREAM_DATA (lstr);
+  str->codesys = cs;
+  if (CODING_SYSTEM_EOL_TYPE (cs) != EOL_AUTODETECT)
+    str->eol_type = CODING_SYSTEM_EOL_TYPE (cs);
+  reset_decoding_stream (str);
+}
+
+/* WARNING WARNING WARNING WARNING!!!!!  If you open up a decoding
+   stream for writing, no automatic code detection will be performed.
+   The reason for this is that automatic code detection requires a
+   seekable input.  Things will also fail if you open a decoding
+   stream for reading using a non-fully-specified coding system and
+   a non-seekable input stream. */
+
+static Lisp_Object
+make_decoding_stream_1 (Lstream *stream, Lisp_Object codesys,
+                       CONST char *mode)
+{
+  Lstream *lstr = Lstream_new (lstream_decoding, mode);
+  struct decoding_stream *str = DECODING_STREAM_DATA (lstr);
+  Lisp_Object obj;
+
+  xzero (*str);
+  str->other_end = stream;
+  str->runoff = (unsigned_char_dynarr *) Dynarr_new (unsigned_char);
+  str->eol_type = EOL_AUTODETECT;
+  if (!strcmp (mode, "r")
+      && Lstream_seekable_p (stream))
+    /* We can determine the coding system now. */
+    determine_real_coding_system (stream, &codesys, &str->eol_type);
+  set_decoding_stream_coding_system (lstr, codesys);
+  str->decst.eol_type = str->eol_type;
+  str->decst.mask = ~0;
+  XSETLSTREAM (obj, lstr);
+  return obj;
+}
+
+Lisp_Object
+make_decoding_input_stream (Lstream *stream, Lisp_Object codesys)
+{
+  return make_decoding_stream_1 (stream, codesys, "r");
+}
+
+Lisp_Object
+make_decoding_output_stream (Lstream *stream, Lisp_Object codesys)
+{
+  return make_decoding_stream_1 (stream, codesys, "w");
+}
+
+/* Note: the decode_coding_* functions all take the same
+   arguments as mule_decode(), which is to say some SRC data of
+   size N, which is to be stored into dynamic array DST.
+   DECODING is the stream within which the decoding is
+   taking place, but no data is actually read from or
+   written to that stream; that is handled in decoding_reader()
+   or decoding_writer().  This allows the same functions to
+   be used for both reading and writing. */
+
+static void
+mule_decode (Lstream *decoding, CONST unsigned char *src,
+            unsigned_char_dynarr *dst, unsigned int n)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
+
+  /* If necessary, do encoding-detection now.  We do this when
+     we're a writing stream or a non-seekable reading stream,
+     meaning that we can't just process the whole input,
+     rewind, and start over. */
+
+  if (CODING_SYSTEM_TYPE (str->codesys) == CODESYS_AUTODETECT ||
+      str->eol_type == EOL_AUTODETECT)
+    {
+      Lisp_Object codesys;
+
+      XSETCODING_SYSTEM (codesys, str->codesys);
+      detect_coding_type (&str->decst, src, n,
+                         CODING_SYSTEM_TYPE (str->codesys) !=
+                         CODESYS_AUTODETECT);
+      if (CODING_SYSTEM_TYPE (str->codesys) == CODESYS_AUTODETECT &&
+         str->decst.mask != ~0)
+       /* #### This is cheesy.  What we really ought to do is
+          buffer up a certain amount of data so as to get a
+          less random result. */
+       codesys = coding_system_from_mask (str->decst.mask);
+      str->eol_type = str->decst.eol_type;
+      if (XCODING_SYSTEM (codesys) != str->codesys)
+       {
+         /* Preserve the CODING_STATE_END flag in case it was set.
+            If we erase it, bad things might happen. */
+         int was_end = str->flags & CODING_STATE_END;
+          set_decoding_stream_coding_system (decoding, codesys);
+         if (was_end)
+           str->flags |= CODING_STATE_END;
+       }
+    }
+
+  switch (CODING_SYSTEM_TYPE (str->codesys))
+    {
+#ifdef DEBUG_XEMACS
+    case CODESYS_INTERNAL:
+      Dynarr_add_many (dst, src, n);
+      break;
+#endif
+    case CODESYS_AUTODETECT:
+      /* If we got this far and still haven't decided on the coding
+        system, then do no conversion. */
+    case CODESYS_NO_CONVERSION:
+      decode_coding_no_conversion (decoding, src, dst, n);
+      break;
+#ifdef MULE
+    case CODESYS_SHIFT_JIS:
+      decode_coding_sjis (decoding, src, dst, n);
+      break;
+    case CODESYS_BIG5:
+      decode_coding_big5 (decoding, src, dst, n);
+      break;
+    case CODESYS_UCS4:
+      decode_coding_ucs4 (decoding, src, dst, n);
+      break;
+    case CODESYS_UTF8:
+      decode_coding_utf8 (decoding, src, dst, n);
+      break;
+    case CODESYS_CCL:
+      str->ccl.last_block = str->flags & CODING_STATE_END;
+      ccl_driver (&str->ccl, src, dst, n, 0, CCL_MODE_DECODING);
+      break;
+    case CODESYS_ISO2022:
+      decode_coding_iso2022 (decoding, src, dst, n);
+      break;
+#endif /* MULE */
+    default:
+      abort ();
+    }
+}
+
+DEFUN ("decode-coding-region", Fdecode_coding_region, 3, 4, 0, /*
+Decode the text between START and END which is encoded in CODING-SYSTEM.
+This is useful if you've read in encoded text from a file without decoding
+it (e.g. you read in a JIS-formatted file but used the `binary' or
+`no-conversion' coding system, so that it shows up as "^[$B!<!+^[(B").
+Return length of decoded text.
+BUFFER defaults to the current buffer if unspecified.
+*/
+       (start, end, coding_system, buffer))
+{
+  Bufpos b, e;
+  struct buffer *buf = decode_buffer (buffer, 0);
+  Lisp_Object instream, lb_outstream, de_outstream, outstream;
+  Lstream *istr, *ostr;
+  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
+
+  get_buffer_range_char (buf, start, end, &b, &e, 0);
+
+  barf_if_buffer_read_only (buf, b, e);
+
+  coding_system = Fget_coding_system (coding_system);
+  instream = make_lisp_buffer_input_stream  (buf, b, e, 0);
+  lb_outstream = make_lisp_buffer_output_stream (buf, b, 0);
+  de_outstream = make_decoding_output_stream (XLSTREAM (lb_outstream),
+                                             coding_system);
+  outstream = make_encoding_output_stream (XLSTREAM (de_outstream),
+                                          Fget_coding_system (Qbinary));
+  istr = XLSTREAM (instream);
+  ostr = XLSTREAM (outstream);
+  GCPRO4 (instream, lb_outstream, de_outstream, outstream);
+
+  /* The chain of streams looks like this:
+
+     [BUFFER] <----- send through
+                     ------> [ENCODE AS BINARY]
+                            ------> [DECODE AS SPECIFIED]
+                                    ------> [BUFFER]
+   */
+
+  while (1)
+    {
+      char tempbuf[1024]; /* some random amount */
+      Bufpos newpos, even_newer_pos;
+      Bufpos oldpos = lisp_buffer_stream_startpos (istr);
+      int size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+
+      if (!size_in_bytes)
+       break;
+      newpos = lisp_buffer_stream_startpos (istr);
+      Lstream_write (ostr, tempbuf, size_in_bytes);
+      even_newer_pos = lisp_buffer_stream_startpos (istr);
+      buffer_delete_range (buf, even_newer_pos - (newpos - oldpos),
+                          even_newer_pos, 0);
+    }
+  Lstream_close (istr);
+  Lstream_close (ostr);
+  UNGCPRO;
+  Lstream_delete (istr);
+  Lstream_delete (ostr);
+  Lstream_delete (XLSTREAM (de_outstream));
+  Lstream_delete (XLSTREAM (lb_outstream));
+  return Qnil;
+}
+
+\f
+/************************************************************************/
+/*           Converting to an external encoding ("encoding")            */
+/************************************************************************/
+
+/* An encoding stream is an output stream.  When you create the
+   stream, you specify the coding system that governs the encoding
+   and another stream that the resulting encoded data is to be
+   sent to, and then start sending data to it. */
+
+#define ENCODING_STREAM_DATA(stream) LSTREAM_TYPE_DATA (stream, encoding)
+
+struct encoding_stream
+{
+  /* Coding system that governs the conversion. */
+  Lisp_Coding_System *codesys;
+
+  /* Stream that we read the encoded data from or
+     write the decoded data to. */
+  Lstream *other_end;
+
+  /* If we are reading, then we can return only a fixed amount of
+     data, so if the conversion resulted in too much data, we store it
+     here for retrieval the next time around. */
+  unsigned_char_dynarr *runoff;
+
+  /* FLAGS holds flags indicating the current state of the encoding.
+     Some of these flags are dependent on the coding system. */
+  unsigned int flags;
+
+  /* CH holds a partially built-up character.  Since we only deal
+     with one- and two-byte characters at the moment, we only use
+     this to store the first byte of a two-byte character. */
+  unsigned int ch;
+#ifdef MULE
+  /* Additional information used by the ISO2022 encoder. */
+  struct
+    {
+      /* CHARSET holds the character sets currently assigned to the G0
+        through G3 registers.  It is initialized from the array
+        INITIAL_CHARSET in CODESYS. */
+      Lisp_Object charset[4];
+
+      /* Which registers are currently invoked into the left (GL) and
+        right (GR) halves of the 8-bit encoding space? */
+      int register_left, register_right;
+
+      /* Whether we need to explicitly designate the charset in the
+        G? register before using it.  It is initialized from the
+        array FORCE_CHARSET_ON_OUTPUT in CODESYS. */
+      unsigned char force_charset_on_output[4];
+
+      /* Other state variables that need to be preserved across
+        invocations. */
+      Lisp_Object current_charset;
+      int current_half;
+      int current_char_boundary;
+    } iso2022;
+
+  void (*encode_char) (struct encoding_stream *str, Emchar c,
+                      unsigned_char_dynarr *dst, unsigned int *flags);
+  void (*finish) (struct encoding_stream *str,
+                 unsigned_char_dynarr *dst, unsigned int *flags);
+
+  /* Additional information (the state of the running CCL program)
+     used by the CCL encoder. */
+  struct ccl_program ccl;
+#endif /* MULE */
+};
+
+static int encoding_reader (Lstream *stream, unsigned char *data, size_t size);
+static int encoding_writer (Lstream *stream, CONST unsigned char *data,
+                           size_t size);
+static int encoding_rewinder   (Lstream *stream);
+static int encoding_seekable_p (Lstream *stream);
+static int encoding_flusher    (Lstream *stream);
+static int encoding_closer     (Lstream *stream);
+
+static Lisp_Object encoding_marker (Lisp_Object stream,
+                                   void (*markobj) (Lisp_Object));
+
+DEFINE_LSTREAM_IMPLEMENTATION ("encoding", lstream_encoding,
+                              sizeof (struct encoding_stream));
+
+static Lisp_Object
+encoding_marker (Lisp_Object stream, void (*markobj) (Lisp_Object))
+{
+  Lstream *str = ENCODING_STREAM_DATA (XLSTREAM (stream))->other_end;
+  Lisp_Object str_obj;
+
+  /* We do not need to mark the coding systems or charsets stored
+     within the stream because they are stored in a global list
+     and automatically marked. */
+
+  XSETLSTREAM (str_obj, str);
+  markobj (str_obj);
+  if (str->imp->marker)
+    return (str->imp->marker) (str_obj, markobj);
+  else
+    return Qnil;
+}
+
+/* Read SIZE bytes of data and store it into DATA.  We are a encoding stream
+   so we read data from the other end, encode it, and store it into DATA. */
+
+static int
+encoding_reader (Lstream *stream, unsigned char *data, size_t size)
+{
+  struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
+  unsigned char *orig_data = data;
+  int read_size;
+  int error_occurred = 0;
+
+  /* We need to interface to mule_encode(), which expects to take some
+     amount of data and store the result into a Dynarr.  We have
+     mule_encode() store into str->runoff, and take data from there
+     as necessary. */
+
+  /* We loop until we have enough data, reading chunks from the other
+     end and encoding it. */
+  while (1)
+    {
+      /* Take data from the runoff if we can.  Make sure to take at
+        most SIZE bytes, and delete the data from the runoff. */
+      if (Dynarr_length (str->runoff) > 0)
+       {
+         int chunk = min ((int) size, Dynarr_length (str->runoff));
+         memcpy (data, Dynarr_atp (str->runoff, 0), chunk);
+         Dynarr_delete_many (str->runoff, 0, chunk);
+         data += chunk;
+         size -= chunk;
+       }
+
+      if (size == 0)
+       break; /* No more room for data */
+
+      if (str->flags & CODING_STATE_END)
+       /* This means that on the previous iteration, we hit the EOF on
+          the other end.  We loop once more so that mule_encode() can
+          output any final stuff it may be holding, or any "go back
+          to a sane state" escape sequences. (This latter makes sense
+          during encoding.) */
+       break;
+
+      /* Exhausted the runoff, so get some more.  DATA at least SIZE bytes
+        left of storage in it, so it's OK to read directly into it.
+        (We'll be overwriting above, after we've encoded it into the
+        runoff.) */
+      read_size = Lstream_read (str->other_end, data, size);
+      if (read_size < 0)
+       {
+         error_occurred = 1;
+         break;
+       }
+      if (read_size == 0)
+       /* There might be some more end data produced in the translation.
+          See the comment above. */
+       str->flags |= CODING_STATE_END;
+      mule_encode (stream, data, str->runoff, read_size);
+    }
+
+  if (data == orig_data)
+    return error_occurred ? -1 : 0;
+  else
+    return data - orig_data;
+}
+
+static int
+encoding_writer (Lstream *stream, CONST unsigned char *data, size_t size)
+{
+  struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
+  int retval;
+
+  /* Encode all our data into the runoff, and then attempt to write
+     it all out to the other end.  Remove whatever chunk we succeeded
+     in writing. */
+  mule_encode (stream, data, str->runoff, size);
+  retval = Lstream_write (str->other_end, Dynarr_atp (str->runoff, 0),
+                         Dynarr_length (str->runoff));
+  if (retval > 0)
+    Dynarr_delete_many (str->runoff, 0, retval);
+  /* Do NOT return retval.  The return value indicates how much
+     of the incoming data was written, not how many bytes were
+     written. */
+  return size;
+}
+
+static void
+reset_encoding_stream (struct encoding_stream *str)
+{
+#ifdef MULE
+  switch (CODING_SYSTEM_TYPE (str->codesys))
+    {
+    case CODESYS_ISO2022:
+      {
+       int i;
+
+       str->encode_char = &char_encode_iso2022;
+       str->finish = &char_finish_iso2022;
+       for (i = 0; i < 4; i++)
+         {
+           str->iso2022.charset[i] =
+             CODING_SYSTEM_ISO2022_INITIAL_CHARSET (str->codesys, i);
+           str->iso2022.force_charset_on_output[i] =
+             CODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT (str->codesys, i);
+         }
+       str->iso2022.register_left = 0;
+       str->iso2022.register_right = 1;
+       str->iso2022.current_charset = Qnil;
+       str->iso2022.current_half = 0;
+       break;
+      }
+    case CODESYS_CCL:
+      setup_ccl_program (&str->ccl, CODING_SYSTEM_CCL_ENCODE (str->codesys));
+      break;
+    case CODESYS_UTF8:
+      str->encode_char = &char_encode_utf8;
+      str->finish = &char_finish_utf8;
+      break;
+    case CODESYS_UCS4:
+      str->encode_char = &char_encode_ucs4;
+      str->finish = &char_finish_ucs4;
+      break;
+    case CODESYS_SHIFT_JIS:
+      str->encode_char = &char_encode_shift_jis;
+      str->finish = &char_finish_shift_jis;
+      break;
+    default:
+      break;
+    }
+#endif /* MULE */
+  str->iso2022.current_char_boundary = 0;
+  str->flags = str->ch = 0;
+}
+
+static int
+encoding_rewinder (Lstream *stream)
+{
+  struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
+  reset_encoding_stream (str);
+  Dynarr_reset (str->runoff);
+  return Lstream_rewind (str->other_end);
+}
+
+static int
+encoding_seekable_p (Lstream *stream)
+{
+  struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
+  return Lstream_seekable_p (str->other_end);
+}
+
+static int
+encoding_flusher (Lstream *stream)
+{
+  struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
+  return Lstream_flush (str->other_end);
+}
+
+static int
+encoding_closer (Lstream *stream)
+{
+  struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
+  if (stream->flags & LSTREAM_FL_WRITE)
+    {
+      str->flags |= CODING_STATE_END;
+      encoding_writer (stream, 0, 0);
+    }
+  Dynarr_free (str->runoff);
+  return Lstream_close (str->other_end);
+}
+
+Lisp_Object
+encoding_stream_coding_system (Lstream *stream)
+{
+  Lisp_Object coding_system;
+  struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
+
+  XSETCODING_SYSTEM (coding_system, str->codesys);
+  return coding_system;
+}
+
+void
+set_encoding_stream_coding_system (Lstream *lstr, Lisp_Object codesys)
+{
+  Lisp_Coding_System *cs = XCODING_SYSTEM (codesys);
+  struct encoding_stream *str = ENCODING_STREAM_DATA (lstr);
+  str->codesys = cs;
+  reset_encoding_stream (str);
+}
+
+static Lisp_Object
+make_encoding_stream_1 (Lstream *stream, Lisp_Object codesys,
+                       CONST char *mode)
+{
+  Lstream *lstr = Lstream_new (lstream_encoding, mode);
+  struct encoding_stream *str = ENCODING_STREAM_DATA (lstr);
+  Lisp_Object obj;
+
+  xzero (*str);
+  str->runoff = Dynarr_new (unsigned_char);
+  str->other_end = stream;
+  set_encoding_stream_coding_system (lstr, codesys);
+  XSETLSTREAM (obj, lstr);
+  return obj;
+}
+
+Lisp_Object
+make_encoding_input_stream (Lstream *stream, Lisp_Object codesys)
+{
+  return make_encoding_stream_1 (stream, codesys, "r");
+}
+
+Lisp_Object
+make_encoding_output_stream (Lstream *stream, Lisp_Object codesys)
+{
+  return make_encoding_stream_1 (stream, codesys, "w");
+}
+
+/* Convert N bytes of internally-formatted data stored in SRC to an
+   external format, according to the encoding stream ENCODING.
+   Store the encoded data into DST. */
+
+static void
+mule_encode (Lstream *encoding, CONST unsigned char *src,
+            unsigned_char_dynarr *dst, unsigned int n)
+{
+  struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
+
+  switch (CODING_SYSTEM_TYPE (str->codesys))
+    {
+#ifdef DEBUG_XEMACS
+    case CODESYS_INTERNAL:
+      Dynarr_add_many (dst, src, n);
+      break;
+#endif
+    case CODESYS_AUTODETECT:
+      /* If we got this far and still haven't decided on the coding
+        system, then do no conversion. */
+    case CODESYS_NO_CONVERSION:
+      encode_coding_no_conversion (encoding, src, dst, n);
+      break;
+#ifdef MULE
+    case CODESYS_BIG5:
+      encode_coding_big5 (encoding, src, dst, n);
+      break;
+    case CODESYS_CCL:
+      str->ccl.last_block = str->flags & CODING_STATE_END;
+      ccl_driver (&str->ccl, src, dst, n, 0, CCL_MODE_ENCODING);
+      break;
+#endif /* MULE */
+    default:
+      text_encode_generic (encoding, src, dst, n);
+    }
+}
+
+DEFUN ("encode-coding-region", Fencode_coding_region, 3, 4, 0, /*
+Encode the text between START and END using CODING-SYSTEM.
+This will, for example, convert Japanese characters into stuff such as
+"^[$B!<!+^[(B" if you use the JIS encoding.  Return length of encoded
+text.  BUFFER defaults to the current buffer if unspecified.
+*/
+       (start, end, coding_system, buffer))
+{
+  Bufpos b, e;
+  struct buffer *buf = decode_buffer (buffer, 0);
+  Lisp_Object instream, lb_outstream, de_outstream, outstream;
+  Lstream *istr, *ostr;
+  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
+
+  get_buffer_range_char (buf, start, end, &b, &e, 0);
+
+  barf_if_buffer_read_only (buf, b, e);
+
+  coding_system = Fget_coding_system (coding_system);
+  instream  = make_lisp_buffer_input_stream  (buf, b, e, 0);
+  lb_outstream = make_lisp_buffer_output_stream (buf, b, 0);
+  de_outstream = make_decoding_output_stream (XLSTREAM (lb_outstream),
+                                             Fget_coding_system (Qbinary));
+  outstream = make_encoding_output_stream (XLSTREAM (de_outstream),
+                                          coding_system);
+  istr = XLSTREAM (instream);
+  ostr = XLSTREAM (outstream);
+  GCPRO4 (instream, outstream, de_outstream, lb_outstream);
+  /* The chain of streams looks like this:
+
+     [BUFFER] <----- send through
+                     ------> [ENCODE AS SPECIFIED]
+                            ------> [DECODE AS BINARY]
+                                    ------> [BUFFER]
+   */
+  while (1)
+    {
+      char tempbuf[1024]; /* some random amount */
+      Bufpos newpos, even_newer_pos;
+      Bufpos oldpos = lisp_buffer_stream_startpos (istr);
+      int size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+
+      if (!size_in_bytes)
+       break;
+      newpos = lisp_buffer_stream_startpos (istr);
+      Lstream_write (ostr, tempbuf, size_in_bytes);
+      even_newer_pos = lisp_buffer_stream_startpos (istr);
+      buffer_delete_range (buf, even_newer_pos - (newpos - oldpos),
+                          even_newer_pos, 0);
+    }
+
+  {
+    Charcount retlen =
+      lisp_buffer_stream_startpos (XLSTREAM (instream)) - b;
+    Lstream_close (istr);
+    Lstream_close (ostr);
+    UNGCPRO;
+    Lstream_delete (istr);
+    Lstream_delete (ostr);
+    Lstream_delete (XLSTREAM (de_outstream));
+    Lstream_delete (XLSTREAM (lb_outstream));
+    return make_int (retlen);
+  }
+}
+
+#ifdef MULE
+\f
+static void
+text_encode_generic (Lstream *encoding, CONST unsigned char *src,
+                    unsigned_char_dynarr *dst, unsigned int n)
+{
+  unsigned char c;
+  unsigned char char_boundary;
+  struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
+  unsigned int flags          = str->flags;
+  Emchar ch                   = str->ch;
+
+  char_boundary = str->iso2022.current_char_boundary;
+
+  while (n--)
+    {
+      c = *src++;
+
+      if (char_boundary == 0)
+       {
+         if (c >= 0xfc)
+           {
+             ch = c & 0x01;
+             char_boundary = 5;
+           }
+         else if (c >= 0xf8)
+           {
+             ch = c & 0x03;
+             char_boundary = 4;
+           }
+         else if (c >= 0xf0)
+           {
+             ch = c & 0x07;
+             char_boundary = 3;
+           }
+         else if (c >= 0xe0)
+           {
+             ch = c & 0x0f;
+             char_boundary = 2;
+           }
+         else if (c >= 0xc0)
+           {
+             ch = c & 0x1f;
+             char_boundary = 1;
+           }
+         else
+           (*str->encode_char) (str, c, dst, &flags);
+       }
+      else if (char_boundary == 1)
+       {
+         (*str->encode_char) (str, (ch << 6) | (c & 0x3f), dst, &flags);
+         ch =0;
+         char_boundary = 0;
+       }
+      else
+       {
+         ch = (ch << 6) | (c & 0x3f);
+         char_boundary--;
+       }
+    }
+
+  if ((char_boundary == 0) && (flags & CODING_STATE_END))
+    {
+      (*str->finish) (str, dst, &flags);
+    }
+
+  str->flags = flags;
+  str->ch    = ch;
+  str->iso2022.current_char_boundary = char_boundary;
+}
+
+\f
+/************************************************************************/
+/*                          Shift-JIS methods                           */
+/************************************************************************/
+
+/* Shift-JIS is a coding system encoding three character sets: ASCII, right
+   half of JISX0201-Kana, and JISX0208.  An ASCII character is encoded
+   as is.  A character of JISX0201-Kana (DIMENSION1_CHARS94 character set) is
+   encoded by "position-code + 0x80".  A character of JISX0208
+   (DIMENSION2_CHARS94 character set) is encoded in 2-byte but two
+   position-codes are divided and shifted so that it fit in the range
+   below.
+
+   --- CODE RANGE of Shift-JIS ---
+   (character set)     (range)
+   ASCII               0x00 .. 0x7F
+   JISX0201-Kana       0xA0 .. 0xDF
+   JISX0208 (1st byte) 0x80 .. 0x9F and 0xE0 .. 0xEF
+           (2nd byte)  0x40 .. 0x7E and 0x80 .. 0xFC
+   -------------------------------
+
+*/
+
+/* Is this the first byte of a Shift-JIS two-byte char? */
+
+#define BYTE_SJIS_TWO_BYTE_1_P(c) \
+  (((c) >= 0x81 && (c) <= 0x9F) || ((c) >= 0xE0 && (c) <= 0xEF))
+
+/* Is this the second byte of a Shift-JIS two-byte char? */
+
+#define BYTE_SJIS_TWO_BYTE_2_P(c) \
+  (((c) >= 0x40 && (c) <= 0x7E) || ((c) >= 0x80 && (c) <= 0xFC))
+
+#define BYTE_SJIS_KATAKANA_P(c)        \
+  ((c) >= 0xA1 && (c) <= 0xDF)
+
+static int
+detect_coding_sjis (struct detection_state *st, CONST unsigned char *src,
+                   unsigned int n)
+{
+  int c;
+
+  while (n--)
+    {
+      c = *src++;
+      if (c == ISO_CODE_ESC || c == ISO_CODE_SI || c == ISO_CODE_SO)
+       return 0;
+      if (st->shift_jis.in_second_byte)
+       {
+         st->shift_jis.in_second_byte = 0;
+         if (c < 0x40)
+           return 0;
+       }
+      else if ((c >= 0x80 && c < 0xA0) || c >= 0xE0)
+       st->shift_jis.in_second_byte = 1;
+    }
+  return CODING_CATEGORY_SHIFT_JIS_MASK;
+}
+
+/* Convert Shift-JIS data to internal format. */
+
+static void
+decode_coding_sjis (Lstream *decoding, CONST unsigned char *src,
+                   unsigned_char_dynarr *dst, unsigned int n)
+{
+  unsigned char c;
+  struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
+  unsigned int flags  = str->flags;
+  unsigned int ch     = str->ch;
+  eol_type_t eol_type = str->eol_type;
+
+  while (n--)
+    {
+      c = *src++;
+
+      if (ch)
+       {
+         /* Previous character was first byte of Shift-JIS Kanji char. */
+         if (BYTE_SJIS_TWO_BYTE_2_P (c))
+           {
+             unsigned char e1, e2;
+
+             DECODE_SJIS (ch, c, e1, e2);
+#ifdef UTF2000
+             DECODE_ADD_UCS_CHAR(MAKE_CHAR(Vcharset_japanese_jisx0208,
+                                           e1 & 0x7F,
+                                           e2 & 0x7F), dst);
+#else
+             Dynarr_add (dst, LEADING_BYTE_JAPANESE_JISX0208);
+             Dynarr_add (dst, e1);
+             Dynarr_add (dst, e2);
+#endif
+           }
+         else
+           {
+             DECODE_ADD_BINARY_CHAR (ch, dst);
+             DECODE_ADD_BINARY_CHAR (c, dst);
+           }
+         ch = 0;
+       }
+      else
+       {
+         DECODE_HANDLE_EOL_TYPE (eol_type, c, flags, dst);
+         if (BYTE_SJIS_TWO_BYTE_1_P (c))
+           ch = c;
+         else if (BYTE_SJIS_KATAKANA_P (c))
+           {
+#ifdef UTF2000
+             DECODE_ADD_UCS_CHAR(MAKE_CHAR(Vcharset_katakana_jisx0201,
+                                           c & 0x7F, 0), dst);
+#else
+             Dynarr_add (dst, LEADING_BYTE_KATAKANA_JISX0201);
+             Dynarr_add (dst, c);
+#endif
+           }
+#ifdef UTF2000
+         else if (c > 32)
+           DECODE_ADD_UCS_CHAR(MAKE_CHAR(Vcharset_latin_jisx0201,
+                                         c, 0), dst);
+#endif
+         else
+           DECODE_ADD_BINARY_CHAR (c, dst);
+       }
+    label_continue_loop:;
+    }
+
+  DECODE_HANDLE_END_OF_CONVERSION (flags, ch, dst);
+
+  str->flags = flags;
+  str->ch    = ch;
+}
+
+/* Convert internal character representation to Shift_JIS. */
+
+void
+char_encode_shift_jis (struct encoding_stream *str, Emchar ch,
+                      unsigned_char_dynarr *dst, unsigned int *flags)
+{
+  eol_type_t eol_type = CODING_SYSTEM_EOL_TYPE (str->codesys);
+
+  if (ch == '\n')
+    {
+      if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+       Dynarr_add (dst, '\r');
+      if (eol_type != EOL_CR)
+       Dynarr_add (dst, ch);
+    }
+  else
+    {
+      Lisp_Object charset;
+      unsigned int c1, c2, s1, s2;
+#ifdef UTF2000
+      Lisp_Object value = charset_code_point (Vcharset_latin_jisx0201, ch);
+      Lisp_Object ret = Fcar (value);
+
+      if (INTP (ret))
+       {
+         charset = Vcharset_latin_jisx0201;
+         c1 = XINT (ret);
+         c2 = 0;
+       }
+      else
+#endif
+       BREAKUP_CHAR (ch, charset, c1, c2);
+         
+      if (EQ(charset, Vcharset_katakana_jisx0201))
+       {
+         Dynarr_add (dst, c1 | 0x80);
+       }
+      else if (c2 == 0)
+       {
+         Dynarr_add (dst, c1);
+       }
+      else if (EQ(charset, Vcharset_japanese_jisx0208))
+       {
+         ENCODE_SJIS (c1 | 0x80, c2 | 0x80, s1, s2);
+         Dynarr_add (dst, s1);
+         Dynarr_add (dst, s2);
+       }
+      else
+       Dynarr_add (dst, '?');
+    }
+}
+
+void
+char_finish_shift_jis (struct encoding_stream *str, unsigned_char_dynarr *dst,
+                      unsigned int *flags)
+{
+}
+
+DEFUN ("decode-shift-jis-char", Fdecode_shift_jis_char, 1, 1, 0, /*
+Decode a JISX0208 character of Shift-JIS coding-system.
+CODE is the character code in Shift-JIS as a cons of type bytes.
+Return the corresponding character.
+*/
+       (code))
+{
+  unsigned char c1, c2, s1, s2;
+
+  CHECK_CONS (code);
+  CHECK_INT (XCAR (code));
+  CHECK_INT (XCDR (code));
+  s1 = XINT (XCAR (code));
+  s2 = XINT (XCDR (code));
+  if (BYTE_SJIS_TWO_BYTE_1_P (s1) &&
+      BYTE_SJIS_TWO_BYTE_2_P (s2))
+    {
+      DECODE_SJIS (s1, s2, c1, c2);
+      return make_char (MAKE_CHAR (Vcharset_japanese_jisx0208,
+                                  c1 & 0x7F, c2 & 0x7F));
+    }
+  else
+    return Qnil;
+}
+
+DEFUN ("encode-shift-jis-char", Fencode_shift_jis_char, 1, 1, 0, /*
+Encode a JISX0208 character CHAR to SHIFT-JIS coding-system.
+Return the corresponding character code in SHIFT-JIS as a cons of two bytes.
+*/
+       (ch))
+{
+  Lisp_Object charset;
+  int c1, c2, s1, s2;
+
+  CHECK_CHAR_COERCE_INT (ch);
+  BREAKUP_CHAR (XCHAR (ch), charset, c1, c2);
+  if (EQ (charset, Vcharset_japanese_jisx0208))
+    {
+      ENCODE_SJIS (c1 | 0x80, c2 | 0x80, s1, s2);
+      return Fcons (make_int (s1), make_int (s2));
+    }
+  else
+    return Qnil;
+}
+
+\f
+/************************************************************************/
+/*                            Big5 methods                              */
+/************************************************************************/
+
+/* BIG5 is a coding system encoding two character sets: ASCII and
+   Big5.  An ASCII character is encoded as is.  Big5 is a two-byte
+   character set and is encoded in two-byte.
+
+   --- CODE RANGE of BIG5 ---
+   (character set)     (range)
+   ASCII               0x00 .. 0x7F
+   Big5 (1st byte)     0xA1 .. 0xFE
+       (2nd byte)      0x40 .. 0x7E and 0xA1 .. 0xFE
+   --------------------------
+
+   Since the number of characters in Big5 is larger than maximum
+   characters in Emacs' charset (96x96), it can't be handled as one
+   charset.  So, in Emacs, Big5 is divided into two: `charset-big5-1'
+   and `charset-big5-2'.  Both <type>s are DIMENSION2_CHARS94.  The former
+   contains frequently used characters and the latter contains less
+   frequently used characters.  */
+
+#define BYTE_BIG5_TWO_BYTE_1_P(c) \
+  ((c) >= 0xA1 && (c) <= 0xFE)
+
+/* Is this the second byte of a Shift-JIS two-byte char? */
+
+#define BYTE_BIG5_TWO_BYTE_2_P(c) \
+  (((c) >= 0x40 && (c) <= 0x7E) || ((c) >= 0xA1 && (c) <= 0xFE))
+
+/* Number of Big5 characters which have the same code in 1st byte.  */
+
+#define BIG5_SAME_ROW (0xFF - 0xA1 + 0x7F - 0x40)
+
+/* Code conversion macros.  These are macros because they are used in
+   inner loops during code conversion.
+
+   Note that temporary variables in macros introduce the classic
+   dynamic-scoping problems with variable names.  We use capital-
+   lettered variables in the assumption that XEmacs does not use
+   capital letters in variables except in a very formalized way
+   (e.g. Qstring). */
+
+/* Convert Big5 code (b1, b2) into its internal string representation
+   (lb, c1, c2). */
+
+/* There is a much simpler way to split the Big5 charset into two.
+   For the moment I'm going to leave the algorithm as-is because it
+   claims to separate out the most-used characters into a single
+   charset, which perhaps will lead to optimizations in various
+   places.
+
+   The way the algorithm works is something like this:
+
+   Big5 can be viewed as a 94x157 charset, where the row is
+   encoded into the bytes 0xA1 .. 0xFE and the column is encoded
+   into the bytes 0x40 .. 0x7E and 0xA1 .. 0xFE.  As for frequency,
+   the split between low and high column numbers is apparently
+   meaningless; ascending rows produce less and less frequent chars.
+   Therefore, we assign the lower half of rows (0xA1 .. 0xC8) to
+   the first charset, and the upper half (0xC9 .. 0xFE) to the
+   second.  To do the conversion, we convert the character into
+   a single number where 0 .. 156 is the first row, 157 .. 313
+   is the second, etc.  That way, the characters are ordered by
+   decreasing frequency.  Then we just chop the space in two
+   and coerce the result into a 94x94 space.
+   */
+
+#define DECODE_BIG5(b1, b2, lb, c1, c2) do                             \
+{                                                                      \
+  int B1 = b1, B2 = b2;                                                        \
+  unsigned int I                                                       \
+    = (B1 - 0xA1) * BIG5_SAME_ROW + B2 - (B2 < 0x7F ? 0x40 : 0x62);    \
+                                                                       \
+  if (B1 < 0xC9)                                                       \
+    {                                                                  \
+      lb = LEADING_BYTE_CHINESE_BIG5_1;                                        \
+    }                                                                  \
+  else                                                                 \
+    {                                                                  \
+      lb = LEADING_BYTE_CHINESE_BIG5_2;                                        \
+      I -= (BIG5_SAME_ROW) * (0xC9 - 0xA1);                            \
+    }                                                                  \
+  c1 = I / (0xFF - 0xA1) + 0xA1;                                       \
+  c2 = I % (0xFF - 0xA1) + 0xA1;                                       \
+} while (0)
+
+/* Convert the internal string representation of a Big5 character
+   (lb, c1, c2) into Big5 code (b1, b2). */
+
+#define ENCODE_BIG5(lb, c1, c2, b1, b2) do                             \
+{                                                                      \
+  unsigned int I = ((c1) - 0xA1) * (0xFF - 0xA1) + ((c2) - 0xA1);      \
+                                                                       \
+  if (lb == LEADING_BYTE_CHINESE_BIG5_2)                               \
+    {                                                                  \
+      I += BIG5_SAME_ROW * (0xC9 - 0xA1);                              \
+    }                                                                  \
+  b1 = I / BIG5_SAME_ROW + 0xA1;                                       \
+  b2 = I % BIG5_SAME_ROW;                                              \
+  b2 += b2 < 0x3F ? 0x40 : 0x62;                                       \
+} while (0)
+
+static int
+detect_coding_big5 (struct detection_state *st, CONST unsigned char *src,
+                   unsigned int n)
+{
+  int c;
+
+  while (n--)
+    {
+      c = *src++;
+      if (c == ISO_CODE_ESC || c == ISO_CODE_SI || c == ISO_CODE_SO ||
+         (c >= 0x80 && c <= 0xA0))
+       return 0;
+      if (st->big5.in_second_byte)
+       {
+         st->big5.in_second_byte = 0;
+         if (c < 0x40 || (c >= 0x80 && c <= 0xA0))
+           return 0;
+       }
+      else if (c >= 0xA1)
+       st->big5.in_second_byte = 1;
+    }
+  return CODING_CATEGORY_BIG5_MASK;
+}
+
+/* Convert Big5 data to internal format. */
+
+static void
+decode_coding_big5 (Lstream *decoding, CONST unsigned char *src,
+                   unsigned_char_dynarr *dst, unsigned int n)
+{
+  unsigned char c;
+  struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
+  unsigned int flags  = str->flags;
+  unsigned int ch     = str->ch;
+  eol_type_t eol_type = str->eol_type;
+
+  while (n--)
+    {
+      c = *src++;
+      if (ch)
+       {
+         /* Previous character was first byte of Big5 char. */
+         if (BYTE_BIG5_TWO_BYTE_2_P (c))
+           {
+             unsigned char b1, b2, b3;
+             DECODE_BIG5 (ch, c, b1, b2, b3);
+             Dynarr_add (dst, b1);
+             Dynarr_add (dst, b2);
+             Dynarr_add (dst, b3);
+           }
+         else
+           {
+             DECODE_ADD_BINARY_CHAR (ch, dst);
+             DECODE_ADD_BINARY_CHAR (c, dst);
+           }
+         ch = 0;
+       }
+      else
+       {
+         DECODE_HANDLE_EOL_TYPE (eol_type, c, flags, dst);
+         if (BYTE_BIG5_TWO_BYTE_1_P (c))
+           ch = c;
+         else
+           DECODE_ADD_BINARY_CHAR (c, dst);
+       }
+    label_continue_loop:;
+    }
+
+  DECODE_HANDLE_END_OF_CONVERSION (flags, ch, dst);
+
+  str->flags = flags;
+  str->ch    = ch;
+}
+
+/* Convert internally-formatted data to Big5. */
+
+static void
+encode_coding_big5 (Lstream *encoding, CONST unsigned char *src,
+                   unsigned_char_dynarr *dst, unsigned int n)
+{
+#ifndef UTF2000
+  unsigned char c;
+  struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
+  unsigned int flags  = str->flags;
+  unsigned int ch     = str->ch;
+  eol_type_t eol_type = CODING_SYSTEM_EOL_TYPE (str->codesys);
+
+  while (n--)
+    {
+      c = *src++;
+      if (c == '\n')
+       {
+         if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+           Dynarr_add (dst, '\r');
+         if (eol_type != EOL_CR)
+           Dynarr_add (dst, '\n');
+       }
+      else if (BYTE_ASCII_P (c))
+       {
+         /* ASCII. */
+         Dynarr_add (dst, c);
+       }
+      else if (BUFBYTE_LEADING_BYTE_P (c))
+       {
+         if (c == LEADING_BYTE_CHINESE_BIG5_1 ||
+             c == LEADING_BYTE_CHINESE_BIG5_2)
+           {
+             /* A recognized leading byte. */
+             ch = c;
+             continue; /* not done with this character. */
+           }
+         /* otherwise just ignore this character. */
+       }
+      else if (ch == LEADING_BYTE_CHINESE_BIG5_1 ||
+              ch == LEADING_BYTE_CHINESE_BIG5_2)
+       {
+         /* Previous char was a recognized leading byte. */
+         ch = (ch << 8) | c;
+         continue; /* not done with this character. */
+       }
+      else if (ch)
+       {
+         /* Encountering second byte of a Big5 character. */
+         unsigned char b1, b2;
+
+         ENCODE_BIG5 (ch >> 8, ch & 0xFF, c, b1, b2);
+         Dynarr_add (dst, b1);
+         Dynarr_add (dst, b2);
+       }
+
+      ch = 0;
+    }
+
+  str->flags = flags;
+  str->ch    = ch;
+#endif
+}
+
+
+DEFUN ("decode-big5-char", Fdecode_big5_char, 1, 1, 0, /*
+Decode a Big5 character CODE of BIG5 coding-system.
+CODE is the character code in BIG5, a cons of two integers.
+Return the corresponding character.
+*/
+       (code))
+{
+  unsigned char c1, c2, b1, b2;
+
+  CHECK_CONS (code);
+  CHECK_INT (XCAR (code));
+  CHECK_INT (XCDR (code));
+  b1 = XINT (XCAR (code));
+  b2 = XINT (XCDR (code));
+  if (BYTE_BIG5_TWO_BYTE_1_P (b1) &&
+      BYTE_BIG5_TWO_BYTE_2_P (b2))
+    {
+      Charset_ID leading_byte;
+      Lisp_Object charset;
+      DECODE_BIG5 (b1, b2, leading_byte, c1, c2);
+      charset = CHARSET_BY_LEADING_BYTE (leading_byte);
+      return make_char (MAKE_CHAR (charset, c1 & 0x7F, c2 & 0x7F));
+    }
+  else
+    return Qnil;
+}
+
+DEFUN ("encode-big5-char", Fencode_big5_char, 1, 1, 0, /*
+Encode the Big5 character CH to BIG5 coding-system.
+Return the corresponding character code in Big5.
+*/
+       (ch))
+{
+  Lisp_Object charset;
+  int c1, c2, b1, b2;
+
+  CHECK_CHAR_COERCE_INT (ch);
+  BREAKUP_CHAR (XCHAR (ch), charset, c1, c2);
+  if (EQ (charset, Vcharset_chinese_big5_1) ||
+      EQ (charset, Vcharset_chinese_big5_2))
+    {
+      ENCODE_BIG5 (XCHARSET_LEADING_BYTE (charset), c1 | 0x80, c2 | 0x80,
+                  b1, b2);
+      return Fcons (make_int (b1), make_int (b2));
+    }
+  else
+    return Qnil;
+}
+
+\f
+/************************************************************************/
+/*                           UCS-4 methods                              */
+/************************************************************************/
+
+static int
+detect_coding_ucs4 (struct detection_state *st, CONST unsigned char *src,
+                   unsigned int n)
+{
+  while (n--)
+    {
+      int c = *src++;
+      switch (st->ucs4.in_byte)
+       {
+       case 0:
+         if (c >= 128)
+           return 0;
+         else
+           st->ucs4.in_byte++;
+         break;
+       case 3:
+         st->ucs4.in_byte = 0;
+         break;
+       default:
+         st->ucs4.in_byte++;
+       }
+    }
+  return CODING_CATEGORY_UCS4_MASK;
+}
+
+static void
+decode_coding_ucs4 (Lstream *decoding, CONST unsigned char *src,
+                   unsigned_char_dynarr *dst, unsigned int n)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
+  unsigned int flags = str->flags;
+  unsigned int ch    = str->ch;
+  unsigned char counter = str->counter;
+
+  while (n--)
+    {
+      unsigned char c = *src++;
+      switch (counter)
+       {
+       case 0:
+         ch = c;
+         counter = 3;
+         break;
+       case 1:
+         DECODE_ADD_UCS_CHAR ((ch << 8) | c, dst);
+         ch = 0;
+         counter = 0;
+         break;
+       default:
+         ch = ( ch << 8 ) | c;
+         counter--;
+       }
+    }
+  if (counter & CODING_STATE_END)
+    DECODE_OUTPUT_PARTIAL_CHAR (ch);
+
+  str->flags = flags;
+  str->ch    = ch;
+  str->counter = counter;
+}
+
+void
+char_encode_ucs4 (struct encoding_stream *str, Emchar ch,
+                 unsigned_char_dynarr *dst, unsigned int *flags)
+{
+  Dynarr_add (dst, ch >> 24);
+  Dynarr_add (dst, ch >> 16);
+  Dynarr_add (dst, ch >>  8);
+  Dynarr_add (dst, ch      );
+}
+
+void
+char_finish_ucs4 (struct encoding_stream *str, unsigned_char_dynarr *dst,
+                 unsigned int *flags)
+{
+}
+
+\f
+/************************************************************************/
+/*                           UTF-8 methods                              */
+/************************************************************************/
+
+static int
+detect_coding_utf8 (struct detection_state *st, CONST unsigned char *src,
+                   unsigned int n)
+{
+  while (n--)
+    {
+      unsigned char c = *src++;
+      switch (st->utf8.in_byte)
+       {
+       case 0:
+         if (c == ISO_CODE_ESC || c == ISO_CODE_SI || c == ISO_CODE_SO)
+           return 0;
+         else if (c >= 0xfc)
+           st->utf8.in_byte = 5;
+         else if (c >= 0xf8)
+           st->utf8.in_byte = 4;
+         else if (c >= 0xf0)
+           st->utf8.in_byte = 3;
+         else if (c >= 0xe0)
+           st->utf8.in_byte = 2;
+         else if (c >= 0xc0)
+           st->utf8.in_byte = 1;
+         else if (c >= 0x80)
+           return 0;
+         break;
+       default:
+         if ((c & 0xc0) != 0x80)
+           return 0;
+         else
+           st->utf8.in_byte--;
+       }
+    }
+  return CODING_CATEGORY_UTF8_MASK;
+}
+
+static void
+decode_coding_utf8 (Lstream *decoding, CONST unsigned char *src,
+                   unsigned_char_dynarr *dst, unsigned int n)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
+  unsigned int flags  = str->flags;
+  unsigned int ch     = str->ch;
+  eol_type_t eol_type = str->eol_type;
+  unsigned char counter = str->counter;
+
+  while (n--)
+    {
+      unsigned char c = *src++;
+      switch (counter)
+       {
+       case 0:
+         if ( c >= 0xfc )
+           {
+             ch = c & 0x01;
+             counter = 5;
+           }
+         else if ( c >= 0xf8 )
+           {
+             ch = c & 0x03;
+             counter = 4;
+           }
+         else if ( c >= 0xf0 )
+           {
+             ch = c & 0x07;
+             counter = 3;
+           }
+         else if ( c >= 0xe0 )
+           {
+             ch = c & 0x0f;
+             counter = 2;
+           }
+         else if ( c >= 0xc0 )
+           {
+             ch = c & 0x1f;
+             counter = 1;
+           }
+         else
+           {
+             DECODE_HANDLE_EOL_TYPE (eol_type, c, flags, dst);
+             DECODE_ADD_UCS_CHAR (c, dst);
+           }
+         break;
+       case 1:
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         DECODE_ADD_UCS_CHAR (ch, dst);
+         ch = 0;
+         counter = 0;
+         break;
+       default:
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         counter--;
+       }
+    label_continue_loop:;
+    }
+
+  if (flags & CODING_STATE_END)
+    DECODE_OUTPUT_PARTIAL_CHAR (ch);
+
+  str->flags = flags;
+  str->ch    = ch;
+  str->counter = counter;
+}
+
+void
+char_encode_utf8 (struct encoding_stream *str, Emchar ch,
+                 unsigned_char_dynarr *dst, unsigned int *flags)
+{
+  eol_type_t eol_type = CODING_SYSTEM_EOL_TYPE (str->codesys);
+
+  if (ch == '\n')
+    {
+      if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+       Dynarr_add (dst, '\r');
+      if (eol_type != EOL_CR)
+       Dynarr_add (dst, ch);
+    }
+  else if (ch <= 0x7f)
+    {
+      Dynarr_add (dst, ch);
+    }
+  else if (ch <= 0x7ff)
+    {
+      Dynarr_add (dst, (ch >> 6) | 0xc0);
+      Dynarr_add (dst, (ch & 0x3f) | 0x80);
+    }
+  else if (ch <= 0xffff)
+    {
+      Dynarr_add (dst,  (ch >> 12) | 0xe0);
+      Dynarr_add (dst, ((ch >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (ch        & 0x3f) | 0x80);
+    }
+  else if (ch <= 0x1fffff)
+    {
+      Dynarr_add (dst,  (ch >> 18) | 0xf0);
+      Dynarr_add (dst, ((ch >> 12) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((ch >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (ch        & 0x3f) | 0x80);
+    }
+  else if (ch <= 0x3ffffff)
+    {
+      Dynarr_add (dst,  (ch >> 24) | 0xf8);
+      Dynarr_add (dst, ((ch >> 18) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((ch >> 12) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((ch >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (ch        & 0x3f) | 0x80);
+    }
+  else
+    {
+      Dynarr_add (dst,  (ch >> 30) | 0xfc);
+      Dynarr_add (dst, ((ch >> 24) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((ch >> 18) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((ch >> 12) & 0x3f) | 0x80);
+      Dynarr_add (dst, ((ch >>  6) & 0x3f) | 0x80);
+      Dynarr_add (dst,  (ch        & 0x3f) | 0x80);
+    }
+}
+
+void
+char_finish_utf8 (struct encoding_stream *str, unsigned_char_dynarr *dst,
+                 unsigned int *flags)
+{
+}
+
+\f
+/************************************************************************/
+/*                           ISO2022 methods                            */
+/************************************************************************/
+
+/* The following note describes the coding system ISO2022 briefly.
+   Since the intention of this note is to help understand the
+   functions in this file, some parts are NOT ACCURATE or OVERLY
+   SIMPLIFIED.  For thorough understanding, please refer to the
+   original document of ISO2022.
+
+   ISO2022 provides many mechanisms to encode several character sets
+   in 7-bit and 8-bit environments.  For 7-bit environments, all text
+   is encoded using bytes less than 128.  This may make the encoded
+   text a little bit longer, but the text passes more easily through
+   several gateways, some of which strip off MSB (Most Signigant Bit).
+
+   There are two kinds of character sets: control character set and
+   graphic character set.  The former contains control characters such
+   as `newline' and `escape' to provide control functions (control
+   functions are also provided by escape sequences).  The latter
+   contains graphic characters such as 'A' and '-'.  Emacs recognizes
+   two control character sets and many graphic character sets.
+
+   Graphic character sets are classified into one of the following
+   four classes, according to the number of bytes (DIMENSION) and
+   number of characters in one dimension (CHARS) of the set:
+   - DIMENSION1_CHARS94
+   - DIMENSION1_CHARS96
+   - DIMENSION2_CHARS94
+   - DIMENSION2_CHARS96
+
+   In addition, each character set is assigned an identification tag,
+   unique for each set, called "final character" (denoted as <F>
+   hereafter).  The <F> of each character set is decided by ECMA(*)
+   when it is registered in ISO.  The code range of <F> is 0x30..0x7F
+   (0x30..0x3F are for private use only).
+
+   Note (*): ECMA = European Computer Manufacturers Association
+
+   Here are examples of graphic character set [NAME(<F>)]:
+       o DIMENSION1_CHARS94 -- ASCII('B'), right-half-of-JISX0201('I'), ...
+       o DIMENSION1_CHARS96 -- right-half-of-ISO8859-1('A'), ...
+       o DIMENSION2_CHARS94 -- GB2312('A'), JISX0208('B'), ...
+       o DIMENSION2_CHARS96 -- none for the moment
+
+   A code area (1 byte = 8 bits) is divided into 4 areas, C0, GL, C1, and GR.
+       C0 [0x00..0x1F] -- control character plane 0
+       GL [0x20..0x7F] -- graphic character plane 0
+       C1 [0x80..0x9F] -- control character plane 1
+       GR [0xA0..0xFF] -- graphic character plane 1
+
+   A control character set is directly designated and invoked to C0 or
+   C1 by an escape sequence.  The most common case is that:
+   - ISO646's  control character set is designated/invoked to C0, and
+   - ISO6429's control character set is designated/invoked to C1,
+   and usually these designations/invocations are omitted in encoded
+   text.  In a 7-bit environment, only C0 can be used, and a control
+   character for C1 is encoded by an appropriate escape sequence to
+   fit into the environment.  All control characters for C1 are
+   defined to have corresponding escape sequences.
+
+   A graphic character set is at first designated to one of four
+   graphic registers (G0 through G3), then these graphic registers are
+   invoked to GL or GR.  These designations and invocations can be
+   done independently.  The most common case is that G0 is invoked to
+   GL, G1 is invoked to GR, and ASCII is designated to G0.  Usually
+   these invocations and designations are omitted in encoded text.
+   In a 7-bit environment, only GL can be used.
+
+   When a graphic character set of CHARS94 is invoked to GL, codes
+   0x20 and 0x7F of the GL area work as control characters SPACE and
+   DEL respectively, and codes 0xA0 and 0xFF of the GR area should not
+   be used.
+
+   There are two ways of invocation: locking-shift and single-shift.
+   With locking-shift, the invocation lasts until the next different
+   invocation, whereas with single-shift, the invocation affects the
+   following character only and doesn't affect the locking-shift
+   state.  Invocations are done by the following control characters or
+   escape sequences:
+
+   ----------------------------------------------------------------------
+   abbrev  function                 cntrl escape seq   description
+   ----------------------------------------------------------------------
+   SI/LS0  (shift-in)               0x0F  none         invoke G0 into GL
+   SO/LS1  (shift-out)              0x0E  none         invoke G1 into GL
+   LS2     (locking-shift-2)        none  ESC 'n'      invoke G2 into GL
+   LS3     (locking-shift-3)        none  ESC 'o'      invoke G3 into GL
+   LS1R    (locking-shift-1 right)   none  ESC '~'      invoke G1 into GR (*)
+   LS2R    (locking-shift-2 right)   none  ESC '}'      invoke G2 into GR (*)
+   LS3R    (locking-shift 3 right)   none  ESC '|'      invoke G3 into GR (*)
+   SS2     (single-shift-2)         0x8E  ESC 'N'      invoke G2 for one char
+   SS3     (single-shift-3)         0x8F  ESC 'O'      invoke G3 for one char
+   ----------------------------------------------------------------------
+   (*) These are not used by any known coding system.
+
+   Control characters for these functions are defined by macros
+   ISO_CODE_XXX in `coding.h'.
+
+   Designations are done by the following escape sequences:
+   ----------------------------------------------------------------------
+   escape sequence     description
+   ----------------------------------------------------------------------
+   ESC '(' <F>         designate DIMENSION1_CHARS94<F> to G0
+   ESC ')' <F>         designate DIMENSION1_CHARS94<F> to G1
+   ESC '*' <F>         designate DIMENSION1_CHARS94<F> to G2
+   ESC '+' <F>         designate DIMENSION1_CHARS94<F> to G3
+   ESC ',' <F>         designate DIMENSION1_CHARS96<F> to G0 (*)
+   ESC '-' <F>         designate DIMENSION1_CHARS96<F> to G1
+   ESC '.' <F>         designate DIMENSION1_CHARS96<F> to G2
+   ESC '/' <F>         designate DIMENSION1_CHARS96<F> to G3
+   ESC '$' '(' <F>     designate DIMENSION2_CHARS94<F> to G0 (**)
+   ESC '$' ')' <F>     designate DIMENSION2_CHARS94<F> to G1
+   ESC '$' '*' <F>     designate DIMENSION2_CHARS94<F> to G2
+   ESC '$' '+' <F>     designate DIMENSION2_CHARS94<F> to G3
+   ESC '$' ',' <F>     designate DIMENSION2_CHARS96<F> to G0 (*)
+   ESC '$' '-' <F>     designate DIMENSION2_CHARS96<F> to G1
+   ESC '$' '.' <F>     designate DIMENSION2_CHARS96<F> to G2
+   ESC '$' '/' <F>     designate DIMENSION2_CHARS96<F> to G3
+   ----------------------------------------------------------------------
+
+   In this list, "DIMENSION1_CHARS94<F>" means a graphic character set
+   of dimension 1, chars 94, and final character <F>, etc...
+
+   Note (*): Although these designations are not allowed in ISO2022,
+   Emacs accepts them on decoding, and produces them on encoding
+   CHARS96 character sets in a coding system which is characterized as
+   7-bit environment, non-locking-shift, and non-single-shift.
+
+   Note (**): If <F> is '@', 'A', or 'B', the intermediate character
+   '(' can be omitted.  We refer to this as "short-form" hereafter.
+
+   Now you may notice that there are a lot of ways for encoding the
+   same multilingual text in ISO2022.  Actually, there exist many
+   coding systems such as Compound Text (used in X11's inter client
+   communication, ISO-2022-JP (used in Japanese internet), ISO-2022-KR
+   (used in Korean internet), EUC (Extended UNIX Code, used in Asian
+   localized platforms), and all of these are variants of ISO2022.
+
+   In addition to the above, Emacs handles two more kinds of escape
+   sequences: ISO6429's direction specification and Emacs' private
+   sequence for specifying character composition.
+
+   ISO6429's direction specification takes the following form:
+       o CSI ']'      -- end of the current direction
+       o CSI '0' ']'  -- end of the current direction
+       o CSI '1' ']'  -- start of left-to-right text
+       o CSI '2' ']'  -- start of right-to-left text
+   The control character CSI (0x9B: control sequence introducer) is
+   abbreviated to the escape sequence ESC '[' in a 7-bit environment.
+
+   Character composition specification takes the following form:
+       o ESC '0' -- start character composition
+       o ESC '1' -- end character composition
+   Since these are not standard escape sequences of any ISO standard,
+   their use with these meanings is restricted to Emacs only.  */
+
+static void
+reset_iso2022 (Lisp_Object coding_system, struct iso2022_decoder *iso)
+{
+  int i;
+
+  for (i = 0; i < 4; i++)
+    {
+      if (!NILP (coding_system))
+       iso->charset[i] =
+         XCODING_SYSTEM_ISO2022_INITIAL_CHARSET (coding_system, i);
+      else
+       iso->charset[i] = Qt;
+      iso->invalid_designated[i] = 0;
+    }
+  iso->esc = ISO_ESC_NOTHING;
+  iso->esc_bytes_index = 0;
+  iso->register_left = 0;
+  iso->register_right = 1;
+  iso->switched_dir_and_no_valid_charset_yet = 0;
+  iso->invalid_switch_dir = 0;
+  iso->output_direction_sequence = 0;
+  iso->output_literally = 0;
+#ifdef ENABLE_COMPOSITE_CHARS
+  if (iso->composite_chars)
+    Dynarr_reset (iso->composite_chars);
+#endif
+}
+
+static int
+fit_to_be_escape_quoted (unsigned char c)
+{
+  switch (c)
+    {
+    case ISO_CODE_ESC:
+    case ISO_CODE_CSI:
+    case ISO_CODE_SS2:
+    case ISO_CODE_SS3:
+    case ISO_CODE_SO:
+    case ISO_CODE_SI:
+      return 1;
+
+    default:
+      return 0;
+    }
+}
+
+/* Parse one byte of an ISO2022 escape sequence.
+   If the result is an invalid escape sequence, return 0 and
+   do not change anything in STR.  Otherwise, if the result is
+   an incomplete escape sequence, update ISO2022.ESC and
+   ISO2022.ESC_BYTES and return -1.  Otherwise, update
+   all the state variables (but not ISO2022.ESC_BYTES) and
+   return 1.
+
+   If CHECK_INVALID_CHARSETS is non-zero, check for designation
+   or invocation of an invalid character set and treat that as
+   an unrecognized escape sequence. */
+
+static int
+parse_iso2022_esc (Lisp_Object codesys, struct iso2022_decoder *iso,
+                  unsigned char c, unsigned int *flags,
+                  int check_invalid_charsets)
+{
+  /* (1) If we're at the end of a designation sequence, CS is the
+     charset being designated and REG is the register to designate
+     it to.
+
+     (2) If we're at the end of a locking-shift sequence, REG is
+     the register to invoke and HALF (0 == left, 1 == right) is
+     the half to invoke it into.
+
+     (3) If we're at the end of a single-shift sequence, REG is
+     the register to invoke. */
+  Lisp_Object cs = Qnil;
+  int reg, half;
+
+  /* NOTE: This code does goto's all over the fucking place.
+     The reason for this is that we're basically implementing
+     a state machine here, and hierarchical languages like C
+     don't really provide a clean way of doing this. */
+
+  if (! (*flags & CODING_STATE_ESCAPE))
+    /* At beginning of escape sequence; we need to reset our
+       escape-state variables. */
+    iso->esc = ISO_ESC_NOTHING;
+
+  iso->output_literally = 0;
+  iso->output_direction_sequence = 0;
+
+  switch (iso->esc)
+    {
+    case ISO_ESC_NOTHING:
+      iso->esc_bytes_index = 0;
+      switch (c)
+       {
+       case ISO_CODE_ESC:      /* Start escape sequence */
+         *flags |= CODING_STATE_ESCAPE;
+         iso->esc = ISO_ESC;
+         goto not_done;
+
+       case ISO_CODE_CSI:      /* ISO6429 (specifying directionality) */
+         *flags |= CODING_STATE_ESCAPE;
+         iso->esc = ISO_ESC_5_11;
+         goto not_done;
+
+       case ISO_CODE_SO:       /* locking shift 1 */
+         reg = 1; half = 0;
+         goto locking_shift;
+       case ISO_CODE_SI:       /* locking shift 0 */
+         reg = 0; half = 0;
+         goto locking_shift;
+
+       case ISO_CODE_SS2:      /* single shift */
+         reg = 2;
+         goto single_shift;
+       case ISO_CODE_SS3:      /* single shift */
+         reg = 3;
+         goto single_shift;
+
+       default:                        /* Other control characters */
+         return 0;
+       }
+
+    case ISO_ESC:
+      switch (c)
+       {
+         /**** single shift ****/
+
+       case 'N':       /* single shift 2 */
+         reg = 2;
+         goto single_shift;
+       case 'O':       /* single shift 3 */
+         reg = 3;
+         goto single_shift;
+
+         /**** locking shift ****/
+
+       case '~':       /* locking shift 1 right */
+         reg = 1; half = 1;
+         goto locking_shift;
+       case 'n':       /* locking shift 2 */
+         reg = 2; half = 0;
+         goto locking_shift;
+       case '}':       /* locking shift 2 right */
+         reg = 2; half = 1;
+         goto locking_shift;
+       case 'o':       /* locking shift 3 */
+         reg = 3; half = 0;
+         goto locking_shift;
+       case '|':       /* locking shift 3 right */
+         reg = 3; half = 1;
+         goto locking_shift;
+
+#ifdef ENABLE_COMPOSITE_CHARS
+         /**** composite ****/
+
+       case '0':
+         iso->esc = ISO_ESC_START_COMPOSITE;
+         *flags = (*flags & CODING_STATE_ISO2022_LOCK) |
+           CODING_STATE_COMPOSITE;
+         return 1;
+
+       case '1':
+         iso->esc = ISO_ESC_END_COMPOSITE;
+         *flags = (*flags & CODING_STATE_ISO2022_LOCK) &
+           ~CODING_STATE_COMPOSITE;
+         return 1;
+#endif /* ENABLE_COMPOSITE_CHARS */
+
+         /**** directionality ****/
+
+       case '[':
+         iso->esc = ISO_ESC_5_11;
+         goto not_done;
+
+         /**** designation ****/
+
+       case '$':       /* multibyte charset prefix */
+         iso->esc = ISO_ESC_2_4;
+         goto not_done;
+
+       default:
+         if (0x28 <= c && c <= 0x2F)
+           {
+             iso->esc = (enum iso_esc_flag) (c - 0x28 + ISO_ESC_2_8);
+             goto not_done;
+           }
+
+         /* This function is called with CODESYS equal to nil when
+            doing coding-system detection. */
+         if (!NILP (codesys)
+             && XCODING_SYSTEM_ISO2022_ESCAPE_QUOTED (codesys)
+             && fit_to_be_escape_quoted (c))
+           {
+             iso->esc = ISO_ESC_LITERAL;
+             *flags &= CODING_STATE_ISO2022_LOCK;
+             return 1;
+           }
+
+         /* bzzzt! */
+         return 0;
+       }
+
+
+
+      /**** directionality ****/
+
+    case ISO_ESC_5_11:         /* ISO6429 direction control */
+      if (c == ']')
+       {
+         *flags &= (CODING_STATE_ISO2022_LOCK & ~CODING_STATE_R2L);
+         goto directionality;
+       }
+      if      (c == '0') iso->esc = ISO_ESC_5_11_0;
+      else if (c == '1') iso->esc = ISO_ESC_5_11_1;
+      else if (c == '2') iso->esc = ISO_ESC_5_11_2;
+      else               return 0;
+      goto not_done;
+
+    case ISO_ESC_5_11_0:
+      if (c == ']')
+       {
+         *flags &= (CODING_STATE_ISO2022_LOCK & ~CODING_STATE_R2L);
+         goto directionality;
+       }
+      return 0;
+
+    case ISO_ESC_5_11_1:
+      if (c == ']')
+       {
+         *flags = (CODING_STATE_ISO2022_LOCK & ~CODING_STATE_R2L);
+         goto directionality;
+       }
+      return 0;
+
+    case ISO_ESC_5_11_2:
+      if (c == ']')
+       {
+         *flags = (*flags & CODING_STATE_ISO2022_LOCK) | CODING_STATE_R2L;
+         goto directionality;
+       }
+      return 0;
+
+    directionality:
+      iso->esc = ISO_ESC_DIRECTIONALITY;
+      /* Various junk here to attempt to preserve the direction sequences
+        literally in the text if they would otherwise be swallowed due
+        to invalid designations that don't show up as actual charset
+        changes in the text. */
+      if (iso->invalid_switch_dir)
+       {
+         /* We already inserted a direction switch literally into the
+            text.  We assume (#### this may not be right) that the
+            next direction switch is the one going the other way,
+            and we need to output that literally as well. */
+         iso->output_literally = 1;
+         iso->invalid_switch_dir = 0;
+       }
+      else
+       {
+         int jj;
+
+         /* If we are in the thrall of an invalid designation,
+          then stick the directionality sequence literally into the
+          output stream so it ends up in the original text again. */
+         for (jj = 0; jj < 4; jj++)
+           if (iso->invalid_designated[jj])
+             break;
+         if (jj < 4)
+           {
+             iso->output_literally = 1;
+             iso->invalid_switch_dir = 1;
+           }
+         else
+           /* Indicate that we haven't yet seen a valid designation,
+              so that if a switch-dir is directly followed by an
+              invalid designation, both get inserted literally. */
+           iso->switched_dir_and_no_valid_charset_yet = 1;
+       }
+      return 1;
+
+
+      /**** designation ****/
+
+    case ISO_ESC_2_4:
+      if (0x28 <= c && c <= 0x2F)
+       {
+         iso->esc = (enum iso_esc_flag) (c - 0x28 + ISO_ESC_2_4_8);
+         goto not_done;
+       }
+      if (0x40 <= c && c <= 0x42)
+       {
+         cs = CHARSET_BY_ATTRIBUTES (CHARSET_TYPE_94X94, c,
+                                     *flags & CODING_STATE_R2L ?
+                                     CHARSET_RIGHT_TO_LEFT :
+                                     CHARSET_LEFT_TO_RIGHT);
+         reg = 0;
+         goto designated;
+       }
+      return 0;
+
+    default:
+      {
+       int type =-1;
+
+       if (c < '0' || c > '~')
+         return 0; /* bad final byte */
+
+       if (iso->esc >= ISO_ESC_2_8 &&
+           iso->esc <= ISO_ESC_2_15)
+         {
+           type = ((iso->esc >= ISO_ESC_2_12) ?
+                   CHARSET_TYPE_96 : CHARSET_TYPE_94);
+           reg = (iso->esc - ISO_ESC_2_8) & 3;
+         }
+       else if (iso->esc >= ISO_ESC_2_4_8 &&
+                iso->esc <= ISO_ESC_2_4_15)
+         {
+           type = ((iso->esc >= ISO_ESC_2_4_12) ?
+                   CHARSET_TYPE_96X96 : CHARSET_TYPE_94X94);
+           reg = (iso->esc - ISO_ESC_2_4_8) & 3;
+         }
+       else
+         {
+           /* Can this ever be reached? -slb */
+           abort();
+         }
+
+       cs = CHARSET_BY_ATTRIBUTES (type, c,
+                                   *flags & CODING_STATE_R2L ?
+                                   CHARSET_RIGHT_TO_LEFT :
+                                   CHARSET_LEFT_TO_RIGHT);
+       goto designated;
+      }
+    }
+
+ not_done:
+  iso->esc_bytes[iso->esc_bytes_index++] = (unsigned char) c;
+  return -1;
+
+ single_shift:
+  if (check_invalid_charsets && !CHARSETP (iso->charset[reg]))
+    /* can't invoke something that ain't there. */
+    return 0;
+  iso->esc = ISO_ESC_SINGLE_SHIFT;
+  *flags &= CODING_STATE_ISO2022_LOCK;
+  if (reg == 2)
+    *flags |= CODING_STATE_SS2;
+  else
+    *flags |= CODING_STATE_SS3;
+  return 1;
+
+ locking_shift:
+  if (check_invalid_charsets &&
+      !CHARSETP (iso->charset[reg]))
+    /* can't invoke something that ain't there. */
+    return 0;
+  if (half)
+    iso->register_right = reg;
+  else
+    iso->register_left = reg;
+  *flags &= CODING_STATE_ISO2022_LOCK;
+  iso->esc = ISO_ESC_LOCKING_SHIFT;
+  return 1;
+
+ designated:
+  if (NILP (cs) && check_invalid_charsets)
+    {
+      iso->invalid_designated[reg] = 1;
+      iso->charset[reg] = Vcharset_ascii;
+      iso->esc = ISO_ESC_DESIGNATE;
+      *flags &= CODING_STATE_ISO2022_LOCK;
+      iso->output_literally = 1;
+      if (iso->switched_dir_and_no_valid_charset_yet)
+       {
+         /* We encountered a switch-direction followed by an
+            invalid designation.  Ensure that the switch-direction
+            gets outputted; otherwise it will probably get eaten
+            when the text is written out again. */
+         iso->switched_dir_and_no_valid_charset_yet = 0;
+         iso->output_direction_sequence = 1;
+         /* And make sure that the switch-dir going the other
+            way gets outputted, as well. */
+         iso->invalid_switch_dir = 1;
+       }
+      return 1;
+    }
+  /* This function is called with CODESYS equal to nil when
+     doing coding-system detection. */
+  if (!NILP (codesys))
+    {
+      charset_conversion_spec_dynarr *dyn =
+       XCODING_SYSTEM (codesys)->iso2022.input_conv;
+
+      if (dyn)
+       {
+         int i;
+
+         for (i = 0; i < Dynarr_length (dyn); i++)
+           {
+             struct charset_conversion_spec *spec = Dynarr_atp (dyn, i);
+             if (EQ (cs, spec->from_charset))
+               cs = spec->to_charset;
+           }
+       }
+    }
+
+  iso->charset[reg] = cs;
+  iso->esc = ISO_ESC_DESIGNATE;
+  *flags &= CODING_STATE_ISO2022_LOCK;
+  if (iso->invalid_designated[reg])
+    {
+      iso->invalid_designated[reg] = 0;
+      iso->output_literally = 1;
+    }
+  if (iso->switched_dir_and_no_valid_charset_yet)
+    iso->switched_dir_and_no_valid_charset_yet = 0;
+  return 1;
+}
+
+static int
+detect_coding_iso2022 (struct detection_state *st, CONST unsigned char *src,
+                      unsigned int n)
+{
+  int mask;
+
+  /* #### There are serious deficiencies in the recognition mechanism
+     here.  This needs to be much smarter if it's going to cut it.
+     The sequence "\xff\x0f" is currently detected as LOCK_SHIFT while
+     it should be detected as Latin-1.
+     All the ISO2022 stuff in this file should be synced up with the
+     code from FSF Emacs-20.4, in which Mule should be more or less stable.
+     Perhaps we should wait till R2L works in FSF Emacs? */
+
+  if (!st->iso2022.initted)
+    {
+      reset_iso2022 (Qnil, &st->iso2022.iso);
+      st->iso2022.mask = (CODING_CATEGORY_ISO_7_MASK |
+                         CODING_CATEGORY_ISO_8_DESIGNATE_MASK |
+                         CODING_CATEGORY_ISO_8_1_MASK |
+                         CODING_CATEGORY_ISO_8_2_MASK |
+                         CODING_CATEGORY_ISO_LOCK_SHIFT_MASK);
+      st->iso2022.flags = 0;
+      st->iso2022.high_byte_count = 0;
+      st->iso2022.saw_single_shift = 0;
+      st->iso2022.initted = 1;
+    }
+
+  mask = st->iso2022.mask;
+
+  while (n--)
+    {
+      int c = *src++;
+      if (c >= 0xA0)
+       {
+         mask &= ~CODING_CATEGORY_ISO_7_MASK;
+         st->iso2022.high_byte_count++;
+       }
+      else
+       {
+         if (st->iso2022.high_byte_count && !st->iso2022.saw_single_shift)
+           {
+             if (st->iso2022.high_byte_count & 1)
+               /* odd number of high bytes; assume not iso-8-2 */
+               mask &= ~CODING_CATEGORY_ISO_8_2_MASK;
+           }
+         st->iso2022.high_byte_count = 0;
+         st->iso2022.saw_single_shift = 0;
+         if (c > 0x80)
+           mask &= ~CODING_CATEGORY_ISO_7_MASK;
+       }
+      if (!(st->iso2022.flags & CODING_STATE_ESCAPE)
+         && (BYTE_C0_P (c) || BYTE_C1_P (c)))
+       { /* control chars */
+         switch (c)
+           {
+             /* Allow and ignore control characters that you might
+                reasonably see in a text file */
+           case '\r':
+           case '\n':
+           case '\t':
+           case  7: /* bell */
+           case  8: /* backspace */
+           case 11: /* vertical tab */
+           case 12: /* form feed */
+           case 26: /* MS-DOS C-z junk */
+           case 31: /* '^_' -- for info */
+             goto label_continue_loop;
+
+           default:
+             break;
+           }
+       }
+
+      if ((st->iso2022.flags & CODING_STATE_ESCAPE) || BYTE_C0_P (c)
+          || BYTE_C1_P (c))
+       {
+         if (parse_iso2022_esc (Qnil, &st->iso2022.iso, c,
+                                &st->iso2022.flags, 0))
+           {
+             switch (st->iso2022.iso.esc)
+               {
+               case ISO_ESC_DESIGNATE:
+                 mask &= ~CODING_CATEGORY_ISO_8_1_MASK;
+                 mask &= ~CODING_CATEGORY_ISO_8_2_MASK;
+                 break;
+               case ISO_ESC_LOCKING_SHIFT:
+                 mask = CODING_CATEGORY_ISO_LOCK_SHIFT_MASK;
+                 goto ran_out_of_chars;
+               case ISO_ESC_SINGLE_SHIFT:
+                 mask &= ~CODING_CATEGORY_ISO_8_DESIGNATE_MASK;
+                 st->iso2022.saw_single_shift = 1;
+                 break;
+               default:
+                 break;
+               }
+           }
+         else
+           {
+             mask = 0;
+             goto ran_out_of_chars;
+           }
+       }
+    label_continue_loop:;
+    }
+
+ ran_out_of_chars:
+
+  return mask;
+}
+
+static int
+postprocess_iso2022_mask (int mask)
+{
+  /* #### kind of cheesy */
+  /* If seven-bit ISO is allowed, then assume that the encoding is
+     entirely seven-bit and turn off the eight-bit ones. */
+  if (mask & CODING_CATEGORY_ISO_7_MASK)
+    mask &= ~ (CODING_CATEGORY_ISO_8_DESIGNATE_MASK |
+              CODING_CATEGORY_ISO_8_1_MASK |
+              CODING_CATEGORY_ISO_8_2_MASK);
+  return mask;
+}
+
+/* If FLAGS is a null pointer or specifies right-to-left motion,
+   output a switch-dir-to-left-to-right sequence to DST.
+   Also update FLAGS if it is not a null pointer.
+   If INTERNAL_P is set, we are outputting in internal format and
+   need to handle the CSI differently. */
+
+static void
+restore_left_to_right_direction (Lisp_Coding_System *codesys,
+                                unsigned_char_dynarr *dst,
+                                unsigned int *flags,
+                                int internal_p)
+{
+  if (!flags || (*flags & CODING_STATE_R2L))
+    {
+      if (CODING_SYSTEM_ISO2022_SEVEN (codesys))
+       {
+         Dynarr_add (dst, ISO_CODE_ESC);
+         Dynarr_add (dst, '[');
+       }
+      else if (internal_p)
+       DECODE_ADD_BINARY_CHAR (ISO_CODE_CSI, dst);
+      else
+       Dynarr_add (dst, ISO_CODE_CSI);
+      Dynarr_add (dst, '0');
+      Dynarr_add (dst, ']');
+      if (flags)
+       *flags &= ~CODING_STATE_R2L;
+    }
+}
+
+/* If FLAGS is a null pointer or specifies a direction different from
+   DIRECTION (which should be either CHARSET_RIGHT_TO_LEFT or
+   CHARSET_LEFT_TO_RIGHT), output the appropriate switch-dir escape
+   sequence to DST.  Also update FLAGS if it is not a null pointer.
+   If INTERNAL_P is set, we are outputting in internal format and
+   need to handle the CSI differently. */
+
+static void
+ensure_correct_direction (int direction, Lisp_Coding_System *codesys,
+                         unsigned_char_dynarr *dst, unsigned int *flags,
+                         int internal_p)
+{
+  if ((!flags || (*flags & CODING_STATE_R2L)) &&
+      direction == CHARSET_LEFT_TO_RIGHT)
+    restore_left_to_right_direction (codesys, dst, flags, internal_p);
+  else if (!CODING_SYSTEM_ISO2022_NO_ISO6429 (codesys)
+          && (!flags || !(*flags & CODING_STATE_R2L)) &&
+          direction == CHARSET_RIGHT_TO_LEFT)
+    {
+      if (CODING_SYSTEM_ISO2022_SEVEN (codesys))
+       {
+         Dynarr_add (dst, ISO_CODE_ESC);
+         Dynarr_add (dst, '[');
+       }
+      else if (internal_p)
+       DECODE_ADD_BINARY_CHAR (ISO_CODE_CSI, dst);
+      else
+       Dynarr_add (dst, ISO_CODE_CSI);
+      Dynarr_add (dst, '2');
+      Dynarr_add (dst, ']');
+      if (flags)
+       *flags |= CODING_STATE_R2L;
+    }
+}
+
+/* Convert ISO2022-format data to internal format. */
+
+static void
+decode_coding_iso2022 (Lstream *decoding, CONST unsigned char *src,
+                      unsigned_char_dynarr *dst, unsigned int n)
+{
+  struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
+  unsigned int flags  = str->flags;
+  unsigned int ch     = str->ch;
+  eol_type_t eol_type = str->eol_type;
+#ifdef ENABLE_COMPOSITE_CHARS
+  unsigned_char_dynarr *real_dst = dst;
+#endif
+  Lisp_Object coding_system;
+
+  XSETCODING_SYSTEM (coding_system, str->codesys);
+
+#ifdef ENABLE_COMPOSITE_CHARS
+  if (flags & CODING_STATE_COMPOSITE)
+    dst = str->iso2022.composite_chars;
+#endif /* ENABLE_COMPOSITE_CHARS */
+
+  while (n--)
+    {
+      unsigned char c = *src++;
+      if (flags & CODING_STATE_ESCAPE)
+       {       /* Within ESC sequence */
+         int retval = parse_iso2022_esc (coding_system, &str->iso2022,
+                                         c, &flags, 1);
+
+         if (retval)
+           {
+             switch (str->iso2022.esc)
+               {
+#ifdef ENABLE_COMPOSITE_CHARS
+               case ISO_ESC_START_COMPOSITE:
+                 if (str->iso2022.composite_chars)
+                   Dynarr_reset (str->iso2022.composite_chars);
+                 else
+                   str->iso2022.composite_chars = Dynarr_new (unsigned_char);
+                 dst = str->iso2022.composite_chars;
+                 break;
+               case ISO_ESC_END_COMPOSITE:
+                 {
+                   Bufbyte comstr[MAX_EMCHAR_LEN];
+                   Bytecount len;
+                   Emchar emch = lookup_composite_char (Dynarr_atp (dst, 0),
+                                                        Dynarr_length (dst));
+                   dst = real_dst;
+                   len = set_charptr_emchar (comstr, emch);
+                   Dynarr_add_many (dst, comstr, len);
+                   break;
+                 }
+#endif /* ENABLE_COMPOSITE_CHARS */
+
+               case ISO_ESC_LITERAL:
+                 DECODE_ADD_BINARY_CHAR (c, dst);
+                 break;
+
+               default:
+                 /* Everything else handled already */
+                 break;
+               }
+           }
+
+         /* Attempted error recovery. */
+         if (str->iso2022.output_direction_sequence)
+           ensure_correct_direction (flags & CODING_STATE_R2L ?
+                                     CHARSET_RIGHT_TO_LEFT :
+                                     CHARSET_LEFT_TO_RIGHT,
+                                     str->codesys, dst, 0, 1);
+         /* More error recovery. */
+         if (!retval || str->iso2022.output_literally)
+           {
+             /* Output the (possibly invalid) sequence */
+             int i;
+             for (i = 0; i < str->iso2022.esc_bytes_index; i++)
+               DECODE_ADD_BINARY_CHAR (str->iso2022.esc_bytes[i], dst);
+             flags &= CODING_STATE_ISO2022_LOCK;
+             if (!retval)
+               n++, src--;/* Repeat the loop with the same character. */
+             else
+               {
+                 /* No sense in reprocessing the final byte of the
+                    escape sequence; it could mess things up anyway.
+                    Just add it now. */
+                 DECODE_ADD_BINARY_CHAR (c, dst);
+               }
+           }
+         ch = 0;
+       }
+      else if (BYTE_C0_P (c) || BYTE_C1_P (c))
+       { /* Control characters */
+
+         /***** Error-handling *****/
+
+         /* If we were in the middle of a character, dump out the
+            partial character. */
+         DECODE_OUTPUT_PARTIAL_CHAR (ch);
+
+         /* If we just saw a single-shift character, dump it out.
+            This may dump out the wrong sort of single-shift character,
+            but least it will give an indication that something went
+            wrong. */
+         if (flags & CODING_STATE_SS2)
+           {
+             DECODE_ADD_BINARY_CHAR (ISO_CODE_SS2, dst);
+             flags &= ~CODING_STATE_SS2;
+           }
+         if (flags & CODING_STATE_SS3)
+           {
+             DECODE_ADD_BINARY_CHAR (ISO_CODE_SS3, dst);
+             flags &= ~CODING_STATE_SS3;
+           }
+
+         /***** Now handle the control characters. *****/
+
+         /* Handle CR/LF */
+         DECODE_HANDLE_EOL_TYPE (eol_type, c, flags, dst);
+
+         flags &= CODING_STATE_ISO2022_LOCK;
+
+         if (!parse_iso2022_esc (coding_system, &str->iso2022, c, &flags, 1))
+           DECODE_ADD_BINARY_CHAR (c, dst);
+       }
+      else
+       {                       /* Graphic characters */
+         Lisp_Object charset;
+#ifndef UTF2000
+         Charset_ID lb;
+#endif
+         int reg;
+
+         DECODE_HANDLE_EOL_TYPE (eol_type, c, flags, dst);
+
+         /* Now determine the charset. */
+         reg = ((flags & CODING_STATE_SS2) ? 2
+                : (flags & CODING_STATE_SS3) ? 3
+                : !BYTE_ASCII_P (c) ? str->iso2022.register_right
+                : str->iso2022.register_left);
+         charset = str->iso2022.charset[reg];
+
+         /* Error checking: */
+         if (! CHARSETP (charset)
+             || str->iso2022.invalid_designated[reg]
+             || (((c & 0x7F) == ' ' || (c & 0x7F) == ISO_CODE_DEL)
+                 && XCHARSET_CHARS (charset) == 94))
+           /* Mrmph.  We are trying to invoke a register that has no
+              or an invalid charset in it, or trying to add a character
+              outside the range of the charset.  Insert that char literally
+              to preserve it for the output. */
+           {
+             DECODE_OUTPUT_PARTIAL_CHAR (ch);
+             DECODE_ADD_BINARY_CHAR (c, dst);
+           }
+
+         else
+           {
+             /* Things are probably hunky-dorey. */
+
+             /* Fetch reverse charset, maybe. */
+             if (((flags & CODING_STATE_R2L) &&
+                  XCHARSET_DIRECTION (charset) == CHARSET_LEFT_TO_RIGHT)
+                 ||
+                 (!(flags & CODING_STATE_R2L) &&
+                  XCHARSET_DIRECTION (charset) == CHARSET_RIGHT_TO_LEFT))
+               {
+                 Lisp_Object new_charset =
+                   XCHARSET_REVERSE_DIRECTION_CHARSET (charset);
+                 if (!NILP (new_charset))
+                   charset = new_charset;
+               }
+
+#ifdef UTF2000
+             if (XCHARSET_DIMENSION (charset) == 1)
+               {
+                 DECODE_OUTPUT_PARTIAL_CHAR (ch);
+                 DECODE_ADD_UCS_CHAR
+                   (MAKE_CHAR (charset, c & 0x7F, 0), dst);
+               }
+             else if (ch)
+               {
+                 DECODE_ADD_UCS_CHAR
+                   (MAKE_CHAR (charset, ch & 0x7F, c & 0x7F), dst);
+                 ch = 0;
+               }
+             else
+               ch = c;
+#else
+             lb = XCHARSET_LEADING_BYTE (charset);
+             switch (XCHARSET_REP_BYTES (charset))
+               {
+               case 1: /* ASCII */
+                 DECODE_OUTPUT_PARTIAL_CHAR (ch);
+                 Dynarr_add (dst, c & 0x7F);
+                 break;
+
+               case 2: /* one-byte official */
+                 DECODE_OUTPUT_PARTIAL_CHAR (ch);
+                 Dynarr_add (dst, lb);
+                 Dynarr_add (dst, c | 0x80);
+                 break;
+
+               case 3: /* one-byte private or two-byte official */
+                 if (XCHARSET_PRIVATE_P (charset))
+                   {
+                     DECODE_OUTPUT_PARTIAL_CHAR (ch);
+                     Dynarr_add (dst, PRE_LEADING_BYTE_PRIVATE_1);
+                     Dynarr_add (dst, lb);
+                     Dynarr_add (dst, c | 0x80);
+                   }
+                 else
+                   {
+                     if (ch)
+                       {
+                         Dynarr_add (dst, lb);
+                         Dynarr_add (dst, ch | 0x80);
+                         Dynarr_add (dst, c | 0x80);
+                         ch = 0;
+                       }
+                     else
+                       ch = c;
+                   }
+                 break;
+
+               default:        /* two-byte private */
+                 if (ch)
+                   {
+                     Dynarr_add (dst, PRE_LEADING_BYTE_PRIVATE_2);
+                     Dynarr_add (dst, lb);
+                     Dynarr_add (dst, ch | 0x80);
+                     Dynarr_add (dst, c | 0x80);
+                     ch = 0;
+                   }
+                 else
+                   ch = c;
+               }
+#endif
+           }
+
+         if (!ch)
+           flags &= CODING_STATE_ISO2022_LOCK;
+       }
+
+    label_continue_loop:;
+    }
+
+  if (flags & CODING_STATE_END)
+    DECODE_OUTPUT_PARTIAL_CHAR (ch);
+
+  str->flags = flags;
+  str->ch    = ch;
+}
+
+
+/***** ISO2022 encoder *****/
+
+/* Designate CHARSET into register REG. */
+
+static void
+iso2022_designate (Lisp_Object charset, unsigned char reg,
+                  struct encoding_stream *str, unsigned_char_dynarr *dst)
+{
+  static CONST char inter94[] = "()*+";
+  static CONST char inter96[] = ",-./";
+  unsigned int type;
+  unsigned char final;
+  Lisp_Object old_charset = str->iso2022.charset[reg];
+
+  str->iso2022.charset[reg] = charset;
+  if (!CHARSETP (charset))
+    /* charset might be an initial nil or t. */
+    return;
+  type = XCHARSET_TYPE (charset);
+  final = XCHARSET_FINAL (charset);
+  if (!str->iso2022.force_charset_on_output[reg] &&
+      CHARSETP (old_charset) &&
+      XCHARSET_TYPE (old_charset) == type &&
+      XCHARSET_FINAL (old_charset) == final)
+    return;
+
+  str->iso2022.force_charset_on_output[reg] = 0;
+
+  {
+    charset_conversion_spec_dynarr *dyn =
+      str->codesys->iso2022.output_conv;
+
+    if (dyn)
+      {
+       int i;
+
+       for (i = 0; i < Dynarr_length (dyn); i++)
+         {
+           struct charset_conversion_spec *spec = Dynarr_atp (dyn, i);
+           if (EQ (charset, spec->from_charset))
+               charset = spec->to_charset;
+         }
+      }
+  }
+
+  Dynarr_add (dst, ISO_CODE_ESC);
+  switch (type)
+    {
+    case CHARSET_TYPE_94:
+      Dynarr_add (dst, inter94[reg]);
+      break;
+    case CHARSET_TYPE_96:
+      Dynarr_add (dst, inter96[reg]);
+      break;
+    case CHARSET_TYPE_94X94:
+      Dynarr_add (dst, '$');
+      if (reg != 0
+         || !(CODING_SYSTEM_ISO2022_SHORT (str->codesys))
+         || final < '@'
+         || final > 'B')
+       Dynarr_add (dst, inter94[reg]);
+      break;
+    case CHARSET_TYPE_96X96:
+      Dynarr_add (dst, '$');
+      Dynarr_add (dst, inter96[reg]);
+      break;
+    }
+  Dynarr_add (dst, final);
+}
+
+static void
+ensure_normal_shift (struct encoding_stream *str, unsigned_char_dynarr *dst)
+{
+  if (str->iso2022.register_left != 0)
+    {
+      Dynarr_add (dst, ISO_CODE_SI);
+      str->iso2022.register_left = 0;
+    }
+}
+
+static void
+ensure_shift_out (struct encoding_stream *str, unsigned_char_dynarr *dst)
+{
+  if (str->iso2022.register_left != 1)
+    {
+      Dynarr_add (dst, ISO_CODE_SO);
+      str->iso2022.register_left = 1;
+    }
+}
+
+void
+char_encode_iso2022 (struct encoding_stream *str, Emchar ch,
+                    unsigned_char_dynarr *dst, unsigned int *flags)
+{
+  unsigned char charmask;
+  Lisp_Coding_System* codesys = str->codesys;
+  eol_type_t eol_type         = CODING_SYSTEM_EOL_TYPE (str->codesys);
+  int i;
+  Lisp_Object charset = str->iso2022.current_charset;
+  int half = str->iso2022.current_half;
+  unsigned int byte1, byte2;
+
+  if (ch <= 0x7F)
+    {
+      restore_left_to_right_direction (codesys, dst, flags, 0);
+             
+      /* Make sure G0 contains ASCII */
+      if ((ch > ' ' && ch < ISO_CODE_DEL)
+         || !CODING_SYSTEM_ISO2022_NO_ASCII_CNTL (codesys))
+       {
+         ensure_normal_shift (str, dst);
+         iso2022_designate (Vcharset_ascii, 0, str, dst);
+       }
+             
+      /* If necessary, restore everything to the default state
+        at end-of-line */
+      if (ch == '\n' && !(CODING_SYSTEM_ISO2022_NO_ASCII_EOL (codesys)))
+       {
+         restore_left_to_right_direction (codesys, dst, flags, 0);
+
+         ensure_normal_shift (str, dst);
+
+         for (i = 0; i < 4; i++)
+           {
+             Lisp_Object initial_charset =
+               CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, i);
+             iso2022_designate (initial_charset, i, str, dst);
+           }
+       }
+      if (ch == '\n')
+       {
+         if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+           Dynarr_add (dst, '\r');
+         if (eol_type != EOL_CR)
+           Dynarr_add (dst, ch);
+       }
+      else
+       {
+         if (CODING_SYSTEM_ISO2022_ESCAPE_QUOTED (codesys)
+             && fit_to_be_escape_quoted (ch))
+           Dynarr_add (dst, ISO_CODE_ESC);
+         Dynarr_add (dst, ch);
+       }
+    }
+  else if ( (0x80 <= ch) && (ch <= 0x9f) )
+    {
+      charmask = (half == 0 ? 0x00 : 0x80);
+         
+      if (CODING_SYSTEM_ISO2022_ESCAPE_QUOTED (codesys)
+         && fit_to_be_escape_quoted (ch))
+       Dynarr_add (dst, ISO_CODE_ESC);
+      /* you asked for it ... */
+      Dynarr_add (dst, ch);
+    }
+  else
+    {
+      int reg;
+
+      /* Now determine which register to use. */
+      reg = -1;
+      for (i = 0; i < 4; i++)
+       {
+         Lisp_Object code_point;
+
+         if ((CHARSETP (charset = str->iso2022.charset[i])
+              && !EQ (code_point = charset_code_point (charset, ch), Qnil))
+             ||
+             (CHARSETP
+              (charset
+               = CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, i))
+              && !EQ (code_point = charset_code_point (charset, ch), Qnil)))
+           {
+             Lisp_Object ret = Fcar (code_point);
+
+             if (INTP (ret))
+               {
+                 byte1 = XINT (ret);
+                 ret = Fcar (Fcdr (code_point));
+                 if (INTP (ret))
+                   byte2 = XINT (ret);
+                 else
+                   byte2 = 0;
+               }
+             else
+               {
+                 byte1 = 0;
+                 byte2 = 0;
+               }
+             reg = i;
+             break;
+           }
+       }
+      if (reg == -1)
+       {
+         Lisp_Object original_default_coded_charset_priority_list
+           = Vdefault_coded_charset_priority_list;
+
+         while (!EQ (Vdefault_coded_charset_priority_list, Qnil))
+           {
+             BREAKUP_CHAR (ch, charset, byte1, byte2);
+             if (XCHARSET_FINAL (charset))
+               goto found;
+             Vdefault_coded_charset_priority_list
+               = Fcdr (Fmemq (XCHARSET_NAME (charset),
+                              Vdefault_coded_charset_priority_list));
+           }
+         BREAKUP_CHAR (ch, charset, byte1, byte2);
+       found:
+         Vdefault_coded_charset_priority_list
+           = original_default_coded_charset_priority_list;
+       }
+      ensure_correct_direction (XCHARSET_DIRECTION (charset),
+                               codesys, dst, flags, 0);
+      
+      if (reg == -1)
+       {
+         if (XCHARSET_GRAPHIC (charset) != 0)
+           {
+             if (!NILP (str->iso2022.charset[1]) &&
+                 (!CODING_SYSTEM_ISO2022_SEVEN (codesys)
+                  || CODING_SYSTEM_ISO2022_LOCK_SHIFT (codesys)))
+               reg = 1;
+             else if (!NILP (str->iso2022.charset[2]))
+               reg = 2;
+             else if (!NILP (str->iso2022.charset[3]))
+               reg = 3;
+             else
+               reg = 0;
+           }
+         else
+           reg = 0;
+       }
+
+      iso2022_designate (charset, reg, str, dst);
+             
+      /* Now invoke that register. */
+      switch (reg)
+       {
+       case 0:
+         ensure_normal_shift (str, dst);
+         half = 0;
+         break;
+       case 1:
+         if (CODING_SYSTEM_ISO2022_SEVEN (codesys))
+           {
+             ensure_shift_out (str, dst);
+             half = 0;
+           }
+         else
+           half = 1;
+         break;
+       case 2:
+         if (CODING_SYSTEM_ISO2022_SEVEN (str->codesys))
+           {
+             Dynarr_add (dst, ISO_CODE_ESC);
+             Dynarr_add (dst, 'N');
+             half = 0;
+           }
+         else
+           {
+             Dynarr_add (dst, ISO_CODE_SS2);
+             half = 1;
+           }
+         break;
+       case 3:
+         if (CODING_SYSTEM_ISO2022_SEVEN (str->codesys))
+           {
+             Dynarr_add (dst, ISO_CODE_ESC);
+             Dynarr_add (dst, 'O');
+             half = 0;
+           }
+         else
+           {
+             Dynarr_add (dst, ISO_CODE_SS3);
+             half = 1;
+           }
+         break;
+       default:
+         abort ();
+       }
+      
+      charmask = (half == 0 ? 0x00 : 0x80);
+      
+      switch (XCHARSET_DIMENSION (charset))
+       {
+       case 1:
+         Dynarr_add (dst, byte1 | charmask);
+         break;
+       case 2:
+         Dynarr_add (dst, byte1 | charmask);
+         Dynarr_add (dst, byte2 | charmask);
+         break;
+       default:
+         abort ();
+       }
+    }
+  str->iso2022.current_charset = charset;
+  str->iso2022.current_half = half;
+}
+
+void
+char_finish_iso2022 (struct encoding_stream *str, unsigned_char_dynarr *dst,
+                    unsigned int *flags)
+{
+  Lisp_Coding_System* codesys = str->codesys;
+  int i;
+
+  restore_left_to_right_direction (codesys, dst, flags, 0);
+  ensure_normal_shift (str, dst);
+  for (i = 0; i < 4; i++)
+    {
+      Lisp_Object initial_charset
+       = CODING_SYSTEM_ISO2022_INITIAL_CHARSET (codesys, i);
+      iso2022_designate (initial_charset, i, str, dst);
+    }
+}
+#endif /* MULE */
+\f
+/************************************************************************/
+/*                     No-conversion methods                            */
+/************************************************************************/
+
+/* This is used when reading in "binary" files -- i.e. files that may
+   contain all 256 possible byte values and that are not to be
+   interpreted as being in any particular decoding. */
+static void
+decode_coding_no_conversion (Lstream *decoding, CONST unsigned char *src,
+                            unsigned_char_dynarr *dst, unsigned int n)
+{
+  unsigned char c;
+  struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
+  unsigned int flags  = str->flags;
+  unsigned int ch     = str->ch;
+  eol_type_t eol_type = str->eol_type;
+
+  while (n--)
+    {
+      c = *src++;
+
+      DECODE_HANDLE_EOL_TYPE (eol_type, c, flags, dst);
+      DECODE_ADD_BINARY_CHAR (c, dst);
+    label_continue_loop:;
+    }
+
+  DECODE_HANDLE_END_OF_CONVERSION (flags, ch, dst);
+
+  str->flags = flags;
+  str->ch    = ch;
+}
+
+static void
+encode_coding_no_conversion (Lstream *encoding, CONST unsigned char *src,
+                            unsigned_char_dynarr *dst, unsigned int n)
+{
+  unsigned char c;
+  struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
+  unsigned int flags  = str->flags;
+  unsigned int ch     = str->ch;
+  eol_type_t eol_type = CODING_SYSTEM_EOL_TYPE (str->codesys);
+#ifdef UTF2000
+  unsigned char char_boundary = str->iso2022.current_char_boundary;
+#endif
+
+  while (n--)
+    {
+      c = *src++;        
+#ifdef UTF2000
+      if (char_boundary == 0)
+       if ( c >= 0xfc )
+         {
+           ch = c & 0x01;
+           char_boundary = 5;
+         }
+       else if ( c >= 0xf8 )
+         {
+           ch = c & 0x03;
+           char_boundary = 4;
+         }
+       else if ( c >= 0xf0 )
+         {
+           ch = c & 0x07;
+           char_boundary = 3;
+         }
+       else if ( c >= 0xe0 )
+         {
+           ch = c & 0x0f;
+           char_boundary = 2;
+         }
+       else if ( c >= 0xc0 )
+         {
+           ch = c & 0x1f;
+           char_boundary = 1;
+         }
+       else
+         {
+           ch = 0;
+           if (c == '\n')
+             {
+               if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+                 Dynarr_add (dst, '\r');
+               if (eol_type != EOL_CR)
+                 Dynarr_add (dst, c);
+             }
+           else
+             Dynarr_add (dst, c);
+           char_boundary = 0;
+         }
+      else if (char_boundary == 1)
+       {
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         Dynarr_add (dst, ch & 0xff);
+         char_boundary = 0;
+       }
+      else
+       {
+         ch = ( ch << 6 ) | ( c & 0x3f );
+         char_boundary--;
+       }
+#else /* not UTF2000 */
+      if (c == '\n')
+       {
+         if (eol_type != EOL_LF && eol_type != EOL_AUTODETECT)
+           Dynarr_add (dst, '\r');
+         if (eol_type != EOL_CR)
+           Dynarr_add (dst, '\n');
+         ch = 0;
+       }
+      else if (BYTE_ASCII_P (c))
+       {
+         assert (ch == 0);
+         Dynarr_add (dst, c);
+       }
+      else if (BUFBYTE_LEADING_BYTE_P (c))
+       {
+         assert (ch == 0);
+         if (c == LEADING_BYTE_LATIN_ISO8859_1 ||
+             c == LEADING_BYTE_CONTROL_1)
+           ch = c;
+         else
+           Dynarr_add (dst, '~'); /* untranslatable character */
+       }
+      else
+       {
+         if (ch == LEADING_BYTE_LATIN_ISO8859_1)
+           Dynarr_add (dst, c);
+         else if (ch == LEADING_BYTE_CONTROL_1)
+           {
+             assert (c < 0xC0);
+             Dynarr_add (dst, c - 0x20);
+           }
+         /* else it should be the second or third byte of an
+            untranslatable character, so ignore it */
+         ch = 0;
+       }
+#endif /* not UTF2000 */
+    }
+
+  str->flags = flags;
+  str->ch    = ch;
+#ifdef UTF2000
+  str->iso2022.current_char_boundary = char_boundary;
+#endif
+}
+
+\f
+/************************************************************************/
+/*                   Simple internal/external functions                 */
+/************************************************************************/
+
+static Extbyte_dynarr *conversion_out_dynarr;
+static Bufbyte_dynarr *conversion_in_dynarr;
+
+/* Determine coding system from coding format */
+
+/* #### not correct for all values of `fmt'! */
+static Lisp_Object
+external_data_format_to_coding_system (enum external_data_format fmt)
+{
+  switch (fmt)
+    {
+    case FORMAT_FILENAME:
+    case FORMAT_TERMINAL:
+      if (EQ (Vfile_name_coding_system, Qnil) ||
+         EQ (Vfile_name_coding_system, Qbinary))
+       return Qnil;
+      else
+       return Fget_coding_system (Vfile_name_coding_system);
+#ifdef MULE
+    case FORMAT_CTEXT:
+      return Fget_coding_system (Qctext);
+#endif
+    default:
+      return Qnil;
+    }
+}
+
+Extbyte *
+convert_to_external_format (CONST Bufbyte *ptr,
+                           Bytecount len,
+                           Extcount *len_out,
+                           enum external_data_format fmt)
+{
+  Lisp_Object coding_system = external_data_format_to_coding_system (fmt);
+
+  if (!conversion_out_dynarr)
+    conversion_out_dynarr = Dynarr_new (Extbyte);
+  else
+    Dynarr_reset (conversion_out_dynarr);
+
+  if (NILP (coding_system))
+    {
+      CONST Bufbyte *end = ptr + len;
+
+      for (; ptr < end;)
+        {
+#ifdef UTF2000
+          Bufbyte c =
+           (*ptr < 0xc0) ? *ptr :
+           ((*ptr & 0x1f) << 6) | (*(ptr+1) & 0x3f);
+#else
+          Bufbyte c =
+            (BYTE_ASCII_P (*ptr))                 ? *ptr :
+            (*ptr == LEADING_BYTE_CONTROL_1)      ? (*(ptr+1) - 0x20) :
+            (*ptr == LEADING_BYTE_LATIN_ISO8859_1) ? (*(ptr+1)) :
+            '~';
+#endif
+          Dynarr_add (conversion_out_dynarr, (Extbyte) c);
+          INC_CHARPTR (ptr);
+        }
+
+#ifdef ERROR_CHECK_BUFPOS
+      assert (ptr == end);
+#endif
+    }
+  else
+    {
+      Lisp_Object instream, outstream, da_outstream;
+      Lstream *istr, *ostr;
+      struct gcpro gcpro1, gcpro2, gcpro3;
+      char tempbuf[1024]; /* some random amount */
+
+      instream = make_fixed_buffer_input_stream ((unsigned char *) ptr, len);
+      da_outstream = make_dynarr_output_stream
+        ((unsigned_char_dynarr *) conversion_out_dynarr);
+      outstream =
+        make_encoding_output_stream (XLSTREAM (da_outstream), coding_system);
+      istr = XLSTREAM (instream);
+      ostr = XLSTREAM (outstream);
+      GCPRO3 (instream, outstream, da_outstream);
+      while (1)
+        {
+          int size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+          if (!size_in_bytes)
+            break;
+          Lstream_write (ostr, tempbuf, size_in_bytes);
+        }
+      Lstream_close (istr);
+      Lstream_close (ostr);
+      UNGCPRO;
+      Lstream_delete (istr);
+      Lstream_delete (ostr);
+      Lstream_delete (XLSTREAM (da_outstream));
+    }
+
+  *len_out = Dynarr_length (conversion_out_dynarr);
+  Dynarr_add (conversion_out_dynarr, 0); /* remember to zero-terminate! */
+  return Dynarr_atp (conversion_out_dynarr, 0);
+}
+
+Bufbyte *
+convert_from_external_format (CONST Extbyte *ptr,
+                             Extcount len,
+                             Bytecount *len_out,
+                             enum external_data_format fmt)
+{
+  Lisp_Object coding_system = external_data_format_to_coding_system (fmt);
+
+  if (!conversion_in_dynarr)
+    conversion_in_dynarr = Dynarr_new (Bufbyte);
+  else
+    Dynarr_reset (conversion_in_dynarr);
+
+  if (NILP (coding_system))
+    {
+      CONST Extbyte *end = ptr + len;
+      for (; ptr < end; ptr++)
+        {
+          Extbyte c = *ptr;
+          DECODE_ADD_BINARY_CHAR (c, conversion_in_dynarr);
+        }
+    }
+  else
+    {
+      Lisp_Object instream, outstream, da_outstream;
+      Lstream *istr, *ostr;
+      struct gcpro gcpro1, gcpro2, gcpro3;
+      char tempbuf[1024]; /* some random amount */
+
+      instream = make_fixed_buffer_input_stream ((unsigned char *) ptr, len);
+      da_outstream = make_dynarr_output_stream
+        ((unsigned_char_dynarr *) conversion_in_dynarr);
+      outstream =
+        make_decoding_output_stream (XLSTREAM (da_outstream), coding_system);
+      istr = XLSTREAM (instream);
+      ostr = XLSTREAM (outstream);
+      GCPRO3 (instream, outstream, da_outstream);
+      while (1)
+        {
+          int size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+          if (!size_in_bytes)
+            break;
+          Lstream_write (ostr, tempbuf, size_in_bytes);
+        }
+      Lstream_close (istr);
+      Lstream_close (ostr);
+      UNGCPRO;
+      Lstream_delete (istr);
+      Lstream_delete (ostr);
+      Lstream_delete (XLSTREAM (da_outstream));
+    }
+
+  *len_out = Dynarr_length (conversion_in_dynarr);
+  Dynarr_add (conversion_in_dynarr, 0); /* remember to zero-terminate! */
+  return Dynarr_atp (conversion_in_dynarr, 0);
+}
+
+\f
+/************************************************************************/
+/*                             Initialization                           */
+/************************************************************************/
+
+void
+syms_of_file_coding (void)
+{
+  defsymbol (&Qbuffer_file_coding_system, "buffer-file-coding-system");
+  deferror (&Qcoding_system_error, "coding-system-error",
+           "Coding-system error", Qio_error);
+
+  DEFSUBR (Fcoding_system_p);
+  DEFSUBR (Ffind_coding_system);
+  DEFSUBR (Fget_coding_system);
+  DEFSUBR (Fcoding_system_list);
+  DEFSUBR (Fcoding_system_name);
+  DEFSUBR (Fmake_coding_system);
+  DEFSUBR (Fcopy_coding_system);
+  DEFSUBR (Fdefine_coding_system_alias);
+  DEFSUBR (Fsubsidiary_coding_system);
+
+  DEFSUBR (Fcoding_system_type);
+  DEFSUBR (Fcoding_system_doc_string);
+#ifdef MULE
+  DEFSUBR (Fcoding_system_charset);
+#endif
+  DEFSUBR (Fcoding_system_property);
+
+  DEFSUBR (Fcoding_category_list);
+  DEFSUBR (Fset_coding_priority_list);
+  DEFSUBR (Fcoding_priority_list);
+  DEFSUBR (Fset_coding_category_system);
+  DEFSUBR (Fcoding_category_system);
+
+  DEFSUBR (Fdetect_coding_region);
+  DEFSUBR (Fdecode_coding_region);
+  DEFSUBR (Fencode_coding_region);
+#ifdef MULE
+  DEFSUBR (Fdecode_shift_jis_char);
+  DEFSUBR (Fencode_shift_jis_char);
+  DEFSUBR (Fdecode_big5_char);
+  DEFSUBR (Fencode_big5_char);
+#endif /* MULE */
+  defsymbol (&Qcoding_system_p, "coding-system-p");
+  defsymbol (&Qno_conversion, "no-conversion");
+  defsymbol (&Qraw_text, "raw-text");
+#ifdef MULE
+  defsymbol (&Qbig5, "big5");
+  defsymbol (&Qshift_jis, "shift-jis");
+  defsymbol (&Qucs4, "ucs-4");
+  defsymbol (&Qutf8, "utf-8");
+  defsymbol (&Qccl, "ccl");
+  defsymbol (&Qiso2022, "iso2022");
+#endif /* MULE */
+  defsymbol (&Qmnemonic, "mnemonic");
+  defsymbol (&Qeol_type, "eol-type");
+  defsymbol (&Qpost_read_conversion, "post-read-conversion");
+  defsymbol (&Qpre_write_conversion, "pre-write-conversion");
+
+  defsymbol (&Qcr, "cr");
+  defsymbol (&Qlf, "lf");
+  defsymbol (&Qcrlf, "crlf");
+  defsymbol (&Qeol_cr, "eol-cr");
+  defsymbol (&Qeol_lf, "eol-lf");
+  defsymbol (&Qeol_crlf, "eol-crlf");
+#ifdef MULE
+  defsymbol (&Qcharset_g0, "charset-g0");
+  defsymbol (&Qcharset_g1, "charset-g1");
+  defsymbol (&Qcharset_g2, "charset-g2");
+  defsymbol (&Qcharset_g3, "charset-g3");
+  defsymbol (&Qforce_g0_on_output, "force-g0-on-output");
+  defsymbol (&Qforce_g1_on_output, "force-g1-on-output");
+  defsymbol (&Qforce_g2_on_output, "force-g2-on-output");
+  defsymbol (&Qforce_g3_on_output, "force-g3-on-output");
+  defsymbol (&Qno_iso6429, "no-iso6429");
+  defsymbol (&Qinput_charset_conversion, "input-charset-conversion");
+  defsymbol (&Qoutput_charset_conversion, "output-charset-conversion");
+
+  defsymbol (&Qshort, "short");
+  defsymbol (&Qno_ascii_eol, "no-ascii-eol");
+  defsymbol (&Qno_ascii_cntl, "no-ascii-cntl");
+  defsymbol (&Qseven, "seven");
+  defsymbol (&Qlock_shift, "lock-shift");
+  defsymbol (&Qescape_quoted, "escape-quoted");
+#endif /* MULE */
+  defsymbol (&Qencode, "encode");
+  defsymbol (&Qdecode, "decode");
+
+#ifdef MULE
+  defsymbol (&Qctext, "ctext");
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_SHIFT_JIS],
+            "shift-jis");
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_BIG5],
+            "big5");
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_UCS4],
+            "ucs-4");
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_UTF8],
+            "utf-8");
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_ISO_7],
+            "iso-7");
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_ISO_8_DESIGNATE],
+            "iso-8-designate");
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_ISO_8_1],
+            "iso-8-1");
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_ISO_8_2],
+            "iso-8-2");
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_ISO_LOCK_SHIFT],
+            "iso-lock-shift");
+#endif /* MULE */
+  defsymbol (&coding_category_symbol[CODING_CATEGORY_NO_CONVERSION],
+            "no-conversion");
+}
+
+void
+lstream_type_create_file_coding (void)
+{
+  LSTREAM_HAS_METHOD (decoding, reader);
+  LSTREAM_HAS_METHOD (decoding, writer);
+  LSTREAM_HAS_METHOD (decoding, rewinder);
+  LSTREAM_HAS_METHOD (decoding, seekable_p);
+  LSTREAM_HAS_METHOD (decoding, flusher);
+  LSTREAM_HAS_METHOD (decoding, closer);
+  LSTREAM_HAS_METHOD (decoding, marker);
+
+  LSTREAM_HAS_METHOD (encoding, reader);
+  LSTREAM_HAS_METHOD (encoding, writer);
+  LSTREAM_HAS_METHOD (encoding, rewinder);
+  LSTREAM_HAS_METHOD (encoding, seekable_p);
+  LSTREAM_HAS_METHOD (encoding, flusher);
+  LSTREAM_HAS_METHOD (encoding, closer);
+  LSTREAM_HAS_METHOD (encoding, marker);
+}
+
+void
+vars_of_file_coding (void)
+{
+  int i;
+
+  /* Initialize to something reasonable ... */
+  for (i = 0; i <= CODING_CATEGORY_LAST; i++)
+    {
+      coding_category_system[i] = Qnil;
+      coding_category_by_priority[i] = i;
+    }
+
+  Fprovide (intern ("file-coding"));
+
+  DEFVAR_LISP ("keyboard-coding-system", &Vkeyboard_coding_system /*
+Coding system used for TTY keyboard input.
+Not used under a windowing system.
+*/ );
+  Vkeyboard_coding_system = Qnil;
+
+  DEFVAR_LISP ("terminal-coding-system", &Vterminal_coding_system /*
+Coding system used for TTY display output.
+Not used under a windowing system.
+*/ );
+  Vterminal_coding_system = Qnil;
+
+  DEFVAR_LISP ("coding-system-for-read", &Vcoding_system_for_read /*
+Overriding coding system used when writing a file or process.
+You should *bind* this, not set it.  If this is non-nil, it specifies
+the coding system that will be used when a file or process is read
+in, and overrides `buffer-file-coding-system-for-read',
+`insert-file-contents-pre-hook', etc.  Use those variables instead of
+this one for permanent changes to the environment.
+*/ );
+  Vcoding_system_for_read = Qnil;
+
+  DEFVAR_LISP ("coding-system-for-write",
+               &Vcoding_system_for_write /*
+Overriding coding system used when writing a file or process.
+You should *bind* this, not set it.  If this is non-nil, it specifies
+the coding system that will be used when a file or process is wrote
+in, and overrides `buffer-file-coding-system',
+`write-region-pre-hook', etc.  Use those variables instead of this one
+for permanent changes to the environment.
+*/ );
+  Vcoding_system_for_write = Qnil;
+
+  DEFVAR_LISP ("file-name-coding-system", &Vfile_name_coding_system /*
+Coding system used to convert pathnames when accessing files.
+*/ );
+  Vfile_name_coding_system = Qnil;
+
+  DEFVAR_BOOL ("enable-multibyte-characters", &enable_multibyte_characters /*
+Non-nil means the buffer contents are regarded as multi-byte form
+of characters, not a binary code.  This affects the display, file I/O,
+and behaviors of various editing commands.
+
+Setting this to nil does not do anything.
+*/ );
+  enable_multibyte_characters = 1;
+}
+
+void
+complex_vars_of_file_coding (void)
+{
+  staticpro (&Vcoding_system_hash_table);
+  Vcoding_system_hash_table =
+    make_lisp_hash_table (50, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ);
+
+  the_codesys_prop_dynarr = Dynarr_new (codesys_prop);
+
+#define DEFINE_CODESYS_PROP(Prop_Type, Sym) do \
+{                                              \
+  struct codesys_prop csp;                     \
+  csp.sym = (Sym);                             \
+  csp.prop_type = (Prop_Type);                 \
+  Dynarr_add (the_codesys_prop_dynarr, csp);   \
+} while (0)
+
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ALL_OK,  Qmnemonic);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ALL_OK,  Qeol_type);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ALL_OK,  Qeol_cr);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ALL_OK,  Qeol_crlf);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ALL_OK,  Qeol_lf);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ALL_OK,  Qpost_read_conversion);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ALL_OK,  Qpre_write_conversion);
+#ifdef MULE
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qcharset_g0);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qcharset_g1);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qcharset_g2);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qcharset_g3);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qforce_g0_on_output);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qforce_g1_on_output);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qforce_g2_on_output);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qforce_g3_on_output);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qshort);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qno_ascii_eol);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qno_ascii_cntl);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qseven);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qlock_shift);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qno_iso6429);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qescape_quoted);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qinput_charset_conversion);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_ISO2022, Qoutput_charset_conversion);
+
+  DEFINE_CODESYS_PROP (CODESYS_PROP_CCL,     Qencode);
+  DEFINE_CODESYS_PROP (CODESYS_PROP_CCL,     Qdecode);
+#endif /* MULE */
+  /* Need to create this here or we're really screwed. */
+  Fmake_coding_system
+    (Qraw_text, Qno_conversion,
+     build_string ("Raw text, which means it converts only line-break-codes."),
+     list2 (Qmnemonic, build_string ("Raw")));
+
+  Fmake_coding_system
+    (Qbinary, Qno_conversion,
+     build_string ("Binary, which means it does not convert anything."),
+     list4 (Qeol_type, Qlf,
+           Qmnemonic, build_string ("Binary")));
+
+#ifdef UTF2000
+  Fmake_coding_system
+    (Qutf8, Qutf8,
+     build_string ("Coding-system of ISO/IEC 10646 UTF-8."),
+     list2 (Qmnemonic, build_string ("UTF8")));
+#endif
+
+  Fdefine_coding_system_alias (Qno_conversion, Qraw_text);
+
+  /* Need this for bootstrapping */
+  coding_category_system[CODING_CATEGORY_NO_CONVERSION] =
+    Fget_coding_system (Qraw_text);
+
+#ifdef UTF2000
+  coding_category_system[CODING_CATEGORY_UTF8]
+   = Fget_coding_system (Qutf8);
+#endif
+}
index 5b0fb72..ab7e16d 100644 (file)
@@ -223,7 +223,7 @@ x_output_toolbar_button (struct frame *f, Lisp_Object button)
            WINDOW_FACE_CACHEL (w, DEFAULT_INDEX);
          struct display_line dl;
          Lisp_Object string = IMAGE_INSTANCE_TEXT_STRING (p);
-         unsigned char charsets[NUM_LEADING_BYTES];
+         Charset_ID charsets[NUM_LEADING_BYTES];
          Emchar_dynarr *buf;
          struct font_metric_info fm;