summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--COPYING482
-rw-r--r--ChangeLog180
-rw-r--r--ChangeLog.pre-1-0180
-rw-r--r--ChangeLog.pre-1-10180
-rw-r--r--ChangeLog.pre-1-2180
-rw-r--r--ChangeLog.pre-1-4180
-rw-r--r--ChangeLog.pre-1-6180
-rw-r--r--ChangeLog.pre-1-8180
-rw-r--r--Makefile.am3
-rw-r--r--NEWS5
-rw-r--r--README29
-rw-r--r--TODO13
-rwxr-xr-xautogen.sh57
-rw-r--r--configure.in51
-rw-r--r--docs/.cvsignore4
-rw-r--r--docs/Makefile.am45
-rw-r--r--docs/TEXT/glossary49
-rw-r--r--docs/TEXT/modules42
-rw-r--r--docs/TEXT/questions19
-rw-r--r--docs/TEXT/western-design34
-rw-r--r--docs/pango-docs.sgml25
-rw-r--r--docs/pango-sections.txt83
-rw-r--r--docs/tmpl/engines.sgml248
-rw-r--r--docs/tmpl/fonts.sgml192
-rw-r--r--docs/tmpl/glyphs.sgml180
-rw-r--r--docs/tmpl/main.sgml229
-rw-r--r--docs/tmpl/pango-unused.sgml0
-rw-r--r--docs/tmpl/pango-x.sgml147
-rw-r--r--examples/.cvsignore6
-rw-r--r--examples/HELLO.utf839
-rw-r--r--examples/Makefile.am17
-rw-r--r--examples/muru.utf352
-rw-r--r--examples/pango.modules6
-rw-r--r--examples/viewer.c886
-rw-r--r--fonts/tscakaram.pcfbin0 -> 14204 bytes
-rw-r--r--modules/Makefile.am3
-rw-r--r--modules/basic/.cvsignore4
-rw-r--r--modules/basic/Makefile.am12
-rw-r--r--modules/basic/basic-x.c632
-rw-r--r--modules/basic/basic.c632
-rw-r--r--modules/basic/tables-big.i8072
-rw-r--r--modules/basic/tables-small.i194
-rw-r--r--modules/hangul/Makefile.am12
-rw-r--r--modules/hangul/hangul-x.c759
-rw-r--r--modules/hangul/hangul.c759
-rw-r--r--modules/hangul/tables-johabfont.i608
-rw-r--r--modules/hangul/tables-ksc5601.i708
-rw-r--r--modules/tamil/Makefile.am10
-rw-r--r--modules/tamil/taconv.c590
-rw-r--r--modules/tamil/taconv.h55
-rw-r--r--modules/tamil/tadefs.h132
-rw-r--r--modules/tamil/tamil-x.c226
-rw-r--r--modules/tamil/tamil.c226
-rw-r--r--pango/.cvsignore5
-rw-r--r--pango/Makefile.am31
-rw-r--r--pango/break.c66
-rw-r--r--pango/fonts.c167
-rw-r--r--pango/glyphstring.c106
-rw-r--r--pango/gunicode.h21
-rw-r--r--pango/itemize.c234
-rw-r--r--pango/mapping.c275
-rw-r--r--pango/modules.c409
-rw-r--r--pango/modules.h55
-rw-r--r--pango/pango.h339
-rw-r--r--pango/pangox.c757
-rw-r--r--pango/pangox.h100
-rw-r--r--pango/querymodules.c102
-rw-r--r--pango/reorder-items.c104
-rw-r--r--pango/shape.c48
-rw-r--r--pango/utils.c153
-rw-r--r--pango/utils.h34
-rw-r--r--tools/Makefile.am7
-rwxr-xr-xtools/add-copyright62
-rwxr-xr-xtools/compress-table.pl43
-rwxr-xr-xtools/make-table.sh16
-rw-r--r--tools/maps/README12
77 files changed, 21284 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 00000000..47df9450
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Owen Taylor <otaylor@redhat.com>
diff --git a/COPYING b/COPYING
new file mode 100644
index 00000000..bf50f20d
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,482 @@
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 00000000..8af0fd78
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,180 @@
+Wed Jan 12 16:49:03 2000 Owen Taylor <otaylor@redhat.com>
+
+ * Huge rename from GScript to Pango.
+
+ * modules/tamil/* examples/muru.utf fonts/tscakaram.pcf:
+
+ Tamil module from Sivaraj Doddannan <sivaraj@intelligroup.com>
+
+Mon Aug 2 18:32:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in: Check for libunicode.
+
+ * examples/viewer.c libgscript/break.c
+ libgscript/itemize.c modules/basic/basic.c:
+
+ Use libunicode functions for conversion.
+
+ * modules/basic/basic.c: Add support for
+ simple accent composition; fix bidi
+ swapping to correctly swap clusters
+ as a unit.
+
+1999-07-26 <otaylor@localhost.localdomain>
+
+ * libgscript/mapping.c (g_script_cp_to_x): Fix
+ buggy algorithm.
+
+1999-07-31 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/Makefile.am (EXTRA_DIST): Added tables-*.i
+ files.
+
+1999-07-29 Raja R Harinath <harinath@cs.umn.edu>
+
+ * modules/hangul/Makefile.am (INCLUDES): Use
+ -I$(top_srcdir)/libgscript.
+
+1999-07-30 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/*, Makefile.am, configure.in: Added the Hangul
+ shaping module.
+
+Wed Jul 28 14:45:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.4
+
+Wed Jul 28 14:43:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/reorder-items.c: Return NULL correctly.
+
+ * libgscript/mapping.c:
+ Fixed buggy algorithm for cp to x.
+ Fixed reversed interpolation for x to cp.
+
+Wed Jul 28 14:42:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Fix bugs
+
+Thu Jul 22 09:36:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.3
+
+Wed Jul 21 18:46:14 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_extents): Fix
+ same off-by-one bug here too...
+
+Wed Jul 21 18:44:55 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents): Fix
+ an off-by-one error in computing indexes into the
+ per-char information.
+
+Tue Jul 20 20:09:09 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/engines.sgml: First pass at documenting
+ engine interfaces.
+
+Tue Jul 20 16:10:48 1999 Owen Taylor <otaylor@redhat.com>
+
+ * **: Documentation improvements.
+
+Tue Jul 20 15:05:45 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/{basic.c,tables-{big,small}.i}:
+ Rewrote basic module to support subset fonts meaningfully.
+ This meant revising the algorithm used to look
+ up a font for each character independently.
+ Which required aggresive caching here and in the
+ font code to give half-way decent performance.
+
+ Added support for ISO-10646-1 fonts.
+
+ * libgscript/fonts.c (g_script_font_[get/set]_data): Add the
+ ability to add user data to a font.
+
+ * libgscript/gscriptx.[ch]: Add functions to allow:
+ - Querying all XLFD's matching a set of character
+ sets for a font.
+ - Loading a component font with a particular XLFD.
+ - Finding the range of present characters for a given XLFD.
+
+ Also added tons of caching.
+
+Wed Jul 14 19:11:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents):
+ Fixed min/max confusion.
+
+Mon Jul 12 17:14:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/TEXT/glossary (CFont): Expanded.
+
+ * libgscript/fonts.c (g_script_cfont_unref): Fixed
+ leak. (Pointed out by Raph)
+
+ * libgscript/gscriptx.c: Handle the case where
+ fontstruct->per_char == NULL.
+
+Sun Jul 11 23:44:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Made version 0.2
+
+ * **/Makefile.am: Fixes for srcdir != builddir
+
+Sun Jul 11 23:41:19 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/glyphs.sgml: SGML fix.
+
+Sun Jul 11 22:53:11 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Implemented g_script_cp_to_x()
+ and g_script_x_to_cp().
+
+ * examples/viewer.c: Added clicking on a character to
+ identify it as a test of the above.
+
+ * gscript/gscript.h gscript/gglyphstring.c modules/basic/basic.c:
+ Add another field into the GGlyphString which holds
+ a mapping from glyphs to logical clusters.
+
+ * libgscript/gscript.h (struct _GScriptLangRange):
+ Make it start-length like everything else, not
+ start-end.
+
+Sun Jul 11 00:18:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/gscript-x.sgml: Fix sgml error.
+
+Sat Jul 10 23:40:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/basic.c: Added ability to use
+ multibyte character sets. (Right now, they have
+ to be converted by iconv into EUC encoding, but
+ that can easily be extended).
+
+ Added simply CJK support. This really bloats and
+ slows down the module because the range-based
+ encoding we use to map characters onto character-sets
+ wasn't designed for CJK-style charsets. But it's
+ better than nothing for now.
+
+ * libgscript/reorder-items.c (reorder_items_recurse): Fix
+ bug with variable initialization.
+
+ * examples/viewer.c (draw): Compute line increments.
+
+ * libgscript/gscriptx.c (g_script_x_[glyph]_extents): Added
+ logical_ascent/descent parameters.
+
+ * examples/viewer.c: Commented
+
+Sat Jul 10 04:35:10 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in Makefile.am: automake'd and libtoolized.
+
+Sat Jul 10 00:00:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * It renders! Start a ChangeLog
+
diff --git a/ChangeLog.pre-1-0 b/ChangeLog.pre-1-0
new file mode 100644
index 00000000..8af0fd78
--- /dev/null
+++ b/ChangeLog.pre-1-0
@@ -0,0 +1,180 @@
+Wed Jan 12 16:49:03 2000 Owen Taylor <otaylor@redhat.com>
+
+ * Huge rename from GScript to Pango.
+
+ * modules/tamil/* examples/muru.utf fonts/tscakaram.pcf:
+
+ Tamil module from Sivaraj Doddannan <sivaraj@intelligroup.com>
+
+Mon Aug 2 18:32:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in: Check for libunicode.
+
+ * examples/viewer.c libgscript/break.c
+ libgscript/itemize.c modules/basic/basic.c:
+
+ Use libunicode functions for conversion.
+
+ * modules/basic/basic.c: Add support for
+ simple accent composition; fix bidi
+ swapping to correctly swap clusters
+ as a unit.
+
+1999-07-26 <otaylor@localhost.localdomain>
+
+ * libgscript/mapping.c (g_script_cp_to_x): Fix
+ buggy algorithm.
+
+1999-07-31 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/Makefile.am (EXTRA_DIST): Added tables-*.i
+ files.
+
+1999-07-29 Raja R Harinath <harinath@cs.umn.edu>
+
+ * modules/hangul/Makefile.am (INCLUDES): Use
+ -I$(top_srcdir)/libgscript.
+
+1999-07-30 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/*, Makefile.am, configure.in: Added the Hangul
+ shaping module.
+
+Wed Jul 28 14:45:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.4
+
+Wed Jul 28 14:43:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/reorder-items.c: Return NULL correctly.
+
+ * libgscript/mapping.c:
+ Fixed buggy algorithm for cp to x.
+ Fixed reversed interpolation for x to cp.
+
+Wed Jul 28 14:42:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Fix bugs
+
+Thu Jul 22 09:36:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.3
+
+Wed Jul 21 18:46:14 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_extents): Fix
+ same off-by-one bug here too...
+
+Wed Jul 21 18:44:55 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents): Fix
+ an off-by-one error in computing indexes into the
+ per-char information.
+
+Tue Jul 20 20:09:09 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/engines.sgml: First pass at documenting
+ engine interfaces.
+
+Tue Jul 20 16:10:48 1999 Owen Taylor <otaylor@redhat.com>
+
+ * **: Documentation improvements.
+
+Tue Jul 20 15:05:45 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/{basic.c,tables-{big,small}.i}:
+ Rewrote basic module to support subset fonts meaningfully.
+ This meant revising the algorithm used to look
+ up a font for each character independently.
+ Which required aggresive caching here and in the
+ font code to give half-way decent performance.
+
+ Added support for ISO-10646-1 fonts.
+
+ * libgscript/fonts.c (g_script_font_[get/set]_data): Add the
+ ability to add user data to a font.
+
+ * libgscript/gscriptx.[ch]: Add functions to allow:
+ - Querying all XLFD's matching a set of character
+ sets for a font.
+ - Loading a component font with a particular XLFD.
+ - Finding the range of present characters for a given XLFD.
+
+ Also added tons of caching.
+
+Wed Jul 14 19:11:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents):
+ Fixed min/max confusion.
+
+Mon Jul 12 17:14:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/TEXT/glossary (CFont): Expanded.
+
+ * libgscript/fonts.c (g_script_cfont_unref): Fixed
+ leak. (Pointed out by Raph)
+
+ * libgscript/gscriptx.c: Handle the case where
+ fontstruct->per_char == NULL.
+
+Sun Jul 11 23:44:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Made version 0.2
+
+ * **/Makefile.am: Fixes for srcdir != builddir
+
+Sun Jul 11 23:41:19 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/glyphs.sgml: SGML fix.
+
+Sun Jul 11 22:53:11 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Implemented g_script_cp_to_x()
+ and g_script_x_to_cp().
+
+ * examples/viewer.c: Added clicking on a character to
+ identify it as a test of the above.
+
+ * gscript/gscript.h gscript/gglyphstring.c modules/basic/basic.c:
+ Add another field into the GGlyphString which holds
+ a mapping from glyphs to logical clusters.
+
+ * libgscript/gscript.h (struct _GScriptLangRange):
+ Make it start-length like everything else, not
+ start-end.
+
+Sun Jul 11 00:18:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/gscript-x.sgml: Fix sgml error.
+
+Sat Jul 10 23:40:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/basic.c: Added ability to use
+ multibyte character sets. (Right now, they have
+ to be converted by iconv into EUC encoding, but
+ that can easily be extended).
+
+ Added simply CJK support. This really bloats and
+ slows down the module because the range-based
+ encoding we use to map characters onto character-sets
+ wasn't designed for CJK-style charsets. But it's
+ better than nothing for now.
+
+ * libgscript/reorder-items.c (reorder_items_recurse): Fix
+ bug with variable initialization.
+
+ * examples/viewer.c (draw): Compute line increments.
+
+ * libgscript/gscriptx.c (g_script_x_[glyph]_extents): Added
+ logical_ascent/descent parameters.
+
+ * examples/viewer.c: Commented
+
+Sat Jul 10 04:35:10 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in Makefile.am: automake'd and libtoolized.
+
+Sat Jul 10 00:00:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * It renders! Start a ChangeLog
+
diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10
new file mode 100644
index 00000000..8af0fd78
--- /dev/null
+++ b/ChangeLog.pre-1-10
@@ -0,0 +1,180 @@
+Wed Jan 12 16:49:03 2000 Owen Taylor <otaylor@redhat.com>
+
+ * Huge rename from GScript to Pango.
+
+ * modules/tamil/* examples/muru.utf fonts/tscakaram.pcf:
+
+ Tamil module from Sivaraj Doddannan <sivaraj@intelligroup.com>
+
+Mon Aug 2 18:32:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in: Check for libunicode.
+
+ * examples/viewer.c libgscript/break.c
+ libgscript/itemize.c modules/basic/basic.c:
+
+ Use libunicode functions for conversion.
+
+ * modules/basic/basic.c: Add support for
+ simple accent composition; fix bidi
+ swapping to correctly swap clusters
+ as a unit.
+
+1999-07-26 <otaylor@localhost.localdomain>
+
+ * libgscript/mapping.c (g_script_cp_to_x): Fix
+ buggy algorithm.
+
+1999-07-31 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/Makefile.am (EXTRA_DIST): Added tables-*.i
+ files.
+
+1999-07-29 Raja R Harinath <harinath@cs.umn.edu>
+
+ * modules/hangul/Makefile.am (INCLUDES): Use
+ -I$(top_srcdir)/libgscript.
+
+1999-07-30 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/*, Makefile.am, configure.in: Added the Hangul
+ shaping module.
+
+Wed Jul 28 14:45:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.4
+
+Wed Jul 28 14:43:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/reorder-items.c: Return NULL correctly.
+
+ * libgscript/mapping.c:
+ Fixed buggy algorithm for cp to x.
+ Fixed reversed interpolation for x to cp.
+
+Wed Jul 28 14:42:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Fix bugs
+
+Thu Jul 22 09:36:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.3
+
+Wed Jul 21 18:46:14 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_extents): Fix
+ same off-by-one bug here too...
+
+Wed Jul 21 18:44:55 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents): Fix
+ an off-by-one error in computing indexes into the
+ per-char information.
+
+Tue Jul 20 20:09:09 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/engines.sgml: First pass at documenting
+ engine interfaces.
+
+Tue Jul 20 16:10:48 1999 Owen Taylor <otaylor@redhat.com>
+
+ * **: Documentation improvements.
+
+Tue Jul 20 15:05:45 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/{basic.c,tables-{big,small}.i}:
+ Rewrote basic module to support subset fonts meaningfully.
+ This meant revising the algorithm used to look
+ up a font for each character independently.
+ Which required aggresive caching here and in the
+ font code to give half-way decent performance.
+
+ Added support for ISO-10646-1 fonts.
+
+ * libgscript/fonts.c (g_script_font_[get/set]_data): Add the
+ ability to add user data to a font.
+
+ * libgscript/gscriptx.[ch]: Add functions to allow:
+ - Querying all XLFD's matching a set of character
+ sets for a font.
+ - Loading a component font with a particular XLFD.
+ - Finding the range of present characters for a given XLFD.
+
+ Also added tons of caching.
+
+Wed Jul 14 19:11:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents):
+ Fixed min/max confusion.
+
+Mon Jul 12 17:14:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/TEXT/glossary (CFont): Expanded.
+
+ * libgscript/fonts.c (g_script_cfont_unref): Fixed
+ leak. (Pointed out by Raph)
+
+ * libgscript/gscriptx.c: Handle the case where
+ fontstruct->per_char == NULL.
+
+Sun Jul 11 23:44:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Made version 0.2
+
+ * **/Makefile.am: Fixes for srcdir != builddir
+
+Sun Jul 11 23:41:19 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/glyphs.sgml: SGML fix.
+
+Sun Jul 11 22:53:11 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Implemented g_script_cp_to_x()
+ and g_script_x_to_cp().
+
+ * examples/viewer.c: Added clicking on a character to
+ identify it as a test of the above.
+
+ * gscript/gscript.h gscript/gglyphstring.c modules/basic/basic.c:
+ Add another field into the GGlyphString which holds
+ a mapping from glyphs to logical clusters.
+
+ * libgscript/gscript.h (struct _GScriptLangRange):
+ Make it start-length like everything else, not
+ start-end.
+
+Sun Jul 11 00:18:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/gscript-x.sgml: Fix sgml error.
+
+Sat Jul 10 23:40:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/basic.c: Added ability to use
+ multibyte character sets. (Right now, they have
+ to be converted by iconv into EUC encoding, but
+ that can easily be extended).
+
+ Added simply CJK support. This really bloats and
+ slows down the module because the range-based
+ encoding we use to map characters onto character-sets
+ wasn't designed for CJK-style charsets. But it's
+ better than nothing for now.
+
+ * libgscript/reorder-items.c (reorder_items_recurse): Fix
+ bug with variable initialization.
+
+ * examples/viewer.c (draw): Compute line increments.
+
+ * libgscript/gscriptx.c (g_script_x_[glyph]_extents): Added
+ logical_ascent/descent parameters.
+
+ * examples/viewer.c: Commented
+
+Sat Jul 10 04:35:10 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in Makefile.am: automake'd and libtoolized.
+
+Sat Jul 10 00:00:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * It renders! Start a ChangeLog
+
diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2
new file mode 100644
index 00000000..8af0fd78
--- /dev/null
+++ b/ChangeLog.pre-1-2
@@ -0,0 +1,180 @@
+Wed Jan 12 16:49:03 2000 Owen Taylor <otaylor@redhat.com>
+
+ * Huge rename from GScript to Pango.
+
+ * modules/tamil/* examples/muru.utf fonts/tscakaram.pcf:
+
+ Tamil module from Sivaraj Doddannan <sivaraj@intelligroup.com>
+
+Mon Aug 2 18:32:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in: Check for libunicode.
+
+ * examples/viewer.c libgscript/break.c
+ libgscript/itemize.c modules/basic/basic.c:
+
+ Use libunicode functions for conversion.
+
+ * modules/basic/basic.c: Add support for
+ simple accent composition; fix bidi
+ swapping to correctly swap clusters
+ as a unit.
+
+1999-07-26 <otaylor@localhost.localdomain>
+
+ * libgscript/mapping.c (g_script_cp_to_x): Fix
+ buggy algorithm.
+
+1999-07-31 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/Makefile.am (EXTRA_DIST): Added tables-*.i
+ files.
+
+1999-07-29 Raja R Harinath <harinath@cs.umn.edu>
+
+ * modules/hangul/Makefile.am (INCLUDES): Use
+ -I$(top_srcdir)/libgscript.
+
+1999-07-30 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/*, Makefile.am, configure.in: Added the Hangul
+ shaping module.
+
+Wed Jul 28 14:45:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.4
+
+Wed Jul 28 14:43:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/reorder-items.c: Return NULL correctly.
+
+ * libgscript/mapping.c:
+ Fixed buggy algorithm for cp to x.
+ Fixed reversed interpolation for x to cp.
+
+Wed Jul 28 14:42:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Fix bugs
+
+Thu Jul 22 09:36:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.3
+
+Wed Jul 21 18:46:14 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_extents): Fix
+ same off-by-one bug here too...
+
+Wed Jul 21 18:44:55 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents): Fix
+ an off-by-one error in computing indexes into the
+ per-char information.
+
+Tue Jul 20 20:09:09 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/engines.sgml: First pass at documenting
+ engine interfaces.
+
+Tue Jul 20 16:10:48 1999 Owen Taylor <otaylor@redhat.com>
+
+ * **: Documentation improvements.
+
+Tue Jul 20 15:05:45 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/{basic.c,tables-{big,small}.i}:
+ Rewrote basic module to support subset fonts meaningfully.
+ This meant revising the algorithm used to look
+ up a font for each character independently.
+ Which required aggresive caching here and in the
+ font code to give half-way decent performance.
+
+ Added support for ISO-10646-1 fonts.
+
+ * libgscript/fonts.c (g_script_font_[get/set]_data): Add the
+ ability to add user data to a font.
+
+ * libgscript/gscriptx.[ch]: Add functions to allow:
+ - Querying all XLFD's matching a set of character
+ sets for a font.
+ - Loading a component font with a particular XLFD.
+ - Finding the range of present characters for a given XLFD.
+
+ Also added tons of caching.
+
+Wed Jul 14 19:11:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents):
+ Fixed min/max confusion.
+
+Mon Jul 12 17:14:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/TEXT/glossary (CFont): Expanded.
+
+ * libgscript/fonts.c (g_script_cfont_unref): Fixed
+ leak. (Pointed out by Raph)
+
+ * libgscript/gscriptx.c: Handle the case where
+ fontstruct->per_char == NULL.
+
+Sun Jul 11 23:44:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Made version 0.2
+
+ * **/Makefile.am: Fixes for srcdir != builddir
+
+Sun Jul 11 23:41:19 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/glyphs.sgml: SGML fix.
+
+Sun Jul 11 22:53:11 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Implemented g_script_cp_to_x()
+ and g_script_x_to_cp().
+
+ * examples/viewer.c: Added clicking on a character to
+ identify it as a test of the above.
+
+ * gscript/gscript.h gscript/gglyphstring.c modules/basic/basic.c:
+ Add another field into the GGlyphString which holds
+ a mapping from glyphs to logical clusters.
+
+ * libgscript/gscript.h (struct _GScriptLangRange):
+ Make it start-length like everything else, not
+ start-end.
+
+Sun Jul 11 00:18:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/gscript-x.sgml: Fix sgml error.
+
+Sat Jul 10 23:40:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/basic.c: Added ability to use
+ multibyte character sets. (Right now, they have
+ to be converted by iconv into EUC encoding, but
+ that can easily be extended).
+
+ Added simply CJK support. This really bloats and
+ slows down the module because the range-based
+ encoding we use to map characters onto character-sets
+ wasn't designed for CJK-style charsets. But it's
+ better than nothing for now.
+
+ * libgscript/reorder-items.c (reorder_items_recurse): Fix
+ bug with variable initialization.
+
+ * examples/viewer.c (draw): Compute line increments.
+
+ * libgscript/gscriptx.c (g_script_x_[glyph]_extents): Added
+ logical_ascent/descent parameters.
+
+ * examples/viewer.c: Commented
+
+Sat Jul 10 04:35:10 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in Makefile.am: automake'd and libtoolized.
+
+Sat Jul 10 00:00:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * It renders! Start a ChangeLog
+
diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4
new file mode 100644
index 00000000..8af0fd78
--- /dev/null
+++ b/ChangeLog.pre-1-4
@@ -0,0 +1,180 @@
+Wed Jan 12 16:49:03 2000 Owen Taylor <otaylor@redhat.com>
+
+ * Huge rename from GScript to Pango.
+
+ * modules/tamil/* examples/muru.utf fonts/tscakaram.pcf:
+
+ Tamil module from Sivaraj Doddannan <sivaraj@intelligroup.com>
+
+Mon Aug 2 18:32:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in: Check for libunicode.
+
+ * examples/viewer.c libgscript/break.c
+ libgscript/itemize.c modules/basic/basic.c:
+
+ Use libunicode functions for conversion.
+
+ * modules/basic/basic.c: Add support for
+ simple accent composition; fix bidi
+ swapping to correctly swap clusters
+ as a unit.
+
+1999-07-26 <otaylor@localhost.localdomain>
+
+ * libgscript/mapping.c (g_script_cp_to_x): Fix
+ buggy algorithm.
+
+1999-07-31 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/Makefile.am (EXTRA_DIST): Added tables-*.i
+ files.
+
+1999-07-29 Raja R Harinath <harinath@cs.umn.edu>
+
+ * modules/hangul/Makefile.am (INCLUDES): Use
+ -I$(top_srcdir)/libgscript.
+
+1999-07-30 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/*, Makefile.am, configure.in: Added the Hangul
+ shaping module.
+
+Wed Jul 28 14:45:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.4
+
+Wed Jul 28 14:43:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/reorder-items.c: Return NULL correctly.
+
+ * libgscript/mapping.c:
+ Fixed buggy algorithm for cp to x.
+ Fixed reversed interpolation for x to cp.
+
+Wed Jul 28 14:42:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Fix bugs
+
+Thu Jul 22 09:36:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.3
+
+Wed Jul 21 18:46:14 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_extents): Fix
+ same off-by-one bug here too...
+
+Wed Jul 21 18:44:55 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents): Fix
+ an off-by-one error in computing indexes into the
+ per-char information.
+
+Tue Jul 20 20:09:09 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/engines.sgml: First pass at documenting
+ engine interfaces.
+
+Tue Jul 20 16:10:48 1999 Owen Taylor <otaylor@redhat.com>
+
+ * **: Documentation improvements.
+
+Tue Jul 20 15:05:45 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/{basic.c,tables-{big,small}.i}:
+ Rewrote basic module to support subset fonts meaningfully.
+ This meant revising the algorithm used to look
+ up a font for each character independently.
+ Which required aggresive caching here and in the
+ font code to give half-way decent performance.
+
+ Added support for ISO-10646-1 fonts.
+
+ * libgscript/fonts.c (g_script_font_[get/set]_data): Add the
+ ability to add user data to a font.
+
+ * libgscript/gscriptx.[ch]: Add functions to allow:
+ - Querying all XLFD's matching a set of character
+ sets for a font.
+ - Loading a component font with a particular XLFD.
+ - Finding the range of present characters for a given XLFD.
+
+ Also added tons of caching.
+
+Wed Jul 14 19:11:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents):
+ Fixed min/max confusion.
+
+Mon Jul 12 17:14:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/TEXT/glossary (CFont): Expanded.
+
+ * libgscript/fonts.c (g_script_cfont_unref): Fixed
+ leak. (Pointed out by Raph)
+
+ * libgscript/gscriptx.c: Handle the case where
+ fontstruct->per_char == NULL.
+
+Sun Jul 11 23:44:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Made version 0.2
+
+ * **/Makefile.am: Fixes for srcdir != builddir
+
+Sun Jul 11 23:41:19 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/glyphs.sgml: SGML fix.
+
+Sun Jul 11 22:53:11 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Implemented g_script_cp_to_x()
+ and g_script_x_to_cp().
+
+ * examples/viewer.c: Added clicking on a character to
+ identify it as a test of the above.
+
+ * gscript/gscript.h gscript/gglyphstring.c modules/basic/basic.c:
+ Add another field into the GGlyphString which holds
+ a mapping from glyphs to logical clusters.
+
+ * libgscript/gscript.h (struct _GScriptLangRange):
+ Make it start-length like everything else, not
+ start-end.
+
+Sun Jul 11 00:18:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/gscript-x.sgml: Fix sgml error.
+
+Sat Jul 10 23:40:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/basic.c: Added ability to use
+ multibyte character sets. (Right now, they have
+ to be converted by iconv into EUC encoding, but
+ that can easily be extended).
+
+ Added simply CJK support. This really bloats and
+ slows down the module because the range-based
+ encoding we use to map characters onto character-sets
+ wasn't designed for CJK-style charsets. But it's
+ better than nothing for now.
+
+ * libgscript/reorder-items.c (reorder_items_recurse): Fix
+ bug with variable initialization.
+
+ * examples/viewer.c (draw): Compute line increments.
+
+ * libgscript/gscriptx.c (g_script_x_[glyph]_extents): Added
+ logical_ascent/descent parameters.
+
+ * examples/viewer.c: Commented
+
+Sat Jul 10 04:35:10 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in Makefile.am: automake'd and libtoolized.
+
+Sat Jul 10 00:00:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * It renders! Start a ChangeLog
+
diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6
new file mode 100644
index 00000000..8af0fd78
--- /dev/null
+++ b/ChangeLog.pre-1-6
@@ -0,0 +1,180 @@
+Wed Jan 12 16:49:03 2000 Owen Taylor <otaylor@redhat.com>
+
+ * Huge rename from GScript to Pango.
+
+ * modules/tamil/* examples/muru.utf fonts/tscakaram.pcf:
+
+ Tamil module from Sivaraj Doddannan <sivaraj@intelligroup.com>
+
+Mon Aug 2 18:32:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in: Check for libunicode.
+
+ * examples/viewer.c libgscript/break.c
+ libgscript/itemize.c modules/basic/basic.c:
+
+ Use libunicode functions for conversion.
+
+ * modules/basic/basic.c: Add support for
+ simple accent composition; fix bidi
+ swapping to correctly swap clusters
+ as a unit.
+
+1999-07-26 <otaylor@localhost.localdomain>
+
+ * libgscript/mapping.c (g_script_cp_to_x): Fix
+ buggy algorithm.
+
+1999-07-31 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/Makefile.am (EXTRA_DIST): Added tables-*.i
+ files.
+
+1999-07-29 Raja R Harinath <harinath@cs.umn.edu>
+
+ * modules/hangul/Makefile.am (INCLUDES): Use
+ -I$(top_srcdir)/libgscript.
+
+1999-07-30 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/*, Makefile.am, configure.in: Added the Hangul
+ shaping module.
+
+Wed Jul 28 14:45:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.4
+
+Wed Jul 28 14:43:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/reorder-items.c: Return NULL correctly.
+
+ * libgscript/mapping.c:
+ Fixed buggy algorithm for cp to x.
+ Fixed reversed interpolation for x to cp.
+
+Wed Jul 28 14:42:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Fix bugs
+
+Thu Jul 22 09:36:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.3
+
+Wed Jul 21 18:46:14 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_extents): Fix
+ same off-by-one bug here too...
+
+Wed Jul 21 18:44:55 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents): Fix
+ an off-by-one error in computing indexes into the
+ per-char information.
+
+Tue Jul 20 20:09:09 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/engines.sgml: First pass at documenting
+ engine interfaces.
+
+Tue Jul 20 16:10:48 1999 Owen Taylor <otaylor@redhat.com>
+
+ * **: Documentation improvements.
+
+Tue Jul 20 15:05:45 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/{basic.c,tables-{big,small}.i}:
+ Rewrote basic module to support subset fonts meaningfully.
+ This meant revising the algorithm used to look
+ up a font for each character independently.
+ Which required aggresive caching here and in the
+ font code to give half-way decent performance.
+
+ Added support for ISO-10646-1 fonts.
+
+ * libgscript/fonts.c (g_script_font_[get/set]_data): Add the
+ ability to add user data to a font.
+
+ * libgscript/gscriptx.[ch]: Add functions to allow:
+ - Querying all XLFD's matching a set of character
+ sets for a font.
+ - Loading a component font with a particular XLFD.
+ - Finding the range of present characters for a given XLFD.
+
+ Also added tons of caching.
+
+Wed Jul 14 19:11:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents):
+ Fixed min/max confusion.
+
+Mon Jul 12 17:14:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/TEXT/glossary (CFont): Expanded.
+
+ * libgscript/fonts.c (g_script_cfont_unref): Fixed
+ leak. (Pointed out by Raph)
+
+ * libgscript/gscriptx.c: Handle the case where
+ fontstruct->per_char == NULL.
+
+Sun Jul 11 23:44:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Made version 0.2
+
+ * **/Makefile.am: Fixes for srcdir != builddir
+
+Sun Jul 11 23:41:19 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/glyphs.sgml: SGML fix.
+
+Sun Jul 11 22:53:11 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Implemented g_script_cp_to_x()
+ and g_script_x_to_cp().
+
+ * examples/viewer.c: Added clicking on a character to
+ identify it as a test of the above.
+
+ * gscript/gscript.h gscript/gglyphstring.c modules/basic/basic.c:
+ Add another field into the GGlyphString which holds
+ a mapping from glyphs to logical clusters.
+
+ * libgscript/gscript.h (struct _GScriptLangRange):
+ Make it start-length like everything else, not
+ start-end.
+
+Sun Jul 11 00:18:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/gscript-x.sgml: Fix sgml error.
+
+Sat Jul 10 23:40:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/basic.c: Added ability to use
+ multibyte character sets. (Right now, they have
+ to be converted by iconv into EUC encoding, but
+ that can easily be extended).
+
+ Added simply CJK support. This really bloats and
+ slows down the module because the range-based
+ encoding we use to map characters onto character-sets
+ wasn't designed for CJK-style charsets. But it's
+ better than nothing for now.
+
+ * libgscript/reorder-items.c (reorder_items_recurse): Fix
+ bug with variable initialization.
+
+ * examples/viewer.c (draw): Compute line increments.
+
+ * libgscript/gscriptx.c (g_script_x_[glyph]_extents): Added
+ logical_ascent/descent parameters.
+
+ * examples/viewer.c: Commented
+
+Sat Jul 10 04:35:10 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in Makefile.am: automake'd and libtoolized.
+
+Sat Jul 10 00:00:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * It renders! Start a ChangeLog
+
diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8
new file mode 100644
index 00000000..8af0fd78
--- /dev/null
+++ b/ChangeLog.pre-1-8
@@ -0,0 +1,180 @@
+Wed Jan 12 16:49:03 2000 Owen Taylor <otaylor@redhat.com>
+
+ * Huge rename from GScript to Pango.
+
+ * modules/tamil/* examples/muru.utf fonts/tscakaram.pcf:
+
+ Tamil module from Sivaraj Doddannan <sivaraj@intelligroup.com>
+
+Mon Aug 2 18:32:59 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in: Check for libunicode.
+
+ * examples/viewer.c libgscript/break.c
+ libgscript/itemize.c modules/basic/basic.c:
+
+ Use libunicode functions for conversion.
+
+ * modules/basic/basic.c: Add support for
+ simple accent composition; fix bidi
+ swapping to correctly swap clusters
+ as a unit.
+
+1999-07-26 <otaylor@localhost.localdomain>
+
+ * libgscript/mapping.c (g_script_cp_to_x): Fix
+ buggy algorithm.
+
+1999-07-31 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/Makefile.am (EXTRA_DIST): Added tables-*.i
+ files.
+
+1999-07-29 Raja R Harinath <harinath@cs.umn.edu>
+
+ * modules/hangul/Makefile.am (INCLUDES): Use
+ -I$(top_srcdir)/libgscript.
+
+1999-07-30 Changwoo Ryu <cwryu@adam.kaist.ac.kr>
+
+ * modules/hangul/*, Makefile.am, configure.in: Added the Hangul
+ shaping module.
+
+Wed Jul 28 14:45:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.4
+
+Wed Jul 28 14:43:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/reorder-items.c: Return NULL correctly.
+
+ * libgscript/mapping.c:
+ Fixed buggy algorithm for cp to x.
+ Fixed reversed interpolation for x to cp.
+
+Wed Jul 28 14:42:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Fix bugs
+
+Thu Jul 22 09:36:08 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Released version 0.3
+
+Wed Jul 21 18:46:14 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_extents): Fix
+ same off-by-one bug here too...
+
+Wed Jul 21 18:44:55 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents): Fix
+ an off-by-one error in computing indexes into the
+ per-char information.
+
+Tue Jul 20 20:09:09 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/engines.sgml: First pass at documenting
+ engine interfaces.
+
+Tue Jul 20 16:10:48 1999 Owen Taylor <otaylor@redhat.com>
+
+ * **: Documentation improvements.
+
+Tue Jul 20 15:05:45 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/{basic.c,tables-{big,small}.i}:
+ Rewrote basic module to support subset fonts meaningfully.
+ This meant revising the algorithm used to look
+ up a font for each character independently.
+ Which required aggresive caching here and in the
+ font code to give half-way decent performance.
+
+ Added support for ISO-10646-1 fonts.
+
+ * libgscript/fonts.c (g_script_font_[get/set]_data): Add the
+ ability to add user data to a font.
+
+ * libgscript/gscriptx.[ch]: Add functions to allow:
+ - Querying all XLFD's matching a set of character
+ sets for a font.
+ - Loading a component font with a particular XLFD.
+ - Finding the range of present characters for a given XLFD.
+
+ Also added tons of caching.
+
+Wed Jul 14 19:11:41 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/gscriptx.c (g_script_x_glyph_extents):
+ Fixed min/max confusion.
+
+Mon Jul 12 17:14:53 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/TEXT/glossary (CFont): Expanded.
+
+ * libgscript/fonts.c (g_script_cfont_unref): Fixed
+ leak. (Pointed out by Raph)
+
+ * libgscript/gscriptx.c: Handle the case where
+ fontstruct->per_char == NULL.
+
+Sun Jul 11 23:44:42 1999 Owen Taylor <otaylor@redhat.com>
+
+ * Made version 0.2
+
+ * **/Makefile.am: Fixes for srcdir != builddir
+
+Sun Jul 11 23:41:19 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/glyphs.sgml: SGML fix.
+
+Sun Jul 11 22:53:11 1999 Owen Taylor <otaylor@redhat.com>
+
+ * libgscript/mapping.c: Implemented g_script_cp_to_x()
+ and g_script_x_to_cp().
+
+ * examples/viewer.c: Added clicking on a character to
+ identify it as a test of the above.
+
+ * gscript/gscript.h gscript/gglyphstring.c modules/basic/basic.c:
+ Add another field into the GGlyphString which holds
+ a mapping from glyphs to logical clusters.
+
+ * libgscript/gscript.h (struct _GScriptLangRange):
+ Make it start-length like everything else, not
+ start-end.
+
+Sun Jul 11 00:18:56 1999 Owen Taylor <otaylor@redhat.com>
+
+ * docs/tmpl/gscript-x.sgml: Fix sgml error.
+
+Sat Jul 10 23:40:40 1999 Owen Taylor <otaylor@redhat.com>
+
+ * modules/basic/basic.c: Added ability to use
+ multibyte character sets. (Right now, they have
+ to be converted by iconv into EUC encoding, but
+ that can easily be extended).
+
+ Added simply CJK support. This really bloats and
+ slows down the module because the range-based
+ encoding we use to map characters onto character-sets
+ wasn't designed for CJK-style charsets. But it's
+ better than nothing for now.
+
+ * libgscript/reorder-items.c (reorder_items_recurse): Fix
+ bug with variable initialization.
+
+ * examples/viewer.c (draw): Compute line increments.
+
+ * libgscript/gscriptx.c (g_script_x_[glyph]_extents): Added
+ logical_ascent/descent parameters.
+
+ * examples/viewer.c: Commented
+
+Sat Jul 10 04:35:10 1999 Owen Taylor <otaylor@redhat.com>
+
+ * configure.in Makefile.am: automake'd and libtoolized.
+
+Sat Jul 10 00:00:00 1999 Owen Taylor <otaylor@redhat.com>
+
+ * It renders! Start a ChangeLog
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 00000000..048ef5fc
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,3 @@
+## Process this file with automake to create Makefile.in.
+
+SUBDIRS=libpango modules examples docs tools \ No newline at end of file
diff --git a/NEWS b/NEWS
new file mode 100644
index 00000000..da0b8973
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,5 @@
+What is new in GScript 0.1:
+
+ - Initial release
+
+
diff --git a/README b/README
new file mode 100644
index 00000000..165ad46f
--- /dev/null
+++ b/README
@@ -0,0 +1,29 @@
+This directory includes the Pango library, several
+examples, and a couple of basic language engines.
+
+For more information about Pango, see:
+
+ http://www.labs.redhat.com/~otaylor/pango/index.html
+
+Requirements
+============
+
+You'll need Dov Grobfeld's FriBidi library. This
+is available frmo:
+
+ http://imagic.weizmann.ac.il/~dov/freesw/FriBidi/
+
+You'll also need a fairly capable implementation
+of iconv() - for instance the iconv from the
+GNU C library version 2.1
+
+License
+=======
+
+Pango is licensed under the terms of the
+GNU Lesser Public License (LGPL) - see the file
+COPYING for details.
+
+Owen Taylor
+otaylor@redhat.com
+9 July 1999 \ No newline at end of file
diff --git a/TODO b/TODO
new file mode 100644
index 00000000..0cf40ca2
--- /dev/null
+++ b/TODO
@@ -0,0 +1,13 @@
+* Return error codes from all functions. Possible errors include
+ - Invalid string
+ - Font does not match
+
+* Allow UTF8 strings with embedded NULLs.
+
+* Write a small default shaping engine that only
+ draws a placeholder character ... and does that in
+ a way that always works.
+
+* Convert over from utils.c to Tom Tromey's libunicode.
+
+* Add accent composition to basic engine. \ No newline at end of file
diff --git a/autogen.sh b/autogen.sh
new file mode 100755
index 00000000..0e8f76c4
--- /dev/null
+++ b/autogen.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+PROJECT=PanGo
+TEST_TYPE=-f
+FILE=libpango/pango.h
+
+DIE=0
+
+(autoconf --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "You must have autoconf installed to compile $PROJECT."
+ echo "Download the appropriate package for your distribution,"
+ echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+ DIE=1
+}
+
+(automake --version) < /dev/null > /dev/null 2>&1 || {
+ echo
+ echo "You must have automake installed to compile $PROJECT."
+ echo "Get ftp://sourceware.cygnus.com/pub/automake/automake-1.4.tar.gz"
+ echo "(or a newer version if it is available)"
+ DIE=1
+}
+
+if test "$DIE" -eq 1; then
+ exit 1
+fi
+
+test $TEST_TYPE $FILE || {
+ echo "You must run this script in the top-level $PROJECT directory"
+ exit 1
+}
+
+if test -z "$*"; then
+ echo "I am going to run ./configure with no arguments - if you wish "
+ echo "to pass any to it, please specify them on the $0 command line."
+fi
+
+aclocal $ACLOCAL_FLAGS
+
+# optionally run autoheader
+(autoheader --version) < /dev/null > /dev/null 2>&1 && autoheader
+
+automake -a $am_opt
+autoconf
+cd $ORIGDIR
+
+$srcdir/configure --enable-maintainer-mode "$@"
+
+echo
+echo "Now type 'make' to compile $PROJECT."
diff --git a/configure.in b/configure.in
new file mode 100644
index 00000000..2737485f
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,51 @@
+dnl Process this file with autoconf to create configure.
+
+AC_INIT(ChangeLog)
+AM_INIT_AUTOMAKE(pango, 0.5)
+
+AM_CONFIG_HEADER(config.h)
+
+AC_PROG_CC
+AM_PROG_LIBTOOL
+
+changequote(,)dnl
+if test "x$GCC" = "xyes"; then
+ case " $CFLAGS " in
+ *[\ \ ]-Wall[\ \ ]*) ;;
+ *) CFLAGS="$CFLAGS -Wall" ;;
+ esac
+fi
+changequote([,])dnl
+
+AM_PATH_GTK(1.2.0,
+ [CFLAGS="$GTK_CFLAGS $CFLAGS"],
+ AC_MSG_ERROR(pango requires GTK+ 1.2 or better))
+
+AC_CHECK_LIB(fribidi, fribidi_map_range, :,
+ AC_MSG_ERROR([*** libfribidi not found.]))
+
+AC_PATH_PROG(UNICODE_CONFIG, unicode-config, no)
+if test x$UNICODE_CONFIG = xno ; then
+ AC_MSG_ERROR([*** unicode-config not found])
+fi
+CFLAGS="$CFLAGS `unicode-config --cflags`"
+UNICODE_LIBS="`unicode-config --libs`"
+AC_SUBST(UNICODE_LIBS)
+
+AC_CHECK_LIB(unicode, unicode_type, :,
+ AC_MSG_ERROR([*** libunicode not found.]))
+
+AC_CHECK_PROG(gtkdoc, gtkdoc-scan, yes, no)
+AM_CONDITIONAL(HAVE_GTK_DOC, test x$gtkdoc = xyes)
+
+AC_OUTPUT([
+Makefile
+libpango/Makefile
+modules/Makefile
+modules/basic/Makefile
+modules/hangul/Makefile
+modules/tamil/Makefile
+examples/Makefile
+docs/Makefile
+tools/Makefile
+])
diff --git a/docs/.cvsignore b/docs/.cvsignore
new file mode 100644
index 00000000..569dc9d8
--- /dev/null
+++ b/docs/.cvsignore
@@ -0,0 +1,4 @@
+sgml
+html
+gscript-decl-list.txt
+gscript-decl.txt
diff --git a/docs/Makefile.am b/docs/Makefile.am
new file mode 100644
index 00000000..255916d5
--- /dev/null
+++ b/docs/Makefile.am
@@ -0,0 +1,45 @@
+## Process this file with automake to create Makefile.in.
+
+if HAVE_GTK_DOC
+
+# The name of the module.
+DOC_MODULE=pango
+
+# The top-level SGML file.
+DOC_MAIN_SGML_FILE=pango-docs.sgml
+
+INCLUDE_DIR=../libpango
+SOURCE_DIR=../libpango
+
+scan:
+ gtkdoc-scan --module=$(DOC_MODULE) $(INCLUDE_DIR)/pango*.h
+
+templates: scan
+ gtkdoc-mktmpl --module=$(DOC_MODULE)
+
+sgml:
+ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(SOURCE_DIR)
+
+html:
+ if ! test -d html ; then mkdir html ; fi
+ -cd html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+
+clean-local:
+ rm -f *~ *.bak *.hierarchy *.signals *.args *-unused.txt
+
+maintainer-clean-local: clean
+ rm -rf sgml html $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+.PHONY: scan sgml html templates
+
+endif
+
+EXTRA_DIST=pango-sections.txt pango-docs.sgml
+
+dist-hook:
+ mkdir $(distdir)/tmpl
+ cp -p $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+ mkdir $(distdir)/TEXT
+ for i in $(srcdir)/TEXT/* ; do \
+ test -f $$i && cp -p $$i $(distdir)/TEXT ;\
+ done
diff --git a/docs/TEXT/glossary b/docs/TEXT/glossary
new file mode 100644
index 00000000..aa1d1f58
--- /dev/null
+++ b/docs/TEXT/glossary
@@ -0,0 +1,49 @@
+CFont: A font component. This is a rendering-specific entity
+ which is paired with a glyph index to uniquely indentify
+ a glyph. Each abstract Font maps to one or more CFonts;
+ the method for obtaining CFonts from Fonts is also
+ rendering system specific.
+
+Cluster: A cluster is a small portion of text that is rendered
+ as typographically intertwined glyphs.
+
+ A number of properties are associated with clusters
+ and cluster boundaries.
+
+ 1) Clusters are the smallest unit of text that is guaranteed to
+ progress in reading order. Within a cluster, reordering
+ of glyphs may occur.
+
+ 2) At the boundaries of clusters, character boundaries
+ and glyph boundaries are guaranteed to coincide.
+
+ 3) There will be a cursor position between every two clusters.
+ There may not be a cursor position at some positions
+ inside a cluster.
+
+ 4) The cluster boundary is the only place where information
+ about the correspondence between character position
+ and screen position is conveyed from the shape-engine
+ to the layers above.
+
+Engine: A script-specific object that is responsible for
+ converting Unicode text into glyphs or resolving
+ the properties of the text. Engines may be
+ rendering-system specific or independent of rendering
+ system.
+
+Font: An abstract font. The method in which a font is
+ created is dependent on the rendering system.
+
+Item: An item is a portion of text in a single script, handled
+ by a single shaping engine, and with a single directional
+ level. g_script_itemize() returns a list of items.
+
+Module: A dynamically loaded shared object containing one
+ or more Engines.
+
+Range: A subportion of an item. You pass a range into
+ g_script_shape() by passing in the analysis structure
+ for the item and some subportion of the text.
+
+
diff --git a/docs/TEXT/modules b/docs/TEXT/modules
new file mode 100644
index 00000000..5e250bc8
--- /dev/null
+++ b/docs/TEXT/modules
@@ -0,0 +1,42 @@
+General points
+==============
+
+One global entry point for each module:
+
+g_i18n_list_functions()
+
+ function : language : vtable
+
+
+Tool:
+
+ gi18n-updatedb
+
+Input Method Module
+===================
+
+ Functions:
+
+ Callbacks:
+
+ Set the status area contents
+ Set the preedit string contents
+ Position the caret
+ Begin preediting
+ End preediting
+
+Shaping Module
+=============
+
+ Segment input text
+ Turn characters into glyphs
+ Provide line-break information
+
+
+Output Modules
+==============
+
+ Position/justify glyphs
+
+
+
diff --git a/docs/TEXT/questions b/docs/TEXT/questions
new file mode 100644
index 00000000..a74b8649
--- /dev/null
+++ b/docs/TEXT/questions
@@ -0,0 +1,19 @@
+- Is it worth splitting off display-font independent stuff
+ from display dependent stuff. How do we do that?
+
+- Can we abandon XIM? Can we support XIM in backwards-compatibility
+ mode? Just in RootWindow mode?
+
+- Are input methods windowing system independent? What do
+ we gain/lose?
+
+- Do we need to worry about glyph changes at line breaks?
+
+- Do we ever need to break clusters on line breaks?
+
+- Do input methods need attributed strings for displaying
+ feedback? If so, do we build such support into GDK?
+ Into GTK+?
+
+- How do we index positions in a string
+ (By character? By byte?)
diff --git a/docs/TEXT/western-design b/docs/TEXT/western-design
new file mode 100644
index 00000000..57c81dba
--- /dev/null
+++ b/docs/TEXT/western-design
@@ -0,0 +1,34 @@
+Issues that this engine needs to handle:
+
+ - Picking the right character based on language/character
+ - Composition of combining diacriticals - should use precomposed
+ diacriticals when possible
+ - Finding word/line/breaks
+
+For each sequence of character + combining marks
+
+ - Find combined representations from most combined to least combined.
+ - If there are particular characters for this combination, use
+ them, otherwise
+
+==========
+
+Ligature table per font.
+Pick fonts in order of preference according to LANG
+
+Characterstics of western/basic:
+
+ Consistent LTR
+ No reordering
+ Many characters => one glyph
+ Character/Word/Line breaking dependent only on character properties
+
+Issues
+
+ Accent placement for Greek, Vietnamese
+ How do we handle a case where lang == en_US, we have a glyph
+ combination with a combined form in iso-8859-2 but not
+ in iso-8859-1?
+
+
+
diff --git a/docs/pango-docs.sgml b/docs/pango-docs.sgml
new file mode 100644
index 00000000..dfa790c9
--- /dev/null
+++ b/docs/pango-docs.sgml
@@ -0,0 +1,25 @@
+<!doctype book PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [
+<!entity pango-main SYSTEM "sgml/main.sgml">
+<!entity pango-glyphs SYSTEM "sgml/glyphs.sgml">
+<!entity pango-fonts SYSTEM "sgml/fonts.sgml">
+<!entity pango-engines SYSTEM "sgml/engines.sgml">
+<!entity pango-x SYSTEM "sgml/pango-x.sgml">
+]>
+<book>
+ <bookinfo>
+ <title>Pango Reference Manual</title>
+ </bookinfo>
+
+ <chapter id="pango">
+ <title>Basic Pango Interfaces</title>
+ &pango-main;
+ &pango-glyphs;
+ &pango-fonts;
+ &pango-engines;
+ </chapter>
+
+ <chapter id="pango-x">
+ <title>Rendering under X with Pango</title>
+ &pango-x;
+ </chapter>
+</book> \ No newline at end of file
diff --git a/docs/pango-sections.txt b/docs/pango-sections.txt
new file mode 100644
index 00000000..f4e41f2f
--- /dev/null
+++ b/docs/pango-sections.txt
@@ -0,0 +1,83 @@
+<SECTION>
+<TITLE>Text Processing</TITLE>
+<FILE>main</FILE>
+<SUBSECTION>
+pango_itemize
+PangoContext
+PangoItem
+PangoAnalysis
+PangoLangRange
+pango_reorder_items
+<SUBSECTION>
+pango_break
+PangoLogAttr
+<SUBSECTION>
+pango_shape
+pango_justify
+<SUBSECTION>
+pango_cp_to_x
+pango_x_to_cp
+</SECTION>
+
+<SECTION>
+<TITLE>Glyph Storage</TITLE>
+<FILE>glyphs</FILE>
+PangoGlyph
+PangoGlyphIndex
+PangoGlyphGeometry
+PangoGlyphUnit
+PangoGlyphVisAttr
+PangoGlyphString
+pango_glyph_string_new
+pango_glyph_string_set_size
+pango_glyph_string_free
+</SECTION>
+
+<SECTION>
+<TITLE>Fonts</TITLE>
+<FILE>fonts</FILE>
+PangoFont
+PangoFontClass
+pango_font_init
+pango_font_ref
+pango_font_unref
+pango_font_get_data
+pango_font_set_data
+PangoCFont
+PangoCFontClass
+pango_cfont_init
+pango_cfont_ref
+pango_cfont_unref
+</SECTION>
+
+<SECTION>
+<TITLE>Engines</TITLE>
+<FILE>engines</FILE>
+PangoEngineInfo
+PangoEngineRange
+PangoEngine
+PangoEngineLang
+PangoEngineShape
+PANGO_ENGINE_TYPE_LANG
+PANGO_ENGINE_TYPE_SHAPE
+PANGO_RENDER_TYPE_NONE
+script_engine_list
+script_engine_load
+script_engine_unload
+</SECTION>
+
+<SECTION>
+<FILE>pango-x</FILE>
+<TITLE>X Rendering</TITLE>
+PANGO_RENDER_TYPE_X
+PangoXCFont
+pango_x_load_font
+pango_x_render
+pango_x_extents
+pango_x_glyph_extents
+pango_x_find_cfont
+pango_x_list_cfonts
+pango_x_load_xlfd
+pango_x_xlfd_get_ranges
+</SECTION>
+
diff --git a/docs/tmpl/engines.sgml b/docs/tmpl/engines.sgml
new file mode 100644
index 00000000..17402dfd
--- /dev/null
+++ b/docs/tmpl/engines.sgml
@@ -0,0 +1,248 @@
+<!-- ##### SECTION Title ##### -->
+Engines
+
+<!-- ##### SECTION Short_Description ##### -->
+Modules to do language-specific and rendering-system-specific
+processing.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Pango utilizes a module architecture in which
+the language-specific and render-system-specific
+components are provided by loadable modules. Each
+loadable module supplies one or more
+<firstterm>engines</firstterm>.
+Each <firstterm>engine</firstterm> has an associated
+<firstterm>engine type</firstterm> and
+<firstterm>render type</firstterm>. These two
+types are represented by strings.
+</para>
+<para>
+Each dynamically-loaded module exports several
+functions which provide the public API. These
+functions are script_engine_list(),
+script_engine_load() and script_engine_unload().
+The latter two functions are used for loading
+and unloading modules, while the first function
+is used when building a catalog of all available
+modules.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### STRUCT PangoEngineInfo ##### -->
+<para>
+The #PangoEngineInfo structure contains
+information about a particular engine. It
+contains the following fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>gchar *id;</entry>
+<entry>a unique string ID for the engine.</entry>
+</row>
+<row>
+<entry>gchar *engine_type;</entry>
+<entry>a string identifying the engine type.</entry>
+</row>
+
+<row>
+<entry>gchar *render type;</entry>
+<entry>a string identifying the render type.</entry>
+</row>
+
+<row>
+<entry>#PangoEngineRange *ranges;</entry>
+<entry>a pointer to an array of #PangoEngineRange
+ structures. Each structure contains information
+ about a range of Unicode code points that
+ this engine handles.</entry>
+</row>
+
+<row>
+<entry>gint n_ranges;</entry>
+<entry>the number of elements in <structfield>ranges</structfield>.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+<!-- ##### STRUCT PangoEngineRange ##### -->
+<para>
+The PangoEngineRange structure contains
+information about a range of Unicode code
+points. It contains the following fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>guint32 start;</entry>
+<entry>the first code point in the range.</entry>
+</row>
+
+<row>
+<entry>guint32 end;</entry>
+<entry>the last code point for the range.</entry>
+</row>
+
+<row>
+<entry>gchar *langs;</entry>
+<entry>A semicolon separated list of languages that this
+ engine handles for this range. This may be empty,
+ in which case the engine is saying that it is a
+ fallback choice for all languages for this range,
+ but should not be used if another engine provides
+ indicates that it is specific for the language for
+ a given code point. A entry in this list of "*"
+ indicates that this engine is specific to all
+ languages for this range.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+<!-- ##### STRUCT PangoEngine ##### -->
+<para>
+The #PangoEngine structure contains basic
+information common to all script engines. It
+contains the following fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>gchar *id;</entry>
+<entry>a unique string ID for this language engine.</entry>
+</row>
+
+<row>
+<entry>gchar *type;</entry>
+<entry>The "type" of the engine. (Is this engine type or render type??).</entry>
+</row>
+
+<row>
+<entry>gint length;</entry>
+<entry>the length of the entire structure in bytes. This is
+ provided so that new functions can be added at the
+ end of subtypes of #PangoEngine without breaking
+ older modules.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+<!-- ##### STRUCT PangoEngineLang ##### -->
+<para>
+The #PangoEngineLang structure extents the
+basic #PangoEngine structure to engines that
+deal with the rendering-system independent part
+of of the rendering pipeline. It contains the following fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>#PangoEngine engine;</entry>
+<entry>A nested structure containing basic engine data.</entry>
+</row>
+
+<row>
+<entry>void (*script_break) (...);</entry>
+<entry>A function that provides an implementation
+ for pango_break().</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+<!-- ##### STRUCT PangoEngineShape ##### -->
+<para>
+The #PangoEngineShape structure extents the
+basic #PangoEngine structure to engines that
+deal with the rendering-system dependent part
+of of the rendering pipeline. It contains the following fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>#PangoEngine engine;</entry>
+<entry>A nested structure containing basic engine data.</entry>
+</row>
+
+<row>
+<entry> void (*script_shape) (...);</entry>
+<entry>A function that provides an implementation
+ for pango_shape.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### MACRO PANGO_ENGINE_TYPE_LANG ##### -->
+<para>
+A string constant defining the engine type
+for <firstterm>language engines</firstterm>.
+These engines have a engine structure of
+type #PangoEngineLang.
+</para>
+
+
+
+<!-- ##### MACRO PANGO_ENGINE_TYPE_SHAPE ##### -->
+<para>
+A string constant defining the engine type
+for <firstterm>shaping engines</firstterm>.
+These engines have a engine structure of
+type #PangoEngineShape.
+</para>
+
+<!-- ##### MACRO PANGO_RENDER_TYPE_NONE ##### -->
+<para>
+A string constant defining the render type
+for engines that are not rendering-system
+specific.
+</para>
+
+<!-- ##### FUNCTION script_engine_list ##### -->
+<para>
+Function to be provided by a module to list
+the engines that the module supplies.
+</para>
+
+@engines: location to store a pointer to an array of engines.
+@n_engines: location to store the number of elements in @engines.
+
+
+<!-- ##### FUNCTION script_engine_load ##### -->
+<para>
+Function to be provided by a module to load
+a particular engine.
+</para>
+
+@id: the ID from the #ScriptEngineInfo structure of the
+ module to load.
+@Returns: the newly created script engine.
+
+
+<!-- ##### FUNCTION script_engine_unload ##### -->
+<para>
+Function to be provided by a module to unload
+an engine.
+</para>
+
+@engine: the engine to unload.
+
+
diff --git a/docs/tmpl/fonts.sgml b/docs/tmpl/fonts.sgml
new file mode 100644
index 00000000..70592fed
--- /dev/null
+++ b/docs/tmpl/fonts.sgml
@@ -0,0 +1,192 @@
+<!-- ##### SECTION Title ##### -->
+Fonts
+
+<!-- ##### SECTION Short_Description ##### -->
+Structures representing abstract fonts.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Pango supports a flexible architecture where a
+particular rendering architecture can supply an
+implementation of fonts. The #PangoFont and
+#PangoCFont structures represent an abstract
+rendering-system-indepent font, and a
+<firstterm>component</firstterm> of such a font,
+respectively.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### STRUCT PangoFont ##### -->
+<para>
+The #PangoFont structure is used to represent
+a font in a rendering-system-independent matter.
+To create an implementation of a #PangoFont,
+the rendering-system specific code should malloc
+a larger structure that contains a nested
+#PangoFont, fill in the klass member of
+the nested #PangoFont with a pointer to
+a appropriate #PangoFontClass, then call
+pango_font_init() on the structure.
+</para>
+<para>
+The #PangoFont structure contains one member
+that may be accessed by derived classes:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>#PangoFontClass *klass;</entry>
+<entry>a pointer to the <firstterm>class structure</firstterm>
+ for this font.</entry>
+</row>
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### STRUCT PangoFontClass ##### -->
+<para>
+The PangoFontClass structure contains the virtual
+functions for an implementation of a a PangoFont.
+
+It contains the following member:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>void (*destroy) (#PangoFont *font);</entry>
+<entry>a function to free the font structure and associated resources.</entry>
+</row>
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### FUNCTION pango_font_init ##### -->
+<para>
+
+</para>
+
+@font:
+
+
+<!-- ##### FUNCTION pango_font_ref ##### -->
+<para>
+
+</para>
+
+@font:
+
+
+<!-- ##### FUNCTION pango_font_unref ##### -->
+<para>
+
+</para>
+
+@font:
+
+
+<!-- ##### FUNCTION pango_font_get_data ##### -->
+<para>
+
+</para>
+
+@font:
+@key:
+@Returns:
+
+
+<!-- ##### FUNCTION pango_font_set_data ##### -->
+<para>
+
+</para>
+
+@font:
+@key:
+@data:
+@destroy_func:
+
+
+<!-- ##### STRUCT PangoCFont ##### -->
+<para>
+The #PangoCFont structure is used to represent a single componenent
+of a font n a rendering-system-independent matter. A component of a
+font is an opaque object that makes sense only to the rendering
+system. A glyph (the #PangoGlyph structure) is stored as a #PangoCFont
+and a numeric glyph index.
+</para>
+<para>
+To create an implementation of a #PangoCFont,
+the rendering-system specific code should malloc
+a larger structure that contains a nested
+#PangoCFont, fill in the klass member of
+the nested #PangoCFont with a pointer to
+a appropriate #PangoCFontClass, then call
+pango_cfont_init() on the structure.
+</para>
+<para>
+The #PangoCFont structure contains one member
+that may be accessed by derived classes:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>#PangoCFontClass *klass;</entry>
+<entry>a pointer to the <firstterm>class structure</firstterm>
+ for this font.</entry>
+</row>
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### STRUCT PangoCFontClass ##### -->
+<para>
+The PangoCFontClass structure contains the virtual
+functions for an implementation of a a PangoCFont.
+
+It contains the following member:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>void (*destroy) (#PangoFont *font);</entry>
+<entry>a function to free the font structure and associated resources.</entry>
+</row>
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### FUNCTION pango_cfont_init ##### -->
+<para>
+
+</para>
+
+@font:
+
+
+<!-- ##### FUNCTION pango_cfont_ref ##### -->
+<para>
+
+</para>
+
+@font:
+
+
+<!-- ##### FUNCTION pango_cfont_unref ##### -->
+<para>
+
+</para>
+
+@font:
+
+
diff --git a/docs/tmpl/glyphs.sgml b/docs/tmpl/glyphs.sgml
new file mode 100644
index 00000000..a764f2ef
--- /dev/null
+++ b/docs/tmpl/glyphs.sgml
@@ -0,0 +1,180 @@
+<!-- ##### SECTION Title ##### -->
+Glyph Storage
+
+<!-- ##### SECTION Short_Description ##### -->
+Structures for storing information about glyphs.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+pango_shape() produces a string of glyphs which
+can be measured or drawn to the screen. The following
+structures are used to store information about
+glyphs.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### STRUCT PangoGlyph ##### -->
+<para>
+The #PangoGlyph structure represents a single glyph in the output
+form of a string. It contains the following fields.
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>#PangoGlyphIndex glyph;</entry>
+<entry>the index of the glyph into the font. (Rendering system
+ dependent).</entry>
+</row>
+
+<row>
+<entry>#PangoCFont *font;</entry>
+<entry>the rendering-system-specific font information for this glyph.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### TYPEDEF PangoGlyphIndex ##### -->
+<para>
+The #PangoGlyphIndex type is an integral type used to store glyph
+indices.
+</para>
+
+
+<!-- ##### STRUCT PangoGlyphGeometry ##### -->
+<para>
+The #PangoGlyphGeometry structure contains width and positioning
+information for a single glyph. Distances are in
+1/64ths of a point.
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>#PangoGlyphUnit width;</entry>
+<entry>the logical width to use for the the character.</entry>
+</row>
+
+<row>
+<entry>#PangoCFont *x_offset;</entry>
+<entry>horizontal offset from nominal character position.</entry>
+</row>
+
+<row>
+<entry>#PangoCFont *y_offset;</entry>
+<entry>vertical offset from nominal character position.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### TYPEDEF PangoGlyphUnit ##### -->
+<para>
+The #PangoGlyphUnit type is used to store dimensions within
+Pango. Dimensions are stored in 1/64ths of a point.
+</para>
+
+
+<!-- ##### STRUCT PangoGlyphVisAttr ##### -->
+<para>
+The PangoGlyphVisAttr is used to communicate information between
+the shaping phase and the rendering phase. It's contents
+are still evolving.
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>#guint is_cluster_start : 1;</entry>
+<entry>set for the first logical glyph in each cluster. (Clusters
+ are stored in visual order, within the cluster, glyphs
+ are always ordered in logical order, since visual
+ order is meaningless; that is, in Arabic text, accent glyphs
+ follow the glyphs for the base character.)
+</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### STRUCT PangoGlyphString ##### -->
+<para>
+The #PangoGlyphString structure is used to store strings
+of glyphs with geometry and visual attribute information.
+The storage for the glyph information is owned
+by the structure which simplifies memory management.
+</para>
+<para>
+#PangoGlyphString contains the following publically
+accessible fields
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>gint #num_glyphs;</entry>
+<entry>the number of glyphs in the string.</entry>
+</row>
+
+<row>
+<entry>PangoGlyph *#glyphs;</entry>
+<entry>an array of glyphs of length <structfield>num_glyphs</structfield>.</entry>
+</row>
+
+<row>
+<entry>PangoGlyphGeometry *#geometry;</entry>
+<entry>an array of #PangoGlyphGeometry structures corresponding to <structfield>glyphs</structfield>.</entry>
+</row>
+
+<row>
+<entry>PangoGlyphVisAttr *#attrs;</entry>
+<entry>an array of #PangoGlyphVisAttr structures corresponding to <structfield>glyphs</structfield>.</entry>
+</row>
+
+<row>
+<entry>gint *#log_clusters;</entry>
+<entry>for each glyph, the character index (should this be byte
+ index?) of the starting character for the cluster.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### FUNCTION g_glyph_string_new ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+
+<!-- ##### FUNCTION g_glyph_string_set_size ##### -->
+<para>
+
+</para>
+
+@string:
+@new_len:
+
+
+<!-- ##### FUNCTION g_glyph_string_free ##### -->
+<para>
+
+</para>
+
+@string:
+
+
diff --git a/docs/tmpl/main.sgml b/docs/tmpl/main.sgml
new file mode 100644
index 00000000..f251783b
--- /dev/null
+++ b/docs/tmpl/main.sgml
@@ -0,0 +1,229 @@
+<!-- ##### SECTION Title ##### -->
+Rendering
+
+<!-- ##### SECTION Short_Description ##### -->
+Functions to run the rendering pipeline.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+The Pango rendering pipeline takes a string of
+Unicode characters and converts it into glyphs.
+The functions described in this section accomplish
+various steps of this process.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION pango_itemize ##### -->
+<para>
+
+</para>
+
+@context:
+@text:
+@length:
+@lang_info:
+@n_langs:
+@Returns:
+
+
+<!-- ##### STRUCT PangoContext ##### -->
+<para>
+The #PangoContext structure stores global information
+used to control the itemization process. It contains
+the following fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>gchar *lang;</entry>
+<entry>the global default language in the standard form
+ "fr" or "fr_FR". (This may be overriden
+ with the @lang_info parameter to pango_itemize().)</entry>
+</row>
+
+<row>
+<entry>gchar *render_type;</entry>
+<entry>a string identifier for the rendering system to use,
+ for instance %PANGO_RENDER_TYPE_X</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### STRUCT PangoItem ##### -->
+<para>
+The #PangoItem structure stores information about
+a segment of text. It contains the following fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>gint offset;</entry>
+<entry>the offset of the segment from the beginning of the
+ string in bytes.</entry>
+</row>
+
+<row>
+<entry>gint length;</entry>
+<entry>the length of the segment in bytes.</entry>
+</row>
+
+<row>
+<entry>gint num_chars;</entry>
+<entry>the length of the segment in characters.</entry>
+</row>
+
+<row>
+<entry>gint analysis;</entry>
+<entry>the properties of the segment.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### STRUCT PangoAnalysis ##### -->
+<para>
+The #PangoAnalysis structure stores information about
+the properties of a segment of text. It has the following
+fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>#PangoEngineShape *shape_engine;</entry>
+<entry>the engine for doing rendering-system-dependent processing</entry>
+</row>
+
+<row>
+<entry>#PangoEngineLang *lang_engine;</entry>
+<entry>the engine for doing rendering-system-independent processing</entry>
+</row>
+
+<row>
+<entry>guint8 level;</entry>
+<entry>the bidrectional level for this segment.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### STRUCT PangoLangRange ##### -->
+<para>
+The #PangoLangRange structure stores language tagging
+information for a range of character positions of text.
+It contains the following fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry>gint start;</entry>
+<entry>the start position of this tagged range in bytes.</entry>
+</row>
+
+<row>
+<entry>gint length;</entry>
+<entry>the length of this tagged range in bytes.</entry>
+</row>
+
+<row>
+<entry>gchar *lang;</entry>
+<entry>the language for this range, in the standard form
+ "fr" or "fr_FR".</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### FUNCTION pango_reorder_items ##### -->
+<para>
+
+</para>
+
+@logical_items:
+@Returns:
+
+
+<!-- ##### FUNCTION pango_break ##### -->
+<para>
+
+</para>
+
+@text:
+@length:
+@analysis:
+@attrs:
+
+
+<!-- ##### STRUCT PangoLogAttr ##### -->
+<para>
+The #PangoLogAttr structure stores information
+about the attributes of a single character.
+</para>
+
+
+<!-- ##### FUNCTION pango_shape ##### -->
+<para>
+
+</para>
+
+@font:
+@text:
+@length:
+@analysis:
+@glyphs:
+
+
+<!-- ##### FUNCTION pango_justify ##### -->
+<para>
+
+</para>
+
+@glyphs:
+@new_line_width:
+@min_kashida_width:
+
+
+<!-- ##### FUNCTION pango_cp_to_x ##### -->
+<para>
+
+</para>
+
+@text:
+@length:
+@analysis:
+@glyphs:
+@char_pos:
+@trailing:
+@x_pos:
+
+
+<!-- ##### FUNCTION pango_x_to_cp ##### -->
+<para>
+
+</para>
+
+@text:
+@length:
+@analysis:
+@glyphs:
+@x_pos:
+@char_pos:
+@trailing:
+
+
diff --git a/docs/tmpl/pango-unused.sgml b/docs/tmpl/pango-unused.sgml
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/docs/tmpl/pango-unused.sgml
diff --git a/docs/tmpl/pango-x.sgml b/docs/tmpl/pango-x.sgml
new file mode 100644
index 00000000..b3f18eed
--- /dev/null
+++ b/docs/tmpl/pango-x.sgml
@@ -0,0 +1,147 @@
+<!-- ##### SECTION Title ##### -->
+X Rendering
+
+<!-- ##### SECTION Short_Description ##### -->
+Functions for rendering and measuring glyphs on
+the X Window system.
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### MACRO PANGO_RENDER_TYPE_X ##### -->
+<para>
+%PANGO_RENDER_TYPE_X is a string constant that
+is used to identify shaping modules for the
+X Window System.
+</para>
+
+
+
+<!-- ##### STRUCT PangoXCFont ##### -->
+<para>
+The PangoXCFont represents a component of a
+composite font for the X window system. It
+has the following publically accessible fields:
+
+<informaltable pgwide=1 frame="none" role="struct">
+<tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry><structname>Display</structname> *display;</entry>
+<entry>the X Display for which this font component was created.</entry>
+</row>
+
+<row>
+<entry><structname>XFontStruct</structname> *font_struct;</entry>
+<entry>the X font information for the corresponding X font.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
+</para>
+
+
+<!-- ##### FUNCTION pango_x_load_font ##### -->
+<para>
+
+</para>
+
+@display:
+@spec:
+@Returns:
+
+
+<!-- ##### FUNCTION pango_x_render ##### -->
+<para>
+
+</para>
+
+@display:
+@d:
+@gc:
+@glyphs:
+@x:
+@y:
+
+
+<!-- ##### FUNCTION pango_x_extents ##### -->
+<para>
+
+</para>
+
+@glyphs:
+@lbearing:
+@rbearing:
+@width:
+@ascent:
+@descent:
+@logical_ascent:
+@logical_descent:
+
+
+<!-- ##### FUNCTION pango_x_glyph_extents ##### -->
+<para>
+
+</para>
+
+@glyph:
+@lbearing:
+@rbearing:
+@width:
+@ascent:
+@descent:
+@logical_ascent:
+@logical_descent:
+
+
+<!-- ##### FUNCTION pango_x_find_cfont ##### -->
+<para>
+
+</para>
+
+@font:
+@charset:
+@Returns:
+
+
+<!-- ##### FUNCTION pango_x_list_cfonts ##### -->
+<para>
+
+</para>
+
+@font:
+@charsets:
+@n_charsets:
+@xlfds:
+@n_xlfds:
+
+
+<!-- ##### FUNCTION pango_x_load_xlfd ##### -->
+<para>
+
+</para>
+
+@font:
+@xlfd:
+@Returns:
+
+
+<!-- ##### FUNCTION pango_x_xlfd_get_ranges ##### -->
+<para>
+
+</para>
+
+@font:
+@xlfd:
+@ranges:
+@n_ranges:
+@Returns:
+
+
diff --git a/examples/.cvsignore b/examples/.cvsignore
new file mode 100644
index 00000000..6d968b25
--- /dev/null
+++ b/examples/.cvsignore
@@ -0,0 +1,6 @@
+gscript.modules
+gscript-viewer
+.deps
+.libs
+*.lo
+*.la \ No newline at end of file
diff --git a/examples/HELLO.utf8 b/examples/HELLO.utf8
new file mode 100644
index 00000000..e8ae856c
--- /dev/null
+++ b/examples/HELLO.utf8
@@ -0,0 +1,39 @@
+This is a list of ways to say hello in various languages. Its purpose is to illustrate a number of scripts.
+
+(Converted into UTF-8)
+
+---------------------------------------------------------
+Danish (Dansk) Hej, Goddag
+English Hello
+Esperanto Saluton
+Estonian Tere, Tervist
+FORTRAN PROGRAM
+Finnish (Suomi) Hei
+French (Français) Bonjour, Salut
+German (Deutsch Nord) Guten Tag
+German (Deutsch Süd) Grüß Gott
+Greek (Ελληνικά) Γειά σας
+Hebrew שלום
+Italiano Ciao, Buon giorno
+Maltese Ciao
+Nederlands, Vlaams Hallo, Dag
+Norwegian (Norsk) Hei, God dag
+Russian (Русский) Здравствуйте!
+Spanish (Español) ¡Hola!
+Swedish (Svenska) Hej, Goddag
+Czech (česky) Dobrý den
+Polish Dzień dobry, Hej
+Slovak Dobrý deň
+Thai (ภาษาไทย) สวัสดีครับ, สวัสดีค่ะ
+Turkish (Türkçe) Merhaba
+
+Japanese (日本語) こんにちは, コンニチハ
+Chinese (中文,普通话,汉语) 你好
+Cantonese (粵語,廣東話) 早晨, 你好
+Korean (한글) 안녕하세요, 안녕하십니까
+
+Difference among chinese characters in GB, JIS, KSC, BIG5:
+ GB -- 元气 开发
+ JIS -- 元気 開発
+ KSC -- 元氣 開發
+ BIG5 -- 元氣 開發
diff --git a/examples/Makefile.am b/examples/Makefile.am
new file mode 100644
index 00000000..4356480b
--- /dev/null
+++ b/examples/Makefile.am
@@ -0,0 +1,17 @@
+## Process this file with automake to create Makefile.in.
+
+noinst_PROGRAMS = pango-viewer
+
+INCLUDES = -I$(top_srcdir)/libpango/
+
+pango_viewer_SOURCES = \
+ viewer.c
+pango_viewer_LDADD = ../libpango/libpango.la $(GTK_LIBS) -lfribidi $(UNICODE_LIBS)
+
+all-local: pango.modules
+
+pango.modules:
+ ( cd ../modules && \
+ ../libpango/pango-querymodules `find . -name '*.so'` > ../examples/pango.modules )
+
+EXTRA_DIST=HELLO.utf8 \ No newline at end of file
diff --git a/examples/muru.utf b/examples/muru.utf
new file mode 100644
index 00000000..976ecba1
--- /dev/null
+++ b/examples/muru.utf
@@ -0,0 +1,352 @@
+முருகன் அல்லது அழகு
+திரு வி.க.
+
+ குமரகுருபரர்
+
+உலகு குளிர எமது மதியில் ஒழுகு மமுத கிரணமே
+ உருகு மடிய ரிதய நெகிழ உணர்வி லெழுந லுதயமே
+கலையு நிறைவு மறிவு முதிர முதிரு மதுர நறவமே
+ கழுவு துகளர் முழுக நெடிய கருணை பெருகு சலதியே
+அலகில் புவன முடியும் வெளியில் அளியு மொளியி னிலயமே
+ அறிவு ளறிவை யறிவு மவரும் அறிய வரிய பிரமமே
+மலையின் மகள்கண் மணியை யனைய மதலை வருக வருகவே
+ வளமை தழுவு பரிதி புரியின் மருவு குமரன் வருகவே
+ -முத்துக்.பிள்: வருகை 9
+
+இழுமெ னருவி சொரியு மிமைய முதல்வி புதல்வன் வருகவே
+ இயலு நடையும் வடிவு மழகும் எழுத வரியன் வருகவே
+ஒழுகு கருணை முழுகு கமல வதனன் வருக வருகவே
+ ஒருவ னிருவ ரொடுகை தொழுநல் உபய சரணன் வருகவே
+விழுது விடுவெ ணிலவு பொழியு நகையன் வருக வருகவே
+ விளரி பயிலு மளியு ஞிமிரும் விரவி குரவன் வருகவே
+மழலை முதிர முதிரு மதுர வசனன் வருக வருகவே
+ வளமை தழுவு பரிதி புரியின் மருவு குமரன் வருகவே
+ -முத்துக்.பிள்: வருகை 10
+
+ கச்சியப்பர்
+
+துய்யதாம் மறைக ளாலுந் துதித்திடற் கரிய செவ்வேள்
+செய்யபே ரடிகள் வாழ்க சேவலும் மயிலும் வாழ்க
+வெய்யசூர் மார்பு கீண்ட வேற்படை வாழ்க அன்னான்
+பொய்யில்சீ ரடியார் வாழ்க வாழ்கஇப் புவனமெல்லாம்.
+ - கந்த புராணம் 5.4:6
+
+ஆறிரு தடந்தோள் வாழ்க அறுமுகம் வாழ்க வெற்பைக்
+கூறுசெய் தனிவேல் வாழ்க குக்குடம் வாழ்க செவ்வேள்
+ஏறிய மஞ்ஞை வாழ்க யானைதன் னணங்கு வாழ்க
+மாறிலா வள்ளி வாழ்க வாழ்கசீ ரடிய ரெல்லாம்.
+ - கந்த புராணம் 6.24:261
+
+புன்னெறி யதனிற் செல்லும் போக்கினை விலக்கி மேலா
+நன்னெறி யொழுகச் செய்து நவையறு காட்சி நல்கி
+என்னையும் அடிய னாக்கி இருவினை நீக்கி யாண்ட
+பன்னிரு தடந்தோள் வள்ளல் பாதபங் கயங்கள் போற்றி.
+ - கந்த புராணம் 6.24:262
+
+
+ நூன்முகம்
+
+இயற்கை பல அழகிய வடிவங்களாய்க் காட்சியளிக்கிறது. அக்காட்சியை மறுப்போரில்லை. இயற்கையைக் கூர்த்த மதியால் ஆராய ஆராய அதன் உள்ளுறையொன்று உணர்வில் உறுகிறது. இயற்கை உடல்; அதன் உள்ளுறை உயிர். உயிரை முருகு அல்லது முருகன் என்று தமிழ் நாட்டார் கொண்டனர். இவ்வுடலையும் உயிரையும் உலகம் ஆராய்ந்த வண்ண மிருக்கிறது. அவரவர் ஆராய்ச்சியிற் போந்த உண்மைகளும் பலப்பல. இன்னும் ஆராய்ச்சி வளர்ந்து வருகிறது.
+
+முருகனைப் பற்றிய பலதிறக் கொள்கைகள், கதைகள் கட்டுகள் நாட்டில் உலவுகின்றன. முதல் முதல் முருகனுண்மை கண்ட பழந்தமிழர், முருகனை எவ்வாறு கொண்டனர் என்று ஆராயத் தலைப்பட்டதில், அவர் முருகை மணமும் இளமையும் கடவுட்டன்மையும் அழகுமுடைய செம்பொருளாகக் கொண்டனர் என்பதும் பிறவும் விளங்கின. இக்கொள்கை அடியேனுக்கு மிக விழுமியதாய்த் தோன்றிற்று. இவ்விழுமிய கொள்கை நாட்டில் நிலைபெறின், நாட்டுக்குப் பலவழியிலும் நலன் விளையுமென்னும் வேட்கை என்மாட்டெழுந்தது. வேட்கை மேலீட்டான், அமயம் வாய்ந்துழி வாய்ந்துழி, விழுமிய கொள்கையைப் பற்றிப் பேசியும் எழுதியும் வருகிறேன்.
+
+காரைக்குடியினின்றும் முகிழ்த்த குமரன் என்னுந் திங்கள் மலரின் முதலிதழில், என்னால் எழுதப் பெற்ற முருகன் என்னுஞ் சிறு கட்டுரை யொன்று வெளிவந்தது. அக்கட்டுரையைக் கண்ட நண்பர் சிலர், அதை நூல்வடிவாக வெளியிடுமாறு கடிதம் எழுதிக் கொண்டேயிருந்தனர். அக்கட்டுரை ஒரு திங்கள் தாளுக்கென எழுதப்பட்டமையான் அதை யான் நினைந்தவண்ணம் எழுதல் இயலாமற் போயிற்று. அன்பர்கள் விழைந்தவாறு, பின்னை அக்கட்டுரையை முதன் முறை நூலாக்க முயன்றபோதும், அதனிடை, நினைந்த பல பொருள்கள் சேர்க்கப் போதிய ஓய்வு கிடைக்கவில்லை. ஆகவே, முதற் பதிப்பில் மிசச் சில பொருள் சேர்த்து நூலுக்கு முருகன் என்னுந்தலைப்பீந்தேன். அப்பதிப்பு 1925-ம் ஆண்டு வெளிவந்தது.
+
+அழகைப்பற்றி என்பால் கருக்கொண்டிருந்த பல பொருளை இரண்டாம் பதிப்பில் உருக்கொள்ளச் செய்யலாமென்று எண்ணிக் கொண்டிருந்தேன். அவ்வெண்ணம் இரண்டாம் பதிப்பில் ஒருவாறு முற்றுப்பெற்றது. இரண்டாம் பதிப்பு 1927-ம் ஆண்டு வெளிவரலாயிற்று.
+
+இரண்டாம் பதிப்பில் பல புதுப்பொருள் கூட்டப்பட்டன. நூலின் உள்ளுறைக்கேற்ப நூலுக்கு `முருகன் அல்லது அழகு' என்னுந் தலைப்பு அணியப்பட்டது. அழகை அடிப்படையாகக் கிடத்தி நூல் எழுதப்பட்டமையான், நூலுக்கு அம்முடி சூட்டப்பட்டதென்க.
+
+இயற்கையழகை முருகெனக் கொண்டு பழந்தமிழர் வழிபாடு நிகழ்த்தி வந்தனர். இவ்வாறு முருகனை வழிபடுனோர் தொகை நாளடைவில் அருகிவிட்டது. அதனால் பல கடவுளர் உணர்வு, பன்னெறி உணர்வு, போராட்டம், கட்சிகள், பிரிவுகள் முதலிய இழிவுகள் தோன்றலாயின. பழைய இயற்கை வழிபாடு மீண்டும் நாட்டில் உயிர்த்தெழல் வேண்டுமென்பது எனது வேணவே. அவ்வவா மேலீட்டான் யாக்கப்பட்ட நூல் இது.
+
+இந்நூற்கண், முருகன் சொற்பொருள் விளக்கம், அழகினியல், இளமைப்பேறு, இயற்கை யழகே முருகென்பது, பாட்டு ஓவியம் இசை இவைகளின் வழி இயற்கை அன்னையை வழிபடல், பெண்ணின் பெருமை, நோன்பின் திறம், முருகனடியார் இயல்பு முதலியன ஓதப்பட்டிருக்கின்றன. இந்நூலை முற்றும் பயில்வோர் உள்ளத்தில் இயற்கை வழிபாட்டில் ஆர்வம், ஒரே கடவுள் ஒரே நெறி என்னும் உறுதி எவ்வுயிர்க்குந் தீங்கு நினையாப் பேரறம் முதலியன நிலவும்.
+
+இயற்கை என்னும் எனது ஆருயிர் அன்னைக்கும் அவ்வியற்கையை விடுத்து என்றும் நீங்காத அழகு என்னும் அப்பனுக்கும் இந்நூலைக் கோயிலாக்கி தமிழ் மலர் தூவி ஒல்லும் வகை வழிபாடு நிகழ்த்தியிருக்கிறேன். வழிபாட்டு முறையில் குற்றங் குறைகளிருப்பின், பொருத்துருளுமாறு அன்பர்களை வேண்டுகிறேன்.
+
+மூன்றாம் பதிப்பு 1930-ம் ஆண்டிலும் நான்காம் பதிப்பு 1938-ம் ஆண்டிலும், ஐந்தாம் பதிப்பு 1943-ம் ஆண்டிலும் ஆறாம் பதிப்பு 1944-ம் ஆண்டிலும் ஏழாம் பதிப்பு 1946-ம் ஆண்டிலும் வெளிவந்தன. இஃது [1950-ம் ஆண்டு] எட்டாம் பதிப்பு.
+
+முதுமையில், என் கண்களில் ஊறு நேர்ந்தது. சிகிச்சை செய்யப்படும் இவ்வேளையில், இவ்வெட்டாம் பதிப்பு அச்சாகியது. எனது நிலை கண்டு, அச்சுப் பிழை பார்த்துத் துணைபுரிந்த வித்துவான் - அன்பு கணபதி அவர்கட்கு எனது நன்றி உரியதாக.
+
+பிழை பொருக்க.
+
+சென்னை திருவாரூர் வி. கலியாணசுந்தரன்
+20-8-1950
+
+
+ 1. முருகன் பொருளும் பொதுமையும்
+
+[முருகன் - முருகு - முருகின் சொற் பொருள் - மணம் இளமை கடவுட்டன்மை அழகு - பழந்தமிழர் கூர்த்த மதி - முருகன் ஒரு கூட்டத்தவர் கடவுள் அல்லன் - மொழி வேற்றுமையால் இறைவன் பல பெயர் பெறல் - மணம் இளமை இறைமை அழகு எல்லார்க்கும் பொது.]
+
+முருகன் எவன்? முருகையுடையவன் முருகன். முருகு என்றால் என்னை? முருகு என்பது பல பொருள் குறிக்கும் ஒரு சொல். அப் பல பொருளுள் சிறப்பாகக் குறிக்கத் தக்கன நான்கு. அவை மணம், உளமை, கடவுட்டன்மை, அழகு என்பன. இந்நான்கு பொருளடங்கிய ஒரு சொல்லால் பண்டைத் தமிழ் மக்கள் முழுமுதற்பொருளை அழைத்தது வியக்கத்தக்கது. இயற்கை மணமும், மாறா இளமையும் எல்லாப் பொருளையுங் கடந்தொளிருந் தன்மையும், அழியா அழகும் இறைவனிடத்தில் இலங்குவது கண்டு, அப்பொருள்கள் முறையே உறைதற் கிடம் பெற்றுள்ள முருகன் என்னுஞ் சொல்லை, அவ்விறைவனுக்குப் பழந்தமிழ் மக்கள் சூட்டியதன் திறமையை நோக்குழி அவர்களது கூர்த்தமதி புலனாகிறது.
+
+உலகத்தின் நானா பக்கங்களிலும் வாழ்ந்து வரும் மக்கள் தங்கள் தங்கள் அறிவாற்றலுக் கேற்றவாறு, தங்கள் தங்கள் மொழியில் கடவுளுக்குப் பலதிறப் பெயர்கள் சூட்டியிருக்கிறார்கள். அப்பெயர்கள் ஒவ்வொன்றினும் ஒவ்வொரு சிறப்புப் பொருள் விளங்குகிறது. சிலவற்றில் பொருத்தமில்லாப் பொருள்களும் உண்டு. முருகன் என்னுஞ் சொல்லிலோ அறிஞர் போற்றும் பொருள்களே மிளிர்கின்றன; ஆதலால் அறிஞர் போற்றற்குரியதும், மகிழ்ச்சியூட்டக் கூடியதும், பொருத்த முடையதுமாக இருப்பது முருகன் என்னுந் திருப்பெயர்.
+
+முருகன் ஒரு கூட்டத்தவர்குரிய கடவுள் என்று கருதுவது அறிவுடைமையாகாது. எக்கூட்டத்தவர் எம்மொழியால் போற்றும் எப்பொருளாயினும், அப்பொருட்கண் இறை இயல்புகள் காணப்பெறின், அதைக் கோடலே அறிவுடைமையாகும். இயற்கை மணமும், மாறா இளமையும் கடவுட்டன்மையும், அழியா அழகும் அறிவிற் சிறந்த எச்சமயத்தவருங் கொள்ளும் ஆண்டவனுக்கரிய இயல்புகளாம். இவ்வியல்புகள் அமைந்த ஒன்றைத் தமிழ் மக்கள் முருகன் என்று வழுத்துகிறார்கள். ஏனைய மொழியினரும் அவ்வியல்புகளின் பொருள் நல்க வல்ல தமது மொழியால் தாம் வழிபடும் இறைவனுக்குப் பல பெயரிட்டழைக்கலாம், அப்பெயர்ப் பொருளை ஆராய்ந்து, தமிழில் பெயர்த்தெழுதினால் அது முருகாக விளங்குதல் வேண்டும். தமிழ்ப் பெயராகிய முருகெனுஞ் சொல் தனக்குரிய பொருண்மை அழியப் பெறாது எம்மொழியில் வழங்கப் பட்டாலென்ன? கடவுளை மணமுடையதாகவும், இளமையுடையதாகவும், இறைமையுடையதாகவும், அழகுடையதாகவும் எவர் எம்மொழிப் பெயரால் தொழினும் ஆண்டு எம்பெருமான் முருகன் எழுந்தருள்வானென்க.
+
+மணமும் இளமையும் கடவுட்டன்மையும் அழகும் எவருடைமை? இவை எல்லார்க்குமுரிய உடைமை யல்லவோ? ஆதலால் மணமுடைமை, இளமையுடைமை, கடவுட்டன்மையுடைமை, அழகுடைமை ஆகிய இவைகளைப் போற்ற மறுப்போர் முருகனைப் போற்ற மறுப்போராவார். மணமுடைமை முதலிய நான்கினையும் போற்ற மறுப்போர் இருப்பு நெஞ்சமும் வன்கண்மையுமுடைய முரடராயிருப்பர். அன்னார் நெஞ்சில் முருகு அலர்தலும் அரிது.
+
+
+ 2. அழகின் இயலும் கூறும்
+
+[அழகு - அழியா அழகு - அழியும் அழகு - நக்கீரனாரும் அழகும் - இயற்கை செயற்கை - உள்பொருள் இல்பொருள் - பருமை நுண்மை - அழகரும்புமிடங்கள் - அழகுக்கும் இயற்கைக்குமுள்ள தொடர்பு - அழகின் பன்மை ஒருமை - அழகு புரியுந்துணை - அழகும் புலன்களும் - புற அழகு அக அழகு - அழகுக்குத் தோற்ற ஒடுக்கமின்மை - பேரின்பம் சிற்றின்பம் - வன்றொண்டர் மாணிக்கவாசகர் - அழகும் இன்பமும் - அகநானூறு, கலித்தொகை, பத்துப்பாட்டு, திருக்கோவையார் - பெண்ணும் அழகும் - அழகுக் கோயில்கள் - அழகும் வாழ்வும் - அழகிடை மணம் இளமை கடவுட்டன்மை மருவல் - அழகு பெரும் வழி - உணவு முறை - பெருந்திண்டி களியாடல் மருந்துகள் முதலியவற்றின் கேடுகள் - மேல்நாட்டார் இயற்கை முறை - கந்தழி - பாண்டி நாட்டில் கடவுளை அழகாகக் கொண்டது - திருமுருகாற்றுப் படையில் முருகின் நான்கு கூறு].
+
+இனி மணம், இளமை, கடவுட்டன்மை, அழகு என்னும் நான்கு பொருளில் அழகு என்பதை மட்டும் யான் ஈண்டுச் சிறப்பாக எடுத்துக் கொள்கிறேன். என்னை? அழகு உள்ள இடத்தில் ஏனைய மூன்றும் விரவி நிற்றலின் என்க. அழியா அழகில் மணமும் இளமையும் இறைமையும் கலந்து நிற்றலும் இயல்பு.
+
+அழியா அழகு என்று ஈண்டுக் குறிப்பிட்டது உன்னற்பாலது. அழியா அழகெனில் அழியும் அழகென்று அன்றுண்டோ என்னும் ஐயம் சிலருள்ளத்திலாதல் பிறக்கலாம். அழகின் அழியாமை நோக்கி ஈண்டு `அழியா' என்னும் அடையால் அழகைச் சிறப்பித்ததன்றி, அழியும் அழகுக்கு எதிர்மறையாக `அழியா' என்று அழகைச் சிறப்பிக்கவில்லை யென்றுணர்க.
+
+உலகில் ஒவ்வோருண்மைக்கும் மாறுபட்ட போலியுண்டு. போலிக்கண் உண்மை யின்மையான், அஃது அழிந்துபடுகிறது. இம்முறையில் அழியா உண்மையழகிற்கும் மாறுபட்ட அழியும் போலி யழகென்று ஒன்றிருக்குமன்றோ? அப்போலி அழகை அழியும் அழகு என்று அழைக்கலாமன்றோ?
+
+இதனால் அழகை இருகூறுபடுத்தி அழியா அழகு, அழியும் அழகு என்று சொல்லவேண்டுவதில்லை. அழிவதை அழகென்றுங் கொள்ள வேண்டுவதில்லை. இது பற்றியே `அழியா' என்று அழகைச் சிறப்பித்தவாறு காண்க. அழகுப் போலியை `அழியும் அழகு' என்றதும் முகமன் என்க.
+
+இயற்கையோடு வாழ்ந்து, இயற்கையோடு படிந்து, இயற்கையை ஆய்ந்து, இயற்கையி லுறையும் அழகெனும் முருகைக் கண்ட பழந்தமிழ்ப் புலவர்கள் அழகின் இயல்பைப் பற்றி என்ன கூறியுள்ளார்கள்? அதைச் சற்று நோக்குவோம்.
+
+பழந் தமிழ்ப் புலவர்களுள் ஈண்டு நக்கீரனார் ஒருவரைக் கோடல் சால்பு. நக்கீரனாரின் புலமை கருதி மட்டும் அவரை ஈண்டுக் கொள்ள வேண்டுவதில்லை. அவர் இயற்கையில் முருகையுணர்ந்து, முருகாற்றுப்படை பாடியதில் தமது புலமை செலுத்தியவர் என்னுந் தொடர்புரிமை கொண்டு, அவரை ஈண்டுக் கோடலே ஏற்புடைத்து. நக்கீரனார் தாமுணர்ந்த அழகைப் பொது முறையில் திருமுருகாற்றுப் படையாகப் பாடி மகிழ்ந்தார். அவ்வாற்றுப் படைக்கண் ஓரிடத்தில் அழகின் இயல்பு இத்தகைத்தெனச் சிறப்பு முறையில் அவர் அறிவுறுத்தியிருக்கிறார். `கைபுனைந்தியற்றாக் கவின் பெறு வனப்பு' என்று அப்புலவர் அழகியல் தெரித்தவாறு காண்க.
+
+கையால் செய்யப்படுவது செயற்கை. கையால் செய்யப்படாதது இயற்கை. மலையும் ஆறும் காடும் கடலும் எவர் கையால் ஆக்கப்பட்டன? ஞாயிறும் திங்களும் விண்மீன்களும் எவரால் செய்யப்பட்டன? புனலுக்கு தண்மை ஈந்தவர் எவர்? நெருப்புக்கு வெம்மையூட்டினவர் யாவர்? இயல்பாக அரும்பிய இவைகளின் அழகே கைபுனைந்தியற்றாக் கவின்பெரு வனப்பாகும். மற்றையது போலி.
+
+கைபுனைந்தியற்றா இவ்வழகு அழியாத் தன்மையது என்று மேலே தொகையாகச் சொல்லப்பட்டது. அதை ஈண்டு வகைப்படுத்திச் சில உரை பகர்தல் நலனெனத் தோன்றுகிறது. அழகு உள்பொருளா அல்லது மக்கள் உள்ளம் இயற்கையில் படியும்போது அங்கே உருவெளியாய்த் தோன்றும் இல்பொருளா என்பது ஆராயத் தக்கது. அழகைப்பற்றி எண்ணாத இடமில்லை; பேசாத இடமில்லை; போற்றாத இடமில்லை. அழகின் மாட்டு உலகங் கொண்டுள்ள பற்றுப்போல வேறெதன் மாட்டும் அஃது அப்பற்றுக் கொண்டில்லை. `அழகு அழகு' என்றே உலகம் அழகின் உறைந்து நிற்கிறது. இவ்வாறு அழகுடன் வாழும் உலகை நோக்கி, `அழகு எப்படி இருக்கிறது' என்று வினவின், அதைச் சொல்லால் சொல்ல இயலாது அது விழிக்கிறது. புலன்களுக்கும் பொருளாகாத ஒன்றைப் பற்றி என்ன சொல்வது? என்னே அழகின் நுட்பம்.
+
+`புலன்கட்குப் பொருளாகாமை' என்னும் ஒன்று கொண்டு, அழகிற்கின்மை கூறலாமோ எனின், அஃதும் அறமெனத் தோன்றவில்லை. என்னை? உணர்விலுறுத்தல், வினையாற்றல், துன்ப நீக்கி இன்பமாக்கல் முதலியன அழகால் பெறுகிறோம். இத்தகை நிகழ்வுடைய ஒன்றன் இருப்பை எங்ஙனம் மருத்தல் கூடும்?
+
+உலகில் புலன்களுக்குப் பொருளாகும் பொருள்களுமுண்டு; பொருளாகாப் பொருள்களுமுண்டு. இவைகளை முறையே பருமை (Concrete) என்றும், நுண்மை (Abstract) என்றும் உலகங் கொண்டிருக்கிறது. பருமைக்கு உண்மை கூறலும், நுண்மைக்கு இன்மை கூறலும் அறிவுடைமையல்ல. என்னை?
+
+ஊனப் புலன்களுக்குப் பொருளாகாது உணர்வில் நிகழ்ச்சிளவில் உறுத்தும் பொருள்களுமுண்டு. அறிவு அறம் அன்பு நீதி முதலியன புலன்களுக்கு வடிவால் காட்சி வழங்கும் பருப்பொருட்களல்ல. இவை காட்சி வழங்காமையான், இவற்றின் உண்மைக்கும் மறுப்புக் கூறலாம் போலும்! இவை உள்ளனவேயன்றி இல்லனவல்ல. இவற்றின் உண்மை இவற்றையுடைய பருப்பொருள் வாயிலாக உணரக் கிடக்கிறது. அறிஞன்வழி அறிவும், அறவோன் வழி அறமும், அன்பன் வழி அன்பும், நீதிமான் வழி நீதியும் உணர்விற்படுதல் ஓரற்பாற்று. இவைபோன்ற பல நுண்மைகளிருக்கின்றன. இவற்றுள் அழகுமொன்று. அழகுடைப் பொருள் கொண்டு அழகையுணர்கிறோம். ஆகவே, அழகென்பது பருப் புலன்களுக்கு வடிவாகத் தோன்றாத நுண்ணிய உள்பொருளெனக் கொள்க. அஃது உருவெளியன்றெனத் தெளிக.
+
+அந்நுண்மைப் பொருள் யாண்டும் நீக்கமற நிற்பது. யாண்டும் நிறைந்துள்ள அந்நுண்பொருள் சில வேளைகளில் சில இடங்களில் தனதிருப்பை உயிர்கட்கு அறிவுறுத்தவோ என்னவோ மின்னொளிபோல் தன் (நுண்ணிய) தோற்றத்தைப் புலப்படுத்துகிறது. இளஞாயிறு தனது செங்கதிரை நீலக்கடலில் பரப்பும்போது அப்பரவையிடை அழகு ஒளிர்கிறது. அஞ்ஞாயிறு தனது இளவெயிலை, பசுங்கடல் பொங்கியெழிந்தாலென உருண்டு திரண்டு பரந்து ஒளி நுழைதற்கு மிடமின்றிச் செறிந்து மிடைந்து சரிந்து சாய்ந்து நிற்குங் குறிஞ்சிக் காடுகளின் பச்சை மேனியில் உமிழும்போது அவ்விடை அழகு அரும்புகிறது. திங்கள் தன் பால்நிலவை, வெள்ளை வெளேலென வெள்ளி அறல் படர்ந்தாலென மிளிரும் வெள்ளிய மணல்மீது காலும்போது அங்கே அழகு ஒழுகுகிறது. இவ்வாறு சில வேளைகளில் சில இடங்களில் அழகு தனது நுண்ணிய காட்சி வழங்குதல் உணர்க.
+
+அழகு எதன் வாயிலாக உணரக் கிடக்கிறது? அழகு தன்னையுடைய இயற்கை வாயிலாக உணரக் கிடைக்கிறது. அதற்கும் இதற்குமுள்ள தொடர்பென்னை? அழகுக்கும் இயற்கைக்குமுள்ள தொடர்பை என்னென்று கூறுவது? (அழகின் உடல் இயற்கை.) இயற்கையினூடே அழகு நீக்கமின்றி விராவி நிற்கிறது. இயற்கையை விடுத்து அழகை ஆராய்ந்துணரல் அரிது. அழகின் இருப்புணர்தற்குக் கருவியாயுள்ள இய்கையும் அழகைப்போல உள்பொருளேயாம். இயற்கை, பலப் பல வடிவங்காகத் தோன்றித் தோன்றி மறையினும், அதன் முதல் கேடுறுவதில்லை. உள்ளதற்குத் தோற்றமே யன்றி அல்லதற்குத் தோற்றமில்லை என்பது அளவை. அழியாது கிடக்கும் இயற்கை முதலுக்கு அடிப்படையாக நிலவுவது அழகாகும். அழகினின்றும் அரும்பி மலர்ந்து காட்சியளிப்பது இணற்கை என்று சுருங்கச் சொல்லலாம். அழகுக்கும் இயற்கைக்குமுள்ள தொடர்பு நோக்கி, அஃதே இஃது, இஃதே அஃது என்று கொள்ளலாம்.
+
+தனக்கு அடிப்படையாக நிற்கும் அழகைப் பலப் பல வடிவங்களாக இயற்கை காட்டிக் காட்டி, உலகைக் கவர்ந்து மகிழ்ச்சியூட்டுகிறது. ஒவ்வோர் இயற்கைப் பொருட்கண் கருத்தை ஒற்றி ஒற்றி, உன்ன உன்ன அதனதன். அழகு தனித்தனியே உணர்வில் உறுதல் பெறலாம். அப்பயிற்சி முதிர முதிர எல்லா இயற்கைப் பொருட்கும் அடிப்படையாக ஒரே அழகு நிலவல் உணரலாம். எனவே, அழகு தனித் தனிப் பன்மையாகவும், பரந்த ஒருமையாகவும் உயிர்கட்கு உறுதுணை செய்தல் ஓர்க.
+
+அழகு உயிர்கட்குப் புரிந்துவரூஉம் உறுதுணையை என்னென் றுரைப்பது? அழகோ, புலன்கட்குப் பொருளாகாதது. அஃது உயிர்கட்குப் புரிந்துவரூஉந் துணையோ, அளவில் அடங்காதது. அழகு புலன்கட்குப் பொருளாகிறதில்லை. ஆனால் அது புலன்கட்கு விருந்தாகிறது. அழகில் தோயாத புலன்கள் உரமிழந்து உலர்ந்து போகும். புலன்கெட்ட வாழ்வு உயிர்கட்கு ஏது? வளர்ச்சியேது? இன்பமேது? இன்ப நுகர்ச்சிக்கு வாயாகவுள்ள புலன்கள் அழகில் படிந்த வண்ணமிருத்தல் வேண்டும். அப்படிவால் புலன்கள் பருகும் விருந்தமிழ்தம் உடலையும் உயிரையும் ஓம்புவதாகும்.
+
+அழகு புறத்தே நிற்பதுபோல அகத்தேயும் நிற்கிறது. புறமும் அகமும் ஒன்றும்போது அழகுணர்வு புலனாகும். அதற்குக் கருவிகளாக இருப்பனவே புலன்கள். அப்புலன்கள் அழகில் தோய்ந்ததும், ஆங்காங்குள்ள அழகு மலரினின்றும் மணம் வீசுவது போலத் தன்னினின்றும் தன் ஒளி பொழியத் தொடங்குகிறது. அதனால் உடலும் உயிரும் ஆக்கமுறும். அழகு புலனாகாத நுண்மையதாய் இலகிற்குப் புரிந்துவரூஉம் உதவி உணர்வால் உணரத்தக்கது.
+
+உலகிற்கு அடிப்படையாய் நின்று துணைபுரியும் அழகு, தோற்ற வொடுக்கமுடையதாயின், அதை அழகு என்று அழைத்தல் பொருந்தாது. தோற்ற ஒடுக்கமுடைய மாறுதலை (விகாரத்தை) அழகு என்று எங்ஙனம் அழைப்பது? தோற்றவொடுக்கமிலா ஒன்றே அழகாகும். அத்தகைய ஒன்றைப் படைப்பவர் யாவர்? வளர்ப்பவர் யார்? இக்கருத்துப் பற்றியே அழகை அழியா இயற்கை அழகு என்று ஆன்றோர் ஆண்டு வருகின்றார். அவ்வழகில் தோய்ந்து அழகராய நக்கீரனார், அழகைக் `கைபுனைந் தியற்றாக் கவின்பெரு வனப்பு' என்று கூறிப் போந்தார். இவ்வழகே பழந் தமிழர் போற்றி முருகாகும்.
+
+கை புனைந்தியற்றா இயற்கை அழகின் கருத்தைப் பதிய வைத்துள்ள ஒருவன், அதனோடு புணருந்தொறும் புணருந்தொறும் அவனுள்ளத்துள் சொலற்கரிய இன்பங்கிளர்ந்தெழும். அவ்வின்பத்தைப் பின்வந்தார் பேரின்பமெனவும் சிற்றின்பமெனவும் பிரித்துக் கூறினார். பண்டை நாளில் இன்பம் இன்பமாகவே பிரிவின்றிக் கிடந்தது. மக்கள் வாழ்வு, செயற்கையில் வீழ்ந்த நாள்தொட்டு, இன்பம் பேரின்பமெனவும் சிற்றின்பமெனவும் பிரிந்தது போலும்! பண்டைத் தமிழ் நூல்கள் அறம் பொருள் இன்பம் என்னும் மூன்றை மட்டும் அறிவுறுத்தலை இன்றுங் காணலாம். மக்கள் செயற்கை வாழ்கில் தலைப்பட்ட நாள்தொட்டு வீட்டின்பமென ஒரு தனியின்பம் வகுக்கப்பட்டது போலும்! முன்னை நாளில் நான்காவதாகிய வீட்டின்பமெனும் பேரின்பம் மூன்றாவதாகிய இன்பத்தில் அடங்கியிருந்தது. ஆதலால், இயற்கையழகில் தோயும் ஒருவனதுள்ளம் நுகரும் இன்பம் சிற்றின்பமாமோ பேரின்பமாமோ என்று ஆராய வேண்டுவதில்லை. அதை முறைப்படி இன்பமென்று மொழியலாம்; பின்னைய வழக்குப்படி பேரின்பமெனச் சொல்லலாம். அவ்வின்பத்துக்கு ஒப்பாகவாதல் உயர்வாகவாதல் வேறோரின்பமுளதோ? அவ்வின்பத்தையன்றோ வன்றொண்டர் நுகர்ந்தார்? மாணிக்கவாசகர் பருகினார்?
+
+அவ்வின்பம் அழகுள்ள இடங்களிலெல்லாமிருக்கும். அழகில்லா இடமுமுண்டோ? இவ்வுலகமே அழகுவடிவம். இவ்வழகிய உலகிடை நின்று அண்ணாந்து பார்த்தால், மேலும் கீழும் சுற்றும்முற்றும் அழகு சொரிவது காணலாம். அழகிய நீலப் படாத்தின் விரிவில் நித்திலந்தூவினாலென வானத்திலூருஞ் செவ்விய அழகை என்னவென்று வருணிப்பது? ஞாயிற்றின் ஒளியை என்னென்று நவில்வது? திங்களின் நிலவை என்னென்று கூறுவது? கரிய காட்டின் காட்சியை எப்படி எடுத்துக் காட்டுவது? கைநீட்டும் அலைகடலின் கவினை எங்ஙனம் சுழறுவது? என்னே அண்டத்தின் அழகு! இவையெலாஞ் சேர்ந்த ஒன்றே இயற்கை யன்னையின் அழகு வடிவம். அவ்வழகே அழியா அழகு. அதுவே முருகென்னும் பேரழகு.
+
+பண்டைத் தமிழ்மக்கள், இயற்கைவழி வாழ்வு செலுத்தி, அதற்கு அடிப்படையாயுள்ள அழகுண்மை கண்டு அவ்வழகால் இயற்கை அழகுபெறுவது நோக்கி, அவ்வியற்கையை வழிபட்டு, முழுமுதற் பொருட்கு அழகு என்னும் பொருள் பட முருகன் என்னும் பெயரணிந்தார்கள். அவர்கள் இயற்கை வாயிலாக முருகைக் கண்டு நுகர்ந்த இன்பத்தை அகநானூறு, கலித்தொகை, பத்துப் பாட்டு, திருக்கோவையார் முதலிய நூல்களில் காணலாம். அவ்வின்ப ஊற்றைத் திறக்கவல்ல அழகு இயற்கை வாயிலாகக் காணக் கிடக்கிறது. இயற்கையில் உள்ளத்தைப் பதித்து, அதனோடு ஒன்றி வாழ்ந்துவரின் இயற்கைப் பேரழகு - முருகு - புலனாகும்.
+
+செம்பொன்னையுருக்கி வார்த்தாலெனக் காட்சியளிக்கும் அந்திவான் செக்கரழகும், கொண்டல் கொண்டலாக ஓடும் புயலின் அழகும், அது பொழியும் மழையின் ஒழகும், அத்தண்புனல் மணற் கற்களை அரித்தோடும் அருவியின் அழகும், பச்சைப் பசேலெனப் பெருங்காட்சியளிக்கும் பொழில்களின் அழகும், அவைகளில் பச்சைபாம்பெனப் பின்னிக் கிடக்கும் பசுங்கொடிகளின் அழகும், அவைகளினின்றும் அரும்பியுள்ள நகைமலரின் அழகும் மக்கள் உள்ளத்துள்ள இன்ப ஊற்றைத் திறப்பனவல்லவோ? மயிலாடும் அழகும், மான் நடக்கும் அழகும் நந்தூறும் அழகும் புலவருக்கு விருந்தல்லவோ?
+
+இவ்வழகெலாந் திரண்ட அழகே பெண்ணழகு. பெண், மாதர் என்னுஞ் சொற்களுக்கு அழகென்பதே பொருள். பல திற இயற்கை அழகுகளெல்லாம் அவள் மாட்டிருத்தலால், அவளை அழகெனும் பெண் - மாதர் - என்று நந்தமிழ் மக்கள் அழைத்தார்கள். அழகுக்கு உறைவிடமாகிய பெண்ணின்பால் எது இல்லை? எல்லாமிருக்கின்றன. அவள்மாட்டு முகிலுண்டு; மானுண்டு; மலர்களுண்டு; குயிலுண்டு; மயிலுண்டு; மானுண்டு; பிறவும் உண்டு. முருகன் வடிவெலாம் அவள். அவள்பால் முருகை அழகைக் காண்டலன்றோ இன்பம்?
+
+இத்தகைய இன்பப் பொருளைத் துன்பப் பொருளாக எவன் கொள்வான்? காமுகன் - கீழ்மகன் - கயவன் - கொள்வான். இயற்கையின்ப நுட்பந் தெரிந்த ஒருவன் ஒரு நாளும் பெண்ணைத் துன்பப்பொருளாகக் கருதான். பெண்ணினல்லாள் பாட்டாக இருக்கிறாள்; எந்தை முருகனாக இருக்கிறாள்; தூய இன்பமாக இருக்கிறாள். அப் பெண் தெய்வத்தைத் தொழுகிறேன். பெண்ணெனும் தெய்வ அழகு, அறியாமை அழுக்காறு அவா முதலிய கொடுமைப் பாறை உடைத்து, இன்ப ஊற்றைத் திறக்கும். அவ்வின்பத்தில் தோய்ந்த பழந்தமிழ்ப் புலவர் பாடல்கள் முருகன் உறையும் அழகுக் கோயில்களாம். பழந்தமிழ் நூல்களைப் படிப்பதும் அழகெனும் முருகனை வழிபடுவதாகும்.
+
+முருகன் இயற்கை வாயிலாகத் தனதழகை நாடோறும் பொழியாதிருப்பின் உலகில் அழகேது? அழகில்லையேல் வாழ்வேது? ஒருவனது வாழ்வு அவனது அழகையே பொறுத்து நிற்கிறது. உடலில், நரம்பில் உரங்குன்றப் பெறுகிறவன் அழகுடையவனாயிரான். ஒருவனது உடல் நலத்தை அவனது அழகு புலப்படுத்தும் உலகிலுள்ள உயிர்களெல்லாம் உடல் நலமுற்று இன்பந் துய்த்து வாழ்தல் வேண்டும் என்னும் பேரருளா` முருகன் இயற்கை வாயிலாக அழகை உதவுகிறான். எம்பெருமான் நீலக்கடலில் காலையில் நெருப்புப் பிழம்புபோல ஞாயிறாக் புறப்பட்டு உலகுக் குதவாவிடின், உலகம் என்ன பாடுபடும்? அவன் திங்களாக அமுதம் பொழிந்து உலகுக் கின்ப மூட்டுவதை உணராத புலன்களும் புலன்களாமோ? முருகன் மலையாக நின்றும், ஆறாக ஓடியும், காடாக விளங்கியும், கடலாக ஒலித்தும், உடலாக உடனிருந்தும் உயிர்களை ஓம்பிவரும் திருவருட்டிறத்தை எவரே புகழ வல்லார்? முருகன் இயற்கை வாயிலாக ஆடிவரும் திருவிளையாடல்களை ஈண்டு விரிக்கிற் பெருகும்.
+
+இயற்கை வாயிலாக முருகன் புரிந்து வரும் பேருதவியை மக்கள் நேரே பெறுவார்களாயின், அவர்கள் என்றும் அழியா அழகுடையவர்களா யிருப்பார்கள். இயற்கைக்கு மாறுபட்ட வாழ்வில் மக்கள் தலைபடலால், அவர்கள் விரைவில் அழகு குன்றி மாண்டுவிடுகிறார்கள். ஆதலால் மக்கள் இயற்கைக்கு அரணாமாறு வாழ்வு நடாத்தப் பயில்வார்களாக.
+
+இயற்கை வாழ்வு நடாத்துவோர் உள்ளம், அழுக்காறு அவா முதலிய `யம தூதர்கள்' உலவும் நிலமாகாது. அவர்கள் உள்ளம் அன்பு இரக்கம் முதலிய `தெய்வ கணங்கள் வாழும் நன்னிலமாகும். அழுக்காறு அவா முதலிய பேய்த்தன்மைகள் மகனை நோய்வாய்ப்படுத்தி விரைவில் அவனைக் கொள்ளும். அவையில்லா அன்பு இரக்கம் முதலிய தெய்வ நீர்மைகள் ஒருவனது வாழ்வை வளர்க்கும். இதற்குரிய வழி இயற்கையழகாம் முருகை - முருகனை - வழிபடுவதாகும். `என்றும் இளையாய் அழகியாய்' என்று முருகனது இயல்பை ஓதிய நக்கீரனார், `உன்னையொழிய ஒருவரையும் நம்புகிலேன் பின்னை யொருவரை யான் பின் செல்லேன்' என்று அருளிச்செய்திருத்தல் காண்க. என்றும் அழியா அழகை விரும்புவோர் எம்பெருமான் முருகனடியைத் தமக்குரிய புகலாக் கோடல் வேண்டும்.
+
+இயற்கை வாயிலாக முருகு என்னும் அழியா அழகை உணர்ந்தவர் பால் என்றும் மணமே கமழ்ந்து கொண்டிருக்கும். அவர்மீது புலால் மணம் கமழாது. அவர் மணத்துக்கென வேறு செயற்கைப் பொருளைத் தேடவேண்டுவதில்லை.
+
+வைகறைத் துயிலெழுந்து, காலைக் கடனை ஒழுங்காக முடித்து, தண் புனலாடி, நறுங் காற்றில் மூழ்கி, ஞாயிற்றொளியிற் படிந்து, இயற்கை உணவுகொண்டு புறத்தை அழகு செய்தும், வாழும் ஒருவன் மீது இயற்கை கணங் கமழுமென்பது ஒருதலை. இவ்வாழ்வு பெறாத சோம்பரின் புறத்திலும் அகத்திலும் அழுகல் நாற்றம் வீசும். இயற்கை வாழ்வு நடாத்தும் ஒருவனது உள்ளும் புறமும் முருகெனும் அழகு கோயில் கொள்கிறது. அழகுள்ள இடத்தில் புலால் முடைக்கு இடமேது? அழகில் மணமிருத்தல் இயல்பு.
+
+இயற்கை மணங்கமழப் பெறுவோர் என்றும் இளமையுடையராயிருப்பர். இயற்கை மணம் உடல் நலனுக்குக் கேடு சூழாது. மக்களை முதுமை யணுகாதவாறு அம்மணங் காத்துவரும். அழகில் மணம் ஒன்றி நிற்றல் போல அதன்கண் இளமையும் ஒன்றி நிற்கிறது. இளமை விரும்பாதார் உலகில் உளரோ? அகவை முதிர்ந்த கிழவனும் மீண்டும் இளமை பெற விரும்புவன் இளமையில் மக்களுக்குள்ள காதலுக்கோ ரளவில்லை. இளமை முருகன் கூறுகளிலொன்று. ஆகவே என்றும் இளமையுடையவராக வாழ விரும்புவோர் எம்பெருமான் முருகனை எப்பொழுதும் நினைந்த வண்ணமிருப்பாராக.
+
+இயற்கைக்கு முதலாக (காரணமாக) உள்ள முருகு என்றும் இளமையா யிருப்பதால், இயற்கைப் பொருள்கள் தங்கள் கடமைகளைச் செவ்வனே ஆற்றுகின்றன. முருகின் இளமை குன்றுவதாயின், இயற்கையும் தன் செயலில் குன்றும். ஆனால் இயற்கை எத்துணைக் காலம் எவ்வெவ்வழியில் தொழிற்படினும், அஃது இளைத்துச் சலித்துச் சாய்வதில்லை. என்னை? முதலாகவுள்ள முருகு என்றும் இளமையாயிருப்பதால், வினையாகிய இயற்கையும் என்றும் இளமை என்னும் வளமை குன்றாமல், ஒரு பெற்றியாய்த் தன்செயலைச் சலிப்பின்றிச் சாய்வின்றி நடாத்திக்கொண்டு போகிறது. ஆதலால் இயற்கைவழி முருகை யுணர்வோன் என்றும் இளையனாயிருப்பன்.
+
+மலைக்கிழங்கை உண்டும், காட்டுப் பழங்களைத் தின்றும், வயல் மணிகளை (தானியங்களை)ப் புசித்தும், கடற்காற்றைப் பருகியும் வாழ்வோரை விரைவில் முதுமை அணுகாது. இயற்கைப் பொருள்களைத் தங்கள் விருப்பப்படி வேறு பல பொருளொடும் புலாலொடுங் கலந்து அவித்துப் பதன்செய்து விலாப்புடைக்க உண்பதிலேயே பொழுது போக்கும் மாக்களை விரைவில் முதுமை அடர்ந்து வருத்தும். பெருந் திண்டியானும், களியாடல்களானும், தீயொழுக்கத்தானும் உடல் வளத்தைக் கெடுத்து, முதுமையென்னும் மூதேவியை மணந்துகொண்ட சிலர், மீண்டும் இளமையாஞ் சீதேவியை மணக்க முயல்கிறார். இம்முயற்சியில் தலைப்படுவோருட் சிலர் பொன் வெள்ளி இரும்பு இவைகளால் செய்யப்பட்ட மருந்துகளை உண்கிறார்; சிலர் நடைப் பயிற்சி குதிரையேற்றப் பயிற்சி முதலிய துறைகளிலிறங்குகிறார்; சிலர் படுக்கையோடு கிடந்து, `கடவுளே கடவுளே' என்று வாயால் மட்டுங் கடவுளைச் சொல்லிக் கொண்டிருக்கிறார். அமெரிக்கா, ​ெஜர்மனி முதலிய இடங்களில் முதுமை நீக்கி இளமைபெற இளங்குரங்குகளின் உயிர்ப்பு முளைகளைப் பெயர்த்து மக்கள் பால் அவைகளை அமைக்கும் முறை கையாளப்பட்டு வருகிறது. ஓருயிர் நலத்துக்கு இன்னோர் உயிரைக் கொல்வது இயற்கைச் செந்நெறியாகாது. இயற்கைக்கு மாறுபட்டு வாழ்வைத் தொடக்கத்தில் நடாத்திப் பின்னைச் சாக்காட்டுக் கஞ்சி மருத்துவம் முதலிய செயற்கை முறைகளைக் கையாள்வதினும், முன்னைய பிழை பாடுணர்ந்து இயற்கை அன்னையின் திருவருளைப் பெற, மீண்டும் அவள் அருள் நாடியுழைப்பின் அவள் இரங்கியருள்வாள்.
+
+இயற்கைத் துணையால் முதியோர், இளமைப்பேறு பெறுதல் அரிதன்று. அமெரிக்காவில் சில அறிஞர் இயற்கைத் துணையால் இளமைக்காக்க முயன்று வருகிறார். பண்டைத் தமிழ்நாட்டார் இயற்கையோடு முரண்படா வாழ்கு நடாத்தி, இயற்கை அழகாம் முருகனை வழிபட்டமையான், அவர் இளமை இன்பம் நுகர்ந்து வந்தனர். (குமரனை மன மொழி மெய்களால் தொழுவோர் என்றுங் குமரனாயிருப்பது இயல்பே.) இளமை காக்க விரும்புவோர் என்றும் இளையனாக உள்ள முருகனைப் பொருள் தெரிந்து போற்றி உய்வாராக. இயற்கை மணமும் மாறா இளமையும் உடைய ஒன்று எவ்வித மாறுதலும் எய்தாது. அஃது என்றும் ஒரு பெற்றியதாயிலங்கும். மாறுபாடின்றி என்றும் ஒரு பெற்றியதாயிருப்பது கடவுளியல்பாகும். தோற்றம் ஒடுக்கமென்னும் மாறுதல் தத்துவத்துக்குண்டு. மாறுதலில்லாக் கடவுள் தத்துவங்கடந்த தனிப்பொருளென்று அறிவு நூல்கள் முழங்குகின்றன. இதுவே கந்தழி என்பது. இயற்கை மணமும் மாறா இளமையும் மாறுதலுடைய தத்துவத்துக்கில்லை; அவை மாறுதலில்லாக் கடவுளுக்கேயுண்டு. அழியா அழகில் இயற்கை மணமும், மாறா இளமையும் இருத்தல்போலக் கடவுட்டன்மையு மிருத்தல் காண்க. இவையெலா முடைய ஒன்றை முருகன் என்று நம் முன்னோர் கொண்டனர். அம்முருகனை இடையீடின்றி வழிபட்டுவோரின் கடவுட்டன்மையும் பெறலாம்.
+
+ஆகவே, முருகு என்னும் அழகில் மணமும் இளமையுங் கடவுட்டன்மையும் ஒன்றியிருத்தலுணர்க.
+
+பழந்தமிழர் தாம் தொழுத கடவுளை அழகுப் பொருளாகவே கொண்டனர் என்பதற்குப் பல சான்றுகள் உள அச்சான்றுகளுள் இரண்டொன்று வருமாறு:
+
+தமிழ் பிறந்த இடமும், தமிழ் வளர்த்த குறுமுனி வாழ்ந்த இடமும், தமிழ்ச் சங்கம் மருவிய இடமும் பாண்டிநாடு என்று சொல்லப்படுகிறது. அப்பாண்டி நாட்டுப் பழைய மக்கள் தங்கள் ஆவலாய் அவிர்சடைக் கடவுளைச் சொக்கன் என்னும் பெயரால் வழிபட்டார்கள். (அச்சொக்கன் பின்னைச் சுந்தரேசனானான்).
+
+சொக்கன் என்னுஞ் சொற்குரிய பொருளென்ன? முழு அழகன் - பேரழகன் என்பது. சொக்கு - பேரழகு.
+
+பாண்டி நாட்டில் சிறப்புற்று விளங்கும் மற்றொரு பழம்பதியாகிய திருமாலிருஞ் சோலையில் எழுந்தருளியுள்ள கடவுளைத் தமிழ்மக்கள் `அழகன்' என்று போற்றியிருத்தலையும் உன்னுக.
+
+`அழகனே ஆலவாயில் அப்பனே
+ அருள் செய்வாயே' - அப்பர்
+
+`தக்கன் வேள்வி தகர்த்தருள் ஆலவாய்
+ சொக்கனே யஞ்ச லென்றருள செய்யெனை'
+ - ஞானசம்பந்தர்
+
+`மொக்கனி யதனின் முழுத்தழல் மேனி
+ சொக்க தாகக் காட்டிய தொன்மையும்'
+ - மாணிக்கவாசகர்
+
+`பலபலநாளும் சொல்லிப் பழித்தசிசு பாலன்தன்னை
+அலவலைமை தவிர்த்த அழகன் அலங்காரன்மலை
+குலமலை கோலமலை குளிர்மாமலை கொற்றமலை
+நிலமலை நீண்டமலை திருமாலிருஞ் சோலையதே'
+ - பெரியாழ்வார்
+
+பண்டைத் தமிழர் அழகை அல்லது முருகைப் பொருளாகக்கொண்டு வழிபாடு நிகழ்த்தி வந்தனரென்பது வெள்ளிடைமலை.
+
+இதுகாறுங் கூறியவாற்றான், மணம், இளமை, கடவுட்டன்மை, அழகு ஆகிய இவைகளின் பொருளாக முருகன் பொலிதலும், இந்நான்கனுள் ஒன்றாய அழகிடை ஏனைய மூன்றும் பிரிவின்றி விராவி நிற்றலும், அதனான் அவ்விராவுதலுடைய அழகை முருகெனக் கோடலும் பிறவும் பெறப்படுகின்றன.
+
+முருகில் இவ்வியல்புகள் கெழுமியிருத்தலை யுணர்ந்த புலவர் பல்லோர், அவருள் பழையவர் நக்கீரனார். இவர் அருளிய திருமுருகாற்றுப்படையை, முருகில் ஒளிரும் நுண்ணியல்களின் பருமை அல்லது பரிணாமம் என்று கூறலாம். நூல் முற்றும் அவ்வியல்புகள் பொதுளி நிற்பினும், அவை வெளிப்படையாகவும் விளக்கமாகவும் நூலின் இறுவாயில் ஆசிரியரால் நிரலே பெய்யப்பெற்றிருக்கின்றன. கீரனார், 'அரும் பெறன் மரபின் பெரும்பெயர் முருக' என்று முருகின் பெயர் வழித் தொன்மை குறித்து, அம்முருகில் திகழும் அழகையும், அவ்வழகினூடே பிரிவின்றி விராவி நிற்கும் மணம், இளமை, கடவுட்டன்மை என்னும் இவைகளையும் ஒருசேர வைத்து, `அணங்குசால் உயர்நிலை தழீஇப் பண்டைத்தன் - மணங்கமழ தெய்வத் திளநலங்காட்டி' என்று கூறியிருத்தல் காண்க. அணங்கிற்று ஈண்டு அழகுப் பொருள் கொள்க.
+
+ 3. முருகின் தொன்மை
+
+[முருகு என்னுஞ் சொல்வரலாறு - முருகு முருகனானமை - முருகன் சொல்வழைக்குக் காலம் - மருகன் தொன்மைக்கு இரண்டு குறிப்புகள் - முதன் மகன் தோன்றிய இடமும் மக்கள் வாழ்வு முதல் முதல் தொடங்கப்பட்ட இடமும் - தமிழரின்மலைவாழ்வும் முருகும் - பெயரின் பன்மையும் பொருளின் ஒருமையும் - நால்வகை நிலத்தில் அழகின் கூறுபாடுகள் - தொல்காப்பியக் காலம் - தொல்காப்பியத்துக்கு முன்னரே முருகன் வழிபாடுண்மை - விலங்கும் முதல் மகனும் - ​ெஹக்கல், டார்வின் கொள்கை - உள்ளது சிறத்தல் - திருமால்பத்துப் பிறவி நுட்பம் - பழைய மகன் பல்லமைப்பு - பல்லுக்கும் மூளைக்குமுள்ள இயைபு - மகனுக்குக் கடவுளுணுர்வுற்ற காலம் - மக்கள் மாக்கள் நிலை - முதன் மக்களின் உணவு முதலியன - மக்கள் அட்டில் தொழில் கொண்டகாலம் - இயற்கை முருகன் அநாதி]
+
+முருகு என்னுஞ் சொல்வழக்கு எந்நாளில் உண்டாயிற்று? அதன் வரலாறென்னை? முருகு என்பது மிகத்தொன்மை வாய்ந்த ஒரு தமிழச் செஞ்சொல்? பண்டை நாளில் தமிழ்ச் சொற்கள் பல முதல் நிலையளவாக நின்று ஆட்சி பெற்று வந்தன, பின்னே நாளடைவில் அவைகளுள் பல இடைநிலை இறுதிநிலைகள் பெறலாயின. அச்சொற்களுள் முருகு என்பதும் ஒன்று. முருகு என்னும் முதல்நிலை அன் என்றும் ஆண்பால் இறுதி நிலையேற்று முருகன் ஆயிற்று. ஆகவே முருகினின்றும் முருகன் பிறந்தானென்க. முருக்கும் முருகனுக்கும் பொருளில் வேற்றுமை யுண்டோவெனில் இல்லை யென்க. இரண்டும் ஒரு பொருளையே குறிப்பன. முருகே முருகன்; முருகனே முருகு.
+
+முருகு அல்லது முருகன் என்னுஞ் சொல்வழக்கு மிக மிகத் தொன்மையது. அச்சொல் வழக்கு இந்நாளையது என்று எவராயினும் வரையறுத்துக் கூறல் இயலாது. தொன்மை வாய்ந்த முருகன் என்னுந் தமிழ்ச்சொல் இன்னும் இறந்து படவில்லை; இன்னும் ஆட்சி பெற்றே நிற்கிறது. அச்சொல் வழி அதற்குரிய பொருளை இன்னும் போற்றுவோருளர்; பாடுவோருளர். இன்றும் அப்பெயரான் விழாக்கள் நடைபெறுகின்றன; நோன்புகள் கொண்டாடப்படுகின்றன. அச்சொல்லின் உறுதியும் மாண்பும் தூய்மையும் என்னே என்னே என்று இறும்பூதெய்துகிறேன்.
+
+முருகின் தொன்மை காணச் சிறப்பாக ஈண்டு இரண்டு குறிப்புக்கள் பொறிக்கலாம். ஒன்று முருகன் தமிழ்க்கடவுள் என்பது; மற்றொன்று முருகன் மலைநிலக் கடவுள் என்பது. இவ்விரண்டானும் முருகின் தொன்மை நனிவிளங்கும். `தமிழன்', `தமிழ்ப் பெருமான்', `தமிழ் இறை', `முத்தமிழோன்' எனவும், `குறிஞ்சி கிழவோன்', `மலை கிழவோன்' எனவுந் தமிழ்ப் பெரியோர் முருகனை அழைத்திருத்தல் காண்க.
+
+தமிழன் முதுமையையும், தமிழ் மக்களின் பழமையையும் ஈண்டு விரிக்கிற் பெருகும். முதன் மகன் தோன்றிய இடம் தமிழ்நாடு என்று ஆராய்ச்சியாளர் கண்ட உண்மையொன்றை ஈண்டு நினைவூட்டுவது சாலும். இப்பழம் பெரு நாட்டார் கடவுளுக்கு முதல் முதல் தூவிய சொன்மலர் முருகு எனில், அதன் தொன்மையை என்னென்று இயம்புவது?
+
+மக்கள் வாழ்வு முதல் முதல் தொடங்கப்பட்ட இடம் மலை என்பது அறிஞர் கொள்கை. இஃது இயற்கை நூலாசிரியர் பலர் ஒப்பமுடிந்த உண்மை. மலையில் வாழ்ந்த பழைய மக்கள் தங்கள் கடவுளைக் `குறிஞ்சிக் கிழான்' என்று கோடல் இயல்பு. பழந்தமிழ் மக்கள் மலையிடை வாழ்ந்தபோது, தங்கள் கடவுளை மலைநிலக்கடவுளாகக் கொண்டதில் வியப்பென்ன? மக்களின் நல்வாழ்வு மலையிடை அரும்பிய போழ்து முருகெனுஞ் சொல்லும் அலர்ந்தது. இத்தகைய சொல்லின் தொன்மையை எங்ஙனம் அளந்துரைப்பது?
+
+மலையில் வாழ்ந்த தமிழ் மக்கள், பின்னைப் பிற நிலங்களில் குடிபுகுந்து, அவ்வந் நிலங்களின் இயல்புக்கேற்ப முழுமுதலுக்குப் பலவேறு பெயரிட்டார்கள். பல வேறு பெயர்களைக் கொண்டு, கடவுளரும் பலர் என்று கோடலாகாது. நிலத்தின் இயல்பிற்கேற்ப இடப்பட்ட பெயர்கள் பலவாயினும், அவை யாவும் ஒரு பொருளையே குறிக்கொண்டு நிற்பனவாம். அவ்வொரு பொருள் எது? அஃது இயற்கையிலுள்ள அழகு அல்லது முருகு என்க. இயற்கையழகு காடாகப் பசுமைக்காட்சி வழங்கியபோது, அவ்வழகை அல்லது முருகைத் தமிழ்மக்கள் திருமால் என்றார்கள். {1} மற்ற நிலக்கடவுள் பெயர்களையும் இவ்வாறே கொள்க. தமிழ் மக்கள் அழகெனும் முருகைப் பொருளாக் கொண்டதொன்றே ஈண்டுக் கருதற்பாற்று. தமிழ் மக்கள் வாழ்வு, என்று மலைநிலத்தில் துவங்கப்பட்டதோ, அன்று தொட்டு இன்றுவரை, முருகன் தமிழ் நாட்டுத் தெய்வமாகப் போற்றப்பட்டு வருகிறான். தமிழ்நாட்டுப் பழங்கடவுள் முருகனே.
+
+தமிழ்நாட்டைப் பற்றிய எவ்வாராய்ச்சிக்குந் தொல்காப்பியத்தைக் கருவாயாகக் கொள்வது வழக்கம். என்னை? இப்பொழுதுள்ள தமிழ் நூல்களுள் தொல்காப்பியம் பழமையுடையதாகலின் என்க. தொல்காப்பியக் கால ஆராய்ச்சி இன்னும் முற்றுப்பெறவில்லை. அஃது இன்னும் வளர்ந்து செல்கிறது. அதுகுறித்து இதுகாறும் ஆராய்ந்தவர்க்குள்ளுங் கருத்து வேற்றுமை உலவி வருகிறது. தொல்காப்பியக் காலம் இத்துணை ஆயிரம் ஆண்டுகளுக்கு முன்னர் என்று ஆராய்ச்சியாளர் கூறுகிறாரேயன்றி, ஏறக்குறைய ஆதல் `இக்காலம்' என்று எவரும் அறுதியிட்டுக் கூறினாரில்லை. தொல்காப்பியனார் காலம் மூவாயிரம், ஐயாயிரம், பதினாயிரம் ஆண்டுகளுக்கு முன்னர் இருத்தல் வேண்டுமென்று முறைமுறையே சிலர் கிளந்து கூறியுள்ளனர். தொல்காப்பியனார் காலம் எத்துணை ஆயிரம் ஆயிரம் ஆண்டுட்கு முன்னர் ஆயினுமாக. அவர் காலத்தில் முருகன் வழிபாடு இருந்ததா இல்லையா என்பதொன்றே ஈண்டு ஆராயற்பாலது.ள
+
+தொல்காப்பியனார் காலத்தில் முருகன் வழிபாடு இருந்தது என்பதற்கு அவர் தம் நூலினுள் அகச்சான்றுகளுண்டு. அக்காலத்தில் முருகன் வழிபாடு இருந்தது உண்மை. அப்பொழுது அஃது எந்நிலையிலிரிந்தது? தொடக்க நிலையிலா அல்லது பழகி வளம்பட்ட நிலையிலா? பழகிப் பழகி முதிர்ந்து வளம்பட்ட நிலையில் அவ்வழிபாடு அந்நாளில் இருந்தது. ஆகவே, தொல்காப்பியனார் காலத்துக்கு முன்னரே தமிழ் நாட்டில் முருகன் வழிபாடு ஆட்சியிலிருந்ததெனக் கொள்க. எப்படி?
+
+தொல்காப்பியத்தில் நால்வகை நிலன்களும், அவ்வந்நில இயலுக் கேற்றவாறு மக்கள் கொண்ட வழக்க ஒழுக்கங்களும், பிற வாழ்வுத் துறைகளும் பேசப்படுகின்றன. அப்பேச்சான் தொல்காப்பியக் காலத்துக்கு முன்னரே தமிழ்மக்கள் குறிஞ்சி நிலம் விடுத்து, மற்ற முல்லை மருதம் நெய்தல் நிலங்களில் குடிபுகுந்து, வாழ்வு நடாத்தினார்கள் என்று தெரிகிறது. தமிழ் மக்கள் நால்வகை நிலங்களிலும் வாழ்வு துவங்கா முன்னர் அதாவது அவர்கள் மலைநிலத்தில் மட்டும் வாழ்ந்த வேளையில், அவர்கள் முருகன் வழிபாட்டைத் தொடங்கிப் பயிற்சி பெற்றிருத்தல் வேண்டும். இது முருகனுக்குரிய `குறிஞ்சி கிழான்', `மலை கிழவோன்' முதலிய சிறப்புப் பெயர்களான் அறியக் கிடக்கிறது. மலையிடை மட்டும் மக்கள் வாழ்வு துவங்கிய நாள் எந்நாளோ?
+
+மலையிடை மக்கள் நல்வாழ்வு செலுத்தப் புகு முன்னர் மக்கள் எப்படி இருந்தார்கள்? மக்கள் தோற்ற வரலாற்றை ஆராய்ந்தால் பலதிற உண்மைகள் போதரும். மக்கள் தோற்ற வரலாற்றைப் பற்றிச் சமய நூல்கள் பலவாறு பகர்கின்றன. அவை நம்பிக்கை யுலகுக்கு உரியனவாம். இயற்கைத் துணை கொண்டு ஆராய்ந்து முடிவு கண்ட அறிஞர், மக்களின் மூதாதைகள் விலங்குகளென்று கருதுகின்றனர். மக்களுலகின் தோற்றுவாய்க்கு நிலைக்களன் விலங்கு உலகம் என்பது அக்கூர்த்த மதியினர் ஆராய்ச்சியிற் போந்த உண்மை. இவ்வாராய்ச்சியிற் புகுந்து பன்னெடு நாள் உழைத்துப் பலதிற நுட்பங்களை உலகிற்குணர்த்திய ​ெஹக்கல், டார்வின் முதலிய பேரறிஞர்க்கு உலகங் கடமைப் படுவதாக.
+
+நமது நாட்டுப் புராணங்கள் சில இவ்வுண்மையை ஒருவாறு கதைகள் வடிவாக அறிவுறுத்துகின்றன. புராண நூல்களின் பல இடங்களில் திருமாலின் பத்துப் பிறவிகள் சொல்லப்படுகின்றன. கூர்தல் அல்லது உள்ளது சிறத்தல் (Evolution) முறைப்பற்றி அப்பத்தையும் உற்று நோக்கின் படிப்படியாக உயிர்களின் பிறவி வளர்ச்சி புலனாகும். நம் நாட்டு பௌராணிகர்கள் பெரிய ​ெஹக்கல்கள், டார்வின்கள் போலும்.
+
+விலங்கினின்றும் பிறந்த மகனுக்குத் தொடக்கத்தில் பலதிற விலங்குக் கூறுகளிருந்தன. அவைகளுள் ஒன்று பல். அந்நாளைய மகனுக்குக் கூரிய வாளனைய கோரைப் பற்களிருந்தன. அப்பல் நாளடைவில் தேய்ந்து தேய்ந்து இப்பொழுதுள்ள நிலையை அடைந்திருக்கிறது. கோரைப் பல்லினின்றுந் தேய்வுற்ற அப்பல்லுக்கு இன்னும் நாய்ப்பல் என்னும் வழக்கிருத்தலை யோர்க. கோரைப்பல்லெனும் விலங்குப் பல்லுடைய பாவைகள் இன்னும் கோயில்களில் நின்று கொண்டிருக்கின்றன. அவை நமது மூதாதைகளின் நினைவுக் குறிகளாகும்.
+
+விலங்கினின்றும் பிறந்த மகனுக்குக் கடவுள் உணர்வெனும் அன்புநெறி உடனே விளங்கியிராது. பல்லாயிரம் ஆண்டுகளுக்குப் பின்னரே அவனுக்குக் கடவுள் உணர்வு தோன்றியிருக்கும். எப்போது அவ்வுணர்வு தோன்றியிருக்கலாம்?
+
+நீண்ட கோரைப்பல் விலங்குணர்விற்கு அறிகுறி. அஃதிருந்த மட்டும் மகனுக்குக் கடவுள் உணர்வு தோன்றியிராது. பல்லுக்கும், குடரின் உள்ளுறுப்புச் சிலவற்றிற்கும், மூளைக்குந் தொடர்புண்டு. பல் தேயும் அளவினதாக மூளையின் வன்மை அருகி மென்மை பெருகும். மென்மை அளவாக அறிவு விளக்கமுறும். சில ஆயிரம் ஆண்டுகட்கு முன்னர் இருந்த மக்களின் உள்ளுறுப்புகட்கும், சிலநூறு ஆண்டுகட்கு முன்னர் இருந்த மக்களின் உள்ளுறுப்புகட்கும், இப்போதைய மக்களின் அவ்வுறுப்புகட்கும் வேற்றுமையுண்டு. இப்பொழுதுஞ் சில உள்ளுறுப்புக்கள் பயனின்றிக் கிடக்கின்றன என்று மருத்துவ அறிஞர் கருதுகின்றனர். இவ்விரிந்த ஆராய்ச்சியில் ஈண்டு நுழைய வேண்டுவதில்லை. விலங்கினின்றும் பிறந்த மகன் எப்பொழுது கடவுள் உணர்வு பெற்றிருப்பான் என்பதொன்றே ஈண்டு நமக்குத் தேவை.
+
+விலங்கினின்றும் தோன்றிய மகன், வடிவான் விலங்கொடு வேறுபட்டு விலங்கினும், உணர்வால் நீண்டநாள் அதனொடு வேறுபடாமலிருந்தான். பின்னைப் பல் முதலியன தேய்வுற வுற உணர்வானும் அவன் விலங்கினின்றும் வேறுபடலானான். ஆகியும் மகன் இன்னும் விலங்குணர்வினின்றும் முற்றும் விடுதலையடைந்தானில்லை. விடுதலையடையாமையான் அவன் இனத்துள் இரு பிரிவு தோன்றலாயின. ஒன்று மாக்கள் இனம்; மற்றொன்று மக்கள் இனம். மாக்களாவார் விலங்கையொத்த ஐயறிவுடையார்; மக்களைவார் ஆறறிவுடையார். `மாவு மாக்களும் ஐயறி வினவே, மக்கள் தாமே ஆறறிவுயிரே' என்றார் தொல்காப்பியனார். அம்மாக்களும் மக்களுஞ் சேர்ந்த ஒன்றே மன்பதை என்பது.
+
+ஆறாவது அறிவு எது? அவ்வறிவே கடவுள் உணர்வெனும் அன்புநெறி விளக்கத்துக்கு நிலைக்களனாயிருப்பது. அவ்வறிவு விளங்கிய மக்கள், அவ்வறிவு விளங்காத மாக்களினின்றும் பிரிவுற்ற போழ்து, அவர்களிடை (மக்களிடை)க் கடவுள் உணர்வு அரும்பியிருத்தல் வேண்டும். அக்கடவுள் உணர்வே மக்களையும் மாக்களையும் வேறுபடுத்துவதென்க. மக்களிடைக் கடவுளுணர்வு, அவர்கள் மலையிடை மட்டும் வாழ்ந்துபோது தோன்றினமையால், அவர்கள் கடவுளைக் `குறிஞ்சி கிழான்', `மலைக் கிழவோன்' என்று போற்றினார்கள் போலும்.
+
+மாக்கள் மக்கள் இயல்புகளும் தொல்காப்பியனார் காலத்தில் முதிர்ந்து ஆட்சியிலிருந்தன. ஆதலால் அவ்வேற்றுமை தோன்றிய காலமும் தொல்காப்பியத்துக்கு முந்தியதே. அவ்வேற்றுமையுற்ற காலத்தைக் கணித்துக் கூறல் எளிதோ? ஆதலால் முருகன் தொன்மையைக் காலவரையறைப் படுத்திக் கூறலும் எளிதாகுங்கொல்?
+
+மகன் தொடக்கத்தில் காய்கறிகளை அவித்துத் தின்றானில்லை. அவன் அவற்றை இயற்கையாகவே உண்டு கழித்து வந்தான். பின்னை அவன் பல்லாயிரம் ஆண்டு கடந்து காய்கறிகளை அவித்துத் தின்னலானான். அக்காலத்தை இயற்கைநூல் வல்லார் சிலர் இற்றைக்குச் சுமார் முப்பதாயிரம் ஆண்டிற்கு முன்னதெனச் சொல்கிறார்.
+
+முதல் முதல் மலையிடை வாழ்வு துவக்கிய மக்கள், காய்கறிகளைப் பசுமையாகவே உண்டிருத்தல் வேண்டும். அவர்கள் முருகனுக்குத் தேனும் தினையும் வைத்து வழிபட்டதை அன்பர்கட்கு நினைவூட்டுகிறேன். மன்பதைக்குள் மாக்கள் மக்கள் வேற்றுமை புலனாய்க் கடவுள் உணர்வு பெற்ற போதும், மக்கள் காய்கறிகளைப் பசுமையாகவே புசித்திருந்தார்கள் என்று ஊகித்துணரலாம். அந்நாள் முப்பதினாயிரம் ஆண்டிற்கு மேம்பட்டு, எத்துணை ஆயிரம் ஆண்டுகடந்து நிற்குமோ தெரியவில்லை.
+
+இதுகாறுங் கூறிவந்த சில குறிப்புக்களான், முருகு என்னுஞ் சொல் வழக்கு எந்நாளில் உண்டாயிற்று என்று காண்டல் இயலாமற் போயிற்று. பின்னை எம்முடிபு கொள்வது? மன்பதைக்குள் மாக்கள் மக்கள் வேற்றுமையுணர்வு தோன்றி, மக்களினத்தில் கடவுள் அறிவு அரும்பிய நாள் தொட்டு, முருகு என்னுஞ் சொல்வழக்குத் தோன்றியிருத்தல் வேண்டும். அந்நாள் இன்னும் ஆராய்ச்சி யுலகிற்கு எட்டவில்லை.
+
+(முருகெனுஞ் சொல்வழக்குக் காலத்தைக் காண்டலே அரிதாயிருக்கிறது. அங்ஙனமாக, அச்சொற் பொருள் காலத்தை ஆராயப் புகுவது அறியாமையாகவே முடியும். இவ்வாராய்ச்சியில் தலைப்பட வேண்டுவதில்லை. முருகெனுஞ் செம்பொருள் கால எல்லைக்கு உட்பட்டதன்று என்று கொள்வதே அறிவுடைமை. முருகன் காலங் கடந்த கடவுள். இயற்கை என்று உண்டோ, அன்று முதல் முருகனும் உளன்; இயற்கை அநாதி; முருகனும் அநாதி.)
+
+மலையிடை வாழ்ந்த தமிழ் மக்கள் தங்கட்குக் கண்கூடாகக் காட்சியளித்த இயற்கையை அடிக்கடி கண்ணாற் கண்டு, உளத்தால் முகந்த, அதை இடையறாது நினைந்து நினைந்து, அதன்கண் படிந்த வாழ்வு நடாத்தினார்கள். அதன் பயனாக அவர்கள் இயற்கையினுள் பிரிவின்றி விராவி நிற்கும் அழகையும், அழகின் மாறாத இளமையையும், இளமையிலூரும் அழியா மனத்தையும், இவையுடைய ஒன்று எல்லாவற்றையுங் கடந்து மாறுதலின்றி யொளிருந்தன்மையையுங் கண்டார்கள். இவ்வழகு, இளமை மணம், கடவுட்டன்மை ஆகிய இயல்புகளைக் கொண்ட ஒன்றைப் பண்டைத் தமிழ் மக்கள் முருகு என்னுஞ் சொல்லால் அழைத்துப் போற்றினார்கள். முருகு என்பது பொருள் பொதிந்த ஒரு சொல். அம்முருகையுடையவன் முருகன்.
+
+அடிக்குறிப்புகள்
+
+{1} இது குறித்துத் `தமிழ் நூல்களில் பௌத்தம்' என்றும் நூலிலும் எனது கருத்தைத் தெரிவித்துள்ளேன். அது வருமாறு -
+
+`பழந்தமிழர் இயற்கை அழகையே உயர்ந்த பொருளாக அதாவது கடவுளாகக் கொண்டு வாழ்ந்தனர். அவர் மலைமீது வாழ்ந்தபோது அவர் உள்ளத்தைக் காலையிலும் மாலையிலும் ஞாயிற்றின் செம்மையும், வானத்திற் படருஞ் செம்மையும், பிற செம்மைகளுங் கவர்ந்தன. அச்செவ்விய இயற்கையழகை அவர் சேய் என்று போற்றினர். அம்மக்கள் தங்கள் கண்ணுக்குப் பச்சைப் பசேலெனக் காட்சி வழங்கிய காட்டின் இயற்கையழகை மால் என்று வழுத்தினர். அவர் மருத நிலத்தில் குடி புகுந்தபோது அங்கே பெரிதும் தம் இனமாகிய மக்கள் கூட்டத்துடன் நெருங்கி நெருங்கிப் பழக நேர்ந்தமையான், மக்கள் மாட்டொளிரும் இறைமை என்னும் இயற்கை அழகைக் கண்டு அதை வேந்து என்று கொண்டனர். அவர் கடற்கரை நண்ணியபோது கடலின் இயற்கையழகை வண்ணம் என்றனர். பழந்தமிழ் மக்கள் அவ்வந்நில இயற்கை அழகுக்கிட்ட பெயர்கள் சேய் மால் வேந்த வண்ணம் என்பன.
+
+இவ்வியற்கை அழகுப் பெயர்கள் தொல்காப்பினார் காலத்திலேயே அன் (வண்ணம் - வர்ணம் - வருணம் - வருணன்) விகுதி பெறலாயின. பின்னை நாளடைவில் இப்பெயர்கள் பிரிவுபட்ட கடவுளராகச் சமயவாதிகளால் கொள்ளப்பட்டன. பழந்தமிழ் மக்கள் கொண்ட கடவுள் இயற்கை அழகு என்பதை மட்டும் நாம் மறத்தலாகாது'.
+
+
+ 4. இயற்கை வழி அழகைக் காண்டல்
+
+[முருகும் இயற்கையும் உயிர்களும் - உயிர்கட்கு முருகன் இயற்கை வாயிலாகப் புரிந்துவருந் துணை - உயிர்கள் முருகனாதல் - அதற்குறிய வழி - எண்ணம் - அகம் - புறம் - இயற்கை வழிபாடு - புலனடக்கத்தின் நுட்பம் - திருமூலர் - ஆண்டகைமை - அப்பரும் புலனடக்கமும் - இறை யியல்பு - இயற்கைக்கும் புலன்கட்குமுள்ள தொடர்பு - இயற்கையும் புலன்களும் - புலவன் இயற்கையின் மகன் - இயற்கை வழிபாட்டின் கூறுபாடு - அழகுப் பொருள்கள் - பெண்மை வழிபாடு.]
+
+முருகன் என்றும் இளையனாய், மணமுடையனாய்க் கடவுட்டன்மை யுடையனாய் அழகுடையவனாயிருத்தலால் உயிர்கட் கென்னை? உயிர்கள் அவ்வியல்களைப் பெறும் வழியுண்டுகொல்?
+
+முருகன்பால் அவ்வியல்புகள் இயற்கையாய் அமைந்து கிடத்தற்குப் பொருளுண்டு. உயிர்களும் அந்திலை எய்தல் வேண்டும் என்பது முருகன் திருவுள்ளக்கிடக்கை. இயற்கைக்கும் முருகனுக்குமுள்ள தொடர்பைப்போல் முருகனுக்கும் உயிர்கட்குந் தொடர்புண்டு. இத்தொடர்பை உணர வேண்டுவது உயிர்களின் கடமை. முருகனோ உயிர்களைத் தன்னைப் போலாக்க ஆவல் கொண்டு நிற்கிறான். அவ்வாவலன்றி வேறு ஆவல் அவனுக்கில்லை. அவ்வாவலுடன் எப்பொழுதும் முருகன் இயற்கை வாயிலாக உயிர்கட்குத் துணை புரிந்தும் வருகிறான். ஞாயிறு, காற்று, புனல் முதலிய இயற்கைப் பொருட்களின் வாயிலாக முருகன் உயிர்களை ஓம்பா தொழிவனேல், உலகமேது? உயிரேது? வாழ்வேது?
+
+நாடோறும் இயற்கை வாயிலாகத் தாங்கள் பெற்று வரூஉம் துணை இயற்கையினுடையதா அல்லது அதன் உள்ளுறையாக உள்ள முருகனுடையதா என்பதை உயிர்கள் உய்த்துணரல் வேண்டும். அத்துணை, இயற்கையினுடையது என்று கருதுவோர், இளமை மணம் கடவுட்டன்மை அழகு ஆகியவற்றைப் பெறல் அரிது. இயற்கை வாயிலாக முருகனுடைமையாய் அத்துணை பெறுவதை உணர்வோர் முருகனாகலாம்; அதாவது அவனது இயல்புகளைப் பெறலாம்.
+
+முருகன் இயல்புகளாய இயற்கை மணமும், மாறா இளமையும், கடவுட்டன்மையும், அழியா அழகும் பெற ஒவ்வொருவரும் விரும்புவர். அவற்றை விரும்பாதார் அரியர். வெறும் விருப்பமட்டுங் கொள்வதிற் பயனில்லை. விருப்பத்தை நிறைவேற்றிக் கொள்ளலே அறிவுடைமை. அதை எவ்வாறு நிறைவேற்றிக் கொள்வது? எம்முறைபற்றி நிறைவேற்றிக் கொள்வது?
+
+முதலாவது வேண்டற்பாலது முருகைப்பற்றிய எண்ணம். முருகனை எண்ணும் போதெல்லாம் அவன் மணமுடையான், இளமையுடையான், கடவுட்டன்மையுடையான், அழகுடையான் என்று நினைத்தல் வேண்டும். அந்நினைவு கூடுதற்குப் புறத்தே அவ்வியல்புகளுடைய இயற்கைப் பொருட்கண்மீது கருத்தைப் பதியவைத்தல் வேண்டும்; அகத்தில் ஒன்று நிலைபெறுதற்கு அதன் தொடர்பாயுள்ள புறமும் அதனுடன் ஒன்றுதல் வேண்டும். என்னை? அகமே புறமாகலின் என்க. இரண்டிற்குந் தொடர்பிலா வாழ்வு செம்மைய தாகாது. ஆதலால், முருகை உணர்தற்கு அகப்புற ஒற்றுமை இன்றியமையாதது.
+
+அகத்தின் வாயிலாகப் புறத்திற் புகுதல் ஒருமுறை. புறத்தின் வாயிலாக அகத்தை அணைவது இன்னொரு முறை. இரண்டனுள் முன்னையது மிக அரியது; இடர்ப்பாடுடையது; முடிவு காண்டல் என்னும் உறுதியுங் கூட்டாதது. பின்னையதோ எளியது; இயற்கையில் இயங்குவது; உறுதி கூட்டுவது. ஆகவே, புறவழி பற்றுதலையே ஈண்டு யான் கொள்கிறேன்.
+
+முருகன் குணங்குறி கடந்தவன். அவனது இயல்புகளை உணர்வில் - நிகழ்ச்சியில் - பெறுதல் இயலுமே. உணர்வில் - நிகழ்ச்சியில் - அவைகளைப் பெறுதற்குத் தொடக்கத்தில் அவைகளின் பருமை நினைவு வேண்டற்பாலது. இதற்கு வழி என்னை?
+
+முருகன் குணங்குறி கடந்த ஒருவனாயினும், இயற்கை அவனுக்கு உடலாக அமைந்திருக்கிறது. அவ்வுடல்வழி உயிராம் முருகை யணர்தல் கூடும். ஆகவே, முருமை உணர விரும்புவோர் இயற்கையைப் பற்றுக்கோடாகக் கோடல் வேண்டும். கொள்ளின், முருகை இயற்கை உணர்த்தும். உயிர்கள் இயற்கையோடும் உறவு கொள்ளும் அளவினதாக, அவைகளின்மாட்டு முருகன் உணர்வும் பெருக்கெடுக்கும். `இஃதென்ன! இயற்கை வடிவங்களை நாடோறும் காண்கிறும்; இயற்கையுடன் வாழ்கிறோம்; முருகைக் காண்கிறோமில்லையே' என்று சிலர் கருதலாம். காண்பனவெல்லாம் காட்சியாகா. அங்ஙனே வாழ்வெல்லாம் வாழ்வாகா. புலன்களைத் தீய வழியில் செலுத்திக் கொண்டு, இயற்கையை ஒரேவழிக் காண்டலும், அதனுடன் வாழலும் முறையே அதைக்காண்பதுமாகாது; அதனொடு வாழ்வதுமாகாது. `முருகை இயற்கை உணர்த்தும்' என்னும் உறுதியோடு, புலன்களை இயற்கைக்கு மாறுபட்ட நெறிகளில் தோயவிடாது, அவைகளை இயற்கையில் நிலைபெறுத்தி, இயற்கையுடன் கலந்த உறவு கொள்ளப் பயிலல் வேண்டும். இப்பயிற்சிக்கு முதல் முதல் வேண்டற்பாலது புலன் தூய்மை.
+
+புலன்களின் பயிற்சிக்கேற்ற வண்ணம் உலகின் வாழ்வு அமைகிறது. புலன்கள் தீய வழியில் உழலின், வாழ்வுந்தீயதாகும். அவை நல்ல வழியில் இயங்கின், வாழ்வும் நல்லதாகும். ஈண்டுத் தீயவழி நல்லவழி என்பன முறையே செயற்கை இயற்கை வழிகளைக் குறிப்பனவும். புலன்கள் நிலையை வாழ்வு பொறுத்து நிற்றலான், அப்புலன்களைத் தூய்மைப்படுத்துவதில், இயற்கை வழி முருகைக் காண விழைவோர் கண்ணுங் கருத்துமாயிருப்பாராக.
+
+`இறையா உணர்தற்குப் புலன்களை அடக்குமாறு ஆன்றோர் அறிவுறுத்தியிருப்ப, நீவிர் அப்புலன்களைத் தூய்மைப்படுத்துங்கள் என்று நவில்கிறீர். புலன்களை அடக்காது ஆடவிடுதலால் நலன் விளையுங்கொல்' என்று சிலர் வினவலாம். சின்னாளாகப் புலனடக்கம் என்னுஞ் சொற்றொடர் தனக்குரிய பொருளிழந்து நிற்கிறது. புலனடக்கம் என்பதற்குப் புலனை ஒடுக்கி அழித்தல் என்னும் பொருள் சொல்லப்படுகிறது, அது தவறு. புலன் கெட்டால் அறிவேது? வாழ்வேது?
+
+`யோகம் யோகம்' என்று சில்லோர் புலன்களை ஒடுக்கி ஒடுக்கி முடிவில் அவைகளைக் கெடுத்துக் குருடராய்ச், செவிடராய், நோயராய் மாள்கிறார். புலன்கெட்ட ஒன்று அறிவற்ற பொருளாதல் வெள்ளிடைமலை. அறிவின் ஆக்கத்துக்கெனப் படைக்கப்பட்ட புலன்களை அறிவுக் கேட்டிற்குப் பயன்படுத்தல் எத்தகைய மடமை? புலன்கள் ஒடுக்கப்படுவனவாயின், அது ஏன் படைப்பில் அமைதல் வேண்டும்? ஆண்டவன் படைப்பில் பொருளற்றதொன்று தோன்றுமை? தோன்றவே தோன்றாது. ஆண்டவன் படைப்பில் தோன்றியுள்ள ஒவ்வொன்றும் பொருளுடையது; அருமையானது; வாழ்விற்குரியது.
+
+புலன்கள் மக்கள் வாழ்விற்கெனப் படைப்பில் அமைந்துள்ள அறிவுக் கருவிகள். அவைகளின் வாயிலாகவே உயிர்கள் எல்லாவற்றையும் உளத்தால் உணர்தல் வேண்டும். புலன்கள் புறத்தையும் அகத்தையும் ஆற்றுப்படுத்தும் பெரும்புலவர்கள். அத்தகைப் புலவர்களை அடக்குவதும் ஒடுக்குவதும் இயற்கைக்கு மாறுபட்டு நடத்தலாகும்.
+
+புலனடங்கி வாழுமாறு ஆன்றோர் அருளியதன் கருத்தென்னை? புலனடங்கி வாழுமாறு ஆன்றோர் அருளிய மெய்யுரைகளைப் பொன்னேபோல் போற்றுகிறுன். புலனடக்கம் என்பதற்கு ஆன்றோர் கொண்ட கருத்தை உணர்தல் வேண்டும். அன்னார் புலன்களைக் கெடுத்தொழிக்குமாறு ஒருபோதும் அறிவுறுத்தினாரில்லை. புலனடக்கத்தைப் பிறழக் கொண்டு, புலன்களைக் கெடுத்து, உலகம் இடர்ப்படப் போகிறதென்று அஞ்சி, யோக நெறியில் தேர்ச்சி பெற்ற திருமூலனார்,
+
+ `அஞ்சும் அடக்கடக் கென்பர் அறிவிலார்
+ அஞ்சும் அடக்கும் அமரரும் அங்கிலை
+ அஞ்சும் அடக்கில் அசேதனம் ஆகுமென்றிட்டு
+ அஞ்சும் அடக்கா அறிவறிந் தேனே'
+
+என்று கூறிப்போந்தார். இத்திருமூலனாரே பல இடங்களிற் புலனடக்கங் கூறியுள்ளார். அப்புலன் அடக்கம் என்பதற்குப் புலன் கேடு என்பது பொருளாயின், அவர் `அஞ்சும் அடக்கடக்கென்பர் அறிவிலார்' என்னும் திருமந்திரத்தை ஓதியிரார். ஆகவே புலனடக்கம் என்பதன் பொருள் ஓர்தல் வேண்டும்.
+
+புலனடக்கமென்றால் என்னை? புலன்களைத் தீய வழியில் செல்லாதவாறு காத்தலே புலனடக்க மென்பது; புலன்களைக் கெடுத்தல் என்பதன்று. நாவடக்கம் - வாயடக்கம் - கையடக்கம் என்னும் வழக்குகளை நோக்குக. `ஒன்றையுந் தின்னாதே; பேசாதே; செய்யாதே' என்று முறையா பொருள் கொள்ளலாம் போலும்! `பொருந்திய உணவை அளவாக உண்; தீயவனவற்றையும் பயனில் சொற்களையும் பேசாது வாய்மையைப் பேசு; பிறர் பொருள் கவரல் முதலியனவற்றைச் செய்யாது நல்லனவற்றைச் செய்' என்று அவ்வழக்குத் தொடர்க்குப் பொருள் கூறல் மரபு. அங்ஙனே புலனடக்கம் என்பதற்கும் பொருள் கோடல் வேண்டும். புலனடக்கம் என்பது புலன் அழிவைக் குறிப்பதன்று. இத்தொடர் புலன்களை நெறியில்லா நெறியில் செலுத்தாமையைக் குறிப்பதென்க.
+
+இயற்கையுடன் உறவுகொண்டு, புறத்தையும் அகத்தையும் ஒன்றச் செய்து, உயிர்கட்கு இன்பமூட்டப் படைப்பில் அமைந்துள்ள புலன்களை அவா என்னும் பேய்க்கும், மற்றும் பல செயற்கை நரகத்துறைகட்கும் அடிமைப்படுத்தல் இயற்கையையும், அதன் உள்ளுறையாம் முருகையும் மறப்பதாகும். இம்மறப்புள்ள மட்டுந் துன்பம் நீங்காது.
+
+உலகில் ஆண்டகைமை என்னுஞ் சொல் வழங்கப் படுகிறது. எது ஆண்டகைமை? அவா முதலிய பேய்கட்கு புலன்களை அடிமைப்படுத்தாது காப்பதே ஆண்டகைமை; இவ்வாண்டகைமையுடைய ஒருவனே மகன்; ஒருத்தியே மகள் என்க.
+
+ `உரன்என்னுந் தோட்டியான் ஓரைந்துங் காப்பான்
+ வரன்என்னும் வைப்பிற்கோர் வித்து'
+
+என்றார் திருவள்ளுவனார்.
+
+பெரியோர் புலன்களை நோக்கி, `நீங்கள் கள்ளர்கள்; வஞ்சகர்கள்; பேய்கள், உங்களைக் கொல்லல் வேண்டும்; அடக்கள் வேண்டும்; ஒடுக்கல் வேண்டும்' என்று பலதிறமாகப் பேசியிருத்தலைப் பற்றியுஞ் சிலர்க்கு ஐயந் தோன்றலாம். புலன்கள், அவா முதலிய பேய்கட்கு எளியனவாகும்போது, அவைகளைக் கடிந்து, நன்னெறியில் திருப்பவேண்டி, அவைகளை நொந்தும், வைதும், குறைகூறியும் பெரியோர் பேசுவது வழக்கம். இதுகுறித்து ஈண்டு விரித்துக் கூறல் வேண்டுவதில்லை. இதைப்பற்றிப் `பெண்ணின் பெருமை அல்லது வாழ்க்கைத் துணை' என்னும் நூலிலும் விளக்கியுள்ளேன். ஈங்கு ஒரு பெரியார் கருத்தை எடுத்தாளும் அளவில் நின்று மேற்செல்ல விரும்புகிறேன். எப்பெரியாரை ஈண்டுக் கொள்வது நலன்? அகவையிலும், அறிவிலும், அன்பிலும் முதிர்ந்த அப்பரம்பெருமானாரைக் கொள்கிறேன்.
+
+அப்பெரியார்,
+ `படுகுழிப் பவ்வத் தன்ன பண்டியைப் பெய்த வாற்றாற்
+ கெடுவதிம் மனிதர் வாழ்க்கை காண்டொறுங் கேதுகின்றேன்
+ முடுகுவ ரிருந்து ளைவர் மூர்க்கரே யிவர்க ளோடும்
+ அடியனேன் வாழ மாட்டேன் ஆரூர்மூ லட்ட னீரே'
+
+ `புழுப்பெய்த பண்டிதன்னைப் புறமொரு தோலான் மூடி
+ ஒழுக்கறா வொன்பதுவா யொற்றுமெ யொன்று மில்லைச்
+ சழக்குடை யிதனு ளைவர் சங்கடம் பலவுஞ் செய்ய
+ அழிப்பனாய் வாழ மாட்டேன் ஆருர்மூ லட்ட னீரே'
+
+ `உயிர்நிலை யுடம்பே காலா யுள்ளமே தாழி யாகத்
+ துயரமே யேற்ற மாகத் துன்பக்கோ லதனைப் பற்றிப்
+ பயிர்தனைச் சுழிய விட்டுப் பாழ்க்குநீ ரிறைத்து மிக்க
+ அயர்வினா லைவர்க் காற்றே னாரூர்மூ லட்ட னீரே'
+
+ `பக்தனாய் வாழ மாட்டேன் பாவியேன் பரவி வந்து
+ சித்தத்து ளைவர் தீய செய்வினை பலவுஞ் செய்ய
+ மத்துறு தயிரே போல மறுகுமென் னுள்ளந் தானும்
+ அத்தனே அமரர் கோவே ஆரூர்மூ லட்டனீரே'
+
+ `புள்ளுவ ரைவர் கள்வர் புனத்திடைப் புகுந்து நின்று
+ துள்ளுவர் சூறை பொள்வர் தூநெறி விளைய லொட்டார்
+ முள்ளுடை யவர்கள் தம்மை முக்கணான் பாத நீழல்
+ உள்ளிடை மறைந்து நின்றங் குணர்வினா லெய்ய லாமே'
+
+இத்திருப்பாக்களால், புலன்கள் தீயவழியில் தம்மை யீர்த்து அலைத்தலையும், அவைகளின் கொடுமைகளையும் விளக்கியவாறும், அக்கொடுமைகளினின்றும் விடுதலையடைவான் ஆண்டவனைக் குறையிரந்து வேண்டுமாறுங் காண்க.
+
+தீய வழியுழலும் புலன்களை அடக்கியாளல் வேண்டுவது அறிஞர் கடமை. அப்பர் சுவாமிகள் புலன்களை நல்வழிப் படுத்தவே முயன்றார். புலன்களைத் தீயவழியினின்றுங் காத்து, அவைகளை நல்வழிப்படுத்த அப்பர் முயன்றாரேயன்றி, அவைகளை அழித்துத் தாமும் அவைகளுடன் அழிய முயன்றாரில்லை. தீநெறியில் தம்மை ஈர்க்கும் புலன்களைக் கடிந்து, அவைகளை நோக்கி, நம் ஆண்டகை என்ன கட்டளை யிடுகிறார் பாருங்கள்!
+
+ `கண்காள் காண்மின்களோ - கடல்
+ நஞ்சுண்ட கண்டன் தன்னை
+ எண்டோள் வீசிநின் றாடும் பிரான் தன்னைக்
+ கண்காள் காண்மின்களோ'
+
+ `செவிகாள் கேண்மின்களோ - சிவன்
+ எம்மிறை செம்பவள
+ எரிபோல் மேனிப்பி ரான்றிற மெப்போதுஞ்
+ செவிகாள் கேண்மின்களே'
+
+ `மூக்கே நீமுரலாய் - முது
+ காடுறை முக்கணணை
+ வாக்கே நோக்கிய மங்கை மணாளனை
+ மூக்கே நீமுரலாய்'
+
+ `வாயே வாழ்த்துகண்டாய் - மத
+ யானை யுரிபோர்த்துப்
+ பேய்வாழ் காட்டகத் தாடும்பி ரான்தனை
+ வாயே வாழ்த்துகண்டாய்'
+
+ `ஆக்கை யாற்பயனென் - அரன்
+ கோயில் வலம்வந்து
+ பூக்கை யாலட்டிப் போற்றியென் னாதில்
+ வாக்கை யாற்பயனென்'
+
+புலன்கள் எதற்காகப் படைக்கப்பட்டன? அன்பர்களே! அப்பர் அருண்மொழியை உற்று நோக்குங்கள்; உன்னுங்கள் புலன்களின் கடனை உணருங்கள். நலன்தரும் புலன்களையா கெடுப்பது? அழிப்பது? அந்தோ! கொடுமை! கொடுமை! ஆகவே, புலன்களைத் தீய பேய்வழியில் உழலாதவாறு காத்து, இறை வழியில் திருப்புவதே அவைகளைத் தூய்மைப் படுத்துவதாகும்.
+
diff --git a/examples/pango.modules b/examples/pango.modules
new file mode 100644
index 00000000..e945bf29
--- /dev/null
+++ b/examples/pango.modules
@@ -0,0 +1,6 @@
+/home/otaylor/devel/pango/modules/./basic/.libs/pango-basic.so BasicScriptEngineLang PangoEngineLang PangoRenderNone 0-687:* 688-767: 896-1423:* 1425-1641:* 7680-8191:* 8192-40959:* 44032-55203:kr 63744-64011:kr 65280-65507:*
+/home/otaylor/devel/pango/modules/./basic/.libs/pango-basic.so BasicScriptEngineX PangoEngineShape PangoRenderX 0-687:* 688-767: 896-1423:* 1425-1641:* 7680-8191:* 8192-40959:* 44032-55203:kr 63744-64011:kr 65280-65507:*
+/home/otaylor/devel/pango/modules/./hangul/.libs/pango-hangul.so HangulScriptEngineLang PangoEngineLang PangoRenderNone 4352-4607:* 44032-55203:*
+/home/otaylor/devel/pango/modules/./hangul/.libs/pango-hangul.so HangulScriptEngineX PangoEngineShape PangoRenderX 4352-4607:* 44032-55203:*
+/home/otaylor/devel/pango/modules/./tamil/.libs/pango-tamil.so TamilScriptEngineLang PangoEngineLang PangoRenderNone 2944-3071:*
+/home/otaylor/devel/pango/modules/./tamil/.libs/pango-tamil.so TamilScriptEngineX PangoEngineShape PangoRenderX 2944-3071:*
diff --git a/examples/viewer.c b/examples/viewer.c
new file mode 100644
index 00000000..2ed64c78
--- /dev/null
+++ b/examples/viewer.c
@@ -0,0 +1,886 @@
+/* Pango
+ * viewer.c: Example program to view a UTF-8 encoding file
+ * using Pango to render result.
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtk.h>
+#include <gdk/gdkx.h>
+
+#include "pango.h"
+#include "pangox.h"
+
+#include <unicode.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "utils.h"
+
+#define BUFSIZE 1024
+
+typedef struct _Paragraph Paragraph;
+typedef struct _Line Line;
+
+/* Structure representing a paragraph
+ */
+struct _Paragraph {
+ char *text;
+ int length;
+ int height; /* Height, in pixels */
+ GList *lines;
+};
+
+/* Structure representing a line
+ */
+struct _Line {
+ /* List of PangoItems for this paragraph in visual order */
+ GList *runs;
+ int ascent; /* Ascent of line, in pixels */
+ int descent; /* Descent of lines, in pixels */
+ int offset; /* Offset from left margin line, in pixels */
+};
+
+static PangoFont *font = NULL;
+static Paragraph *highlight_para;
+static int highlight_offset;
+
+static GtkWidget *message_label;
+GtkWidget *layout;
+
+gboolean global_rtl;
+
+/* Read an entire file into a string
+ */
+static char *
+read_file(char *name)
+{
+ GString *inbuf;
+ int fd;
+ char *text;
+ char buffer[BUFSIZE];
+
+ fd = open(name, O_RDONLY);
+ if (!fd)
+ {
+ fprintf(stderr, "gscript-viewer: Cannot open %s: %s\n",
+ name, g_strerror (errno));
+ return NULL;
+ }
+
+ inbuf = g_string_new (NULL);
+ while (1)
+ {
+ int count = read (fd, buffer, BUFSIZE-1);
+ if (count < 0)
+ {
+ fprintf(stderr, "gscript-viewer: Error reading %s: %s\n",
+ name, g_strerror (errno));
+ g_string_free (inbuf, TRUE);
+ return NULL;
+ }
+ else if (count == 0)
+ break;
+
+ buffer[count] = '\0';
+
+ g_string_append (inbuf, buffer);
+ }
+
+ close (fd);
+
+ text = inbuf->str;
+ g_string_free (inbuf, FALSE);
+
+ return text;
+}
+
+/* Take a UTF8 string and break it into paragraphs on \n characters
+ */
+static GList *
+split_paragraphs (char *text)
+{
+ char *p = text;
+ GUChar4 wc;
+ GList *result = NULL;
+ char *last_para = text;
+
+ while (*p)
+ {
+ char *next = unicode_get_utf8 (p, &wc);
+ if (!next)
+ {
+ fprintf (stderr, "gscript-viewer: Invalid character in input\n");
+ g_list_foreach (result, (GFunc)g_free, NULL);
+ return NULL;
+ }
+ if (!*p || !wc || wc == '\n')
+ {
+ Paragraph *para = g_new (Paragraph, 1);
+ para->text = last_para;
+ para->length = p - last_para;
+ para->height = 0;
+ last_para = next;
+
+ result = g_list_prepend (result, para);
+ }
+ if (!wc) /* incomplete character at end */
+ break;
+ p = next;
+ }
+
+ return g_list_reverse (result);
+}
+
+static void
+get_logical_widths (char *text, PangoItem *item,
+ PangoGlyphString *glyphs,
+ PangoGlyphUnit *logical_widths)
+{
+ int i, j;
+ int last_cluster = 0;
+ int width = 0;
+ int last_cluster_width = 0;
+
+ for (i=0; i<=glyphs->num_glyphs; i++)
+ {
+ int index = (item->analysis.level % 2 == 0) ? i : glyphs->num_glyphs - i;
+
+ if (index == glyphs->num_glyphs ||
+ glyphs->log_clusters[index] != last_cluster)
+ {
+ gint next_cluster;
+
+ if (index < glyphs->num_glyphs)
+ next_cluster = glyphs->log_clusters[index];
+ else
+ next_cluster = item->num_chars;
+
+ for (j=last_cluster; j<next_cluster; j++)
+ logical_widths[j] = (width - last_cluster_width) / (next_cluster - last_cluster);
+
+ last_cluster = next_cluster;
+ last_cluster_width = width;
+ }
+
+ if (i < glyphs->num_glyphs)
+ width += glyphs->geometry[index].width;
+ }
+}
+
+/* Break an item into a piece that fits on the current line
+ * and the remainder. (The remainder, if any is stored into
+ * 'new_item'. If no piece of the item fits on the current line,
+ * returns FALSE.
+ */
+
+gboolean
+break_run (char *text,
+ PangoItem *item,
+ int *remaining_width,
+ PangoItem **new_item,
+ int *logical_ascent,
+ int *logical_descent)
+{
+ PangoGlyphString *buf;
+ int width;
+ gboolean result;
+
+ /* First try the entire string to see if it fits. If it
+ * doesn't, call GStringBreak, then chop off pieces
+ * from the end until it fits. If it still doesn't
+ * fit, give up and return FALSE.
+ */
+
+ buf = pango_glyph_string_new();
+
+ pango_shape (font, text + item->offset, item->length, &item->analysis, buf);
+ pango_x_extents (buf, NULL, NULL, &width, NULL, NULL, logical_ascent, logical_descent);
+
+ result = FALSE;
+ *new_item = NULL;
+
+ if (width <= *remaining_width)
+ {
+ result = TRUE;
+ }
+ else
+ {
+ int length;
+ int num_chars = item->num_chars;
+ int new_width;
+
+ PangoLogAttr *log_attrs = g_new (PangoLogAttr, item->num_chars);
+ PangoGlyphUnit *log_widths = g_new (PangoGlyphUnit, item->num_chars);
+
+ pango_break (text + item->offset, item->length, &item->analysis,
+ log_attrs);
+ get_logical_widths (text, item, buf, log_widths);
+
+ new_width = 0;
+ while (--num_chars > 0)
+ {
+ /* Shorten the item by one line break
+ */
+ width -= log_widths[num_chars] / 72;
+ if (log_attrs[num_chars].is_break && width <= *remaining_width)
+ break;
+ }
+
+ if (num_chars != 0)
+ {
+ char *p;
+ gint n;
+
+ /* Determine utf8 length corresponding to num_chars. Slow?
+ */
+ n = num_chars;
+ p = text + item->offset;
+ while (n-- > 0)
+ p = unicode_next_utf8 (p);
+
+ length = p - (text + item->offset);
+
+ *new_item = g_new (PangoItem, 1);
+ (*new_item)->offset = item->offset + length;
+ (*new_item)->length = item->length - length;
+ (*new_item)->num_chars = item->num_chars - num_chars;
+ (*new_item)->analysis = item->analysis;
+
+ item->length = length;
+ item->num_chars = num_chars;
+
+ result = TRUE;
+ }
+
+ g_free (log_attrs);
+ g_free (log_widths);
+ }
+
+ if (result)
+ *remaining_width -= width;
+
+ pango_glyph_string_free (buf);
+
+ return result;
+}
+
+/* Break a paragraph into a list of lines which fit into
+ * width, and compute the total height of the new paragraph
+ */
+void
+layout_paragraph (Paragraph *para, int width)
+{
+ Line *line = NULL;
+ GList *runs;
+ int remaining_width;
+ int height = 0;
+ PangoContext context;
+
+ /* Break paragraph into runs with consistent shaping engine
+ * and direction
+ */
+ context.lang = "en_US";
+ context.render_type = PANGO_RENDER_TYPE_X;
+ context.direction = global_rtl ? PANGO_DIRECTION_RTL : PANGO_DIRECTION_LTR;
+ runs = pango_itemize (&context, para->text, para->length, NULL, 0);
+
+ /* Break runs to fit on each line
+ */
+ remaining_width = width;
+ para->lines = NULL;
+ while (runs)
+ {
+ PangoItem *new_item;
+ gboolean fits;
+ int logical_ascent;
+ int logical_descent;
+
+ fits = break_run (para->text, runs->data, &remaining_width, &new_item,
+ &logical_ascent, &logical_descent);
+
+ if (new_item)
+ {
+ /* The item was split, add the remaining portion into our
+ * lists of runs
+ */
+ GList *node = g_list_alloc();
+
+ node->data = new_item;
+ node->next = runs->next;
+ if (node->next)
+ node->next->prev = node;
+ node->prev = runs;
+
+ runs->next = node;
+ }
+
+ if (fits || !line)
+ {
+ /* Either we have a portion that fits on our line,
+ * or the initial unbreakable portion of the run
+ * doesn't fit on a complete line, so we just
+ * add it in anyways.
+ */
+ GList *tmp_list = runs->next;
+
+ if (!line)
+ {
+ line = g_new (Line, 1);
+ line->runs = NULL;
+ line->ascent = 0;
+ line->descent = 0;
+ }
+
+ if (line->runs)
+ line->runs->prev = runs;
+ runs->next = line->runs;
+ line->runs = runs;
+
+ line->ascent = MAX (line->ascent, logical_ascent);
+ line->descent = MAX (line->descent, logical_descent);
+
+ runs = tmp_list;
+ if (runs)
+ runs->prev = NULL;
+ }
+
+ if (!runs || !fits || remaining_width == 0)
+ {
+ /* A complete line, add to our list of lines
+ */
+ GList *visual_list;
+
+ line->offset = global_rtl ? remaining_width : 0;
+ line->runs = g_list_reverse (line->runs);
+ remaining_width = width;
+ height += line->ascent + line->descent;
+
+ /* Reorder the runs from logical to visual order
+ */
+ visual_list = pango_reorder_items (line->runs);
+ g_list_free (line->runs);
+ line->runs = visual_list;
+
+ para->lines = g_list_append (para->lines, line);
+
+ line = NULL;
+ }
+ }
+
+ para->height = height;
+}
+
+/* Given a x position within a run, determine the corresponding
+ * character offset.
+ */
+gboolean
+runs_x_to_cp (char *text, GList *runs, int x, int *offset)
+{
+ PangoGlyphString *buf;
+ int width;
+ int pixels = 0;
+
+ buf = pango_glyph_string_new();
+
+ while (runs)
+ {
+ PangoItem *item = runs->data;
+
+ pango_shape (font, text + item->offset, item->length, &item->analysis, buf);
+ pango_x_extents (buf, NULL, NULL, &width, NULL, NULL, NULL, NULL);
+
+ if (x >= pixels && x < pixels + width)
+ {
+ int pos;
+ char *p;
+
+ pango_x_to_cp (text + item->offset, item->length,
+ &item->analysis, buf, (x - pixels) * 72,
+ &pos, NULL);
+
+ /* Converter the character position to byte offset */
+ p = text + item->offset;
+ while (pos--)
+ p = unicode_next_utf8 (p);
+
+ *offset = p - text;
+ return TRUE;
+ }
+
+ pixels += width;
+ runs = runs->next;
+ }
+
+ pango_glyph_string_free (buf);
+
+ return FALSE;
+}
+
+/* Given an x-y position, return the paragraph and offset
+ * within the paragraph of the click.
+ */
+gboolean
+xy_to_cp (GList *paragraphs, int x, int y,
+ Paragraph **para_return, int *offset)
+{
+ GList *para_list, *line_list;
+ int height = 0;
+
+ *para_return = NULL;
+
+ para_list = paragraphs;
+ while (para_list && height < y)
+ {
+ Paragraph *para = para_list->data;
+
+ if (height + para->height >= y)
+ {
+ line_list = para->lines;
+ while (line_list)
+ {
+ Line *line = line_list->data;
+
+ if (height + line->ascent + line->descent >= y)
+ {
+ if (runs_x_to_cp (para->text, line->runs,
+ x - line->offset,
+ offset))
+ {
+ *para_return = para;
+ return TRUE;
+ }
+ else
+ return FALSE;
+ }
+ height += line->ascent + line->descent;
+ line_list = line_list->next;
+ }
+ }
+
+ height += para->height;
+ para_list = para_list->next;
+ }
+
+ return FALSE;
+}
+
+/* Given a character position within a run, determine the corresponding
+ * limits of that character in the x position.
+ */
+void
+runs_char_bounds (char *text, GList *runs, int offset, int *x, int *width)
+{
+ int start_x;
+ int end_x;
+ int run_width;
+ int pixels = 0;
+
+ PangoGlyphString *buf = pango_glyph_string_new();
+
+ while (runs)
+ {
+ PangoItem *item = runs->data;
+
+ pango_shape (font, text + item->offset, item->length, &item->analysis, buf);
+ pango_x_extents (buf, NULL, NULL, &run_width, NULL, NULL, NULL, NULL);
+
+ if (offset >= item->offset &&
+ offset < item->offset + item->length)
+ {
+ int char_pos;
+
+ /* Convert byte position into character position */
+ char_pos = _pango_utf8_len (text + item->offset, offset - item->offset);
+
+ /* Find bounds */
+ pango_cp_to_x (text + item->offset, item->length,
+ &item->analysis, buf, char_pos, FALSE, &start_x);
+ pango_cp_to_x (text + item->offset, item->length,
+ &item->analysis, buf, char_pos, TRUE, &end_x);
+
+ if (start_x < end_x)
+ {
+ *x = pixels + start_x / 72;
+ *width = (end_x - start_x) / 72;
+ }
+ else
+ {
+ *x = pixels + end_x / 72;
+ *width = (start_x - end_x) / 72;
+ }
+
+ break;
+ }
+
+ pixels += run_width;
+ runs = runs->next;
+ }
+
+ pango_glyph_string_free (buf);
+
+}
+
+/* Given a paragraph and offset in that paragraph, find the
+ * bounding rectangle for the character at the offset.
+ */
+void
+char_bounds (GList *paragraphs, Paragraph *para, int offset,
+ int *x, int *y, int *width, int *height)
+{
+ GList *para_list, *line_list, *run_list;
+ int pixels = 0;
+ int chars_seen = 0;
+
+ para_list = paragraphs;
+ while (para_list)
+ {
+ Paragraph *cur_para = para_list->data;
+
+ if (cur_para == para)
+ {
+ line_list = para->lines;
+ while (line_list)
+ {
+ Line *line = line_list->data;
+
+ run_list = line->runs;
+ while (run_list)
+ {
+ chars_seen += ((PangoItem *)run_list->data)->length;
+ run_list = run_list->next;
+ }
+
+ if (offset < chars_seen)
+ {
+ runs_char_bounds (para->text, line->runs, offset,
+ x, width);
+ *y = pixels;
+ *height = line->ascent + line->descent;
+ if (global_rtl)
+ *x += line->offset;
+
+ return;
+ }
+
+ pixels += line->ascent + line->descent;
+ line_list = line_list->next;
+ }
+ }
+
+ pixels += cur_para->height;
+ para_list = para_list->next;
+ }
+}
+
+/* XOR a rectangle over a given character
+ */
+void
+xor_char (GtkWidget *layout, GdkRectangle *clip_rect,
+ GList *paragraphs, Paragraph *para, int offset)
+{
+ static GdkGC *gc;
+ int x, y, width, height;
+
+ if (!gc)
+ {
+ GdkGCValues values;
+ values.foreground = layout->style->white.pixel ?
+ layout->style->white : layout->style->black;
+ values.function = GDK_XOR;
+ gc = gdk_gc_new_with_values (GTK_LAYOUT (layout)->bin_window,
+ &values,
+ GDK_GC_FOREGROUND | GDK_GC_FUNCTION);
+ }
+
+ gdk_gc_set_clip_rectangle (gc, clip_rect);
+
+ char_bounds (paragraphs, para, offset,
+ &x, &y, &width, &height);
+
+ y -= GTK_LAYOUT (layout)->yoffset;
+
+ if ((y + height >= 0) && (y < layout->allocation.height))
+ gdk_draw_rectangle (GTK_LAYOUT (layout)->bin_window, gc, TRUE,
+ x, y, width, height);
+}
+
+
+/* Draw a paragraph on the screen by looping through the list
+ * of lines, then for each line, looping through the list of
+ * runs for that line and drawing them.
+ */
+void
+expose_paragraph (Paragraph *para, GdkDrawable *drawable,
+ GdkGC *gc, int x, int y)
+{
+ GList *line_list;
+ GList *run_list;
+ PangoGlyphString *buf;
+
+ int x_off;
+
+ buf = pango_glyph_string_new();
+
+ line_list = para->lines;
+ while (line_list)
+ {
+ Line *line = line_list->data;
+
+ x_off = line->offset;
+ run_list = line->runs;
+ while (run_list)
+ {
+ PangoItem *item = run_list->data;
+ int width;
+
+ /* Convert the item into glyphs */
+ pango_shape (font,
+ para->text + item->offset, item->length,
+ &item->analysis,
+ buf);
+
+ /* Render the glyphs to the screen */
+ pango_x_render (GDK_DISPLAY(), GDK_WINDOW_XWINDOW (drawable),
+ GDK_GC_XGC (gc), buf, x + x_off,
+ y + line->ascent);
+
+ /* Advance to next x position
+ */
+ if (run_list->next)
+ {
+ pango_x_extents (buf, NULL, NULL, &width, NULL, NULL, NULL, NULL);
+
+ x_off += width;
+ }
+
+ run_list = run_list = run_list->next;
+ }
+
+ y += line->ascent + line->descent;
+ line_list = line_list->next;
+ }
+
+ pango_glyph_string_free (buf);
+}
+
+/* Handle a size allocation by re-laying-out each paragraph to
+ * the new width, setting the new size for the layout and
+ * then queing a redraw
+ */
+void
+size_allocate (GtkWidget *layout, GtkAllocation *allocation, GList *paragraphs)
+{
+ GList *tmp_list;
+ int height = 0;
+
+ tmp_list = paragraphs;
+ while (tmp_list)
+ {
+ Paragraph *para = tmp_list->data;
+ tmp_list = tmp_list->next;
+
+ layout_paragraph (para, allocation->width);
+
+ height += para->height;
+ }
+
+ gtk_layout_set_size (GTK_LAYOUT (layout), allocation->width, height);
+
+ if (GTK_LAYOUT (layout)->yoffset + allocation->height > height)
+ gtk_adjustment_set_value (GTK_LAYOUT (layout)->vadjustment,
+ height - allocation->height);
+}
+
+/* Handle a draw/expose by finding the paragraphs that intersect
+ * the region and reexposing them.
+ */
+void
+draw (GtkWidget *layout, GdkRectangle *area, GList *paragraphs)
+{
+ GList *tmp_list;
+ int height = 0;
+
+ gdk_draw_rectangle (GTK_LAYOUT (layout)->bin_window,
+ layout->style->base_gc[layout->state],
+ TRUE,
+ area->x, area->y,
+ area->width, area->height);
+
+ gdk_gc_set_clip_rectangle (layout->style->text_gc[layout->state], area);
+
+ tmp_list = paragraphs;
+ while (tmp_list &&
+ height < area->y + area->height + GTK_LAYOUT (layout)->yoffset)
+ {
+ Paragraph *para = tmp_list->data;
+ tmp_list = tmp_list->next;
+
+ if (height + para->height >= GTK_LAYOUT (layout)->yoffset + area->y)
+ expose_paragraph (para,
+ GTK_LAYOUT (layout)->bin_window,
+ layout->style->text_gc[layout->state],
+ 0, height - GTK_LAYOUT (layout)->yoffset);
+
+ height += para->height;
+ }
+
+ gdk_gc_set_clip_rectangle (layout->style->text_gc[layout->state], NULL);
+
+ if (highlight_para)
+ xor_char (layout, area, paragraphs, highlight_para, highlight_offset);
+}
+
+gboolean
+expose (GtkWidget *layout, GdkEventExpose *event, GList *paragraphs)
+{
+ if (event->window == GTK_LAYOUT (layout)->bin_window)
+ draw (layout, &event->area, paragraphs);
+
+ return TRUE;
+}
+
+void
+button_press (GtkWidget *layout, GdkEventButton *event, GList *paragraphs)
+{
+ Paragraph *para = NULL;
+ int offset;
+ gchar *message;
+
+ xy_to_cp (paragraphs, event->x, event->y + GTK_LAYOUT (layout)->yoffset,
+ &para, &offset);
+
+ if (highlight_para)
+ xor_char (layout, NULL, paragraphs, highlight_para, highlight_offset);
+
+ highlight_para = para;
+ highlight_offset = offset;
+
+ if (para)
+ {
+ GUChar4 wc;
+
+ unicode_get_utf8 (para->text + offset, &wc);
+ message = g_strdup_printf ("Current char: U%04x", wc);
+
+ xor_char (layout, NULL, paragraphs, highlight_para, highlight_offset);
+ }
+ else
+ message = g_strdup_printf ("Current char:");
+
+ gtk_label_set_text (GTK_LABEL (message_label), message);
+ g_free (message);
+}
+
+static void
+checkbutton_toggled (GtkWidget *widget, gpointer data)
+{
+ global_rtl = GTK_TOGGLE_BUTTON (widget)->active;
+ gtk_widget_queue_resize (layout);
+}
+
+int
+main (int argc, char **argv)
+{
+ char *text;
+ GtkWidget *window;
+ GtkWidget *scrollwin;
+ GtkWidget *vbox;
+ GtkWidget *frame;
+ GtkWidget *checkbutton;
+ GList *paragraphs;
+
+ gtk_init (&argc, &argv);
+
+ if (argc != 2)
+ {
+ fprintf (stderr, "Usage: gscript-viewer FILE\n");
+ exit(1);
+ }
+
+ /* Create the list of paragraphs from the supplied file
+ */
+ text = read_file (argv[1]);
+ if (!text)
+ exit(1);
+
+ paragraphs = split_paragraphs (text);
+
+ /* We hard code a font globally for now
+ */
+ font = pango_x_load_font (GDK_DISPLAY(),
+ // "-misc-fixed-medium-r-semicondensed--13-*-*-*-c-*-iso10646-1,"
+ "-gnu-unifont-medium-r-normal--16-*-*-*-c-*-iso10646-1,"
+ "-*-*-medium-r-normal--12-*-*-*-*-*-*-*");
+
+ /* Create the user interface
+ */
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);
+
+ gtk_signal_connect (GTK_OBJECT (window), "destroy",
+ GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
+
+ vbox = gtk_vbox_new (FALSE, 3);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+
+ scrollwin = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin),
+ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+
+ gtk_box_pack_start (GTK_BOX (vbox), scrollwin, TRUE, TRUE, 0);
+
+ layout = gtk_layout_new (NULL, NULL);
+ gtk_widget_set_events (layout, GDK_BUTTON_PRESS_MASK);
+ gtk_widget_set_app_paintable (layout, TRUE);
+
+ gtk_signal_connect (GTK_OBJECT (layout), "size_allocate",
+ GTK_SIGNAL_FUNC (size_allocate), paragraphs);
+ gtk_signal_connect (GTK_OBJECT (layout), "expose_event",
+ GTK_SIGNAL_FUNC (expose), paragraphs);
+ gtk_signal_connect (GTK_OBJECT (layout), "draw",
+ GTK_SIGNAL_FUNC (draw), paragraphs);
+ gtk_signal_connect (GTK_OBJECT (layout), "button_press_event",
+ GTK_SIGNAL_FUNC (button_press), paragraphs);
+
+ gtk_container_add (GTK_CONTAINER (scrollwin), layout);
+
+ frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
+ gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
+
+ message_label = gtk_label_new ("Current char:");
+ gtk_misc_set_padding (GTK_MISC (message_label), 1, 1);
+ gtk_misc_set_alignment (GTK_MISC (message_label), 0.0, 0.5);
+ gtk_container_add (GTK_CONTAINER (frame), message_label);
+
+ checkbutton = gtk_check_button_new_with_label ("Use RTL global direction");
+ gtk_signal_connect (GTK_OBJECT (checkbutton), "toggled",
+ GTK_SIGNAL_FUNC (checkbutton_toggled), NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), checkbutton, FALSE, FALSE, 0);
+
+ gtk_widget_show_all (window);
+
+ gtk_main ();
+
+ return 0;
+}
diff --git a/fonts/tscakaram.pcf b/fonts/tscakaram.pcf
new file mode 100644
index 00000000..84437a44
--- /dev/null
+++ b/fonts/tscakaram.pcf
Binary files differ
diff --git a/modules/Makefile.am b/modules/Makefile.am
new file mode 100644
index 00000000..f51d2bd6
--- /dev/null
+++ b/modules/Makefile.am
@@ -0,0 +1,3 @@
+## Process this file with automake to create Makefile.in.
+
+SUBDIRS=basic hangul tamil \ No newline at end of file
diff --git a/modules/basic/.cvsignore b/modules/basic/.cvsignore
new file mode 100644
index 00000000..7b6b3066
--- /dev/null
+++ b/modules/basic/.cvsignore
@@ -0,0 +1,4 @@
+*.la
+*.lo
+.deps
+.libs
diff --git a/modules/basic/Makefile.am b/modules/basic/Makefile.am
new file mode 100644
index 00000000..11fde994
--- /dev/null
+++ b/modules/basic/Makefile.am
@@ -0,0 +1,12 @@
+## Process this file with automake to create Makefile.in.
+
+noinst_LTLIBRARIES = pango-basic.la
+
+INCLUDES = -I$(top_srcdir)/libpango/
+
+pango_basic_la_SOURCES = basic.c
+pango_basic_la_LDFLAGS = -rpath $(libdir) -export-dynamic -avoid-version -module
+
+EXTRA_DIST= \
+ tables-small.i \
+ tables-big.i
diff --git a/modules/basic/basic-x.c b/modules/basic/basic-x.c
new file mode 100644
index 00000000..dbb71164
--- /dev/null
+++ b/modules/basic/basic-x.c
@@ -0,0 +1,632 @@
+/* Pango
+ * basic.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <iconv.h>
+
+#include <glib.h>
+#include "pango.h"
+#include "pangox.h"
+#include "utils.h"
+#include <unicode.h>
+#include <fribidi/fribidi.h>
+
+#define MEMBERS(strct) sizeof(strct) / sizeof(strct[1])
+
+typedef struct _CharRange CharRange;
+typedef struct _Charset Charset;
+typedef struct _CharCache CharCache;
+typedef struct _MaskTable MaskTable;
+
+typedef PangoGlyphIndex (*ConvFunc) (CharCache *cache,
+ gchar *id,
+ gchar *input);
+
+struct _Charset
+{
+ gchar *id;
+ gchar *x_charset;
+ ConvFunc conv_func;
+};
+
+struct _CharRange
+{
+ guint16 start;
+ guint16 end;
+ guint16 charsets;
+};
+
+struct _MaskTable
+{
+ guint mask;
+ int n_els;
+ char **xlfds;
+ gint **ranges;
+ gint *n_ranges;
+ Charset **charsets;
+ PangoCFont **cfonts;
+};
+
+struct _CharCache
+{
+ GSList *mask_tables;
+ GHashTable *converters;
+};
+
+static PangoGlyphIndex conv_8bit (CharCache *cache,
+ gchar *id,
+ char *input);
+static PangoGlyphIndex conv_euc (CharCache *cache,
+ gchar *id,
+ char *input);
+static PangoGlyphIndex conv_ucs4 (CharCache *cache,
+ gchar *id,
+ char *input);
+
+#include "tables-big.i"
+
+static PangoEngineInfo script_engines[] = {
+ {
+ "BasicScriptEngineLang",
+ PANGO_ENGINE_TYPE_LANG,
+ PANGO_RENDER_TYPE_NONE,
+ basic_ranges, MEMBERS(basic_ranges)
+ },
+ {
+ "BasicScriptEngineX",
+ PANGO_ENGINE_TYPE_SHAPE,
+ PANGO_RENDER_TYPE_X,
+ basic_ranges, MEMBERS(basic_ranges)
+ }
+};
+
+static gint n_script_engines = MEMBERS (script_engines);
+
+/*
+ * Language script engine
+ */
+
+static void
+basic_engine_break (gchar *text,
+ gint len,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs)
+{
+}
+
+static PangoEngine *
+basic_engine_lang_new ()
+{
+ PangoEngineLang *result;
+
+ result = g_new (PangoEngineLang, 1);
+
+ result->engine.id = "BasicScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_break = basic_engine_break;
+
+ return (PangoEngine *)result;
+}
+
+/*
+ * X window system script engine portion
+ */
+
+static guint
+find_char_mask (GUChar4 wc)
+{
+ int start, end, middle;
+
+ start = 0;
+ end = MEMBERS(ranges) - 1;
+
+ if (ranges[start].start > wc || ranges[end].end < wc)
+ return 0;
+
+ while (1)
+ {
+ middle = (start + end) / 2;
+ if (middle == start)
+ {
+ if (ranges[middle].start > wc || ranges[middle].end < wc)
+ return ENC_ISO_10646;
+ else
+ return ranges[middle].charsets | ENC_ISO_10646;
+ }
+ else
+ {
+ if (ranges[middle].start <= wc)
+ start = middle;
+ else if (ranges[middle].end >= wc)
+ end = middle;
+ else
+ return ENC_ISO_10646;
+ }
+ }
+}
+
+static CharCache *
+char_cache_new (void)
+{
+ CharCache *result;
+
+ result = g_new (CharCache, 1);
+ result->mask_tables = NULL;
+ result->converters = g_hash_table_new (g_str_hash, g_str_equal);
+
+ return result;
+}
+
+static void
+char_cache_converters_foreach (gpointer key, gpointer value, gpointer data)
+{
+ g_free (key);
+ iconv_close ((iconv_t)value);
+}
+
+static void
+char_cache_free (CharCache *cache)
+{
+ GSList *tmp_list;
+ int i;
+
+ tmp_list = cache->mask_tables;
+ while (tmp_list)
+ {
+ MaskTable *mask_table = tmp_list->data;
+ tmp_list = tmp_list->next;
+
+ for (i=0; i<mask_table->n_els; i++)
+ {
+ g_free (mask_table->xlfds[i]);
+ g_free (mask_table->ranges[i]);
+ if (mask_table->cfonts[i])
+ pango_cfont_unref (mask_table->cfonts[i]);
+ }
+
+ g_free (mask_table->xlfds);
+ g_free (mask_table->ranges);
+ g_free (mask_table->n_ranges);
+ g_free (mask_table->charsets);
+ g_free (mask_table->cfonts);
+
+ g_free (mask_table);
+ }
+
+ g_slist_free (cache->mask_tables);
+
+ g_hash_table_foreach (cache->converters, char_cache_converters_foreach, NULL);
+ g_hash_table_destroy (cache->converters);
+
+ g_free (cache);
+}
+
+static gboolean
+check_character (gint *ranges, gint n_ranges, GUChar4 wc)
+{
+ int start, end, middle;
+
+ start = 0;
+ end = n_ranges - 1;
+
+ if (ranges[2*start] > wc || ranges[2*end + 1] < wc)
+ return FALSE;
+
+ while (1)
+ {
+ middle = (start + end) / 2;
+ if (middle == start)
+ {
+ if (ranges[2 * middle] > wc || ranges[2 * middle + 1] < wc)
+ return FALSE;
+ else
+ return TRUE;
+ }
+ else
+ {
+ if (ranges[2*middle] <= wc)
+ start = middle;
+ else if (ranges[2*middle + 1] >= wc)
+ end = middle;
+ else
+ return FALSE;
+ }
+ }
+}
+
+/* Compare the tail of a to b */
+static gboolean
+match_end (char *a, char *b)
+{
+ size_t len_a = strlen (a);
+ size_t len_b = strlen (b);
+
+ if (len_b > len_a)
+ return FALSE;
+ else
+ return (strcmp (a + len_a - len_b, b) == 0);
+}
+
+static gboolean
+find_char (CharCache *cache, PangoFont *font, GUChar4 wc, char *input,
+ PangoCFont **cfont, PangoGlyphIndex *glyph)
+{
+ guint mask = find_char_mask (wc);
+ GSList *tmp_list;
+ MaskTable *mask_table;
+ int i, j;
+
+ tmp_list = cache->mask_tables;
+ while (tmp_list)
+ {
+ mask_table = tmp_list->data;
+
+ if (mask_table->mask == mask)
+ break;
+
+ tmp_list = tmp_list->next;
+ }
+
+ if (!tmp_list)
+ {
+ gchar **charset_list;
+ gint n_charsets = 0;
+
+ mask_table = g_new (MaskTable, 1);
+
+ /* Find the character sets that are included in this mask
+ */
+ charset_list = g_new (gchar *, MEMBERS(charsets));
+
+ for (i=0; i<MEMBERS(charsets); i++)
+ {
+ if (mask & (1 << i))
+ charset_list[n_charsets++] = charsets[i].x_charset;
+ }
+
+ /* Find the possible xlfds for the charset list
+ */
+ mask_table->mask = mask;
+ pango_x_list_cfonts (font, charset_list, n_charsets,
+ &mask_table->xlfds,
+ &mask_table->n_els);
+
+ g_free (charset_list);
+
+ mask_table->cfonts = g_new0 (PangoCFont *, mask_table->n_els);
+
+ mask_table->ranges = g_new (gint *, mask_table->n_els);
+ mask_table->n_ranges = g_new (gint, mask_table->n_els);
+ mask_table->charsets = g_new (Charset *, mask_table->n_els);
+
+ for (i=0; i < mask_table->n_els; i++)
+ {
+ pango_x_xlfd_get_ranges (font,
+ mask_table->xlfds[i],
+ &mask_table->ranges[i],
+ &mask_table->n_ranges[i]);
+
+ mask_table->charsets[i] = NULL;
+ for (j=0; j < MEMBERS(charsets); j++)
+ if (match_end (mask_table->xlfds[i], charsets[j].x_charset))
+ {
+ mask_table->charsets[i] = &charsets[j];
+ break;
+ }
+ }
+
+ cache->mask_tables = g_slist_prepend (cache->mask_tables, mask_table);
+ }
+
+ for (i=0; i < mask_table->n_els; i++)
+ {
+ if (mask_table->charsets[i])
+ {
+ PangoGlyphIndex index;
+
+ index = (*mask_table->charsets[i]->conv_func) (cache, mask_table->charsets[i]->id, input);
+
+ if (check_character (mask_table->ranges[i], mask_table->n_ranges[i], index))
+ {
+ if (!mask_table->cfonts[i])
+ mask_table->cfonts[i] = pango_x_load_xlfd (font, mask_table->xlfds[i]);
+
+ *cfont = mask_table->cfonts[i];
+ pango_cfont_ref (*cfont);
+
+ *glyph = index;
+
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static void
+set_glyph (PangoGlyphString *glyphs, gint i, PangoCFont *cfont, PangoGlyphIndex glyph)
+{
+ gint width;
+
+ glyphs->glyphs[i].font = cfont;
+ glyphs->glyphs[i].glyph = glyph;
+
+ glyphs->geometry[i].x_offset = 0;
+ glyphs->geometry[i].y_offset = 0;
+
+ glyphs->log_clusters[i] = i;
+
+ pango_x_glyph_extents (&glyphs->glyphs[i],
+ NULL, NULL, &width, NULL, NULL, NULL, NULL);
+ glyphs->geometry[i].width = width * 72;
+}
+
+static iconv_t
+find_converter (CharCache *cache, gchar *id)
+{
+ iconv_t cd = g_hash_table_lookup (cache->converters, id);
+ if (!cd)
+ {
+ cd = iconv_open (id, "utf8");
+ g_hash_table_insert (cache->converters, g_strdup(id), (gpointer)cd);
+ }
+
+ return cd;
+}
+
+static PangoGlyphIndex
+conv_8bit (CharCache *cache,
+ gchar *id,
+ char *input)
+{
+ iconv_t cd;
+ char outbuf;
+ char *p;
+
+ char *inptr = input;
+ int inbytesleft;
+ char *outptr = &outbuf;
+ int outbytesleft = 1;
+
+ _pango_utf8_iterate (input, &p, NULL);
+ inbytesleft = p - input;
+
+ cd = find_converter (cache, id);
+ g_assert (cd != (iconv_t)-1);
+
+ iconv (cd, (const char **)&inptr, &inbytesleft, &outptr, &outbytesleft);
+
+ return (guchar)outbuf;
+}
+
+static PangoGlyphIndex
+conv_euc (CharCache *cache,
+ gchar *id,
+ char *input)
+{
+ iconv_t cd;
+ char outbuf[2];
+ char *p;
+
+ char *inptr = input;
+ int inbytesleft;
+ char *outptr = outbuf;
+ int outbytesleft = 2;
+
+ _pango_utf8_iterate (input, &p, NULL);
+ inbytesleft = p - input;
+
+ cd = find_converter (cache, id);
+ g_assert (cd != (iconv_t)-1);
+
+ iconv (cd, (const char **)&inptr, &inbytesleft, &outptr, &outbytesleft);
+
+ if ((guchar)outbuf[0] < 128)
+ return outbuf[0];
+ else
+ return ((guchar)outbuf[0] & 0x7f) * 256 + ((guchar)outbuf[1] & 0x7f);
+}
+
+static PangoGlyphIndex
+conv_ucs4 (CharCache *cache,
+ gchar *id,
+ char *input)
+{
+ GUChar4 wc;
+
+ _pango_utf8_iterate (input, NULL, &wc);
+ return wc;
+}
+
+static void
+swap_range (PangoGlyphString *glyphs, int start, int end)
+{
+ int i, j;
+
+ for (i = start, j = end - 1; i < j; i++, j--)
+ {
+ PangoGlyph glyph;
+ PangoGlyphGeometry geometry;
+ PangoGlyphVisAttr attr;
+ gint log_cluster;
+
+ glyph = glyphs->glyphs[i];
+ glyphs->glyphs[i] = glyphs->glyphs[j];
+ glyphs->glyphs[j] = glyph;
+
+ geometry = glyphs->geometry[i];
+ glyphs->geometry[i] = glyphs->geometry[j];
+ glyphs->geometry[j] = geometry;
+
+ attr = glyphs->attrs[i];
+ glyphs->attrs[i] = glyphs->attrs[j];
+ glyphs->attrs[j] = attr;
+
+ log_cluster = glyphs->log_clusters[i];
+ glyphs->log_clusters[i] = glyphs->log_clusters[j];
+ glyphs->log_clusters[j] = log_cluster;
+ }
+}
+
+static void
+basic_engine_shape (PangoFont *font,
+ gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs)
+{
+ int n_chars;
+ int i;
+ char *p, *next;
+
+ PangoCFont *fallback_font = NULL;
+ CharCache *cache;
+
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (text != NULL);
+ g_return_if_fail (length >= 0);
+ g_return_if_fail (analysis != NULL);
+
+ cache = pango_font_get_data (font, "basic-char-cache");
+ if (!cache)
+ {
+ cache = char_cache_new ();
+ pango_font_set_data (font, "basic-char-cache",
+ cache, (GDestroyNotify)char_cache_free);
+ }
+
+ n_chars = unicode_strlen (text, length);
+ pango_glyph_string_set_size (glyphs, n_chars);
+
+ p = text;
+ for (i=0; i < n_chars; i++)
+ {
+ GUChar4 wc;
+ FriBidiChar mirrored_ch;
+ PangoCFont *cfont = NULL;
+ PangoGlyphIndex index;
+
+ _pango_utf8_iterate (p, &next, &wc);
+
+ if (analysis->level % 2)
+ if (fribidi_get_mirror_char (wc, &mirrored_ch))
+ wc = mirrored_ch;
+
+ if (find_char (cache, font, wc, p, &cfont, &index))
+ {
+ set_glyph (glyphs, i, cfont, index);
+
+ if (i != 0 && glyphs->glyphs[i-1].font == cfont)
+ pango_cfont_unref (cfont);
+
+ if (unicode_type (wc) == UNICODE_NON_SPACING_MARK)
+ {
+ if (i > 0)
+ {
+ glyphs->geometry[i].width = MAX (glyphs->geometry[i-1].width,
+ glyphs->geometry[i].width);
+ glyphs->geometry[i-1].width = 0;
+ glyphs->log_clusters[i] = glyphs->log_clusters[i-1];
+ }
+ }
+ }
+ else
+ {
+ if (!fallback_font)
+ fallback_font = pango_x_find_cfont (font, "iso8859-1");
+
+ if (i == 0 || glyphs->glyphs[i-1].font != fallback_font)
+ pango_cfont_ref (fallback_font);
+
+ set_glyph (glyphs, i, fallback_font, ' ');
+ }
+
+ p = next;
+ }
+
+ /* Simple bidi support... may have separate modules later */
+
+ if (analysis->level % 2)
+ {
+ int start, end;
+
+ /* Swap all glyphs */
+ swap_range (glyphs, 0, n_chars);
+
+ /* Now reorder glyphs within each cluster back to LTR */
+ for (start=0; start<n_chars;)
+ {
+ end = start;
+ while (end < n_chars &&
+ glyphs->log_clusters[end] == glyphs->log_clusters[start])
+ end++;
+
+ swap_range (glyphs, start, end);
+ start = end;
+ }
+ }
+
+ if (fallback_font)
+ pango_cfont_unref (fallback_font);
+}
+
+static PangoEngine *
+basic_engine_x_new ()
+{
+ PangoEngineShape *result;
+
+ result = g_new (PangoEngineShape, 1);
+
+ result->engine.id = "BasicScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_shape = basic_engine_shape;
+
+ return (PangoEngine *)result;
+}
+
+/* The following three functions provide the public module API for
+ * Pango
+ */
+void
+script_engine_list (PangoEngineInfo **engines, gint *n_engines)
+{
+ *engines = script_engines;
+ *n_engines = n_script_engines;
+}
+
+PangoEngine *
+script_engine_load (const char *id)
+{
+ if (!strcmp (id, "BasicScriptEngineLang"))
+ return basic_engine_lang_new ();
+ else if (!strcmp (id, "BasicScriptEngineX"))
+ return basic_engine_x_new ();
+ else
+ return NULL;
+}
+
+void
+script_engine_unload (PangoEngine *engine)
+{
+}
+
diff --git a/modules/basic/basic.c b/modules/basic/basic.c
new file mode 100644
index 00000000..dbb71164
--- /dev/null
+++ b/modules/basic/basic.c
@@ -0,0 +1,632 @@
+/* Pango
+ * basic.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <iconv.h>
+
+#include <glib.h>
+#include "pango.h"
+#include "pangox.h"
+#include "utils.h"
+#include <unicode.h>
+#include <fribidi/fribidi.h>
+
+#define MEMBERS(strct) sizeof(strct) / sizeof(strct[1])
+
+typedef struct _CharRange CharRange;
+typedef struct _Charset Charset;
+typedef struct _CharCache CharCache;
+typedef struct _MaskTable MaskTable;
+
+typedef PangoGlyphIndex (*ConvFunc) (CharCache *cache,
+ gchar *id,
+ gchar *input);
+
+struct _Charset
+{
+ gchar *id;
+ gchar *x_charset;
+ ConvFunc conv_func;
+};
+
+struct _CharRange
+{
+ guint16 start;
+ guint16 end;
+ guint16 charsets;
+};
+
+struct _MaskTable
+{
+ guint mask;
+ int n_els;
+ char **xlfds;
+ gint **ranges;
+ gint *n_ranges;
+ Charset **charsets;
+ PangoCFont **cfonts;
+};
+
+struct _CharCache
+{
+ GSList *mask_tables;
+ GHashTable *converters;
+};
+
+static PangoGlyphIndex conv_8bit (CharCache *cache,
+ gchar *id,
+ char *input);
+static PangoGlyphIndex conv_euc (CharCache *cache,
+ gchar *id,
+ char *input);
+static PangoGlyphIndex conv_ucs4 (CharCache *cache,
+ gchar *id,
+ char *input);
+
+#include "tables-big.i"
+
+static PangoEngineInfo script_engines[] = {
+ {
+ "BasicScriptEngineLang",
+ PANGO_ENGINE_TYPE_LANG,
+ PANGO_RENDER_TYPE_NONE,
+ basic_ranges, MEMBERS(basic_ranges)
+ },
+ {
+ "BasicScriptEngineX",
+ PANGO_ENGINE_TYPE_SHAPE,
+ PANGO_RENDER_TYPE_X,
+ basic_ranges, MEMBERS(basic_ranges)
+ }
+};
+
+static gint n_script_engines = MEMBERS (script_engines);
+
+/*
+ * Language script engine
+ */
+
+static void
+basic_engine_break (gchar *text,
+ gint len,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs)
+{
+}
+
+static PangoEngine *
+basic_engine_lang_new ()
+{
+ PangoEngineLang *result;
+
+ result = g_new (PangoEngineLang, 1);
+
+ result->engine.id = "BasicScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_break = basic_engine_break;
+
+ return (PangoEngine *)result;
+}
+
+/*
+ * X window system script engine portion
+ */
+
+static guint
+find_char_mask (GUChar4 wc)
+{
+ int start, end, middle;
+
+ start = 0;
+ end = MEMBERS(ranges) - 1;
+
+ if (ranges[start].start > wc || ranges[end].end < wc)
+ return 0;
+
+ while (1)
+ {
+ middle = (start + end) / 2;
+ if (middle == start)
+ {
+ if (ranges[middle].start > wc || ranges[middle].end < wc)
+ return ENC_ISO_10646;
+ else
+ return ranges[middle].charsets | ENC_ISO_10646;
+ }
+ else
+ {
+ if (ranges[middle].start <= wc)
+ start = middle;
+ else if (ranges[middle].end >= wc)
+ end = middle;
+ else
+ return ENC_ISO_10646;
+ }
+ }
+}
+
+static CharCache *
+char_cache_new (void)
+{
+ CharCache *result;
+
+ result = g_new (CharCache, 1);
+ result->mask_tables = NULL;
+ result->converters = g_hash_table_new (g_str_hash, g_str_equal);
+
+ return result;
+}
+
+static void
+char_cache_converters_foreach (gpointer key, gpointer value, gpointer data)
+{
+ g_free (key);
+ iconv_close ((iconv_t)value);
+}
+
+static void
+char_cache_free (CharCache *cache)
+{
+ GSList *tmp_list;
+ int i;
+
+ tmp_list = cache->mask_tables;
+ while (tmp_list)
+ {
+ MaskTable *mask_table = tmp_list->data;
+ tmp_list = tmp_list->next;
+
+ for (i=0; i<mask_table->n_els; i++)
+ {
+ g_free (mask_table->xlfds[i]);
+ g_free (mask_table->ranges[i]);
+ if (mask_table->cfonts[i])
+ pango_cfont_unref (mask_table->cfonts[i]);
+ }
+
+ g_free (mask_table->xlfds);
+ g_free (mask_table->ranges);
+ g_free (mask_table->n_ranges);
+ g_free (mask_table->charsets);
+ g_free (mask_table->cfonts);
+
+ g_free (mask_table);
+ }
+
+ g_slist_free (cache->mask_tables);
+
+ g_hash_table_foreach (cache->converters, char_cache_converters_foreach, NULL);
+ g_hash_table_destroy (cache->converters);
+
+ g_free (cache);
+}
+
+static gboolean
+check_character (gint *ranges, gint n_ranges, GUChar4 wc)
+{
+ int start, end, middle;
+
+ start = 0;
+ end = n_ranges - 1;
+
+ if (ranges[2*start] > wc || ranges[2*end + 1] < wc)
+ return FALSE;
+
+ while (1)
+ {
+ middle = (start + end) / 2;
+ if (middle == start)
+ {
+ if (ranges[2 * middle] > wc || ranges[2 * middle + 1] < wc)
+ return FALSE;
+ else
+ return TRUE;
+ }
+ else
+ {
+ if (ranges[2*middle] <= wc)
+ start = middle;
+ else if (ranges[2*middle + 1] >= wc)
+ end = middle;
+ else
+ return FALSE;
+ }
+ }
+}
+
+/* Compare the tail of a to b */
+static gboolean
+match_end (char *a, char *b)
+{
+ size_t len_a = strlen (a);
+ size_t len_b = strlen (b);
+
+ if (len_b > len_a)
+ return FALSE;
+ else
+ return (strcmp (a + len_a - len_b, b) == 0);
+}
+
+static gboolean
+find_char (CharCache *cache, PangoFont *font, GUChar4 wc, char *input,
+ PangoCFont **cfont, PangoGlyphIndex *glyph)
+{
+ guint mask = find_char_mask (wc);
+ GSList *tmp_list;
+ MaskTable *mask_table;
+ int i, j;
+
+ tmp_list = cache->mask_tables;
+ while (tmp_list)
+ {
+ mask_table = tmp_list->data;
+
+ if (mask_table->mask == mask)
+ break;
+
+ tmp_list = tmp_list->next;
+ }
+
+ if (!tmp_list)
+ {
+ gchar **charset_list;
+ gint n_charsets = 0;
+
+ mask_table = g_new (MaskTable, 1);
+
+ /* Find the character sets that are included in this mask
+ */
+ charset_list = g_new (gchar *, MEMBERS(charsets));
+
+ for (i=0; i<MEMBERS(charsets); i++)
+ {
+ if (mask & (1 << i))
+ charset_list[n_charsets++] = charsets[i].x_charset;
+ }
+
+ /* Find the possible xlfds for the charset list
+ */
+ mask_table->mask = mask;
+ pango_x_list_cfonts (font, charset_list, n_charsets,
+ &mask_table->xlfds,
+ &mask_table->n_els);
+
+ g_free (charset_list);
+
+ mask_table->cfonts = g_new0 (PangoCFont *, mask_table->n_els);
+
+ mask_table->ranges = g_new (gint *, mask_table->n_els);
+ mask_table->n_ranges = g_new (gint, mask_table->n_els);
+ mask_table->charsets = g_new (Charset *, mask_table->n_els);
+
+ for (i=0; i < mask_table->n_els; i++)
+ {
+ pango_x_xlfd_get_ranges (font,
+ mask_table->xlfds[i],
+ &mask_table->ranges[i],
+ &mask_table->n_ranges[i]);
+
+ mask_table->charsets[i] = NULL;
+ for (j=0; j < MEMBERS(charsets); j++)
+ if (match_end (mask_table->xlfds[i], charsets[j].x_charset))
+ {
+ mask_table->charsets[i] = &charsets[j];
+ break;
+ }
+ }
+
+ cache->mask_tables = g_slist_prepend (cache->mask_tables, mask_table);
+ }
+
+ for (i=0; i < mask_table->n_els; i++)
+ {
+ if (mask_table->charsets[i])
+ {
+ PangoGlyphIndex index;
+
+ index = (*mask_table->charsets[i]->conv_func) (cache, mask_table->charsets[i]->id, input);
+
+ if (check_character (mask_table->ranges[i], mask_table->n_ranges[i], index))
+ {
+ if (!mask_table->cfonts[i])
+ mask_table->cfonts[i] = pango_x_load_xlfd (font, mask_table->xlfds[i]);
+
+ *cfont = mask_table->cfonts[i];
+ pango_cfont_ref (*cfont);
+
+ *glyph = index;
+
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static void
+set_glyph (PangoGlyphString *glyphs, gint i, PangoCFont *cfont, PangoGlyphIndex glyph)
+{
+ gint width;
+
+ glyphs->glyphs[i].font = cfont;
+ glyphs->glyphs[i].glyph = glyph;
+
+ glyphs->geometry[i].x_offset = 0;
+ glyphs->geometry[i].y_offset = 0;
+
+ glyphs->log_clusters[i] = i;
+
+ pango_x_glyph_extents (&glyphs->glyphs[i],
+ NULL, NULL, &width, NULL, NULL, NULL, NULL);
+ glyphs->geometry[i].width = width * 72;
+}
+
+static iconv_t
+find_converter (CharCache *cache, gchar *id)
+{
+ iconv_t cd = g_hash_table_lookup (cache->converters, id);
+ if (!cd)
+ {
+ cd = iconv_open (id, "utf8");
+ g_hash_table_insert (cache->converters, g_strdup(id), (gpointer)cd);
+ }
+
+ return cd;
+}
+
+static PangoGlyphIndex
+conv_8bit (CharCache *cache,
+ gchar *id,
+ char *input)
+{
+ iconv_t cd;
+ char outbuf;
+ char *p;
+
+ char *inptr = input;
+ int inbytesleft;
+ char *outptr = &outbuf;
+ int outbytesleft = 1;
+
+ _pango_utf8_iterate (input, &p, NULL);
+ inbytesleft = p - input;
+
+ cd = find_converter (cache, id);
+ g_assert (cd != (iconv_t)-1);
+
+ iconv (cd, (const char **)&inptr, &inbytesleft, &outptr, &outbytesleft);
+
+ return (guchar)outbuf;
+}
+
+static PangoGlyphIndex
+conv_euc (CharCache *cache,
+ gchar *id,
+ char *input)
+{
+ iconv_t cd;
+ char outbuf[2];
+ char *p;
+
+ char *inptr = input;
+ int inbytesleft;
+ char *outptr = outbuf;
+ int outbytesleft = 2;
+
+ _pango_utf8_iterate (input, &p, NULL);
+ inbytesleft = p - input;
+
+ cd = find_converter (cache, id);
+ g_assert (cd != (iconv_t)-1);
+
+ iconv (cd, (const char **)&inptr, &inbytesleft, &outptr, &outbytesleft);
+
+ if ((guchar)outbuf[0] < 128)
+ return outbuf[0];
+ else
+ return ((guchar)outbuf[0] & 0x7f) * 256 + ((guchar)outbuf[1] & 0x7f);
+}
+
+static PangoGlyphIndex
+conv_ucs4 (CharCache *cache,
+ gchar *id,
+ char *input)
+{
+ GUChar4 wc;
+
+ _pango_utf8_iterate (input, NULL, &wc);
+ return wc;
+}
+
+static void
+swap_range (PangoGlyphString *glyphs, int start, int end)
+{
+ int i, j;
+
+ for (i = start, j = end - 1; i < j; i++, j--)
+ {
+ PangoGlyph glyph;
+ PangoGlyphGeometry geometry;
+ PangoGlyphVisAttr attr;
+ gint log_cluster;
+
+ glyph = glyphs->glyphs[i];
+ glyphs->glyphs[i] = glyphs->glyphs[j];
+ glyphs->glyphs[j] = glyph;
+
+ geometry = glyphs->geometry[i];
+ glyphs->geometry[i] = glyphs->geometry[j];
+ glyphs->geometry[j] = geometry;
+
+ attr = glyphs->attrs[i];
+ glyphs->attrs[i] = glyphs->attrs[j];
+ glyphs->attrs[j] = attr;
+
+ log_cluster = glyphs->log_clusters[i];
+ glyphs->log_clusters[i] = glyphs->log_clusters[j];
+ glyphs->log_clusters[j] = log_cluster;
+ }
+}
+
+static void
+basic_engine_shape (PangoFont *font,
+ gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs)
+{
+ int n_chars;
+ int i;
+ char *p, *next;
+
+ PangoCFont *fallback_font = NULL;
+ CharCache *cache;
+
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (text != NULL);
+ g_return_if_fail (length >= 0);
+ g_return_if_fail (analysis != NULL);
+
+ cache = pango_font_get_data (font, "basic-char-cache");
+ if (!cache)
+ {
+ cache = char_cache_new ();
+ pango_font_set_data (font, "basic-char-cache",
+ cache, (GDestroyNotify)char_cache_free);
+ }
+
+ n_chars = unicode_strlen (text, length);
+ pango_glyph_string_set_size (glyphs, n_chars);
+
+ p = text;
+ for (i=0; i < n_chars; i++)
+ {
+ GUChar4 wc;
+ FriBidiChar mirrored_ch;
+ PangoCFont *cfont = NULL;
+ PangoGlyphIndex index;
+
+ _pango_utf8_iterate (p, &next, &wc);
+
+ if (analysis->level % 2)
+ if (fribidi_get_mirror_char (wc, &mirrored_ch))
+ wc = mirrored_ch;
+
+ if (find_char (cache, font, wc, p, &cfont, &index))
+ {
+ set_glyph (glyphs, i, cfont, index);
+
+ if (i != 0 && glyphs->glyphs[i-1].font == cfont)
+ pango_cfont_unref (cfont);
+
+ if (unicode_type (wc) == UNICODE_NON_SPACING_MARK)
+ {
+ if (i > 0)
+ {
+ glyphs->geometry[i].width = MAX (glyphs->geometry[i-1].width,
+ glyphs->geometry[i].width);
+ glyphs->geometry[i-1].width = 0;
+ glyphs->log_clusters[i] = glyphs->log_clusters[i-1];
+ }
+ }
+ }
+ else
+ {
+ if (!fallback_font)
+ fallback_font = pango_x_find_cfont (font, "iso8859-1");
+
+ if (i == 0 || glyphs->glyphs[i-1].font != fallback_font)
+ pango_cfont_ref (fallback_font);
+
+ set_glyph (glyphs, i, fallback_font, ' ');
+ }
+
+ p = next;
+ }
+
+ /* Simple bidi support... may have separate modules later */
+
+ if (analysis->level % 2)
+ {
+ int start, end;
+
+ /* Swap all glyphs */
+ swap_range (glyphs, 0, n_chars);
+
+ /* Now reorder glyphs within each cluster back to LTR */
+ for (start=0; start<n_chars;)
+ {
+ end = start;
+ while (end < n_chars &&
+ glyphs->log_clusters[end] == glyphs->log_clusters[start])
+ end++;
+
+ swap_range (glyphs, start, end);
+ start = end;
+ }
+ }
+
+ if (fallback_font)
+ pango_cfont_unref (fallback_font);
+}
+
+static PangoEngine *
+basic_engine_x_new ()
+{
+ PangoEngineShape *result;
+
+ result = g_new (PangoEngineShape, 1);
+
+ result->engine.id = "BasicScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_shape = basic_engine_shape;
+
+ return (PangoEngine *)result;
+}
+
+/* The following three functions provide the public module API for
+ * Pango
+ */
+void
+script_engine_list (PangoEngineInfo **engines, gint *n_engines)
+{
+ *engines = script_engines;
+ *n_engines = n_script_engines;
+}
+
+PangoEngine *
+script_engine_load (const char *id)
+{
+ if (!strcmp (id, "BasicScriptEngineLang"))
+ return basic_engine_lang_new ();
+ else if (!strcmp (id, "BasicScriptEngineX"))
+ return basic_engine_x_new ();
+ else
+ return NULL;
+}
+
+void
+script_engine_unload (PangoEngine *engine)
+{
+}
+
diff --git a/modules/basic/tables-big.i b/modules/basic/tables-big.i
new file mode 100644
index 00000000..2069c9f3
--- /dev/null
+++ b/modules/basic/tables-big.i
@@ -0,0 +1,8072 @@
+enum {
+ ENC_ISO_8859_1 = 1 << 0,
+ ENC_ISO_8859_2 = 1 << 1,
+ ENC_ISO_8859_3 = 1 << 2,
+ ENC_ISO_8859_4 = 1 << 3,
+ ENC_ISO_8859_5 = 1 << 4,
+ ENC_ISO_8859_6 = 1 << 5,
+ ENC_ISO_8859_7 = 1 << 6,
+ ENC_ISO_8859_8 = 1 << 7,
+ ENC_ISO_8859_9 = 1 << 8,
+ ENC_JIS_0208 = 1 << 9,
+ ENC_GB_2312 = 1 << 10,
+ ENC_KSC_5601 = 1 << 11,
+ ENC_ISO_10646 = 1 << 12
+};
+
+Charset charsets[] = {
+ { "ISO-8859-1", "iso8859-1", conv_8bit },
+ { "ISO-8859-2", "iso8859-2", conv_8bit },
+ { "ISO-8859-3", "iso8859-3", conv_8bit },
+ { "ISO-8859-4", "iso8859-4", conv_8bit },
+ { "ISO-8859-5", "iso8859-5", conv_8bit },
+ { "ISO-8859-6", "iso8859-6", conv_8bit },
+ { "ISO-8859-7", "iso8859-7", conv_8bit },
+ { "ISO-8859-8", "iso8859-8", conv_8bit },
+ { "ISO-8859-9", "iso8859-9", conv_8bit },
+ { "EUC-JP", "jisx0208.1983-0", conv_euc },
+ { "EUC-CN", "gb2312.1980-0", conv_euc },
+ { "EUC-KR", "ksc5601.1987-0", conv_euc },
+ { "ISO-10646", "iso10646-1", conv_ucs4 }
+};
+
+static PangoEngineRange basic_ranges[] = {
+ /* Language characters */
+ { 0x0000, 0x02af, "*" },
+ { 0x02b0, 0x02ff, "" },
+ { 0x0380, 0x058f, "*" },
+ { 0x0591, 0x0669, "*" },
+ { 0x1e00, 0x1fff, "*" },
+ { 0x2000, 0x9fff, "*" },
+ { 0xac00, 0xd7a3, "kr" },
+ { 0xf900, 0xfa0b, "kr" },
+ { 0xff00, 0xffe3, "*" }
+};
+
+const CharRange ranges[] = {
+{ 0x20, 0x2f, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0x30, 0x39, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0x3a, 0x5b, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0x5c, 0x5c, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208 },
+{ 0x5d, 0x7e, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0xa0, 0xa0, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0xa1, 0xa1, ENC_ISO_8859_1|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xa2, 0xa2, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208 },
+{ 0xa3, 0xa3, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208 },
+{ 0xa4, 0xa4, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_6|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xa5, 0xa5, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0xa6, 0xa6, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0xa7, 0xa7, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xa8, 0xa8, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xa9, 0xa9, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0xaa, 0xaa, ENC_ISO_8859_1|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xab, 0xab, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0xac, 0xac, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208 },
+{ 0xad, 0xad, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xae, 0xae, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0xaf, 0xaf, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xb0, 0xb0, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xb1, 0xb1, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xb2, 0xb3, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xb4, 0xb4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xb5, 0xb5, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0xb6, 0xb6, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xb7, 0xb7, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xb8, 0xb8, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xb9, 0xb9, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xba, 0xba, ENC_ISO_8859_1|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xbb, 0xbb, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+{ 0xbc, 0xbc, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xbd, 0xbd, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xbe, 0xbe, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xbf, 0xbf, ENC_ISO_8859_1|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xc0, 0xc0, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xc1, 0xc2, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xc3, 0xc3, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xc4, 0xc4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xc5, 0xc5, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xc6, 0xc6, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xc7, 0xc7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xc8, 0xc8, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xc9, 0xc9, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xca, 0xca, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xcb, 0xcb, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xcc, 0xcc, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xcd, 0xce, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xcf, 0xcf, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xd0, 0xd0, ENC_ISO_8859_1|ENC_KSC_5601 },
+{ 0xd1, 0xd2, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xd3, 0xd3, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xd4, 0xd4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xd5, 0xd5, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xd6, 0xd6, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xd7, 0xd7, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xd8, 0xd8, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xd9, 0xd9, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xda, 0xda, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xdb, 0xdb, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xdc, 0xdc, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xdd, 0xdd, ENC_ISO_8859_1|ENC_ISO_8859_2 },
+{ 0xde, 0xde, ENC_ISO_8859_1|ENC_KSC_5601 },
+{ 0xdf, 0xdf, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xe0, 0xe0, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xe1, 0xe1, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xe2, 0xe2, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xe3, 0xe3, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xe4, 0xe4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xe5, 0xe5, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xe6, 0xe6, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xe7, 0xe7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xe8, 0xe8, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xe9, 0xe9, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xea, 0xea, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xeb, 0xeb, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xec, 0xec, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xed, 0xed, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xee, 0xee, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xef, 0xef, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xf0, 0xf0, ENC_ISO_8859_1|ENC_KSC_5601 },
+{ 0xf1, 0xf1, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xf2, 0xf2, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xf3, 0xf3, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xf4, 0xf4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xf5, 0xf5, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xf6, 0xf6, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xf7, 0xf7, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xf8, 0xf8, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0xf9, 0xf9, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0xfa, 0xfa, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xfb, 0xfb, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xfc, 0xfc, ENC_GB_2312|ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+{ 0xfd, 0xfd, ENC_ISO_8859_1|ENC_ISO_8859_2 },
+{ 0xfe, 0xfe, ENC_ISO_8859_1|ENC_KSC_5601 },
+{ 0xff, 0xff, ENC_ISO_8859_1|ENC_ISO_8859_9 },
+{ 0x100, 0x100, ENC_ISO_8859_4 },
+{ 0x101, 0x101, ENC_GB_2312|ENC_ISO_8859_4 },
+{ 0x102, 0x103, ENC_ISO_8859_2 },
+{ 0x104, 0x105, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+{ 0x106, 0x107, ENC_ISO_8859_2 },
+{ 0x108, 0x10b, ENC_ISO_8859_3 },
+{ 0x10c, 0x10d, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+{ 0x10e, 0x10f, ENC_ISO_8859_2 },
+{ 0x110, 0x110, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+{ 0x111, 0x111, ENC_ISO_8859_2|ENC_ISO_8859_4|ENC_KSC_5601 },
+{ 0x112, 0x112, ENC_ISO_8859_4 },
+{ 0x113, 0x113, ENC_GB_2312|ENC_ISO_8859_4 },
+{ 0x116, 0x117, ENC_ISO_8859_4 },
+{ 0x118, 0x119, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+{ 0x11a, 0x11a, ENC_ISO_8859_2 },
+{ 0x11b, 0x11b, ENC_GB_2312|ENC_ISO_8859_2 },
+{ 0x11c, 0x11d, ENC_ISO_8859_3 },
+{ 0x11e, 0x11f, ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0x120, 0x121, ENC_ISO_8859_3 },
+{ 0x122, 0x123, ENC_ISO_8859_4 },
+{ 0x124, 0x125, ENC_ISO_8859_3 },
+{ 0x126, 0x127, ENC_ISO_8859_3|ENC_KSC_5601 },
+{ 0x128, 0x12a, ENC_ISO_8859_4 },
+{ 0x12b, 0x12b, ENC_GB_2312|ENC_ISO_8859_4 },
+{ 0x12e, 0x12f, ENC_ISO_8859_4 },
+{ 0x130, 0x130, ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0x131, 0x131, ENC_ISO_8859_3|ENC_ISO_8859_9|ENC_KSC_5601 },
+{ 0x132, 0x133, ENC_KSC_5601 },
+{ 0x134, 0x135, ENC_ISO_8859_3 },
+{ 0x136, 0x137, ENC_ISO_8859_4 },
+{ 0x138, 0x138, ENC_ISO_8859_4|ENC_KSC_5601 },
+{ 0x139, 0x13a, ENC_ISO_8859_2 },
+{ 0x13b, 0x13c, ENC_ISO_8859_4 },
+{ 0x13d, 0x13e, ENC_ISO_8859_2 },
+{ 0x13f, 0x140, ENC_KSC_5601 },
+{ 0x141, 0x142, ENC_ISO_8859_2|ENC_KSC_5601 },
+{ 0x143, 0x144, ENC_ISO_8859_2 },
+{ 0x145, 0x146, ENC_ISO_8859_4 },
+{ 0x147, 0x148, ENC_ISO_8859_2 },
+{ 0x149, 0x149, ENC_KSC_5601 },
+{ 0x14a, 0x14b, ENC_ISO_8859_4|ENC_KSC_5601 },
+{ 0x14c, 0x14c, ENC_ISO_8859_4 },
+{ 0x14d, 0x14d, ENC_GB_2312|ENC_ISO_8859_4 },
+{ 0x150, 0x151, ENC_ISO_8859_2 },
+{ 0x152, 0x153, ENC_KSC_5601 },
+{ 0x154, 0x155, ENC_ISO_8859_2 },
+{ 0x156, 0x157, ENC_ISO_8859_4 },
+{ 0x158, 0x15b, ENC_ISO_8859_2 },
+{ 0x15c, 0x15d, ENC_ISO_8859_3 },
+{ 0x15e, 0x15f, ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+{ 0x160, 0x161, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+{ 0x162, 0x165, ENC_ISO_8859_2 },
+{ 0x166, 0x167, ENC_ISO_8859_4|ENC_KSC_5601 },
+{ 0x168, 0x16a, ENC_ISO_8859_4 },
+{ 0x16b, 0x16b, ENC_GB_2312|ENC_ISO_8859_4 },
+{ 0x16c, 0x16d, ENC_ISO_8859_3 },
+{ 0x16e, 0x171, ENC_ISO_8859_2 },
+{ 0x172, 0x173, ENC_ISO_8859_4 },
+{ 0x179, 0x17a, ENC_ISO_8859_2 },
+{ 0x17b, 0x17c, ENC_ISO_8859_2|ENC_ISO_8859_3 },
+{ 0x17d, 0x17e, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+{ 0x1ce, 0x1ce, ENC_GB_2312 },
+{ 0x1d0, 0x1d0, ENC_GB_2312 },
+{ 0x1d2, 0x1d2, ENC_GB_2312 },
+{ 0x1d4, 0x1d4, ENC_GB_2312 },
+{ 0x1d6, 0x1d6, ENC_GB_2312 },
+{ 0x1d8, 0x1d8, ENC_GB_2312 },
+{ 0x1da, 0x1da, ENC_GB_2312 },
+{ 0x1dc, 0x1dc, ENC_GB_2312 },
+{ 0x2bc, 0x2bd, ENC_ISO_8859_7 },
+{ 0x2c7, 0x2c7, ENC_GB_2312|ENC_ISO_8859_2|ENC_ISO_8859_4|ENC_KSC_5601 },
+{ 0x2c9, 0x2c9, ENC_GB_2312 },
+{ 0x2d0, 0x2d0, ENC_KSC_5601 },
+{ 0x2d8, 0x2d8, ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_KSC_5601 },
+{ 0x2d9, 0x2d9, ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_KSC_5601 },
+{ 0x2da, 0x2da, ENC_KSC_5601 },
+{ 0x2db, 0x2db, ENC_ISO_8859_2|ENC_ISO_8859_4|ENC_KSC_5601 },
+{ 0x2dd, 0x2dd, ENC_ISO_8859_2|ENC_KSC_5601 },
+{ 0x384, 0x386, ENC_ISO_8859_7 },
+{ 0x388, 0x38a, ENC_ISO_8859_7 },
+{ 0x38c, 0x38c, ENC_ISO_8859_7 },
+{ 0x38e, 0x390, ENC_ISO_8859_7 },
+{ 0x391, 0x3a1, ENC_GB_2312|ENC_ISO_8859_7|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x3a3, 0x3a9, ENC_GB_2312|ENC_ISO_8859_7|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x3aa, 0x3b0, ENC_ISO_8859_7 },
+{ 0x3b1, 0x3c1, ENC_GB_2312|ENC_ISO_8859_7|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x3c2, 0x3c2, ENC_ISO_8859_7 },
+{ 0x3c3, 0x3c9, ENC_GB_2312|ENC_ISO_8859_7|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x3ca, 0x3ce, ENC_ISO_8859_7 },
+{ 0x401, 0x401, ENC_GB_2312|ENC_ISO_8859_5|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x402, 0x40c, ENC_ISO_8859_5 },
+{ 0x40e, 0x40f, ENC_ISO_8859_5 },
+{ 0x410, 0x44f, ENC_GB_2312|ENC_ISO_8859_5|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x451, 0x451, ENC_GB_2312|ENC_ISO_8859_5|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x452, 0x45c, ENC_ISO_8859_5 },
+{ 0x45e, 0x45f, ENC_ISO_8859_5 },
+{ 0x5d0, 0x5ea, ENC_ISO_8859_8 },
+{ 0x60c, 0x60c, ENC_ISO_8859_6 },
+{ 0x61b, 0x61b, ENC_ISO_8859_6 },
+{ 0x61f, 0x61f, ENC_ISO_8859_6 },
+{ 0x621, 0x63a, ENC_ISO_8859_6 },
+{ 0x640, 0x652, ENC_ISO_8859_6 },
+{ 0x660, 0x669, ENC_ISO_8859_6 },
+{ 0x2010, 0x2010, ENC_JIS_0208 },
+{ 0x2015, 0x2015, ENC_GB_2312|ENC_ISO_8859_7|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2016, 0x2016, ENC_JIS_0208 },
+{ 0x2017, 0x2017, ENC_ISO_8859_8 },
+{ 0x2018, 0x2019, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x201c, 0x201d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2020, 0x2021, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2025, 0x2025, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2026, 0x2026, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2030, 0x2030, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2032, 0x2033, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x203b, 0x203b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x203e, 0x203e, ENC_ISO_8859_8 },
+{ 0x2074, 0x2074, ENC_KSC_5601 },
+{ 0x207f, 0x207f, ENC_KSC_5601 },
+{ 0x2081, 0x2084, ENC_KSC_5601 },
+{ 0x2103, 0x2103, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2109, 0x2109, ENC_KSC_5601 },
+{ 0x2113, 0x2113, ENC_KSC_5601 },
+{ 0x2116, 0x2116, ENC_GB_2312|ENC_ISO_8859_5|ENC_KSC_5601 },
+{ 0x2121, 0x2122, ENC_KSC_5601 },
+{ 0x2126, 0x2126, ENC_KSC_5601 },
+{ 0x212b, 0x212b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2153, 0x2154, ENC_KSC_5601 },
+{ 0x215b, 0x215e, ENC_KSC_5601 },
+{ 0x2160, 0x2169, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x216a, 0x216b, ENC_GB_2312 },
+{ 0x2170, 0x2179, ENC_KSC_5601 },
+{ 0x2190, 0x2193, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2194, 0x2199, ENC_KSC_5601 },
+{ 0x21d2, 0x21d2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x21d4, 0x21d4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2200, 0x2200, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2202, 0x2203, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2207, 0x2207, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2208, 0x2208, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x220b, 0x220b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x220f, 0x220f, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2211, 0x2211, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2212, 0x2212, ENC_JIS_0208 },
+{ 0x221a, 0x221a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x221d, 0x221e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2220, 0x2220, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2225, 0x2225, ENC_GB_2312|ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2227, 0x222b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x222c, 0x222c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x222e, 0x222e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2234, 0x2235, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2236, 0x2237, ENC_GB_2312 },
+{ 0x223c, 0x223c, ENC_KSC_5601 },
+{ 0x223d, 0x223d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2248, 0x2248, ENC_GB_2312 },
+{ 0x224c, 0x224c, ENC_GB_2312 },
+{ 0x2252, 0x2252, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2260, 0x2261, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2264, 0x2265, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2266, 0x2267, ENC_JIS_0208 },
+{ 0x226a, 0x226b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x226e, 0x226f, ENC_GB_2312 },
+{ 0x2282, 0x2283, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2286, 0x2287, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2299, 0x2299, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x22a5, 0x22a5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2312, 0x2312, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2460, 0x2469, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x246a, 0x246e, ENC_KSC_5601 },
+{ 0x2474, 0x2482, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2483, 0x249b, ENC_GB_2312 },
+{ 0x249c, 0x24b5, ENC_KSC_5601 },
+{ 0x24d0, 0x24e9, ENC_KSC_5601 },
+{ 0x2500, 0x2503, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2504, 0x250b, ENC_GB_2312 },
+{ 0x250c, 0x250c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x250d, 0x250e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x250f, 0x2510, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2511, 0x2512, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2513, 0x2514, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2515, 0x2516, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2517, 0x2518, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2519, 0x251a, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x251b, 0x251d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x251e, 0x251f, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2520, 0x2520, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2521, 0x2522, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2523, 0x2525, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2526, 0x2527, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2528, 0x2528, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2529, 0x252a, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x252b, 0x252c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x252d, 0x252e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x252f, 0x2530, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2531, 0x2532, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2533, 0x2534, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2535, 0x2536, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2537, 0x2538, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2539, 0x253a, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x253b, 0x253c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x253d, 0x253e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x253f, 0x253f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2540, 0x2541, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x2542, 0x2542, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2543, 0x254a, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x254b, 0x254b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2592, 0x2592, ENC_KSC_5601 },
+{ 0x25a0, 0x25a1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x25a3, 0x25a9, ENC_KSC_5601 },
+{ 0x25b2, 0x25b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x25b6, 0x25b7, ENC_KSC_5601 },
+{ 0x25bc, 0x25bd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x25c0, 0x25c1, ENC_KSC_5601 },
+{ 0x25c6, 0x25c7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x25c8, 0x25c8, ENC_KSC_5601 },
+{ 0x25cb, 0x25cb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x25ce, 0x25cf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x25d0, 0x25d1, ENC_KSC_5601 },
+{ 0x25ef, 0x25ef, ENC_JIS_0208 },
+{ 0x2605, 0x2606, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x260e, 0x260f, ENC_KSC_5601 },
+{ 0x261c, 0x261c, ENC_KSC_5601 },
+{ 0x261e, 0x261e, ENC_KSC_5601 },
+{ 0x2640, 0x2640, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2642, 0x2642, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x2660, 0x2661, ENC_KSC_5601 },
+{ 0x2663, 0x2665, ENC_KSC_5601 },
+{ 0x2667, 0x2669, ENC_KSC_5601 },
+{ 0x266a, 0x266a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x266c, 0x266c, ENC_KSC_5601 },
+{ 0x266d, 0x266d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x266f, 0x266f, ENC_JIS_0208 },
+{ 0x3000, 0x3003, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x3005, 0x3005, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x3006, 0x3007, ENC_JIS_0208 },
+{ 0x3008, 0x3011, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x3012, 0x3012, ENC_JIS_0208 },
+{ 0x3013, 0x3015, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x3016, 0x3017, ENC_GB_2312 },
+{ 0x301c, 0x301c, ENC_JIS_0208 },
+{ 0x3041, 0x3093, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x309b, 0x309e, ENC_JIS_0208 },
+{ 0x30a1, 0x30f6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x30fb, 0x30fb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x30fc, 0x30fe, ENC_JIS_0208 },
+{ 0x3105, 0x3129, ENC_GB_2312 },
+{ 0x3131, 0x318e, ENC_KSC_5601 },
+{ 0x3200, 0x321c, ENC_KSC_5601 },
+{ 0x3220, 0x3229, ENC_GB_2312 },
+{ 0x3260, 0x327b, ENC_KSC_5601 },
+{ 0x327f, 0x327f, ENC_KSC_5601 },
+{ 0x3380, 0x3384, ENC_KSC_5601 },
+{ 0x3388, 0x33ca, ENC_KSC_5601 },
+{ 0x33cf, 0x33d0, ENC_KSC_5601 },
+{ 0x33d3, 0x33d3, ENC_KSC_5601 },
+{ 0x33d6, 0x33d6, ENC_KSC_5601 },
+{ 0x33d8, 0x33d8, ENC_KSC_5601 },
+{ 0x33db, 0x33dd, ENC_KSC_5601 },
+{ 0x4e00, 0x4e01, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e03, 0x4e03, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e07, 0x4e0b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e0c, 0x4e0c, ENC_GB_2312 },
+{ 0x4e0d, 0x4e0d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e0e, 0x4e0e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4e10, 0x4e10, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4e11, 0x4e11, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e13, 0x4e13, ENC_GB_2312 },
+{ 0x4e14, 0x4e16, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e17, 0x4e17, ENC_JIS_0208 },
+{ 0x4e18, 0x4e19, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e1a, 0x4e1d, ENC_GB_2312 },
+{ 0x4e1e, 0x4e1e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e21, 0x4e21, ENC_JIS_0208 },
+{ 0x4e22, 0x4e22, ENC_GB_2312 },
+{ 0x4e24, 0x4e25, ENC_GB_2312 },
+{ 0x4e26, 0x4e26, ENC_JIS_0208 },
+{ 0x4e27, 0x4e28, ENC_GB_2312 },
+{ 0x4e2a, 0x4e2a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4e2b, 0x4e2c, ENC_GB_2312 },
+{ 0x4e2d, 0x4e2d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e30, 0x4e30, ENC_GB_2312 },
+{ 0x4e31, 0x4e31, ENC_JIS_0208 },
+{ 0x4e32, 0x4e32, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e34, 0x4e34, ENC_GB_2312 },
+{ 0x4e36, 0x4e36, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4e38, 0x4e39, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e3a, 0x4e3a, ENC_GB_2312 },
+{ 0x4e3b, 0x4e3b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e3c, 0x4e3c, ENC_JIS_0208 },
+{ 0x4e3d, 0x4e3e, ENC_GB_2312 },
+{ 0x4e3f, 0x4e3f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4e42, 0x4e42, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e43, 0x4e43, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e45, 0x4e45, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e47, 0x4e49, ENC_GB_2312 },
+{ 0x4e4b, 0x4e4b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e4c, 0x4e4c, ENC_GB_2312 },
+{ 0x4e4d, 0x4e4f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e50, 0x4e50, ENC_GB_2312 },
+{ 0x4e52, 0x4e54, ENC_GB_2312 },
+{ 0x4e55, 0x4e55, ENC_JIS_0208 },
+{ 0x4e56, 0x4e56, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e57, 0x4e57, ENC_JIS_0208 },
+{ 0x4e58, 0x4e59, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e5c, 0x4e5c, ENC_GB_2312 },
+{ 0x4e5d, 0x4e5f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e60, 0x4e61, ENC_GB_2312 },
+{ 0x4e62, 0x4e62, ENC_JIS_0208 },
+{ 0x4e66, 0x4e66, ENC_GB_2312 },
+{ 0x4e69, 0x4e69, ENC_GB_2312 },
+{ 0x4e6b, 0x4e6b, ENC_KSC_5601 },
+{ 0x4e6d, 0x4e6d, ENC_KSC_5601 },
+{ 0x4e70, 0x4e70, ENC_GB_2312 },
+{ 0x4e71, 0x4e71, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4e73, 0x4e73, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e76, 0x4e77, ENC_KSC_5601 },
+{ 0x4e7e, 0x4e7e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e80, 0x4e80, ENC_JIS_0208 },
+{ 0x4e82, 0x4e82, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e85, 0x4e85, ENC_JIS_0208 },
+{ 0x4e86, 0x4e86, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e88, 0x4e88, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e89, 0x4e89, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4e8a, 0x4e8a, ENC_JIS_0208 },
+{ 0x4e8b, 0x4e8c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e8d, 0x4e8d, ENC_GB_2312 },
+{ 0x4e8e, 0x4e8e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e8f, 0x4e8f, ENC_GB_2312 },
+{ 0x4e90, 0x4e90, ENC_KSC_5601 },
+{ 0x4e91, 0x4e92, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e93, 0x4e93, ENC_GB_2312 },
+{ 0x4e94, 0x4e95, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e98, 0x4e98, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e99, 0x4e99, ENC_JIS_0208 },
+{ 0x4e9a, 0x4e9a, ENC_GB_2312 },
+{ 0x4e9b, 0x4e9b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e9c, 0x4e9c, ENC_JIS_0208 },
+{ 0x4e9e, 0x4e9e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4e9f, 0x4ea0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4ea1, 0x4ea2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ea4, 0x4ea6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ea7, 0x4ea7, ENC_GB_2312 },
+{ 0x4ea8, 0x4ea8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ea9, 0x4ea9, ENC_GB_2312 },
+{ 0x4eab, 0x4eae, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4eb0, 0x4eb0, ENC_JIS_0208 },
+{ 0x4eb2, 0x4eb2, ENC_GB_2312 },
+{ 0x4eb3, 0x4eb3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4eb5, 0x4eb5, ENC_GB_2312 },
+{ 0x4eb6, 0x4eb6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4eba, 0x4eba, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ebb, 0x4ebb, ENC_GB_2312 },
+{ 0x4ebf, 0x4ebf, ENC_GB_2312 },
+{ 0x4ec0, 0x4ec1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ec2, 0x4ec2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4ec3, 0x4ec3, ENC_GB_2312 },
+{ 0x4ec4, 0x4ec4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ec5, 0x4ec5, ENC_GB_2312 },
+{ 0x4ec6, 0x4ec6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4ec7, 0x4ec7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ec9, 0x4ec9, ENC_GB_2312 },
+{ 0x4eca, 0x4ecb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ecd, 0x4ecd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ece, 0x4ece, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4ecf, 0x4ecf, ENC_JIS_0208 },
+{ 0x4ed1, 0x4ed1, ENC_GB_2312 },
+{ 0x4ed3, 0x4ed3, ENC_GB_2312 },
+{ 0x4ed4, 0x4ed9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4edd, 0x4edd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ede, 0x4ede, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4edf, 0x4edf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ee1, 0x4ee1, ENC_GB_2312 },
+{ 0x4ee3, 0x4ee5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ee8, 0x4ee8, ENC_GB_2312 },
+{ 0x4eea, 0x4eec, ENC_GB_2312 },
+{ 0x4eed, 0x4eee, ENC_JIS_0208 },
+{ 0x4ef0, 0x4ef0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ef2, 0x4ef2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ef3, 0x4ef3, ENC_GB_2312 },
+{ 0x4ef5, 0x4ef5, ENC_GB_2312 },
+{ 0x4ef6, 0x4ef7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4efb, 0x4efb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4efd, 0x4efd, ENC_GB_2312 },
+{ 0x4eff, 0x4eff, ENC_GB_2312 },
+{ 0x4f01, 0x4f01, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f09, 0x4f0a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f0b, 0x4f0b, ENC_KSC_5601 },
+{ 0x4f0d, 0x4f11, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f17, 0x4f19, ENC_GB_2312 },
+{ 0x4f1a, 0x4f1a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4f1b, 0x4f1b, ENC_GB_2312 },
+{ 0x4f1c, 0x4f1d, ENC_JIS_0208 },
+{ 0x4f1e, 0x4f20, ENC_GB_2312 },
+{ 0x4f22, 0x4f22, ENC_GB_2312 },
+{ 0x4f24, 0x4f27, ENC_GB_2312 },
+{ 0x4f2a, 0x4f2b, ENC_GB_2312 },
+{ 0x4f2f, 0x4f2f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f30, 0x4f30, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4f32, 0x4f32, ENC_GB_2312 },
+{ 0x4f34, 0x4f34, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f36, 0x4f36, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f38, 0x4f38, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f3a, 0x4f3a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f3c, 0x4f3d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f43, 0x4f43, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f46, 0x4f46, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f47, 0x4f47, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f48, 0x4f48, ENC_KSC_5601 },
+{ 0x4f4d, 0x4f51, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f53, 0x4f53, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4f55, 0x4f55, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f57, 0x4f57, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4f58, 0x4f58, ENC_GB_2312 },
+{ 0x4f59, 0x4f5c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f5d, 0x4f5e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4f5f, 0x4f60, ENC_GB_2312 },
+{ 0x4f63, 0x4f65, ENC_GB_2312 },
+{ 0x4f67, 0x4f67, ENC_GB_2312 },
+{ 0x4f69, 0x4f69, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f6c, 0x4f6c, ENC_GB_2312 },
+{ 0x4f6f, 0x4f70, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f73, 0x4f73, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f74, 0x4f74, ENC_GB_2312 },
+{ 0x4f75, 0x4f75, ENC_JIS_0208 },
+{ 0x4f76, 0x4f76, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f7a, 0x4f7a, ENC_KSC_5601 },
+{ 0x4f7b, 0x4f7c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4f7e, 0x4f7e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x4f7f, 0x4f7f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f81, 0x4f81, ENC_KSC_5601 },
+{ 0x4f83, 0x4f83, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f84, 0x4f84, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x4f86, 0x4f86, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f88, 0x4f88, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f89, 0x4f89, ENC_GB_2312 },
+{ 0x4f8a, 0x4f8a, ENC_KSC_5601 },
+{ 0x4f8b, 0x4f8b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f8d, 0x4f8d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f8f, 0x4f8f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f91, 0x4f91, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f94, 0x4f94, ENC_GB_2312 },
+{ 0x4f96, 0x4f96, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f97, 0x4f97, ENC_GB_2312 },
+{ 0x4f98, 0x4f98, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f9b, 0x4f9b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4f9d, 0x4f9d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fa0, 0x4fa0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4fa1, 0x4fa1, ENC_JIS_0208 },
+{ 0x4fa3, 0x4fa3, ENC_GB_2312 },
+{ 0x4fa5, 0x4faa, ENC_GB_2312 },
+{ 0x4fab, 0x4fab, ENC_JIS_0208 },
+{ 0x4fac, 0x4fac, ENC_GB_2312 },
+{ 0x4fad, 0x4fad, ENC_JIS_0208 },
+{ 0x4fae, 0x4faf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fb5, 0x4fb5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fb6, 0x4fb6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fbf, 0x4fbf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fc2, 0x4fc2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fc3, 0x4fc4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fc5, 0x4fc5, ENC_GB_2312 },
+{ 0x4fc9, 0x4fc9, ENC_KSC_5601 },
+{ 0x4fca, 0x4fca, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fce, 0x4fce, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fcf, 0x4fcf, ENC_GB_2312 },
+{ 0x4fd0, 0x4fd0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4fd1, 0x4fd1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fd3, 0x4fd3, ENC_KSC_5601 },
+{ 0x4fd4, 0x4fd4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fd7, 0x4fd7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fd8, 0x4fd8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4fda, 0x4fda, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fdb, 0x4fdb, ENC_JIS_0208 },
+{ 0x4fdc, 0x4fdc, ENC_GB_2312 },
+{ 0x4fdd, 0x4fdd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fde, 0x4fde, ENC_GB_2312 },
+{ 0x4fdf, 0x4fdf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fe0, 0x4fe0, ENC_KSC_5601 },
+{ 0x4fe1, 0x4fe1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4fe3, 0x4fe3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x4fe4, 0x4fe5, ENC_JIS_0208 },
+{ 0x4fe6, 0x4fe6, ENC_GB_2312 },
+{ 0x4fe8, 0x4fea, ENC_GB_2312 },
+{ 0x4fed, 0x4fed, ENC_GB_2312 },
+{ 0x4fee, 0x4fef, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ff1, 0x4ff1, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x4ff3, 0x4ff3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ff5, 0x4ff5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ff6, 0x4ff6, ENC_JIS_0208 },
+{ 0x4ff8, 0x4ff8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ffa, 0x4ffa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x4ffe, 0x4ffe, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5002, 0x5002, ENC_KSC_5601 },
+{ 0x5005, 0x5005, ENC_JIS_0208 },
+{ 0x5006, 0x5006, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5009, 0x5009, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x500b, 0x500b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x500c, 0x500c, ENC_GB_2312 },
+{ 0x500d, 0x500d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x500f, 0x500f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5011, 0x5011, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5012, 0x5012, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5014, 0x5014, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5016, 0x5016, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5018, 0x5018, ENC_GB_2312 },
+{ 0x5019, 0x501a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x501c, 0x501c, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x501e, 0x501e, ENC_KSC_5601 },
+{ 0x501f, 0x501f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5021, 0x5021, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5023, 0x5024, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5025, 0x5025, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5026, 0x5026, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5027, 0x5027, ENC_KSC_5601 },
+{ 0x5028, 0x5028, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5029, 0x5029, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x502a, 0x502a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x502b, 0x502b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x502c, 0x502d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x502e, 0x502e, ENC_GB_2312 },
+{ 0x5036, 0x5036, ENC_JIS_0208 },
+{ 0x5039, 0x5039, ENC_JIS_0208 },
+{ 0x503a, 0x503a, ENC_GB_2312 },
+{ 0x503b, 0x503b, ENC_KSC_5601 },
+{ 0x503c, 0x503c, ENC_GB_2312 },
+{ 0x503e, 0x503e, ENC_GB_2312 },
+{ 0x5043, 0x5043, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5047, 0x5048, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5049, 0x5049, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x504c, 0x504c, ENC_GB_2312 },
+{ 0x504e, 0x504e, ENC_GB_2312 },
+{ 0x504f, 0x504f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5050, 0x5050, ENC_JIS_0208 },
+{ 0x5055, 0x5055, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5056, 0x5056, ENC_JIS_0208 },
+{ 0x505a, 0x505a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x505c, 0x505c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5065, 0x5065, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x506c, 0x506c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5072, 0x5072, ENC_JIS_0208 },
+{ 0x5074, 0x5075, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5076, 0x5076, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5077, 0x5077, ENC_GB_2312 },
+{ 0x5078, 0x5078, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x507b, 0x507b, ENC_GB_2312 },
+{ 0x507d, 0x507d, ENC_JIS_0208 },
+{ 0x507e, 0x507f, ENC_GB_2312 },
+{ 0x5080, 0x5080, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5085, 0x5085, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5088, 0x5088, ENC_GB_2312 },
+{ 0x508d, 0x508d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5091, 0x5091, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5098, 0x5099, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x509a, 0x509a, ENC_JIS_0208 },
+{ 0x50a3, 0x50a3, ENC_GB_2312 },
+{ 0x50a5, 0x50a5, ENC_GB_2312 },
+{ 0x50a7, 0x50a9, ENC_GB_2312 },
+{ 0x50ac, 0x50ac, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50ad, 0x50ad, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50b2, 0x50b2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50b3, 0x50b3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50b4, 0x50b4, ENC_JIS_0208 },
+{ 0x50b5, 0x50b5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50b7, 0x50b7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50ba, 0x50bb, ENC_GB_2312 },
+{ 0x50be, 0x50be, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50c2, 0x50c2, ENC_JIS_0208 },
+{ 0x50c5, 0x50c5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50c9, 0x50ca, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50cd, 0x50cd, ENC_JIS_0208 },
+{ 0x50cf, 0x50cf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50d1, 0x50d1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50d5, 0x50d5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50d6, 0x50d6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50da, 0x50da, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50de, 0x50de, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50e3, 0x50e3, ENC_JIS_0208 },
+{ 0x50e5, 0x50e5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50e6, 0x50e6, ENC_GB_2312 },
+{ 0x50e7, 0x50e7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50ec, 0x50ec, ENC_GB_2312 },
+{ 0x50ed, 0x50ed, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50ee, 0x50ee, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x50f3, 0x50f3, ENC_GB_2312 },
+{ 0x50f5, 0x50f5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x50f9, 0x50f9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50fb, 0x50fb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x50ff, 0x50ff, ENC_KSC_5601 },
+{ 0x5100, 0x5101, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5102, 0x5102, ENC_JIS_0208 },
+{ 0x5104, 0x5104, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5106, 0x5106, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5107, 0x5107, ENC_GB_2312 },
+{ 0x5109, 0x5109, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x510b, 0x510b, ENC_GB_2312 },
+{ 0x5112, 0x5112, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5114, 0x5116, ENC_JIS_0208 },
+{ 0x5118, 0x5118, ENC_JIS_0208 },
+{ 0x511a, 0x511a, ENC_JIS_0208 },
+{ 0x511f, 0x511f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5121, 0x5121, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x512a, 0x512a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5132, 0x5132, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5137, 0x5137, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x513a, 0x513a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x513b, 0x513b, ENC_JIS_0208 },
+{ 0x513c, 0x513c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x513f, 0x513f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5140, 0x5141, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5143, 0x5146, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5147, 0x5147, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5148, 0x5149, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x514b, 0x514b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x514c, 0x514c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x514d, 0x514d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x514e, 0x514e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5150, 0x5150, ENC_JIS_0208 },
+{ 0x5151, 0x5151, ENC_GB_2312 },
+{ 0x5152, 0x5152, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5154, 0x5154, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5155, 0x5156, ENC_GB_2312 },
+{ 0x515a, 0x515a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x515c, 0x515c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5162, 0x5162, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5165, 0x5165, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5167, 0x5167, ENC_KSC_5601 },
+{ 0x5168, 0x5168, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5169, 0x516a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x516b, 0x516e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5170, 0x5170, ENC_GB_2312 },
+{ 0x5171, 0x5171, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5173, 0x5174, ENC_GB_2312 },
+{ 0x5175, 0x5178, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5179, 0x5179, ENC_GB_2312 },
+{ 0x517b, 0x517b, ENC_GB_2312 },
+{ 0x517c, 0x517c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x517d, 0x517d, ENC_GB_2312 },
+{ 0x5180, 0x5180, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5181, 0x5181, ENC_GB_2312 },
+{ 0x5182, 0x5182, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5185, 0x5185, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5186, 0x5186, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5188, 0x5188, ENC_GB_2312 },
+{ 0x5189, 0x5189, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x518a, 0x518a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x518c, 0x518c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x518d, 0x518d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x518f, 0x5191, ENC_JIS_0208 },
+{ 0x5192, 0x5192, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5193, 0x5193, ENC_JIS_0208 },
+{ 0x5195, 0x5195, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5196, 0x5196, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5197, 0x5197, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5199, 0x5199, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x519b, 0x519c, ENC_GB_2312 },
+{ 0x51a0, 0x51a0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51a2, 0x51a2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x51a4, 0x51a4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x51a5, 0x51a5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51a6, 0x51a6, ENC_JIS_0208 },
+{ 0x51a8, 0x51a9, ENC_JIS_0208 },
+{ 0x51aa, 0x51aa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51ab, 0x51ab, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x51ac, 0x51ac, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51af, 0x51af, ENC_GB_2312 },
+{ 0x51b0, 0x51b3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x51b4, 0x51b4, ENC_JIS_0208 },
+{ 0x51b5, 0x51b5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x51b6, 0x51b7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51bb, 0x51bc, ENC_GB_2312 },
+{ 0x51bd, 0x51bd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51c0, 0x51c0, ENC_GB_2312 },
+{ 0x51c4, 0x51c4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51c5, 0x51c5, ENC_JIS_0208 },
+{ 0x51c6, 0x51c6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51c7, 0x51c7, ENC_GB_2312 },
+{ 0x51c9, 0x51c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51cb, 0x51cc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51cd, 0x51cd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51cf, 0x51cf, ENC_GB_2312 },
+{ 0x51d1, 0x51d1, ENC_GB_2312 },
+{ 0x51d6, 0x51d6, ENC_JIS_0208 },
+{ 0x51db, 0x51db, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x51dc, 0x51dc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51dd, 0x51dd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51de, 0x51de, ENC_KSC_5601 },
+{ 0x51e0, 0x51e0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x51e1, 0x51e1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51e4, 0x51e4, ENC_GB_2312 },
+{ 0x51e6, 0x51e7, ENC_JIS_0208 },
+{ 0x51e9, 0x51ea, ENC_JIS_0208 },
+{ 0x51eb, 0x51eb, ENC_GB_2312 },
+{ 0x51ed, 0x51ed, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x51ef, 0x51ef, ENC_GB_2312 },
+{ 0x51f0, 0x51f0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51f1, 0x51f1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51f3, 0x51f3, ENC_GB_2312 },
+{ 0x51f5, 0x51f5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x51f6, 0x51f6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51f8, 0x51fa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51fb, 0x51fc, ENC_GB_2312 },
+{ 0x51fd, 0x51fd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x51fe, 0x51fe, ENC_JIS_0208 },
+{ 0x51ff, 0x51ff, ENC_GB_2312 },
+{ 0x5200, 0x5200, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5201, 0x5202, ENC_GB_2312 },
+{ 0x5203, 0x5203, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5204, 0x5204, ENC_JIS_0208 },
+{ 0x5206, 0x5208, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x520a, 0x520a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x520b, 0x520b, ENC_JIS_0208 },
+{ 0x520d, 0x520d, ENC_GB_2312 },
+{ 0x520e, 0x520e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5211, 0x5211, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5212, 0x5212, ENC_GB_2312 },
+{ 0x5214, 0x5214, ENC_JIS_0208 },
+{ 0x5216, 0x5216, ENC_GB_2312 },
+{ 0x5217, 0x5217, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5218, 0x521b, ENC_GB_2312 },
+{ 0x521d, 0x521d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5220, 0x5220, ENC_GB_2312 },
+{ 0x5224, 0x5224, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5225, 0x5225, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5227, 0x5227, ENC_JIS_0208 },
+{ 0x5228, 0x5228, ENC_GB_2312 },
+{ 0x5229, 0x5229, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x522a, 0x522a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x522b, 0x522b, ENC_GB_2312 },
+{ 0x522d, 0x522d, ENC_GB_2312 },
+{ 0x522e, 0x522e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5230, 0x5230, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5233, 0x5233, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5236, 0x523b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x523d, 0x523d, ENC_GB_2312 },
+{ 0x523f, 0x5242, ENC_GB_2312 },
+{ 0x5243, 0x5243, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5244, 0x5244, ENC_JIS_0208 },
+{ 0x5247, 0x5247, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x524a, 0x524a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x524b, 0x524b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x524c, 0x524d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x524f, 0x524f, ENC_JIS_0208 },
+{ 0x5250, 0x5251, ENC_GB_2312 },
+{ 0x5254, 0x5254, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5256, 0x5256, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x525b, 0x525b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x525c, 0x525c, ENC_GB_2312 },
+{ 0x525d, 0x525d, ENC_KSC_5601 },
+{ 0x525e, 0x525e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5261, 0x5261, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5263, 0x5264, ENC_JIS_0208 },
+{ 0x5265, 0x5265, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5267, 0x5267, ENC_GB_2312 },
+{ 0x5269, 0x526a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x526f, 0x526f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5270, 0x5271, ENC_JIS_0208 },
+{ 0x5272, 0x5272, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5273, 0x5274, ENC_JIS_0208 },
+{ 0x5275, 0x5275, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x527d, 0x527d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x527f, 0x527f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5281, 0x5282, ENC_GB_2312 },
+{ 0x5283, 0x5283, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5287, 0x5287, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5288, 0x5288, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5289, 0x5289, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x528d, 0x528d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5290, 0x5290, ENC_GB_2312 },
+{ 0x5291, 0x5292, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5293, 0x5293, ENC_GB_2312 },
+{ 0x5294, 0x5294, ENC_JIS_0208 },
+{ 0x529b, 0x529b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x529d, 0x529e, ENC_GB_2312 },
+{ 0x529f, 0x52a0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52a1, 0x52a2, ENC_GB_2312 },
+{ 0x52a3, 0x52a3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52a4, 0x52a4, ENC_KSC_5601 },
+{ 0x52a8, 0x52a8, ENC_GB_2312 },
+{ 0x52a9, 0x52ab, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52ac, 0x52ad, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x52b1, 0x52b1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x52b2, 0x52b3, ENC_GB_2312 },
+{ 0x52b4, 0x52b5, ENC_JIS_0208 },
+{ 0x52b9, 0x52b9, ENC_JIS_0208 },
+{ 0x52bc, 0x52bc, ENC_JIS_0208 },
+{ 0x52be, 0x52be, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52bf, 0x52bf, ENC_GB_2312 },
+{ 0x52c1, 0x52c1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52c3, 0x52c3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52c5, 0x52c5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52c7, 0x52c7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52c9, 0x52c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52cb, 0x52cb, ENC_GB_2312 },
+{ 0x52cd, 0x52cd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52d0, 0x52d0, ENC_GB_2312 },
+{ 0x52d2, 0x52d2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52d5, 0x52d5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52d6, 0x52d6, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x52d7, 0x52d7, ENC_JIS_0208 },
+{ 0x52d8, 0x52d8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52d9, 0x52d9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52db, 0x52db, ENC_KSC_5601 },
+{ 0x52dd, 0x52de, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52df, 0x52df, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52e0, 0x52e0, ENC_JIS_0208 },
+{ 0x52e2, 0x52e3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52e4, 0x52e4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52e6, 0x52e7, ENC_JIS_0208 },
+{ 0x52f0, 0x52f0, ENC_GB_2312 },
+{ 0x52f2, 0x52f2, ENC_JIS_0208 },
+{ 0x52f3, 0x52f3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52f5, 0x52f5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52f8, 0x52f8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52f9, 0x52f9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x52fa, 0x52fa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x52fb, 0x52fb, ENC_KSC_5601 },
+{ 0x52fe, 0x52ff, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5300, 0x5300, ENC_GB_2312 },
+{ 0x5301, 0x5302, ENC_JIS_0208 },
+{ 0x5305, 0x5305, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5306, 0x5306, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5308, 0x5308, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x530d, 0x530d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x530f, 0x5310, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5315, 0x5317, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5319, 0x5319, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x531a, 0x531a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x531d, 0x531d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5320, 0x5321, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5323, 0x5323, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5326, 0x5326, ENC_GB_2312 },
+{ 0x532a, 0x532a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x532e, 0x532e, ENC_GB_2312 },
+{ 0x532f, 0x532f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5331, 0x5331, ENC_JIS_0208 },
+{ 0x5333, 0x5333, ENC_JIS_0208 },
+{ 0x5338, 0x5338, ENC_JIS_0208 },
+{ 0x5339, 0x5339, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x533a, 0x533b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x533e, 0x533e, ENC_GB_2312 },
+{ 0x533f, 0x533f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5340, 0x5340, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5341, 0x5341, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5343, 0x5343, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5344, 0x5344, ENC_KSC_5601 },
+{ 0x5345, 0x5345, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5346, 0x5346, ENC_JIS_0208 },
+{ 0x5347, 0x534a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x534d, 0x534d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x534e, 0x534f, ENC_GB_2312 },
+{ 0x5351, 0x5353, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5354, 0x5354, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5355, 0x5356, ENC_GB_2312 },
+{ 0x5357, 0x5357, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5358, 0x5358, ENC_JIS_0208 },
+{ 0x535a, 0x535a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x535c, 0x535c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x535e, 0x535e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x535f, 0x535f, ENC_GB_2312 },
+{ 0x5360, 0x5360, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5361, 0x5364, ENC_GB_2312 },
+{ 0x5366, 0x5366, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5367, 0x5367, ENC_GB_2312 },
+{ 0x5368, 0x5368, ENC_KSC_5601 },
+{ 0x5369, 0x5369, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x536b, 0x536b, ENC_GB_2312 },
+{ 0x536e, 0x536e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x536f, 0x5371, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5373, 0x5373, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5374, 0x5375, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5377, 0x5377, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5378, 0x5378, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x537a, 0x537a, ENC_GB_2312 },
+{ 0x537b, 0x537b, ENC_JIS_0208 },
+{ 0x537d, 0x537d, ENC_KSC_5601 },
+{ 0x537f, 0x537f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5382, 0x5382, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5384, 0x5384, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5385, 0x5386, ENC_GB_2312 },
+{ 0x5389, 0x5389, ENC_GB_2312 },
+{ 0x538b, 0x538d, ENC_GB_2312 },
+{ 0x5393, 0x5393, ENC_KSC_5601 },
+{ 0x5395, 0x5395, ENC_GB_2312 },
+{ 0x5396, 0x5396, ENC_JIS_0208 },
+{ 0x5398, 0x5398, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x539a, 0x539a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x539d, 0x539d, ENC_GB_2312 },
+{ 0x539f, 0x539f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53a0, 0x53a0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53a2, 0x53a3, ENC_GB_2312 },
+{ 0x53a5, 0x53a6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53a8, 0x53a9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53ad, 0x53ad, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53ae, 0x53ae, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53b0, 0x53b0, ENC_JIS_0208 },
+{ 0x53b3, 0x53b3, ENC_JIS_0208 },
+{ 0x53b6, 0x53b6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53bb, 0x53bb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53bf, 0x53bf, ENC_GB_2312 },
+{ 0x53c1, 0x53c1, ENC_GB_2312 },
+{ 0x53c2, 0x53c2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53c3, 0x53c3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53c8, 0x53cb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53cc, 0x53cc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53cd, 0x53cd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53ce, 0x53ce, ENC_JIS_0208 },
+{ 0x53d1, 0x53d1, ENC_GB_2312 },
+{ 0x53d4, 0x53d4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53d6, 0x53d7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53d8, 0x53d8, ENC_GB_2312 },
+{ 0x53d9, 0x53d9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53db, 0x53db, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53df, 0x53df, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53e0, 0x53e0, ENC_GB_2312 },
+{ 0x53e1, 0x53e2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53e3, 0x53e5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53e6, 0x53e6, ENC_GB_2312 },
+{ 0x53e8, 0x53e8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53e9, 0x53ed, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53ee, 0x53ee, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53ef, 0x53f3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53f5, 0x53f5, ENC_GB_2312 },
+{ 0x53f6, 0x53f7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x53f8, 0x53f8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x53f9, 0x53f9, ENC_GB_2312 },
+{ 0x53fa, 0x53fa, ENC_JIS_0208 },
+{ 0x53fb, 0x53fd, ENC_GB_2312 },
+{ 0x5401, 0x5401, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5403, 0x5404, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5406, 0x5406, ENC_GB_2312 },
+{ 0x5408, 0x540a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x540b, 0x540b, ENC_JIS_0208 },
+{ 0x540c, 0x5411, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5412, 0x5413, ENC_GB_2312 },
+{ 0x5415, 0x5417, ENC_GB_2312 },
+{ 0x541b, 0x541b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x541d, 0x541d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x541e, 0x541e, ENC_GB_2312 },
+{ 0x541f, 0x5420, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5421, 0x5421, ENC_GB_2312 },
+{ 0x5423, 0x5423, ENC_GB_2312 },
+{ 0x5426, 0x5426, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5427, 0x5428, ENC_GB_2312 },
+{ 0x5429, 0x5429, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x542b, 0x542b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x542c, 0x542e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x542f, 0x542f, ENC_GB_2312 },
+{ 0x5431, 0x5432, ENC_GB_2312 },
+{ 0x5433, 0x5433, ENC_KSC_5601 },
+{ 0x5434, 0x5435, ENC_GB_2312 },
+{ 0x5436, 0x5436, ENC_JIS_0208 },
+{ 0x5438, 0x5439, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x543b, 0x543c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x543d, 0x543d, ENC_JIS_0208 },
+{ 0x543e, 0x543e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5440, 0x5440, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5442, 0x5442, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5443, 0x5443, ENC_GB_2312 },
+{ 0x5446, 0x5446, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5448, 0x5448, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5449, 0x5449, ENC_JIS_0208 },
+{ 0x544a, 0x544a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x544b, 0x544b, ENC_GB_2312 },
+{ 0x544e, 0x544e, ENC_JIS_0208 },
+{ 0x5450, 0x5450, ENC_GB_2312 },
+{ 0x5451, 0x5451, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5452, 0x5459, ENC_GB_2312 },
+{ 0x545b, 0x545c, ENC_GB_2312 },
+{ 0x545f, 0x545f, ENC_JIS_0208 },
+{ 0x5462, 0x5462, ENC_GB_2312 },
+{ 0x5464, 0x5464, ENC_GB_2312 },
+{ 0x5466, 0x5466, ENC_GB_2312 },
+{ 0x5468, 0x5468, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x546a, 0x546a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5470, 0x5470, ENC_JIS_0208 },
+{ 0x5471, 0x5471, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5472, 0x5472, ENC_GB_2312 },
+{ 0x5473, 0x5473, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5475, 0x5475, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5476, 0x5477, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5478, 0x5478, ENC_GB_2312 },
+{ 0x547b, 0x547d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5480, 0x5480, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5482, 0x5482, ENC_GB_2312 },
+{ 0x5484, 0x5484, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5486, 0x5486, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x548b, 0x548b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x548c, 0x548c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x548e, 0x548e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x548f, 0x548f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5490, 0x5490, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5492, 0x5492, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5494, 0x5496, ENC_GB_2312 },
+{ 0x5499, 0x549b, ENC_GB_2312 },
+{ 0x549d, 0x549d, ENC_GB_2312 },
+{ 0x54a2, 0x54a2, ENC_JIS_0208 },
+{ 0x54a3, 0x54a3, ENC_GB_2312 },
+{ 0x54a4, 0x54a4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54a5, 0x54a5, ENC_JIS_0208 },
+{ 0x54a6, 0x54a7, ENC_GB_2312 },
+{ 0x54a8, 0x54a8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54a9, 0x54aa, ENC_GB_2312 },
+{ 0x54ab, 0x54ac, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54ad, 0x54ad, ENC_GB_2312 },
+{ 0x54af, 0x54af, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x54b1, 0x54b1, ENC_GB_2312 },
+{ 0x54b2, 0x54b2, ENC_JIS_0208 },
+{ 0x54b3, 0x54b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54b4, 0x54b4, ENC_GB_2312 },
+{ 0x54b8, 0x54b8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54bb, 0x54bb, ENC_GB_2312 },
+{ 0x54bc, 0x54bc, ENC_JIS_0208 },
+{ 0x54bd, 0x54bd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54be, 0x54be, ENC_JIS_0208 },
+{ 0x54bf, 0x54bf, ENC_GB_2312 },
+{ 0x54c0, 0x54c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54c2, 0x54c2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x54c4, 0x54c4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54c6, 0x54c6, ENC_GB_2312 },
+{ 0x54c7, 0x54c7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x54c8, 0x54c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54cc, 0x54d5, ENC_GB_2312 },
+{ 0x54d7, 0x54d7, ENC_GB_2312 },
+{ 0x54d8, 0x54d8, ENC_JIS_0208 },
+{ 0x54d9, 0x54da, ENC_GB_2312 },
+{ 0x54dc, 0x54df, ENC_GB_2312 },
+{ 0x54e1, 0x54e1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54e2, 0x54e2, ENC_JIS_0208 },
+{ 0x54e5, 0x54e5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54e6, 0x54e6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x54e7, 0x54e7, ENC_GB_2312 },
+{ 0x54e8, 0x54e8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54e9, 0x54e9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x54ea, 0x54ea, ENC_GB_2312 },
+{ 0x54ed, 0x54ee, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54f2, 0x54f2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54f3, 0x54f3, ENC_GB_2312 },
+{ 0x54fa, 0x54fa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x54fc, 0x54fc, ENC_GB_2312 },
+{ 0x54fd, 0x54fd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x54ff, 0x54ff, ENC_GB_2312 },
+{ 0x5501, 0x5501, ENC_GB_2312 },
+{ 0x5504, 0x5504, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5506, 0x5507, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5509, 0x5509, ENC_GB_2312 },
+{ 0x550e, 0x550e, ENC_KSC_5601 },
+{ 0x550f, 0x550f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5510, 0x5510, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5511, 0x5511, ENC_GB_2312 },
+{ 0x5514, 0x5514, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5516, 0x5516, ENC_JIS_0208 },
+{ 0x551b, 0x551b, ENC_GB_2312 },
+{ 0x551c, 0x551c, ENC_KSC_5601 },
+{ 0x5520, 0x5520, ENC_GB_2312 },
+{ 0x5522, 0x5524, ENC_GB_2312 },
+{ 0x5527, 0x5527, ENC_GB_2312 },
+{ 0x552a, 0x552a, ENC_GB_2312 },
+{ 0x552c, 0x552c, ENC_GB_2312 },
+{ 0x552e, 0x552e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x552f, 0x552f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5530, 0x5530, ENC_GB_2312 },
+{ 0x5531, 0x5531, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5533, 0x5533, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5535, 0x5535, ENC_KSC_5601 },
+{ 0x5537, 0x5537, ENC_GB_2312 },
+{ 0x5538, 0x5539, ENC_JIS_0208 },
+{ 0x553c, 0x553c, ENC_GB_2312 },
+{ 0x553e, 0x553e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x553f, 0x553f, ENC_GB_2312 },
+{ 0x5540, 0x5540, ENC_JIS_0208 },
+{ 0x5541, 0x5541, ENC_GB_2312 },
+{ 0x5543, 0x5543, ENC_GB_2312 },
+{ 0x5544, 0x5544, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5545, 0x5545, ENC_JIS_0208 },
+{ 0x5546, 0x5546, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5549, 0x554a, ENC_GB_2312 },
+{ 0x554c, 0x554c, ENC_JIS_0208 },
+{ 0x554f, 0x554f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5550, 0x5550, ENC_GB_2312 },
+{ 0x5553, 0x5553, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5555, 0x5555, ENC_GB_2312 },
+{ 0x5556, 0x5556, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5557, 0x5557, ENC_JIS_0208 },
+{ 0x555c, 0x555c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x555d, 0x555d, ENC_JIS_0208 },
+{ 0x555e, 0x555e, ENC_KSC_5601 },
+{ 0x5561, 0x5561, ENC_GB_2312 },
+{ 0x5563, 0x5563, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5564, 0x5567, ENC_GB_2312 },
+{ 0x556a, 0x556a, ENC_GB_2312 },
+{ 0x556c, 0x556e, ENC_GB_2312 },
+{ 0x5575, 0x5578, ENC_GB_2312 },
+{ 0x557b, 0x557b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x557c, 0x557c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x557e, 0x557e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5580, 0x5580, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5581, 0x5582, ENC_GB_2312 },
+{ 0x5583, 0x5583, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5584, 0x5584, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5586, 0x5586, ENC_KSC_5601 },
+{ 0x5587, 0x5587, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5588, 0x5588, ENC_GB_2312 },
+{ 0x5589, 0x558a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x558b, 0x558b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x558f, 0x558f, ENC_GB_2312 },
+{ 0x5591, 0x5591, ENC_GB_2312 },
+{ 0x5594, 0x5594, ENC_GB_2312 },
+{ 0x5598, 0x5599, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x559a, 0x559a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x559c, 0x559d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x559e, 0x559e, ENC_JIS_0208 },
+{ 0x559f, 0x559f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x55a7, 0x55a7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55a8, 0x55a8, ENC_JIS_0208 },
+{ 0x55a9, 0x55ac, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55ae, 0x55ae, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55b0, 0x55b0, ENC_JIS_0208 },
+{ 0x55b1, 0x55b1, ENC_GB_2312 },
+{ 0x55b3, 0x55b3, ENC_GB_2312 },
+{ 0x55b5, 0x55b5, ENC_GB_2312 },
+{ 0x55b6, 0x55b6, ENC_JIS_0208 },
+{ 0x55b7, 0x55b7, ENC_GB_2312 },
+{ 0x55b9, 0x55b9, ENC_GB_2312 },
+{ 0x55bb, 0x55bb, ENC_GB_2312 },
+{ 0x55bd, 0x55be, ENC_GB_2312 },
+{ 0x55c4, 0x55c4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x55c5, 0x55c5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55c7, 0x55c7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55c9, 0x55c9, ENC_GB_2312 },
+{ 0x55cc, 0x55cd, ENC_GB_2312 },
+{ 0x55d1, 0x55d3, ENC_GB_2312 },
+{ 0x55d4, 0x55d4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55d6, 0x55d6, ENC_GB_2312 },
+{ 0x55da, 0x55da, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55dc, 0x55dc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55dd, 0x55dd, ENC_GB_2312 },
+{ 0x55df, 0x55df, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55e1, 0x55e1, ENC_GB_2312 },
+{ 0x55e3, 0x55e4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x55e5, 0x55e6, ENC_GB_2312 },
+{ 0x55e8, 0x55e8, ENC_GB_2312 },
+{ 0x55ea, 0x55ec, ENC_GB_2312 },
+{ 0x55ef, 0x55ef, ENC_GB_2312 },
+{ 0x55f2, 0x55f3, ENC_GB_2312 },
+{ 0x55f5, 0x55f5, ENC_GB_2312 },
+{ 0x55f7, 0x55f7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x55f9, 0x55f9, ENC_JIS_0208 },
+{ 0x55fd, 0x55fe, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5600, 0x5601, ENC_GB_2312 },
+{ 0x5606, 0x5606, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5608, 0x5608, ENC_GB_2312 },
+{ 0x5609, 0x5609, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x560c, 0x560c, ENC_GB_2312 },
+{ 0x560e, 0x560f, ENC_GB_2312 },
+{ 0x5614, 0x5614, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5616, 0x5616, ENC_JIS_0208 },
+{ 0x5617, 0x5617, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5618, 0x5618, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x561b, 0x561b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x561e, 0x561f, ENC_GB_2312 },
+{ 0x5623, 0x5624, ENC_GB_2312 },
+{ 0x5627, 0x5627, ENC_GB_2312 },
+{ 0x5629, 0x5629, ENC_JIS_0208 },
+{ 0x562c, 0x562d, ENC_GB_2312 },
+{ 0x562f, 0x562f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5631, 0x5631, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5632, 0x5632, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5634, 0x5634, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5636, 0x5636, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5638, 0x5638, ENC_JIS_0208 },
+{ 0x5639, 0x5639, ENC_GB_2312 },
+{ 0x563b, 0x563b, ENC_GB_2312 },
+{ 0x563f, 0x563f, ENC_GB_2312 },
+{ 0x5642, 0x5642, ENC_JIS_0208 },
+{ 0x564c, 0x564c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x564d, 0x564d, ENC_GB_2312 },
+{ 0x564e, 0x564e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5650, 0x5650, ENC_JIS_0208 },
+{ 0x5653, 0x5653, ENC_KSC_5601 },
+{ 0x5654, 0x5654, ENC_GB_2312 },
+{ 0x5657, 0x5659, ENC_GB_2312 },
+{ 0x565b, 0x565b, ENC_JIS_0208 },
+{ 0x565c, 0x565c, ENC_GB_2312 },
+{ 0x5662, 0x5662, ENC_GB_2312 },
+{ 0x5664, 0x5664, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5668, 0x5668, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5669, 0x5669, ENC_GB_2312 },
+{ 0x566a, 0x566a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x566b, 0x566b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x566c, 0x566c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5671, 0x5671, ENC_GB_2312 },
+{ 0x5674, 0x5674, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5676, 0x5676, ENC_GB_2312 },
+{ 0x5678, 0x5678, ENC_JIS_0208 },
+{ 0x567a, 0x567a, ENC_JIS_0208 },
+{ 0x567b, 0x567c, ENC_GB_2312 },
+{ 0x5680, 0x5680, ENC_JIS_0208 },
+{ 0x5685, 0x5685, ENC_GB_2312 },
+{ 0x5686, 0x5686, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5687, 0x5687, ENC_JIS_0208 },
+{ 0x568a, 0x568a, ENC_JIS_0208 },
+{ 0x568e, 0x568e, ENC_GB_2312 },
+{ 0x568f, 0x568f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5693, 0x5693, ENC_GB_2312 },
+{ 0x5694, 0x5694, ENC_JIS_0208 },
+{ 0x56a0, 0x56a0, ENC_JIS_0208 },
+{ 0x56a2, 0x56a2, ENC_JIS_0208 },
+{ 0x56a3, 0x56a3, ENC_GB_2312 },
+{ 0x56a5, 0x56a5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56ac, 0x56ac, ENC_KSC_5601 },
+{ 0x56ae, 0x56ae, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56af, 0x56af, ENC_GB_2312 },
+{ 0x56b4, 0x56b4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56b6, 0x56b6, ENC_JIS_0208 },
+{ 0x56b7, 0x56b7, ENC_GB_2312 },
+{ 0x56bc, 0x56bc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56c0, 0x56c3, ENC_JIS_0208 },
+{ 0x56c8, 0x56c8, ENC_JIS_0208 },
+{ 0x56ca, 0x56ca, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x56cd, 0x56cd, ENC_KSC_5601 },
+{ 0x56ce, 0x56ce, ENC_JIS_0208 },
+{ 0x56d1, 0x56d1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56d3, 0x56d3, ENC_JIS_0208 },
+{ 0x56d4, 0x56d4, ENC_GB_2312 },
+{ 0x56d7, 0x56d7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x56d8, 0x56d8, ENC_JIS_0208 },
+{ 0x56da, 0x56db, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56dd, 0x56dd, ENC_GB_2312 },
+{ 0x56de, 0x56de, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56df, 0x56df, ENC_GB_2312 },
+{ 0x56e0, 0x56e0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56e1, 0x56e2, ENC_GB_2312 },
+{ 0x56e3, 0x56e3, ENC_JIS_0208 },
+{ 0x56e4, 0x56e4, ENC_GB_2312 },
+{ 0x56eb, 0x56eb, ENC_GB_2312 },
+{ 0x56ed, 0x56ed, ENC_GB_2312 },
+{ 0x56ee, 0x56ee, ENC_JIS_0208 },
+{ 0x56f0, 0x56f0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56f1, 0x56f1, ENC_GB_2312 },
+{ 0x56f2, 0x56f3, ENC_JIS_0208 },
+{ 0x56f4, 0x56f5, ENC_GB_2312 },
+{ 0x56f9, 0x56fa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x56fd, 0x56fd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x56fe, 0x56fe, ENC_GB_2312 },
+{ 0x56ff, 0x56ff, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5700, 0x5700, ENC_JIS_0208 },
+{ 0x5703, 0x5704, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5706, 0x5706, ENC_GB_2312 },
+{ 0x5708, 0x5708, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5709, 0x5709, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x570a, 0x570a, ENC_GB_2312 },
+{ 0x570b, 0x570b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x570d, 0x570d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x570f, 0x570f, ENC_JIS_0208 },
+{ 0x5712, 0x5713, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5716, 0x5716, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5718, 0x5718, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x571c, 0x571c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x571f, 0x571f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5723, 0x5723, ENC_GB_2312 },
+{ 0x5726, 0x5727, ENC_JIS_0208 },
+{ 0x5728, 0x5728, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5729, 0x572a, ENC_GB_2312 },
+{ 0x572c, 0x572c, ENC_GB_2312 },
+{ 0x572d, 0x572d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x572e, 0x572f, ENC_GB_2312 },
+{ 0x5730, 0x5730, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5733, 0x5733, ENC_GB_2312 },
+{ 0x5737, 0x5738, ENC_JIS_0208 },
+{ 0x5739, 0x573a, ENC_GB_2312 },
+{ 0x573b, 0x573b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x573e, 0x573e, ENC_GB_2312 },
+{ 0x5740, 0x5740, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5742, 0x5742, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5747, 0x5747, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x574a, 0x574a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x574c, 0x574c, ENC_GB_2312 },
+{ 0x574d, 0x574d, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x574e, 0x574e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x574f, 0x574f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5750, 0x5751, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5757, 0x5757, ENC_GB_2312 },
+{ 0x575a, 0x5760, ENC_GB_2312 },
+{ 0x5761, 0x5761, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5764, 0x5764, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5766, 0x5766, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5768, 0x5768, ENC_GB_2312 },
+{ 0x5769, 0x5769, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x576a, 0x576a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x576b, 0x576b, ENC_GB_2312 },
+{ 0x576d, 0x576d, ENC_GB_2312 },
+{ 0x576e, 0x576e, ENC_KSC_5601 },
+{ 0x576f, 0x576f, ENC_GB_2312 },
+{ 0x5770, 0x5770, ENC_KSC_5601 },
+{ 0x5773, 0x5773, ENC_GB_2312 },
+{ 0x5775, 0x5775, ENC_KSC_5601 },
+{ 0x5776, 0x5777, ENC_GB_2312 },
+{ 0x577b, 0x577b, ENC_GB_2312 },
+{ 0x577c, 0x577c, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x577f, 0x577f, ENC_JIS_0208 },
+{ 0x5782, 0x5782, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5783, 0x5786, ENC_GB_2312 },
+{ 0x5788, 0x5788, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5789, 0x5789, ENC_JIS_0208 },
+{ 0x578b, 0x578b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x578c, 0x578c, ENC_GB_2312 },
+{ 0x5792, 0x5792, ENC_GB_2312 },
+{ 0x5793, 0x5793, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x579b, 0x579b, ENC_GB_2312 },
+{ 0x57a0, 0x57a0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57a1, 0x57a1, ENC_GB_2312 },
+{ 0x57a2, 0x57a3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57a4, 0x57a4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x57a6, 0x57a7, ENC_GB_2312 },
+{ 0x57a9, 0x57a9, ENC_GB_2312 },
+{ 0x57aa, 0x57aa, ENC_JIS_0208 },
+{ 0x57ab, 0x57ab, ENC_GB_2312 },
+{ 0x57ad, 0x57ae, ENC_GB_2312 },
+{ 0x57b0, 0x57b0, ENC_JIS_0208 },
+{ 0x57b2, 0x57b2, ENC_GB_2312 },
+{ 0x57b3, 0x57b3, ENC_JIS_0208 },
+{ 0x57b4, 0x57b4, ENC_GB_2312 },
+{ 0x57b8, 0x57b8, ENC_GB_2312 },
+{ 0x57c0, 0x57c0, ENC_JIS_0208 },
+{ 0x57c2, 0x57c2, ENC_GB_2312 },
+{ 0x57c3, 0x57c3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57c6, 0x57c6, ENC_JIS_0208 },
+{ 0x57c7, 0x57c8, ENC_KSC_5601 },
+{ 0x57cb, 0x57cb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57ce, 0x57ce, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57cf, 0x57cf, ENC_GB_2312 },
+{ 0x57d2, 0x57d2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x57d3, 0x57d3, ENC_JIS_0208 },
+{ 0x57d4, 0x57d4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x57d5, 0x57d5, ENC_GB_2312 },
+{ 0x57d6, 0x57d6, ENC_JIS_0208 },
+{ 0x57d8, 0x57da, ENC_GB_2312 },
+{ 0x57dc, 0x57dc, ENC_JIS_0208 },
+{ 0x57dd, 0x57dd, ENC_GB_2312 },
+{ 0x57df, 0x57e0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57e3, 0x57e3, ENC_JIS_0208 },
+{ 0x57e4, 0x57e4, ENC_GB_2312 },
+{ 0x57ed, 0x57ed, ENC_GB_2312 },
+{ 0x57ef, 0x57ef, ENC_GB_2312 },
+{ 0x57f0, 0x57f0, ENC_KSC_5601 },
+{ 0x57f4, 0x57f4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57f7, 0x57f7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57f8, 0x57f8, ENC_GB_2312 },
+{ 0x57f9, 0x57fa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57fc, 0x57fc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x57fd, 0x57fd, ENC_GB_2312 },
+{ 0x5800, 0x5800, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5802, 0x5802, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5805, 0x5805, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5806, 0x5806, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5807, 0x5807, ENC_GB_2312 },
+{ 0x5808, 0x5809, ENC_KSC_5601 },
+{ 0x580a, 0x580a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x580b, 0x580b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x580d, 0x580d, ENC_GB_2312 },
+{ 0x5811, 0x5811, ENC_GB_2312 },
+{ 0x5815, 0x5815, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5819, 0x5819, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x581d, 0x581d, ENC_JIS_0208 },
+{ 0x581e, 0x581e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5820, 0x5820, ENC_GB_2312 },
+{ 0x5821, 0x5821, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5824, 0x5824, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5827, 0x5827, ENC_KSC_5601 },
+{ 0x582a, 0x582a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x582f, 0x582f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5830, 0x5830, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5831, 0x5831, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5834, 0x5834, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5835, 0x5835, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x583a, 0x583a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x583d, 0x583d, ENC_JIS_0208 },
+{ 0x5840, 0x5841, ENC_JIS_0208 },
+{ 0x5844, 0x5844, ENC_GB_2312 },
+{ 0x584a, 0x584b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x584c, 0x584d, ENC_GB_2312 },
+{ 0x584f, 0x584f, ENC_KSC_5601 },
+{ 0x5851, 0x5851, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5852, 0x5852, ENC_JIS_0208 },
+{ 0x5854, 0x5854, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5857, 0x5857, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5858, 0x5858, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5859, 0x5859, ENC_JIS_0208 },
+{ 0x585a, 0x585a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x585e, 0x585e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5861, 0x5861, ENC_KSC_5601 },
+{ 0x5862, 0x5862, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5864, 0x5864, ENC_KSC_5601 },
+{ 0x5865, 0x5865, ENC_GB_2312 },
+{ 0x5869, 0x5869, ENC_JIS_0208 },
+{ 0x586b, 0x586b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x586c, 0x586c, ENC_GB_2312 },
+{ 0x5870, 0x5870, ENC_JIS_0208 },
+{ 0x5872, 0x5872, ENC_JIS_0208 },
+{ 0x5875, 0x5875, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5879, 0x5879, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x587c, 0x587c, ENC_KSC_5601 },
+{ 0x587e, 0x587e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5880, 0x5881, ENC_GB_2312 },
+{ 0x5883, 0x5883, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5885, 0x5885, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5889, 0x5889, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5892, 0x5892, ENC_GB_2312 },
+{ 0x5893, 0x5893, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5897, 0x5897, ENC_JIS_0208 },
+{ 0x5899, 0x589a, ENC_GB_2312 },
+{ 0x589c, 0x589c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x589e, 0x589e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x589f, 0x589f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58a8, 0x58a8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58a9, 0x58a9, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x58ab, 0x58ab, ENC_JIS_0208 },
+{ 0x58ae, 0x58ae, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58b3, 0x58b3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58b8, 0x58b9, ENC_JIS_0208 },
+{ 0x58ba, 0x58bb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58bc, 0x58bc, ENC_GB_2312 },
+{ 0x58be, 0x58be, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58c1, 0x58c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58c5, 0x58c5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58c7, 0x58c7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58ca, 0x58ca, ENC_JIS_0208 },
+{ 0x58cc, 0x58cc, ENC_JIS_0208 },
+{ 0x58ce, 0x58ce, ENC_KSC_5601 },
+{ 0x58d1, 0x58d1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58d3, 0x58d3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58d5, 0x58d5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58d7, 0x58d7, ENC_JIS_0208 },
+{ 0x58d8, 0x58d9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58dc, 0x58dc, ENC_JIS_0208 },
+{ 0x58de, 0x58df, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58e4, 0x58e4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58e5, 0x58e5, ENC_JIS_0208 },
+{ 0x58eb, 0x58ec, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58ee, 0x58ee, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x58ef, 0x58ef, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58f0, 0x58f0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x58f1, 0x58f2, ENC_JIS_0208 },
+{ 0x58f3, 0x58f3, ENC_GB_2312 },
+{ 0x58f6, 0x58f6, ENC_GB_2312 },
+{ 0x58f7, 0x58f7, ENC_JIS_0208 },
+{ 0x58f9, 0x58f9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58fa, 0x58fb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x58fc, 0x58fc, ENC_JIS_0208 },
+{ 0x58fd, 0x58fd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5902, 0x5902, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5904, 0x5904, ENC_GB_2312 },
+{ 0x5907, 0x5907, ENC_GB_2312 },
+{ 0x5909, 0x590a, ENC_JIS_0208 },
+{ 0x590d, 0x590d, ENC_GB_2312 },
+{ 0x590f, 0x590f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5910, 0x5910, ENC_JIS_0208 },
+{ 0x5914, 0x5914, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5915, 0x5916, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5918, 0x5918, ENC_JIS_0208 },
+{ 0x5919, 0x591a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x591b, 0x591b, ENC_JIS_0208 },
+{ 0x591c, 0x591c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x591f, 0x591f, ENC_GB_2312 },
+{ 0x5922, 0x5922, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5924, 0x5924, ENC_GB_2312 },
+{ 0x5925, 0x5925, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5927, 0x5927, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5929, 0x592b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x592c, 0x592c, ENC_JIS_0208 },
+{ 0x592d, 0x592e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x592f, 0x592f, ENC_GB_2312 },
+{ 0x5931, 0x5931, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5932, 0x5932, ENC_JIS_0208 },
+{ 0x5934, 0x5934, ENC_GB_2312 },
+{ 0x5937, 0x5937, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5938, 0x5938, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5939, 0x593a, ENC_GB_2312 },
+{ 0x593c, 0x593c, ENC_GB_2312 },
+{ 0x593e, 0x593e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5941, 0x5942, ENC_GB_2312 },
+{ 0x5944, 0x5944, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5947, 0x5949, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x594b, 0x594b, ENC_GB_2312 },
+{ 0x594e, 0x594f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5950, 0x5950, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5951, 0x5951, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5954, 0x5955, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5956, 0x5956, ENC_GB_2312 },
+{ 0x5957, 0x5957, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5958, 0x5958, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x595a, 0x595a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5960, 0x5960, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5962, 0x5962, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5965, 0x5965, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5967, 0x5967, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5968, 0x5969, ENC_JIS_0208 },
+{ 0x596a, 0x596a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x596b, 0x596b, ENC_KSC_5601 },
+{ 0x596c, 0x596c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x596d, 0x596d, ENC_KSC_5601 },
+{ 0x596e, 0x596e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5973, 0x5974, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5976, 0x5976, ENC_GB_2312 },
+{ 0x5978, 0x5978, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5979, 0x5979, ENC_GB_2312 },
+{ 0x597d, 0x597d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5981, 0x5981, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5982, 0x5984, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5986, 0x5988, ENC_GB_2312 },
+{ 0x598a, 0x598a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x598d, 0x598d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5992, 0x5992, ENC_GB_2312 },
+{ 0x5993, 0x5993, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5996, 0x5996, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5997, 0x5997, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5999, 0x5999, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x599b, 0x599b, ENC_JIS_0208 },
+{ 0x599d, 0x599d, ENC_JIS_0208 },
+{ 0x599e, 0x599e, ENC_GB_2312 },
+{ 0x59a3, 0x59a3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x59a4, 0x59a4, ENC_GB_2312 },
+{ 0x59a5, 0x59a5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59a8, 0x59a8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59a9, 0x59ab, ENC_GB_2312 },
+{ 0x59ac, 0x59ac, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59ae, 0x59af, ENC_GB_2312 },
+{ 0x59b2, 0x59b2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x59b9, 0x59b9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59bb, 0x59bb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59be, 0x59be, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59c3, 0x59c3, ENC_KSC_5601 },
+{ 0x59c6, 0x59c6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59c9, 0x59c9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59ca, 0x59ca, ENC_GB_2312 },
+{ 0x59cb, 0x59cb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59d0, 0x59d1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59d2, 0x59d2, ENC_GB_2312 },
+{ 0x59d3, 0x59d4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59d7, 0x59d8, ENC_GB_2312 },
+{ 0x59d9, 0x59d9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59da, 0x59da, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59dc, 0x59dc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59dd, 0x59dd, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x59e3, 0x59e3, ENC_GB_2312 },
+{ 0x59e5, 0x59e5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x59e6, 0x59e6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59e8, 0x59e8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59ea, 0x59ea, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59eb, 0x59eb, ENC_JIS_0208 },
+{ 0x59ec, 0x59ec, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x59ee, 0x59ee, ENC_KSC_5601 },
+{ 0x59f6, 0x59f6, ENC_JIS_0208 },
+{ 0x59f8, 0x59f8, ENC_KSC_5601 },
+{ 0x59f9, 0x59f9, ENC_GB_2312 },
+{ 0x59fb, 0x59fb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x59ff, 0x59ff, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a01, 0x5a01, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a03, 0x5a03, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a04, 0x5a08, ENC_GB_2312 },
+{ 0x5a09, 0x5a09, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5a0c, 0x5a0c, ENC_GB_2312 },
+{ 0x5a11, 0x5a11, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a13, 0x5a13, ENC_GB_2312 },
+{ 0x5a18, 0x5a18, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a1a, 0x5a1a, ENC_JIS_0208 },
+{ 0x5a1b, 0x5a1b, ENC_KSC_5601 },
+{ 0x5a1c, 0x5a1c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a1f, 0x5a20, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a23, 0x5a23, ENC_GB_2312 },
+{ 0x5a25, 0x5a25, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a29, 0x5a29, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a2f, 0x5a2f, ENC_JIS_0208 },
+{ 0x5a31, 0x5a32, ENC_GB_2312 },
+{ 0x5a34, 0x5a34, ENC_GB_2312 },
+{ 0x5a35, 0x5a35, ENC_JIS_0208 },
+{ 0x5a36, 0x5a36, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a3c, 0x5a3c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a40, 0x5a40, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5a41, 0x5a41, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a46, 0x5a46, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a49, 0x5a49, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a4a, 0x5a4a, ENC_GB_2312 },
+{ 0x5a55, 0x5a55, ENC_GB_2312 },
+{ 0x5a5a, 0x5a5a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a62, 0x5a62, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a66, 0x5a66, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a67, 0x5a67, ENC_GB_2312 },
+{ 0x5a6a, 0x5a6a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5a6c, 0x5a6c, ENC_JIS_0208 },
+{ 0x5a74, 0x5a77, ENC_GB_2312 },
+{ 0x5a7a, 0x5a7a, ENC_GB_2312 },
+{ 0x5a7f, 0x5a7f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5a92, 0x5a92, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5a9a, 0x5a9b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5aa4, 0x5aa4, ENC_KSC_5601 },
+{ 0x5aaa, 0x5aaa, ENC_GB_2312 },
+{ 0x5ab2, 0x5ab3, ENC_GB_2312 },
+{ 0x5ab5, 0x5ab5, ENC_GB_2312 },
+{ 0x5ab8, 0x5ab8, ENC_GB_2312 },
+{ 0x5abc, 0x5abd, ENC_JIS_0208 },
+{ 0x5abe, 0x5abe, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ac1, 0x5ac2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ac4, 0x5ac4, ENC_KSC_5601 },
+{ 0x5ac9, 0x5ac9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5acb, 0x5acb, ENC_JIS_0208 },
+{ 0x5acc, 0x5acc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ad0, 0x5ad0, ENC_JIS_0208 },
+{ 0x5ad2, 0x5ad2, ENC_GB_2312 },
+{ 0x5ad4, 0x5ad4, ENC_GB_2312 },
+{ 0x5ad6, 0x5ad6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ad7, 0x5ad7, ENC_JIS_0208 },
+{ 0x5ad8, 0x5ad8, ENC_GB_2312 },
+{ 0x5adc, 0x5adc, ENC_GB_2312 },
+{ 0x5ae0, 0x5ae0, ENC_GB_2312 },
+{ 0x5ae1, 0x5ae1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ae3, 0x5ae3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ae6, 0x5ae6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ae9, 0x5ae9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5aeb, 0x5aeb, ENC_GB_2312 },
+{ 0x5af1, 0x5af1, ENC_GB_2312 },
+{ 0x5afa, 0x5afb, ENC_JIS_0208 },
+{ 0x5b05, 0x5b05, ENC_KSC_5601 },
+{ 0x5b09, 0x5b09, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b0b, 0x5b0c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b16, 0x5b16, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b17, 0x5b17, ENC_GB_2312 },
+{ 0x5b22, 0x5b22, ENC_JIS_0208 },
+{ 0x5b2a, 0x5b2a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b2c, 0x5b2c, ENC_JIS_0208 },
+{ 0x5b30, 0x5b30, ENC_JIS_0208 },
+{ 0x5b32, 0x5b32, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5b34, 0x5b34, ENC_GB_2312 },
+{ 0x5b36, 0x5b36, ENC_JIS_0208 },
+{ 0x5b37, 0x5b37, ENC_GB_2312 },
+{ 0x5b3e, 0x5b3e, ENC_JIS_0208 },
+{ 0x5b40, 0x5b40, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b43, 0x5b43, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b45, 0x5b45, ENC_JIS_0208 },
+{ 0x5b50, 0x5b51, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b53, 0x5b53, ENC_GB_2312 },
+{ 0x5b54, 0x5b55, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b57, 0x5b58, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b59, 0x5b59, ENC_GB_2312 },
+{ 0x5b5a, 0x5b5a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b5b, 0x5b5b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5b5c, 0x5b5d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b5f, 0x5b5f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b62, 0x5b62, ENC_GB_2312 },
+{ 0x5b63, 0x5b64, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b65, 0x5b66, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5b69, 0x5b69, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b6a, 0x5b6a, ENC_GB_2312 },
+{ 0x5b6b, 0x5b6b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b6c, 0x5b6c, ENC_GB_2312 },
+{ 0x5b70, 0x5b71, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b73, 0x5b73, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5b75, 0x5b75, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b78, 0x5b78, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b7a, 0x5b7a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b7c, 0x5b7c, ENC_KSC_5601 },
+{ 0x5b7d, 0x5b7d, ENC_GB_2312 },
+{ 0x5b80, 0x5b80, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5b81, 0x5b81, ENC_GB_2312 },
+{ 0x5b83, 0x5b83, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5b84, 0x5b84, ENC_GB_2312 },
+{ 0x5b85, 0x5b85, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b87, 0x5b89, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b8b, 0x5b8c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b8d, 0x5b8d, ENC_JIS_0208 },
+{ 0x5b8f, 0x5b8f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b93, 0x5b93, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5b95, 0x5b95, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b96, 0x5b96, ENC_KSC_5601 },
+{ 0x5b97, 0x5b9c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5b9d, 0x5b9d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5b9e, 0x5b9e, ENC_GB_2312 },
+{ 0x5b9f, 0x5b9f, ENC_JIS_0208 },
+{ 0x5ba0, 0x5ba1, ENC_GB_2312 },
+{ 0x5ba2, 0x5ba6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5baa, 0x5bab, ENC_GB_2312 },
+{ 0x5bac, 0x5bac, ENC_KSC_5601 },
+{ 0x5bae, 0x5bae, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bb0, 0x5bb0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bb3, 0x5bb6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bb8, 0x5bb9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bbd, 0x5bbe, ENC_GB_2312 },
+{ 0x5bbf, 0x5bbf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bc0, 0x5bc0, ENC_KSC_5601 },
+{ 0x5bc2, 0x5bc2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bc3, 0x5bc3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bc4, 0x5bc7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bc9, 0x5bc9, ENC_JIS_0208 },
+{ 0x5bcc, 0x5bcc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bd0, 0x5bd0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bd2, 0x5bd3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bd4, 0x5bd4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bd7, 0x5bd7, ENC_KSC_5601 },
+{ 0x5bdb, 0x5bdb, ENC_JIS_0208 },
+{ 0x5bdd, 0x5bdd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5bde, 0x5bdf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5be1, 0x5be1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5be2, 0x5be2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5be4, 0x5be5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5be6, 0x5be7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5be8, 0x5be8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5be9, 0x5be9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5beb, 0x5beb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bec, 0x5bec, ENC_KSC_5601 },
+{ 0x5bee, 0x5bee, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bef, 0x5bef, ENC_KSC_5601 },
+{ 0x5bf0, 0x5bf0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5bf3, 0x5bf3, ENC_JIS_0208 },
+{ 0x5bf5, 0x5bf6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bf8, 0x5bf8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bf9, 0x5bf9, ENC_GB_2312 },
+{ 0x5bfa, 0x5bfa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5bfb, 0x5bfc, ENC_GB_2312 },
+{ 0x5bfe, 0x5bfe, ENC_JIS_0208 },
+{ 0x5bff, 0x5bff, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c01, 0x5c01, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c02, 0x5c02, ENC_JIS_0208 },
+{ 0x5c04, 0x5c04, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c05, 0x5c05, ENC_JIS_0208 },
+{ 0x5c06, 0x5c06, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c07, 0x5c08, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c09, 0x5c0a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c0b, 0x5c0b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c0d, 0x5c0e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c0f, 0x5c0f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c11, 0x5c11, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c13, 0x5c13, ENC_JIS_0208 },
+{ 0x5c14, 0x5c15, ENC_GB_2312 },
+{ 0x5c16, 0x5c16, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c18, 0x5c18, ENC_GB_2312 },
+{ 0x5c19, 0x5c19, ENC_KSC_5601 },
+{ 0x5c1a, 0x5c1a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c1c, 0x5c1d, ENC_GB_2312 },
+{ 0x5c20, 0x5c20, ENC_JIS_0208 },
+{ 0x5c22, 0x5c22, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c24, 0x5c24, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c25, 0x5c25, ENC_GB_2312 },
+{ 0x5c27, 0x5c27, ENC_GB_2312 },
+{ 0x5c28, 0x5c28, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c2c, 0x5c2c, ENC_GB_2312 },
+{ 0x5c2d, 0x5c2d, ENC_JIS_0208 },
+{ 0x5c31, 0x5c31, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c34, 0x5c34, ENC_GB_2312 },
+{ 0x5c38, 0x5c3c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c3d, 0x5c3d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c3e, 0x5c40, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c41, 0x5c41, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c42, 0x5c42, ENC_GB_2312 },
+{ 0x5c45, 0x5c45, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c46, 0x5c46, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c48, 0x5c48, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c49, 0x5c49, ENC_GB_2312 },
+{ 0x5c4a, 0x5c4a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c4b, 0x5c4b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c4d, 0x5c4d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c4e, 0x5c4e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c4f, 0x5c50, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c51, 0x5c51, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c53, 0x5c53, ENC_JIS_0208 },
+{ 0x5c55, 0x5c55, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c59, 0x5c59, ENC_GB_2312 },
+{ 0x5c5b, 0x5c5b, ENC_KSC_5601 },
+{ 0x5c5e, 0x5c5e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c60, 0x5c60, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c61, 0x5c61, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c62, 0x5c62, ENC_KSC_5601 },
+{ 0x5c63, 0x5c63, ENC_GB_2312 },
+{ 0x5c64, 0x5c64, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c65, 0x5c65, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c66, 0x5c66, ENC_GB_2312 },
+{ 0x5c6c, 0x5c6c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c6e, 0x5c6e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c6f, 0x5c6f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c71, 0x5c71, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c76, 0x5c76, ENC_JIS_0208 },
+{ 0x5c79, 0x5c79, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c7a, 0x5c7a, ENC_GB_2312 },
+{ 0x5c7f, 0x5c7f, ENC_GB_2312 },
+{ 0x5c81, 0x5c82, ENC_GB_2312 },
+{ 0x5c88, 0x5c88, ENC_GB_2312 },
+{ 0x5c8c, 0x5c8c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c8d, 0x5c8d, ENC_GB_2312 },
+{ 0x5c90, 0x5c91, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5c94, 0x5c94, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5c96, 0x5c9c, ENC_GB_2312 },
+{ 0x5ca1, 0x5ca1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ca2, 0x5ca3, ENC_GB_2312 },
+{ 0x5ca8, 0x5ca8, ENC_JIS_0208 },
+{ 0x5ca9, 0x5ca9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cab, 0x5cac, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cad, 0x5cad, ENC_GB_2312 },
+{ 0x5cb1, 0x5cb1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cb3, 0x5cb3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cb5, 0x5cb5, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5cb6, 0x5cb6, ENC_JIS_0208 },
+{ 0x5cb7, 0x5cb8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cba, 0x5cba, ENC_KSC_5601 },
+{ 0x5cbb, 0x5cbc, ENC_JIS_0208 },
+{ 0x5cbd, 0x5cbd, ENC_GB_2312 },
+{ 0x5cbe, 0x5cbe, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cbf, 0x5cbf, ENC_GB_2312 },
+{ 0x5cc0, 0x5cc0, ENC_KSC_5601 },
+{ 0x5cc1, 0x5cc1, ENC_GB_2312 },
+{ 0x5cc4, 0x5cc4, ENC_GB_2312 },
+{ 0x5cc5, 0x5cc5, ENC_JIS_0208 },
+{ 0x5cc7, 0x5cc7, ENC_JIS_0208 },
+{ 0x5ccb, 0x5ccb, ENC_GB_2312 },
+{ 0x5cd2, 0x5cd2, ENC_GB_2312 },
+{ 0x5cd9, 0x5cd9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ce0, 0x5ce0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ce1, 0x5ce1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ce4, 0x5ce6, ENC_GB_2312 },
+{ 0x5ce8, 0x5ce8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ce9, 0x5ce9, ENC_JIS_0208 },
+{ 0x5cea, 0x5cea, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ced, 0x5ced, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5cef, 0x5cef, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cf0, 0x5cf0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cf4, 0x5cf4, ENC_KSC_5601 },
+{ 0x5cf6, 0x5cf6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cfa, 0x5cfa, ENC_JIS_0208 },
+{ 0x5cfb, 0x5cfb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5cfd, 0x5cfd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d02, 0x5d03, ENC_GB_2312 },
+{ 0x5d06, 0x5d06, ENC_GB_2312 },
+{ 0x5d07, 0x5d07, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d0b, 0x5d0b, ENC_JIS_0208 },
+{ 0x5d0d, 0x5d0d, ENC_KSC_5601 },
+{ 0x5d0e, 0x5d0e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d11, 0x5d11, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d14, 0x5d14, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d15, 0x5d15, ENC_JIS_0208 },
+{ 0x5d16, 0x5d16, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d17, 0x5d17, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d18, 0x5d18, ENC_JIS_0208 },
+{ 0x5d19, 0x5d19, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d1a, 0x5d1a, ENC_JIS_0208 },
+{ 0x5d1b, 0x5d1b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5d1e, 0x5d1e, ENC_GB_2312 },
+{ 0x5d1f, 0x5d1f, ENC_JIS_0208 },
+{ 0x5d22, 0x5d22, ENC_JIS_0208 },
+{ 0x5d24, 0x5d24, ENC_GB_2312 },
+{ 0x5d26, 0x5d26, ENC_GB_2312 },
+{ 0x5d27, 0x5d27, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5d29, 0x5d29, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d2d, 0x5d2e, ENC_GB_2312 },
+{ 0x5d34, 0x5d34, ENC_GB_2312 },
+{ 0x5d3d, 0x5d3e, ENC_GB_2312 },
+{ 0x5d47, 0x5d47, ENC_GB_2312 },
+{ 0x5d4a, 0x5d4a, ENC_GB_2312 },
+{ 0x5d4b, 0x5d4c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d4e, 0x5d4e, ENC_JIS_0208 },
+{ 0x5d50, 0x5d50, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d52, 0x5d52, ENC_JIS_0208 },
+{ 0x5d58, 0x5d58, ENC_GB_2312 },
+{ 0x5d5b, 0x5d5b, ENC_GB_2312 },
+{ 0x5d5c, 0x5d5c, ENC_JIS_0208 },
+{ 0x5d5d, 0x5d5d, ENC_GB_2312 },
+{ 0x5d69, 0x5d69, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d6b, 0x5d6b, ENC_GB_2312 },
+{ 0x5d6c, 0x5d6c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d6f, 0x5d6f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d73, 0x5d73, ENC_JIS_0208 },
+{ 0x5d74, 0x5d74, ENC_GB_2312 },
+{ 0x5d76, 0x5d76, ENC_JIS_0208 },
+{ 0x5d82, 0x5d82, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5d84, 0x5d84, ENC_JIS_0208 },
+{ 0x5d87, 0x5d87, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d8b, 0x5d8b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5d8c, 0x5d8c, ENC_JIS_0208 },
+{ 0x5d90, 0x5d90, ENC_JIS_0208 },
+{ 0x5d99, 0x5d99, ENC_GB_2312 },
+{ 0x5d9d, 0x5d9d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5da0, 0x5da0, ENC_KSC_5601 },
+{ 0x5da2, 0x5da2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5daa, 0x5daa, ENC_KSC_5601 },
+{ 0x5dac, 0x5dac, ENC_JIS_0208 },
+{ 0x5dae, 0x5dae, ENC_JIS_0208 },
+{ 0x5db7, 0x5db7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5db8, 0x5db8, ENC_KSC_5601 },
+{ 0x5dba, 0x5dba, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5dbc, 0x5dbd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5dc5, 0x5dc5, ENC_GB_2312 },
+{ 0x5dc9, 0x5dc9, ENC_JIS_0208 },
+{ 0x5dcc, 0x5dcc, ENC_JIS_0208 },
+{ 0x5dcd, 0x5dcd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5dd2, 0x5dd2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5dd3, 0x5dd3, ENC_JIS_0208 },
+{ 0x5dd6, 0x5dd6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ddb, 0x5ddb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ddd, 0x5dde, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5de1, 0x5de1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5de2, 0x5de2, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5de3, 0x5de3, ENC_JIS_0208 },
+{ 0x5de5, 0x5de8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5de9, 0x5de9, ENC_GB_2312 },
+{ 0x5deb, 0x5deb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5dee, 0x5dee, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5def, 0x5def, ENC_GB_2312 },
+{ 0x5df1, 0x5df4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5df5, 0x5df5, ENC_JIS_0208 },
+{ 0x5df7, 0x5df7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5dfb, 0x5dfb, ENC_JIS_0208 },
+{ 0x5dfd, 0x5dfe, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e01, 0x5e01, ENC_GB_2312 },
+{ 0x5e02, 0x5e03, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e05, 0x5e05, ENC_GB_2312 },
+{ 0x5e06, 0x5e06, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e08, 0x5e08, ENC_GB_2312 },
+{ 0x5e0b, 0x5e0b, ENC_JIS_0208 },
+{ 0x5e0c, 0x5e0c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e0f, 0x5e10, ENC_GB_2312 },
+{ 0x5e11, 0x5e11, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e14, 0x5e15, ENC_GB_2312 },
+{ 0x5e16, 0x5e16, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e18, 0x5e18, ENC_GB_2312 },
+{ 0x5e19, 0x5e19, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e1a, 0x5e1a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5e1b, 0x5e1b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e1c, 0x5e1c, ENC_GB_2312 },
+{ 0x5e1d, 0x5e1d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e25, 0x5e25, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e26, 0x5e27, ENC_GB_2312 },
+{ 0x5e2b, 0x5e2b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e2d, 0x5e2d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e2e, 0x5e2e, ENC_GB_2312 },
+{ 0x5e2f, 0x5e30, ENC_JIS_0208 },
+{ 0x5e31, 0x5e31, ENC_GB_2312 },
+{ 0x5e33, 0x5e33, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e36, 0x5e36, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e37, 0x5e37, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5e38, 0x5e38, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e3b, 0x5e3c, ENC_GB_2312 },
+{ 0x5e3d, 0x5e3d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e3f, 0x5e3f, ENC_KSC_5601 },
+{ 0x5e40, 0x5e40, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e42, 0x5e42, ENC_GB_2312 },
+{ 0x5e43, 0x5e43, ENC_JIS_0208 },
+{ 0x5e44, 0x5e45, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e47, 0x5e47, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e4c, 0x5e4c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e4e, 0x5e4e, ENC_JIS_0208 },
+{ 0x5e54, 0x5e54, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5e55, 0x5e55, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e57, 0x5e57, ENC_JIS_0208 },
+{ 0x5e5b, 0x5e5b, ENC_GB_2312 },
+{ 0x5e5e, 0x5e5e, ENC_GB_2312 },
+{ 0x5e5f, 0x5e5f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e61, 0x5e62, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e63, 0x5e63, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e64, 0x5e64, ENC_JIS_0208 },
+{ 0x5e72, 0x5e74, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e75, 0x5e75, ENC_JIS_0208 },
+{ 0x5e76, 0x5e76, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5e77, 0x5e77, ENC_KSC_5601 },
+{ 0x5e78, 0x5e78, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e79, 0x5e79, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e7a, 0x5e7a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5e7b, 0x5e7d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e7e, 0x5e7e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e7f, 0x5e7f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5e80, 0x5e80, ENC_GB_2312 },
+{ 0x5e81, 0x5e81, ENC_JIS_0208 },
+{ 0x5e83, 0x5e83, ENC_JIS_0208 },
+{ 0x5e84, 0x5e84, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e86, 0x5e86, ENC_GB_2312 },
+{ 0x5e87, 0x5e87, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e8a, 0x5e8a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e8b, 0x5e8b, ENC_GB_2312 },
+{ 0x5e8f, 0x5e8f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e90, 0x5e91, ENC_GB_2312 },
+{ 0x5e93, 0x5e94, ENC_GB_2312 },
+{ 0x5e95, 0x5e95, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e96, 0x5e96, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5e97, 0x5e97, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e99, 0x5e99, ENC_GB_2312 },
+{ 0x5e9a, 0x5e9a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e9c, 0x5e9c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5e9e, 0x5e9f, ENC_GB_2312 },
+{ 0x5ea0, 0x5ea0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ea5, 0x5ea5, ENC_GB_2312 },
+{ 0x5ea6, 0x5ea7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5eab, 0x5eab, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ead, 0x5ead, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5eb3, 0x5eb3, ENC_GB_2312 },
+{ 0x5eb5, 0x5eb8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5eb9, 0x5eb9, ENC_GB_2312 },
+{ 0x5ebe, 0x5ebe, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5ec1, 0x5ec1, ENC_JIS_0208 },
+{ 0x5ec2, 0x5ec2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ec3, 0x5ec3, ENC_JIS_0208 },
+{ 0x5ec8, 0x5ec8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ec9, 0x5eca, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ecf, 0x5ecf, ENC_JIS_0208 },
+{ 0x5ed0, 0x5ed0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ed1, 0x5ed2, ENC_GB_2312 },
+{ 0x5ed3, 0x5ed3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ed6, 0x5ed6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5eda, 0x5eda, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5edb, 0x5edb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5edd, 0x5edd, ENC_JIS_0208 },
+{ 0x5edf, 0x5ee0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ee1, 0x5ee1, ENC_JIS_0208 },
+{ 0x5ee2, 0x5ee3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ee8, 0x5ee8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ee9, 0x5ee9, ENC_JIS_0208 },
+{ 0x5eea, 0x5eea, ENC_GB_2312 },
+{ 0x5eec, 0x5eec, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ef0, 0x5ef1, ENC_JIS_0208 },
+{ 0x5ef3, 0x5ef3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ef4, 0x5ef4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ef6, 0x5ef7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ef8, 0x5ef8, ENC_JIS_0208 },
+{ 0x5efa, 0x5efa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5efb, 0x5efb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5efc, 0x5efc, ENC_JIS_0208 },
+{ 0x5efe, 0x5eff, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f00, 0x5f00, ENC_GB_2312 },
+{ 0x5f01, 0x5f01, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f02, 0x5f02, ENC_GB_2312 },
+{ 0x5f03, 0x5f03, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f04, 0x5f04, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f08, 0x5f08, ENC_GB_2312 },
+{ 0x5f09, 0x5f09, ENC_JIS_0208 },
+{ 0x5f0a, 0x5f0a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f0b, 0x5f0b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f0c, 0x5f0d, ENC_JIS_0208 },
+{ 0x5f0f, 0x5f0f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f10, 0x5f10, ENC_JIS_0208 },
+{ 0x5f11, 0x5f11, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f13, 0x5f13, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f14, 0x5f14, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f15, 0x5f15, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f16, 0x5f16, ENC_JIS_0208 },
+{ 0x5f17, 0x5f18, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f1b, 0x5f1b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f1f, 0x5f1f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f20, 0x5f20, ENC_GB_2312 },
+{ 0x5f25, 0x5f25, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f26, 0x5f27, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f29, 0x5f29, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f2a, 0x5f2a, ENC_GB_2312 },
+{ 0x5f2d, 0x5f2d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f2f, 0x5f2f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f31, 0x5f31, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f35, 0x5f35, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f37, 0x5f38, ENC_JIS_0208 },
+{ 0x5f39, 0x5f39, ENC_GB_2312 },
+{ 0x5f3a, 0x5f3a, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5f3c, 0x5f3c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f3e, 0x5f3e, ENC_JIS_0208 },
+{ 0x5f40, 0x5f40, ENC_GB_2312 },
+{ 0x5f41, 0x5f41, ENC_JIS_0208 },
+{ 0x5f48, 0x5f48, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f4a, 0x5f4a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f4c, 0x5f4c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f4e, 0x5f4e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f50, 0x5f50, ENC_GB_2312 },
+{ 0x5f51, 0x5f51, ENC_JIS_0208 },
+{ 0x5f52, 0x5f52, ENC_GB_2312 },
+{ 0x5f53, 0x5f53, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f55, 0x5f55, ENC_GB_2312 },
+{ 0x5f56, 0x5f57, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f58, 0x5f58, ENC_GB_2312 },
+{ 0x5f59, 0x5f59, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f5b, 0x5f5b, ENC_KSC_5601 },
+{ 0x5f5c, 0x5f5c, ENC_JIS_0208 },
+{ 0x5f5d, 0x5f5d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f61, 0x5f61, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f62, 0x5f62, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f64, 0x5f64, ENC_GB_2312 },
+{ 0x5f66, 0x5f66, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f67, 0x5f67, ENC_KSC_5601 },
+{ 0x5f69, 0x5f6a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f6b, 0x5f6b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f6c, 0x5f6d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f70, 0x5f71, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f73, 0x5f73, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f77, 0x5f77, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f79, 0x5f79, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f7b, 0x5f7b, ENC_GB_2312 },
+{ 0x5f7c, 0x5f7c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f7f, 0x5f7f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f80, 0x5f81, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f82, 0x5f82, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f83, 0x5f83, ENC_JIS_0208 },
+{ 0x5f84, 0x5f84, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f85, 0x5f85, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f87, 0x5f87, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f88, 0x5f88, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5f89, 0x5f89, ENC_GB_2312 },
+{ 0x5f8a, 0x5f8c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f90, 0x5f90, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f91, 0x5f91, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f92, 0x5f92, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f93, 0x5f93, ENC_JIS_0208 },
+{ 0x5f95, 0x5f95, ENC_GB_2312 },
+{ 0x5f97, 0x5f99, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5f9c, 0x5f9c, ENC_GB_2312 },
+{ 0x5f9e, 0x5f9e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fa0, 0x5fa0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fa1, 0x5fa1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fa8, 0x5fa8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fa9, 0x5fa9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5faa, 0x5faa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fad, 0x5fad, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5fae, 0x5fae, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fb3, 0x5fb4, ENC_JIS_0208 },
+{ 0x5fb5, 0x5fb5, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5fb7, 0x5fb7, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x5fb9, 0x5fb9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fbc, 0x5fbc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5fbd, 0x5fbd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fc3, 0x5fc3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fc4, 0x5fc4, ENC_GB_2312 },
+{ 0x5fc5, 0x5fc5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fc6, 0x5fc6, ENC_GB_2312 },
+{ 0x5fc9, 0x5fc9, ENC_GB_2312 },
+{ 0x5fcc, 0x5fcd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fcf, 0x5fd2, ENC_GB_2312 },
+{ 0x5fd6, 0x5fd9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fdc, 0x5fdc, ENC_JIS_0208 },
+{ 0x5fdd, 0x5fdd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5fe0, 0x5fe0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fe1, 0x5fe1, ENC_GB_2312 },
+{ 0x5fe4, 0x5fe4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5fe7, 0x5fe7, ENC_GB_2312 },
+{ 0x5fea, 0x5fea, ENC_GB_2312 },
+{ 0x5feb, 0x5feb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5fed, 0x5fee, ENC_GB_2312 },
+{ 0x5ff0, 0x5ff0, ENC_JIS_0208 },
+{ 0x5ff1, 0x5ff1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ff5, 0x5ff5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ff8, 0x5ff8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ffb, 0x5ffb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x5ffd, 0x5ffd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x5ffe, 0x5ffe, ENC_GB_2312 },
+{ 0x5fff, 0x5fff, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6000, 0x6006, ENC_GB_2312 },
+{ 0x600a, 0x600a, ENC_GB_2312 },
+{ 0x600d, 0x600d, ENC_GB_2312 },
+{ 0x600e, 0x600e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x600f, 0x600f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6010, 0x6010, ENC_JIS_0208 },
+{ 0x6012, 0x6012, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6014, 0x6014, ENC_GB_2312 },
+{ 0x6015, 0x6015, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6016, 0x6016, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6019, 0x6019, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x601b, 0x601b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x601c, 0x601d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6020, 0x6021, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6025, 0x6025, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6026, 0x6026, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6027, 0x6028, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6029, 0x6029, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x602a, 0x602a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x602b, 0x602b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x602f, 0x602f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6031, 0x6031, ENC_JIS_0208 },
+{ 0x6035, 0x6035, ENC_GB_2312 },
+{ 0x603a, 0x603a, ENC_JIS_0208 },
+{ 0x603b, 0x603c, ENC_GB_2312 },
+{ 0x603f, 0x603f, ENC_GB_2312 },
+{ 0x6041, 0x6043, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6046, 0x6046, ENC_JIS_0208 },
+{ 0x604a, 0x604a, ENC_JIS_0208 },
+{ 0x604b, 0x604b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x604d, 0x604d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6050, 0x6050, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6052, 0x6052, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6055, 0x6055, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6059, 0x6059, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x605a, 0x605a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x605d, 0x605d, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x605f, 0x6060, ENC_JIS_0208 },
+{ 0x6062, 0x6064, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6065, 0x6065, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6067, 0x6067, ENC_GB_2312 },
+{ 0x6068, 0x606a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x606b, 0x606b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x606c, 0x606d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x606f, 0x6070, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6073, 0x6073, ENC_GB_2312 },
+{ 0x6075, 0x6075, ENC_JIS_0208 },
+{ 0x6076, 0x6076, ENC_GB_2312 },
+{ 0x6077, 0x6077, ENC_JIS_0208 },
+{ 0x6078, 0x607d, ENC_GB_2312 },
+{ 0x607f, 0x607f, ENC_GB_2312 },
+{ 0x6081, 0x6081, ENC_JIS_0208 },
+{ 0x6083, 0x6084, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6085, 0x6085, ENC_KSC_5601 },
+{ 0x6089, 0x6089, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x608b, 0x608b, ENC_JIS_0208 },
+{ 0x608c, 0x608d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6092, 0x6092, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6094, 0x6094, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6096, 0x6096, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6097, 0x6097, ENC_JIS_0208 },
+{ 0x609a, 0x609b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x609d, 0x609d, ENC_GB_2312 },
+{ 0x609f, 0x60a0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60a3, 0x60a3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60a4, 0x60a4, ENC_KSC_5601 },
+{ 0x60a6, 0x60a6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x60a7, 0x60a7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60a8, 0x60a8, ENC_GB_2312 },
+{ 0x60a9, 0x60aa, ENC_JIS_0208 },
+{ 0x60ab, 0x60ad, ENC_GB_2312 },
+{ 0x60af, 0x60af, ENC_GB_2312 },
+{ 0x60b0, 0x60b0, ENC_KSC_5601 },
+{ 0x60b1, 0x60b1, ENC_GB_2312 },
+{ 0x60b2, 0x60b2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60b3, 0x60b3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60b4, 0x60b4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60b5, 0x60b5, ENC_JIS_0208 },
+{ 0x60b6, 0x60b6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60b8, 0x60b8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60bb, 0x60bb, ENC_GB_2312 },
+{ 0x60bc, 0x60bc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60bd, 0x60bd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60c5, 0x60c5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60c6, 0x60c6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x60c7, 0x60c7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60ca, 0x60cb, ENC_GB_2312 },
+{ 0x60d1, 0x60d1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60d3, 0x60d3, ENC_JIS_0208 },
+{ 0x60d5, 0x60d5, ENC_GB_2312 },
+{ 0x60d8, 0x60d8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x60da, 0x60da, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60dc, 0x60dc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60dd, 0x60dd, ENC_GB_2312 },
+{ 0x60df, 0x60e0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60e1, 0x60e1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60e3, 0x60e3, ENC_JIS_0208 },
+{ 0x60e6, 0x60e6, ENC_GB_2312 },
+{ 0x60e7, 0x60e8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x60e9, 0x60e9, ENC_GB_2312 },
+{ 0x60eb, 0x60ef, ENC_GB_2312 },
+{ 0x60f0, 0x60f0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60f1, 0x60f1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60f3, 0x60f3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60f4, 0x60f4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x60f6, 0x60f6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60f7, 0x60f7, ENC_JIS_0208 },
+{ 0x60f9, 0x60fa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x60fb, 0x60fb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6100, 0x6100, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6101, 0x6101, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6103, 0x6103, ENC_JIS_0208 },
+{ 0x6106, 0x6106, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6108, 0x6109, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x610d, 0x610f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6115, 0x6115, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x611a, 0x611a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x611b, 0x611b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x611f, 0x611f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6120, 0x6120, ENC_GB_2312 },
+{ 0x6121, 0x6121, ENC_JIS_0208 },
+{ 0x6123, 0x6124, ENC_GB_2312 },
+{ 0x6126, 0x6126, ENC_GB_2312 },
+{ 0x6127, 0x6127, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6128, 0x6128, ENC_JIS_0208 },
+{ 0x612b, 0x612b, ENC_GB_2312 },
+{ 0x612c, 0x612c, ENC_JIS_0208 },
+{ 0x6130, 0x6130, ENC_KSC_5601 },
+{ 0x6134, 0x6134, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6137, 0x6137, ENC_KSC_5601 },
+{ 0x613c, 0x613c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x613d, 0x613d, ENC_JIS_0208 },
+{ 0x613e, 0x613e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x613f, 0x613f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6142, 0x6142, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6144, 0x6144, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6147, 0x6147, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6148, 0x6148, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x614a, 0x614a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x614b, 0x614b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x614c, 0x614c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x614d, 0x614d, ENC_JIS_0208 },
+{ 0x614e, 0x614e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6151, 0x6151, ENC_GB_2312 },
+{ 0x6153, 0x6153, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6155, 0x6155, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6158, 0x6159, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x615a, 0x615a, ENC_JIS_0208 },
+{ 0x615d, 0x615d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x615f, 0x615f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6162, 0x6162, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6163, 0x6163, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6164, 0x6164, ENC_KSC_5601 },
+{ 0x6165, 0x6165, ENC_JIS_0208 },
+{ 0x6167, 0x6168, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x616b, 0x616b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x616e, 0x616e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x616f, 0x616f, ENC_JIS_0208 },
+{ 0x6170, 0x6170, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6171, 0x6171, ENC_JIS_0208 },
+{ 0x6173, 0x6174, ENC_JIS_0208 },
+{ 0x6175, 0x6175, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6176, 0x6176, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6177, 0x6177, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x617d, 0x617d, ENC_KSC_5601 },
+{ 0x617e, 0x617e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6181, 0x6181, ENC_KSC_5601 },
+{ 0x6182, 0x6182, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6187, 0x6187, ENC_JIS_0208 },
+{ 0x618a, 0x618a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x618b, 0x618b, ENC_GB_2312 },
+{ 0x618e, 0x618e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6190, 0x6191, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6194, 0x6194, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6196, 0x6196, ENC_JIS_0208 },
+{ 0x6198, 0x6198, ENC_KSC_5601 },
+{ 0x6199, 0x619a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x619d, 0x619d, ENC_GB_2312 },
+{ 0x61a4, 0x61a4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61a7, 0x61a7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61a8, 0x61a8, ENC_GB_2312 },
+{ 0x61a9, 0x61a9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61ab, 0x61ab, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61ac, 0x61ac, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61ae, 0x61ae, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61b2, 0x61b2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61b6, 0x61b6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61b7, 0x61b7, ENC_GB_2312 },
+{ 0x61ba, 0x61ba, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61be, 0x61be, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61c2, 0x61c2, ENC_GB_2312 },
+{ 0x61c3, 0x61c3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61c6, 0x61c6, ENC_JIS_0208 },
+{ 0x61c7, 0x61c7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61c8, 0x61c8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61c9, 0x61c9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61ca, 0x61cb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61cc, 0x61cd, ENC_JIS_0208 },
+{ 0x61d0, 0x61d0, ENC_JIS_0208 },
+{ 0x61d1, 0x61d2, ENC_GB_2312 },
+{ 0x61d4, 0x61d4, ENC_GB_2312 },
+{ 0x61e3, 0x61e3, ENC_JIS_0208 },
+{ 0x61e6, 0x61e6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61f2, 0x61f2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61f4, 0x61f4, ENC_JIS_0208 },
+{ 0x61f5, 0x61f5, ENC_GB_2312 },
+{ 0x61f6, 0x61f8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61fa, 0x61fa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61fc, 0x61fc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x61fd, 0x61fe, ENC_JIS_0208 },
+{ 0x61ff, 0x61ff, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6200, 0x6200, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6206, 0x6206, ENC_GB_2312 },
+{ 0x6207, 0x6207, ENC_KSC_5601 },
+{ 0x6208, 0x6208, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6209, 0x6209, ENC_JIS_0208 },
+{ 0x620a, 0x620a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x620b, 0x620b, ENC_GB_2312 },
+{ 0x620c, 0x620e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x620f, 0x620f, ENC_GB_2312 },
+{ 0x6210, 0x6212, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6214, 0x6214, ENC_JIS_0208 },
+{ 0x6215, 0x6215, ENC_GB_2312 },
+{ 0x6216, 0x6216, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6217, 0x6218, ENC_GB_2312 },
+{ 0x621a, 0x621a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x621b, 0x621b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x621d, 0x621e, ENC_JIS_0208 },
+{ 0x621f, 0x621f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6221, 0x6221, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6222, 0x6222, ENC_GB_2312 },
+{ 0x6224, 0x6225, ENC_GB_2312 },
+{ 0x6226, 0x6226, ENC_JIS_0208 },
+{ 0x622a, 0x622a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x622c, 0x622c, ENC_GB_2312 },
+{ 0x622e, 0x622e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x622f, 0x622f, ENC_JIS_0208 },
+{ 0x6230, 0x6230, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6231, 0x6231, ENC_KSC_5601 },
+{ 0x6232, 0x6232, ENC_JIS_0208 },
+{ 0x6233, 0x6233, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6234, 0x6234, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6236, 0x6236, ENC_KSC_5601 },
+{ 0x6237, 0x6237, ENC_GB_2312 },
+{ 0x6238, 0x6238, ENC_JIS_0208 },
+{ 0x623b, 0x623b, ENC_JIS_0208 },
+{ 0x623d, 0x623d, ENC_GB_2312 },
+{ 0x623e, 0x623e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x623f, 0x6241, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6243, 0x6243, ENC_GB_2312 },
+{ 0x6247, 0x6249, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x624b, 0x624b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x624c, 0x624c, ENC_GB_2312 },
+{ 0x624d, 0x624d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x624e, 0x624e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6251, 0x6252, ENC_GB_2312 },
+{ 0x6253, 0x6253, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6254, 0x6254, ENC_GB_2312 },
+{ 0x6255, 0x6255, ENC_JIS_0208 },
+{ 0x6258, 0x6258, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x625b, 0x625b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x625e, 0x625e, ENC_JIS_0208 },
+{ 0x6260, 0x6260, ENC_JIS_0208 },
+{ 0x6263, 0x6263, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6266, 0x6267, ENC_GB_2312 },
+{ 0x6268, 0x6268, ENC_JIS_0208 },
+{ 0x6269, 0x626d, ENC_GB_2312 },
+{ 0x626e, 0x626e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x626f, 0x6270, ENC_GB_2312 },
+{ 0x6271, 0x6271, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6273, 0x6273, ENC_GB_2312 },
+{ 0x6276, 0x6276, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6279, 0x6279, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x627c, 0x627c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x627e, 0x627e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x627f, 0x6280, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6282, 0x6283, ENC_JIS_0208 },
+{ 0x6284, 0x6284, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6289, 0x628a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6291, 0x6292, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6293, 0x6293, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6294, 0x6294, ENC_JIS_0208 },
+{ 0x6295, 0x6295, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6296, 0x6296, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6297, 0x6298, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x629a, 0x629a, ENC_GB_2312 },
+{ 0x629b, 0x629b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x629c, 0x629c, ENC_JIS_0208 },
+{ 0x629e, 0x629e, ENC_JIS_0208 },
+{ 0x629f, 0x62a2, ENC_GB_2312 },
+{ 0x62a4, 0x62a5, ENC_GB_2312 },
+{ 0x62a8, 0x62a8, ENC_GB_2312 },
+{ 0x62ab, 0x62ab, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62ac, 0x62ac, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x62b1, 0x62b1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62b5, 0x62b5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62b9, 0x62b9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62bb, 0x62bb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x62bc, 0x62bd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62bf, 0x62bf, ENC_GB_2312 },
+{ 0x62c2, 0x62c2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62c4, 0x62c4, ENC_GB_2312 },
+{ 0x62c5, 0x62c6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x62c7, 0x62c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62ca, 0x62ca, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x62cc, 0x62cd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62ce, 0x62ce, ENC_GB_2312 },
+{ 0x62cf, 0x62cf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62d0, 0x62d0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62d1, 0x62d1, ENC_JIS_0208 },
+{ 0x62d2, 0x62d4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62d6, 0x62d6, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x62d7, 0x62d9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62da, 0x62da, ENC_GB_2312 },
+{ 0x62db, 0x62dc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62dd, 0x62dd, ENC_JIS_0208 },
+{ 0x62df, 0x62df, ENC_GB_2312 },
+{ 0x62e0, 0x62e1, ENC_JIS_0208 },
+{ 0x62e2, 0x62e3, ENC_GB_2312 },
+{ 0x62e5, 0x62e9, ENC_GB_2312 },
+{ 0x62ec, 0x62ef, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62f1, 0x62f1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62f3, 0x62f3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62f4, 0x62f4, ENC_GB_2312 },
+{ 0x62f5, 0x62f5, ENC_JIS_0208 },
+{ 0x62f6, 0x62f6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x62f7, 0x62f7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x62fc, 0x62fd, ENC_GB_2312 },
+{ 0x62fe, 0x62ff, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6301, 0x6301, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6302, 0x6302, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6307, 0x6307, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6308, 0x6308, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6309, 0x6309, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x630c, 0x630c, ENC_JIS_0208 },
+{ 0x630e, 0x630e, ENC_GB_2312 },
+{ 0x6311, 0x6311, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6316, 0x6316, ENC_GB_2312 },
+{ 0x6319, 0x6319, ENC_JIS_0208 },
+{ 0x631a, 0x631b, ENC_GB_2312 },
+{ 0x631d, 0x631e, ENC_GB_2312 },
+{ 0x631f, 0x631f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6320, 0x6325, ENC_GB_2312 },
+{ 0x6327, 0x6327, ENC_JIS_0208 },
+{ 0x6328, 0x6328, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x632a, 0x632a, ENC_GB_2312 },
+{ 0x632b, 0x632b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x632f, 0x632f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6332, 0x6332, ENC_GB_2312 },
+{ 0x6339, 0x6339, ENC_GB_2312 },
+{ 0x633a, 0x633a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x633b, 0x633b, ENC_KSC_5601 },
+{ 0x633d, 0x633d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x633e, 0x633e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x633f, 0x633f, ENC_JIS_0208 },
+{ 0x6342, 0x6343, ENC_GB_2312 },
+{ 0x6345, 0x6346, ENC_GB_2312 },
+{ 0x6349, 0x6349, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x634b, 0x634b, ENC_GB_2312 },
+{ 0x634c, 0x634c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x634d, 0x634d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x634e, 0x634e, ENC_GB_2312 },
+{ 0x634f, 0x6350, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6355, 0x6355, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6357, 0x6357, ENC_JIS_0208 },
+{ 0x635c, 0x635c, ENC_JIS_0208 },
+{ 0x635e, 0x635f, ENC_GB_2312 },
+{ 0x6361, 0x6363, ENC_GB_2312 },
+{ 0x6367, 0x6367, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6368, 0x6368, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6369, 0x6369, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x636b, 0x636b, ENC_JIS_0208 },
+{ 0x636d, 0x636d, ENC_GB_2312 },
+{ 0x636e, 0x636e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6371, 0x6371, ENC_GB_2312 },
+{ 0x6372, 0x6372, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6376, 0x6376, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6377, 0x6377, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x637a, 0x637b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x637f, 0x637f, ENC_KSC_5601 },
+{ 0x6380, 0x6380, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6382, 0x6382, ENC_GB_2312 },
+{ 0x6383, 0x6383, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6387, 0x6387, ENC_GB_2312 },
+{ 0x6388, 0x6389, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x638a, 0x638a, ENC_GB_2312 },
+{ 0x638c, 0x638c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x638e, 0x638f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6390, 0x6390, ENC_GB_2312 },
+{ 0x6392, 0x6392, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6396, 0x6396, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6398, 0x6398, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x639b, 0x639b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x639f, 0x639f, ENC_JIS_0208 },
+{ 0x63a0, 0x63a0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63a1, 0x63a1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63a2, 0x63a2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63a3, 0x63a3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x63a5, 0x63a5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63a7, 0x63aa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63ab, 0x63ab, ENC_JIS_0208 },
+{ 0x63ac, 0x63ac, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x63ad, 0x63ae, ENC_GB_2312 },
+{ 0x63b0, 0x63b0, ENC_GB_2312 },
+{ 0x63b2, 0x63b2, ENC_JIS_0208 },
+{ 0x63b3, 0x63b3, ENC_GB_2312 },
+{ 0x63b4, 0x63b4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x63b5, 0x63b5, ENC_JIS_0208 },
+{ 0x63b7, 0x63b8, ENC_GB_2312 },
+{ 0x63ba, 0x63ba, ENC_GB_2312 },
+{ 0x63bb, 0x63bb, ENC_JIS_0208 },
+{ 0x63bc, 0x63bc, ENC_GB_2312 },
+{ 0x63be, 0x63be, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x63c0, 0x63c0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63c3, 0x63c3, ENC_JIS_0208 },
+{ 0x63c4, 0x63c4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63c6, 0x63c6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63c9, 0x63c9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x63cd, 0x63ce, ENC_GB_2312 },
+{ 0x63cf, 0x63d0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63d2, 0x63d2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x63d6, 0x63d6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63da, 0x63db, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63de, 0x63de, ENC_GB_2312 },
+{ 0x63e0, 0x63e0, ENC_GB_2312 },
+{ 0x63e1, 0x63e1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63e3, 0x63e3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x63e9, 0x63e9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x63ea, 0x63ea, ENC_GB_2312 },
+{ 0x63ed, 0x63ed, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x63ee, 0x63ee, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63f2, 0x63f2, ENC_GB_2312 },
+{ 0x63f4, 0x63f4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63f6, 0x63f6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x63f7, 0x63f7, ENC_KSC_5601 },
+{ 0x63f8, 0x63f8, ENC_GB_2312 },
+{ 0x63fa, 0x63fa, ENC_JIS_0208 },
+{ 0x63fd, 0x63fd, ENC_GB_2312 },
+{ 0x63ff, 0x6402, ENC_GB_2312 },
+{ 0x6405, 0x6405, ENC_GB_2312 },
+{ 0x6406, 0x6406, ENC_JIS_0208 },
+{ 0x640b, 0x640c, ENC_GB_2312 },
+{ 0x640d, 0x640d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x640f, 0x640f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6410, 0x6410, ENC_GB_2312 },
+{ 0x6413, 0x6413, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6414, 0x6414, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6416, 0x6417, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x641b, 0x641b, ENC_GB_2312 },
+{ 0x641c, 0x641c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x641e, 0x641e, ENC_GB_2312 },
+{ 0x6420, 0x6421, ENC_GB_2312 },
+{ 0x6422, 0x6422, ENC_KSC_5601 },
+{ 0x6426, 0x6426, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6428, 0x6428, ENC_JIS_0208 },
+{ 0x642a, 0x642a, ENC_GB_2312 },
+{ 0x642c, 0x642d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6434, 0x6434, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6436, 0x6436, ENC_JIS_0208 },
+{ 0x643a, 0x643a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x643d, 0x643d, ENC_GB_2312 },
+{ 0x643e, 0x643e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x643f, 0x643f, ENC_GB_2312 },
+{ 0x6441, 0x6441, ENC_GB_2312 },
+{ 0x6442, 0x6442, ENC_JIS_0208 },
+{ 0x6444, 0x6448, ENC_GB_2312 },
+{ 0x644a, 0x644a, ENC_GB_2312 },
+{ 0x644e, 0x644e, ENC_JIS_0208 },
+{ 0x6452, 0x6452, ENC_GB_2312 },
+{ 0x6454, 0x6454, ENC_GB_2312 },
+{ 0x6458, 0x6458, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x645e, 0x645e, ENC_GB_2312 },
+{ 0x6460, 0x6460, ENC_KSC_5601 },
+{ 0x6467, 0x6467, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6469, 0x6469, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x646d, 0x646d, ENC_GB_2312 },
+{ 0x646f, 0x646f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6476, 0x6476, ENC_JIS_0208 },
+{ 0x6478, 0x6478, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6479, 0x6479, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x647a, 0x647a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6482, 0x6482, ENC_GB_2312 },
+{ 0x6483, 0x6483, ENC_JIS_0208 },
+{ 0x6484, 0x6485, ENC_GB_2312 },
+{ 0x6487, 0x6487, ENC_GB_2312 },
+{ 0x6488, 0x6488, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6491, 0x6491, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6492, 0x6492, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6493, 0x6493, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6495, 0x6495, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6496, 0x6496, ENC_GB_2312 },
+{ 0x6499, 0x6499, ENC_GB_2312 },
+{ 0x649a, 0x649a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x649e, 0x649e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64a4, 0x64a4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64a5, 0x64a5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64a9, 0x64a9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x64ab, 0x64ab, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64ac, 0x64ac, ENC_GB_2312 },
+{ 0x64ad, 0x64ae, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64b0, 0x64b0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64b2, 0x64b2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64b5, 0x64b5, ENC_GB_2312 },
+{ 0x64b7, 0x64b8, ENC_GB_2312 },
+{ 0x64b9, 0x64b9, ENC_JIS_0208 },
+{ 0x64ba, 0x64ba, ENC_GB_2312 },
+{ 0x64bb, 0x64bb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64bc, 0x64bc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x64c0, 0x64c0, ENC_GB_2312 },
+{ 0x64c1, 0x64c1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64c2, 0x64c2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x64c4, 0x64c4, ENC_KSC_5601 },
+{ 0x64c5, 0x64c5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64c7, 0x64c7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64ca, 0x64ca, ENC_KSC_5601 },
+{ 0x64cd, 0x64cd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64ce, 0x64ce, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x64d0, 0x64d0, ENC_GB_2312 },
+{ 0x64d2, 0x64d2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64d4, 0x64d4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64d7, 0x64d7, ENC_GB_2312 },
+{ 0x64d8, 0x64d8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64da, 0x64da, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64de, 0x64de, ENC_GB_2312 },
+{ 0x64e0, 0x64e0, ENC_JIS_0208 },
+{ 0x64e1, 0x64e1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64e2, 0x64e2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64e3, 0x64e3, ENC_JIS_0208 },
+{ 0x64e4, 0x64e4, ENC_GB_2312 },
+{ 0x64e5, 0x64e5, ENC_KSC_5601 },
+{ 0x64e6, 0x64e6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64e7, 0x64e7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64ec, 0x64ec, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64ef, 0x64ef, ENC_JIS_0208 },
+{ 0x64f1, 0x64f1, ENC_JIS_0208 },
+{ 0x64f2, 0x64f2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64f4, 0x64f4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64f6, 0x64f6, ENC_JIS_0208 },
+{ 0x64fa, 0x64fa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x64fd, 0x64fd, ENC_JIS_0208 },
+{ 0x64fe, 0x64fe, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6500, 0x6500, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6504, 0x6504, ENC_KSC_5601 },
+{ 0x6505, 0x6505, ENC_JIS_0208 },
+{ 0x6509, 0x6509, ENC_GB_2312 },
+{ 0x6512, 0x6512, ENC_GB_2312 },
+{ 0x6518, 0x6518, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x651c, 0x651c, ENC_JIS_0208 },
+{ 0x651d, 0x651d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6523, 0x6523, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6524, 0x6524, ENC_JIS_0208 },
+{ 0x6525, 0x6525, ENC_GB_2312 },
+{ 0x652a, 0x652a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x652b, 0x652b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x652c, 0x652c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x652e, 0x652e, ENC_GB_2312 },
+{ 0x652f, 0x652f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6534, 0x6535, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6536, 0x6536, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6537, 0x6537, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6538, 0x6539, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x653b, 0x653b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x653e, 0x653f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6545, 0x6545, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6548, 0x6548, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6549, 0x6549, ENC_GB_2312 },
+{ 0x654c, 0x654c, ENC_GB_2312 },
+{ 0x654d, 0x654d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x654e, 0x654e, ENC_KSC_5601 },
+{ 0x654f, 0x654f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6551, 0x6551, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6555, 0x6555, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6556, 0x6556, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6557, 0x6557, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6558, 0x6558, ENC_JIS_0208 },
+{ 0x6559, 0x6559, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x655b, 0x655b, ENC_GB_2312 },
+{ 0x655d, 0x655d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x655e, 0x655e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6562, 0x6563, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6566, 0x6566, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x656b, 0x656b, ENC_GB_2312 },
+{ 0x656c, 0x656c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x656d, 0x656d, ENC_KSC_5601 },
+{ 0x6570, 0x6570, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6572, 0x6572, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6574, 0x6574, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6575, 0x6575, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6577, 0x6577, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6578, 0x6578, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x657e, 0x657e, ENC_KSC_5601 },
+{ 0x6582, 0x6583, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6585, 0x6585, ENC_KSC_5601 },
+{ 0x6587, 0x6587, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6588, 0x6589, ENC_JIS_0208 },
+{ 0x658b, 0x658b, ENC_GB_2312 },
+{ 0x658c, 0x658c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x658e, 0x658e, ENC_JIS_0208 },
+{ 0x6590, 0x6591, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6593, 0x6593, ENC_GB_2312 },
+{ 0x6597, 0x6597, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6599, 0x6599, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x659b, 0x659c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x659f, 0x659f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65a1, 0x65a1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65a4, 0x65a5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65a7, 0x65a7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65a9, 0x65a9, ENC_GB_2312 },
+{ 0x65ab, 0x65ab, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65ac, 0x65ac, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65ad, 0x65ad, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x65af, 0x65b0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65b7, 0x65b7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65b9, 0x65b9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65bc, 0x65bd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65c1, 0x65c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65c3, 0x65c4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x65c5, 0x65c5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65c6, 0x65c6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x65cb, 0x65cc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65ce, 0x65ce, ENC_GB_2312 },
+{ 0x65cf, 0x65cf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65d2, 0x65d2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65d6, 0x65d6, ENC_GB_2312 },
+{ 0x65d7, 0x65d7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65d9, 0x65d9, ENC_JIS_0208 },
+{ 0x65db, 0x65db, ENC_JIS_0208 },
+{ 0x65e0, 0x65e0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65e1, 0x65e1, ENC_JIS_0208 },
+{ 0x65e2, 0x65e2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x65e3, 0x65e3, ENC_KSC_5601 },
+{ 0x65e5, 0x65e6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65e7, 0x65e7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x65e8, 0x65e9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65ec, 0x65ed, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65ee, 0x65f0, ENC_GB_2312 },
+{ 0x65f1, 0x65f1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65f4, 0x65f4, ENC_KSC_5601 },
+{ 0x65f6, 0x65f7, ENC_GB_2312 },
+{ 0x65fa, 0x65fa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65fb, 0x65fb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x65fc, 0x65fd, ENC_KSC_5601 },
+{ 0x65ff, 0x65ff, ENC_KSC_5601 },
+{ 0x6600, 0x6600, ENC_GB_2312 },
+{ 0x6602, 0x6603, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6606, 0x6606, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6607, 0x6607, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6609, 0x6609, ENC_KSC_5601 },
+{ 0x660a, 0x660a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x660c, 0x660c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x660e, 0x660f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6610, 0x6611, ENC_KSC_5601 },
+{ 0x6613, 0x6614, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6615, 0x6615, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6619, 0x6619, ENC_GB_2312 },
+{ 0x661c, 0x661c, ENC_JIS_0208 },
+{ 0x661d, 0x661d, ENC_GB_2312 },
+{ 0x661e, 0x661e, ENC_KSC_5601 },
+{ 0x661f, 0x6620, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6625, 0x6625, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6627, 0x6628, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x662d, 0x662d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x662f, 0x662f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6630, 0x6630, ENC_KSC_5601 },
+{ 0x6631, 0x6631, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6634, 0x6634, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6635, 0x6635, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6636, 0x6636, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x663a, 0x663b, ENC_KSC_5601 },
+{ 0x663c, 0x663c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x663e, 0x663e, ENC_GB_2312 },
+{ 0x663f, 0x663f, ENC_JIS_0208 },
+{ 0x6641, 0x6641, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6642, 0x6642, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6643, 0x6643, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6644, 0x6644, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6649, 0x6649, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x664b, 0x664b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x664c, 0x664c, ENC_GB_2312 },
+{ 0x664f, 0x664f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6652, 0x6652, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6653, 0x6657, ENC_GB_2312 },
+{ 0x6659, 0x6659, ENC_KSC_5601 },
+{ 0x665a, 0x665a, ENC_GB_2312 },
+{ 0x665b, 0x665b, ENC_KSC_5601 },
+{ 0x665d, 0x665e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x665f, 0x665f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6661, 0x6661, ENC_GB_2312 },
+{ 0x6662, 0x6662, ENC_JIS_0208 },
+{ 0x6664, 0x6664, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6665, 0x6665, ENC_KSC_5601 },
+{ 0x6666, 0x6666, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6667, 0x6667, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6668, 0x6668, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6669, 0x6669, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x666b, 0x666b, ENC_KSC_5601 },
+{ 0x666e, 0x666f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6670, 0x6670, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6673, 0x6673, ENC_KSC_5601 },
+{ 0x6674, 0x6674, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6676, 0x6676, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6677, 0x6677, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6678, 0x6678, ENC_KSC_5601 },
+{ 0x667a, 0x667a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x667e, 0x667e, ENC_GB_2312 },
+{ 0x6681, 0x6681, ENC_JIS_0208 },
+{ 0x6682, 0x6682, ENC_GB_2312 },
+{ 0x6683, 0x6683, ENC_JIS_0208 },
+{ 0x6684, 0x6684, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6687, 0x6687, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6688, 0x6689, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x668c, 0x668c, ENC_GB_2312 },
+{ 0x668e, 0x668e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6690, 0x6690, ENC_KSC_5601 },
+{ 0x6691, 0x6691, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6696, 0x6697, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6698, 0x6698, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x669d, 0x669d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66a0, 0x66a0, ENC_KSC_5601 },
+{ 0x66a2, 0x66a2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66a6, 0x66a6, ENC_JIS_0208 },
+{ 0x66a7, 0x66a8, ENC_GB_2312 },
+{ 0x66ab, 0x66ab, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66ae, 0x66ae, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66b2, 0x66b3, ENC_KSC_5601 },
+{ 0x66b4, 0x66b4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66b8, 0x66b8, ENC_JIS_0208 },
+{ 0x66b9, 0x66b9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66bb, 0x66bb, ENC_KSC_5601 },
+{ 0x66bc, 0x66bc, ENC_JIS_0208 },
+{ 0x66be, 0x66be, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66c1, 0x66c1, ENC_JIS_0208 },
+{ 0x66c4, 0x66c4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66c6, 0x66c6, ENC_KSC_5601 },
+{ 0x66c7, 0x66c7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66c9, 0x66c9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66d6, 0x66d6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66d9, 0x66d9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66da, 0x66da, ENC_JIS_0208 },
+{ 0x66db, 0x66db, ENC_GB_2312 },
+{ 0x66dc, 0x66dd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66e0, 0x66e0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66e6, 0x66e6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66e9, 0x66e9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x66f0, 0x66f0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66f2, 0x66f4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66f5, 0x66f5, ENC_JIS_0208 },
+{ 0x66f7, 0x66f7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66f8, 0x66f8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66f9, 0x66f9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66fa, 0x66fa, ENC_KSC_5601 },
+{ 0x66fc, 0x66fc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x66fd, 0x66fd, ENC_JIS_0208 },
+{ 0x66fe, 0x6700, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6703, 0x6703, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6708, 0x6709, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x670a, 0x670a, ENC_GB_2312 },
+{ 0x670b, 0x670b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x670d, 0x670d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x670f, 0x670f, ENC_JIS_0208 },
+{ 0x6710, 0x6710, ENC_GB_2312 },
+{ 0x6714, 0x6715, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6716, 0x6716, ENC_JIS_0208 },
+{ 0x6717, 0x6717, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x671b, 0x671b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x671d, 0x671d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x671e, 0x671e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x671f, 0x671f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6726, 0x6726, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6727, 0x6727, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6728, 0x6728, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x672a, 0x672d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x672e, 0x672e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x672f, 0x672f, ENC_GB_2312 },
+{ 0x6731, 0x6731, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6734, 0x6734, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6735, 0x6735, ENC_GB_2312 },
+{ 0x6736, 0x6736, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6737, 0x6738, ENC_JIS_0208 },
+{ 0x673a, 0x673a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x673d, 0x673d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x673f, 0x673f, ENC_JIS_0208 },
+{ 0x6740, 0x6740, ENC_GB_2312 },
+{ 0x6741, 0x6741, ENC_JIS_0208 },
+{ 0x6742, 0x6743, ENC_GB_2312 },
+{ 0x6746, 0x6746, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6748, 0x6748, ENC_GB_2312 },
+{ 0x6749, 0x6749, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x674c, 0x674c, ENC_GB_2312 },
+{ 0x674e, 0x6751, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6753, 0x6753, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6756, 0x6756, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6759, 0x6759, ENC_JIS_0208 },
+{ 0x675c, 0x675c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x675e, 0x675f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6760, 0x6761, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6762, 0x6764, ENC_JIS_0208 },
+{ 0x6765, 0x6765, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6768, 0x6769, ENC_GB_2312 },
+{ 0x676a, 0x676a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x676d, 0x676d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x676f, 0x6770, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6771, 0x6771, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6772, 0x6772, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6773, 0x6773, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6775, 0x6775, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6777, 0x6777, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x677b, 0x677b, ENC_KSC_5601 },
+{ 0x677c, 0x677c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x677e, 0x677f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6781, 0x6781, ENC_GB_2312 },
+{ 0x6784, 0x6784, ENC_GB_2312 },
+{ 0x6785, 0x6785, ENC_JIS_0208 },
+{ 0x6787, 0x6787, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6789, 0x6789, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x678b, 0x678b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x678c, 0x678c, ENC_JIS_0208 },
+{ 0x678f, 0x678f, ENC_KSC_5601 },
+{ 0x6790, 0x6790, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6793, 0x6793, ENC_KSC_5601 },
+{ 0x6795, 0x6795, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6797, 0x6797, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6798, 0x6798, ENC_GB_2312 },
+{ 0x679a, 0x679a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x679c, 0x679d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x679e, 0x679e, ENC_GB_2312 },
+{ 0x67a0, 0x67a1, ENC_JIS_0208 },
+{ 0x67a2, 0x67a2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x67a3, 0x67a3, ENC_GB_2312 },
+{ 0x67a5, 0x67a5, ENC_GB_2312 },
+{ 0x67a6, 0x67a6, ENC_JIS_0208 },
+{ 0x67a7, 0x67a8, ENC_GB_2312 },
+{ 0x67a9, 0x67a9, ENC_JIS_0208 },
+{ 0x67aa, 0x67ab, ENC_GB_2312 },
+{ 0x67ad, 0x67ad, ENC_GB_2312 },
+{ 0x67af, 0x67af, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67b0, 0x67b0, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x67b3, 0x67b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67b4, 0x67b4, ENC_JIS_0208 },
+{ 0x67b5, 0x67b5, ENC_GB_2312 },
+{ 0x67b6, 0x67b8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67b9, 0x67b9, ENC_JIS_0208 },
+{ 0x67be, 0x67be, ENC_KSC_5601 },
+{ 0x67c1, 0x67c1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x67c3, 0x67c3, ENC_GB_2312 },
+{ 0x67c4, 0x67c4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67c6, 0x67c6, ENC_JIS_0208 },
+{ 0x67ca, 0x67ca, ENC_JIS_0208 },
+{ 0x67ce, 0x67ce, ENC_JIS_0208 },
+{ 0x67cf, 0x67d1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67d2, 0x67d2, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x67d3, 0x67d4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67d8, 0x67d8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x67d9, 0x67d9, ENC_GB_2312 },
+{ 0x67da, 0x67da, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67dc, 0x67dc, ENC_GB_2312 },
+{ 0x67dd, 0x67dd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67de, 0x67de, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x67e0, 0x67e0, ENC_GB_2312 },
+{ 0x67e2, 0x67e2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x67e4, 0x67e4, ENC_JIS_0208 },
+{ 0x67e5, 0x67e5, ENC_GB_2312 },
+{ 0x67e7, 0x67e7, ENC_JIS_0208 },
+{ 0x67e9, 0x67e9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67ec, 0x67ec, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67ee, 0x67ee, ENC_JIS_0208 },
+{ 0x67ef, 0x67ef, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67f0, 0x67f0, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x67f1, 0x67f1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67f3, 0x67f4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67f5, 0x67f5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67f6, 0x67f6, ENC_KSC_5601 },
+{ 0x67fb, 0x67fb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67fd, 0x67fd, ENC_GB_2312 },
+{ 0x67fe, 0x67fe, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x67ff, 0x67ff, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6800, 0x6800, ENC_GB_2312 },
+{ 0x6802, 0x6804, ENC_JIS_0208 },
+{ 0x6805, 0x6805, ENC_GB_2312 },
+{ 0x6807, 0x680c, ENC_GB_2312 },
+{ 0x680e, 0x680f, ENC_GB_2312 },
+{ 0x6811, 0x6811, ENC_GB_2312 },
+{ 0x6812, 0x6812, ENC_KSC_5601 },
+{ 0x6813, 0x6813, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6816, 0x6817, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x681d, 0x681d, ENC_GB_2312 },
+{ 0x681e, 0x681e, ENC_JIS_0208 },
+{ 0x6821, 0x6821, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6822, 0x6822, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6829, 0x6829, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x682a, 0x682a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x682b, 0x682b, ENC_JIS_0208 },
+{ 0x682f, 0x682f, ENC_KSC_5601 },
+{ 0x6832, 0x6832, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6833, 0x6833, ENC_GB_2312 },
+{ 0x6834, 0x6834, ENC_JIS_0208 },
+{ 0x6837, 0x6837, ENC_GB_2312 },
+{ 0x6838, 0x6839, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x683c, 0x683d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x683e, 0x683e, ENC_GB_2312 },
+{ 0x6840, 0x6843, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6844, 0x6845, ENC_GB_2312 },
+{ 0x6846, 0x6846, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6848, 0x6848, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6849, 0x684a, ENC_GB_2312 },
+{ 0x684c, 0x684c, ENC_GB_2312 },
+{ 0x684d, 0x684d, ENC_JIS_0208 },
+{ 0x684e, 0x684e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6850, 0x6851, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6853, 0x6854, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6855, 0x6855, ENC_GB_2312 },
+{ 0x6859, 0x6859, ENC_JIS_0208 },
+{ 0x685c, 0x685d, ENC_JIS_0208 },
+{ 0x685f, 0x685f, ENC_JIS_0208 },
+{ 0x6860, 0x6862, ENC_GB_2312 },
+{ 0x6863, 0x6863, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6864, 0x6866, ENC_GB_2312 },
+{ 0x6867, 0x6867, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6868, 0x6869, ENC_GB_2312 },
+{ 0x686b, 0x686b, ENC_GB_2312 },
+{ 0x686d, 0x686d, ENC_KSC_5601 },
+{ 0x6874, 0x6874, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6876, 0x6876, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6877, 0x6877, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x687e, 0x687e, ENC_JIS_0208 },
+{ 0x687f, 0x687f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6881, 0x6881, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6883, 0x6883, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6885, 0x6885, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6886, 0x6886, ENC_GB_2312 },
+{ 0x688d, 0x688d, ENC_JIS_0208 },
+{ 0x688f, 0x688f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6893, 0x6893, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6894, 0x6894, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6897, 0x6897, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x689b, 0x689b, ENC_JIS_0208 },
+{ 0x689d, 0x689d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x689f, 0x689f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68a0, 0x68a0, ENC_JIS_0208 },
+{ 0x68a1, 0x68a1, ENC_KSC_5601 },
+{ 0x68a2, 0x68a2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68a6, 0x68a6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x68a7, 0x68a8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68ad, 0x68ad, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68af, 0x68b0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68b1, 0x68b1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68b3, 0x68b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68b5, 0x68b5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68b6, 0x68b6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68b9, 0x68ba, ENC_JIS_0208 },
+{ 0x68bc, 0x68bc, ENC_JIS_0208 },
+{ 0x68c0, 0x68c0, ENC_GB_2312 },
+{ 0x68c2, 0x68c2, ENC_GB_2312 },
+{ 0x68c4, 0x68c4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68c5, 0x68c5, ENC_KSC_5601 },
+{ 0x68c6, 0x68c6, ENC_JIS_0208 },
+{ 0x68c9, 0x68c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68ca, 0x68ca, ENC_JIS_0208 },
+{ 0x68cb, 0x68cb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68cd, 0x68cd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68d2, 0x68d2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68d4, 0x68d4, ENC_JIS_0208 },
+{ 0x68d5, 0x68d5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68d7, 0x68d7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68d8, 0x68d8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68da, 0x68da, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68df, 0x68df, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68e0, 0x68e0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68e1, 0x68e1, ENC_JIS_0208 },
+{ 0x68e3, 0x68e3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x68e7, 0x68e7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68e8, 0x68e8, ENC_KSC_5601 },
+{ 0x68ee, 0x68ee, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68ef, 0x68ef, ENC_JIS_0208 },
+{ 0x68f0, 0x68f1, ENC_GB_2312 },
+{ 0x68f2, 0x68f2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68f5, 0x68f5, ENC_GB_2312 },
+{ 0x68f9, 0x68fa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x68fc, 0x68fc, ENC_GB_2312 },
+{ 0x6900, 0x6900, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6901, 0x6901, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6904, 0x6904, ENC_JIS_0208 },
+{ 0x6905, 0x6905, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6908, 0x6908, ENC_JIS_0208 },
+{ 0x690b, 0x690b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x690c, 0x690c, ENC_JIS_0208 },
+{ 0x690d, 0x690e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x690f, 0x690f, ENC_JIS_0208 },
+{ 0x6910, 0x6910, ENC_GB_2312 },
+{ 0x6912, 0x6912, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6919, 0x691c, ENC_JIS_0208 },
+{ 0x691f, 0x6920, ENC_GB_2312 },
+{ 0x6921, 0x6923, ENC_JIS_0208 },
+{ 0x6924, 0x6924, ENC_GB_2312 },
+{ 0x6925, 0x6926, ENC_JIS_0208 },
+{ 0x6927, 0x6927, ENC_KSC_5601 },
+{ 0x6928, 0x6928, ENC_JIS_0208 },
+{ 0x692a, 0x692a, ENC_JIS_0208 },
+{ 0x692d, 0x692d, ENC_GB_2312 },
+{ 0x6930, 0x6930, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6934, 0x6934, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6936, 0x6936, ENC_JIS_0208 },
+{ 0x6939, 0x6939, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x693d, 0x693d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x693f, 0x693f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6942, 0x6942, ENC_GB_2312 },
+{ 0x694a, 0x694a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6953, 0x6953, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6954, 0x6954, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6955, 0x6955, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6957, 0x6957, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6959, 0x6959, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x695a, 0x695a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x695c, 0x695c, ENC_JIS_0208 },
+{ 0x695d, 0x695d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x695e, 0x695e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6960, 0x6960, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6961, 0x6962, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6963, 0x6963, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6966, 0x6966, ENC_GB_2312 },
+{ 0x6968, 0x6968, ENC_KSC_5601 },
+{ 0x696a, 0x696a, ENC_JIS_0208 },
+{ 0x696b, 0x696b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x696d, 0x696d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x696e, 0x696e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x696f, 0x696f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6971, 0x6971, ENC_GB_2312 },
+{ 0x6973, 0x6974, ENC_JIS_0208 },
+{ 0x6975, 0x6975, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6977, 0x6979, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x697c, 0x697c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x697d, 0x697e, ENC_JIS_0208 },
+{ 0x6980, 0x6980, ENC_GB_2312 },
+{ 0x6981, 0x6981, ENC_JIS_0208 },
+{ 0x6982, 0x6982, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6984, 0x6984, ENC_GB_2312 },
+{ 0x6986, 0x6989, ENC_GB_2312 },
+{ 0x698a, 0x698a, ENC_JIS_0208 },
+{ 0x698d, 0x698d, ENC_GB_2312 },
+{ 0x698e, 0x698e, ENC_JIS_0208 },
+{ 0x6991, 0x6991, ENC_JIS_0208 },
+{ 0x6994, 0x6994, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6995, 0x6995, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6998, 0x6998, ENC_GB_2312 },
+{ 0x699b, 0x699c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69a0, 0x69a0, ENC_JIS_0208 },
+{ 0x69a5, 0x69a5, ENC_KSC_5601 },
+{ 0x69a7, 0x69a7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69a8, 0x69a8, ENC_GB_2312 },
+{ 0x69ab, 0x69ab, ENC_GB_2312 },
+{ 0x69ad, 0x69ad, ENC_GB_2312 },
+{ 0x69ae, 0x69ae, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69b1, 0x69b1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x69b2, 0x69b2, ENC_JIS_0208 },
+{ 0x69b4, 0x69b4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69b7, 0x69b7, ENC_GB_2312 },
+{ 0x69bb, 0x69bb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69be, 0x69bf, ENC_JIS_0208 },
+{ 0x69c1, 0x69c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69c3, 0x69c3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69c7, 0x69c7, ENC_JIS_0208 },
+{ 0x69ca, 0x69ca, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x69cb, 0x69cb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69cc, 0x69cc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69cd, 0x69cd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69ce, 0x69ce, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x69d0, 0x69d0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69d3, 0x69d3, ENC_JIS_0208 },
+{ 0x69d4, 0x69d4, ENC_GB_2312 },
+{ 0x69d8, 0x69d9, ENC_JIS_0208 },
+{ 0x69db, 0x69db, ENC_GB_2312 },
+{ 0x69dd, 0x69de, ENC_JIS_0208 },
+{ 0x69df, 0x69e0, ENC_GB_2312 },
+{ 0x69e7, 0x69e7, ENC_JIS_0208 },
+{ 0x69e8, 0x69e8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69ea, 0x69ea, ENC_KSC_5601 },
+{ 0x69eb, 0x69eb, ENC_JIS_0208 },
+{ 0x69ed, 0x69ed, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x69f2, 0x69f2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x69f9, 0x69f9, ENC_JIS_0208 },
+{ 0x69fb, 0x69fb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69fd, 0x69fd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x69ff, 0x69ff, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a02, 0x6a02, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a05, 0x6a05, ENC_JIS_0208 },
+{ 0x6a0a, 0x6a0a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a0b, 0x6a0c, ENC_JIS_0208 },
+{ 0x6a11, 0x6a11, ENC_KSC_5601 },
+{ 0x6a12, 0x6a12, ENC_JIS_0208 },
+{ 0x6a13, 0x6a13, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a14, 0x6a14, ENC_JIS_0208 },
+{ 0x6a17, 0x6a17, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a18, 0x6a18, ENC_GB_2312 },
+{ 0x6a19, 0x6a19, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a1b, 0x6a1b, ENC_JIS_0208 },
+{ 0x6a1e, 0x6a1e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a1f, 0x6a1f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a21, 0x6a21, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a22, 0x6a22, ENC_JIS_0208 },
+{ 0x6a23, 0x6a23, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a28, 0x6a28, ENC_GB_2312 },
+{ 0x6a29, 0x6a29, ENC_JIS_0208 },
+{ 0x6a2a, 0x6a2a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6a2b, 0x6a2b, ENC_JIS_0208 },
+{ 0x6a2e, 0x6a2e, ENC_JIS_0208 },
+{ 0x6a2f, 0x6a2f, ENC_GB_2312 },
+{ 0x6a31, 0x6a31, ENC_GB_2312 },
+{ 0x6a35, 0x6a35, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a36, 0x6a36, ENC_JIS_0208 },
+{ 0x6a38, 0x6a3a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a3d, 0x6a3d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a3e, 0x6a3e, ENC_GB_2312 },
+{ 0x6a44, 0x6a44, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a47, 0x6a47, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6a48, 0x6a48, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a4b, 0x6a4b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a50, 0x6a50, ENC_GB_2312 },
+{ 0x6a52, 0x6a53, ENC_KSC_5601 },
+{ 0x6a58, 0x6a59, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a5b, 0x6a5b, ENC_GB_2312 },
+{ 0x6a5f, 0x6a5f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a61, 0x6a61, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a62, 0x6a62, ENC_JIS_0208 },
+{ 0x6a65, 0x6a65, ENC_GB_2312 },
+{ 0x6a66, 0x6a66, ENC_JIS_0208 },
+{ 0x6a6b, 0x6a6b, ENC_KSC_5601 },
+{ 0x6a71, 0x6a71, ENC_GB_2312 },
+{ 0x6a72, 0x6a72, ENC_JIS_0208 },
+{ 0x6a78, 0x6a78, ENC_JIS_0208 },
+{ 0x6a79, 0x6a79, ENC_GB_2312 },
+{ 0x6a7c, 0x6a7c, ENC_GB_2312 },
+{ 0x6a7f, 0x6a7f, ENC_JIS_0208 },
+{ 0x6a80, 0x6a80, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a84, 0x6a84, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a89, 0x6a89, ENC_KSC_5601 },
+{ 0x6a8d, 0x6a8d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a8e, 0x6a8e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a90, 0x6a90, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6a91, 0x6a91, ENC_GB_2312 },
+{ 0x6a97, 0x6a97, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6a9c, 0x6a9c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6aa0, 0x6aa0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6aa2, 0x6aa3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6aa9, 0x6aa9, ENC_GB_2312 },
+{ 0x6aaa, 0x6aaa, ENC_JIS_0208 },
+{ 0x6aab, 0x6aab, ENC_GB_2312 },
+{ 0x6aac, 0x6aac, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6aae, 0x6aae, ENC_JIS_0208 },
+{ 0x6ab3, 0x6ab3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ab8, 0x6ab8, ENC_JIS_0208 },
+{ 0x6abb, 0x6abb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ac1, 0x6ac1, ENC_JIS_0208 },
+{ 0x6ac2, 0x6ac3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ad1, 0x6ad1, ENC_JIS_0208 },
+{ 0x6ad3, 0x6ad3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ada, 0x6adb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ade, 0x6adf, ENC_JIS_0208 },
+{ 0x6ae8, 0x6ae8, ENC_JIS_0208 },
+{ 0x6aea, 0x6aea, ENC_JIS_0208 },
+{ 0x6af6, 0x6af6, ENC_KSC_5601 },
+{ 0x6afa, 0x6afa, ENC_JIS_0208 },
+{ 0x6afb, 0x6afb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b04, 0x6b04, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b05, 0x6b05, ENC_JIS_0208 },
+{ 0x6b0a, 0x6b0a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b0c, 0x6b0c, ENC_KSC_5601 },
+{ 0x6b12, 0x6b12, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b16, 0x6b16, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b1d, 0x6b1d, ENC_JIS_0208 },
+{ 0x6b1f, 0x6b1f, ENC_JIS_0208 },
+{ 0x6b20, 0x6b21, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b22, 0x6b22, ENC_GB_2312 },
+{ 0x6b23, 0x6b23, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b24, 0x6b24, ENC_GB_2312 },
+{ 0x6b27, 0x6b27, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6b32, 0x6b32, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b37, 0x6b37, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6b38, 0x6b38, ENC_JIS_0208 },
+{ 0x6b39, 0x6b39, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6b3a, 0x6b3a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b3d, 0x6b3d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b3e, 0x6b3e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b43, 0x6b43, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6b46, 0x6b46, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6b47, 0x6b47, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b49, 0x6b49, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6b4c, 0x6b4c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b4e, 0x6b4e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b50, 0x6b50, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b53, 0x6b54, ENC_JIS_0208 },
+{ 0x6b59, 0x6b59, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6b5b, 0x6b5b, ENC_JIS_0208 },
+{ 0x6b5f, 0x6b5f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b61, 0x6b61, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b62, 0x6b64, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b65, 0x6b65, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6b66, 0x6b66, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b67, 0x6b67, ENC_GB_2312 },
+{ 0x6b69, 0x6b69, ENC_JIS_0208 },
+{ 0x6b6a, 0x6b6a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b6f, 0x6b6f, ENC_JIS_0208 },
+{ 0x6b72, 0x6b72, ENC_KSC_5601 },
+{ 0x6b73, 0x6b74, ENC_JIS_0208 },
+{ 0x6b77, 0x6b77, ENC_KSC_5601 },
+{ 0x6b78, 0x6b78, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b79, 0x6b79, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6b7b, 0x6b7b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b7c, 0x6b7c, ENC_GB_2312 },
+{ 0x6b7f, 0x6b7f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b80, 0x6b80, ENC_JIS_0208 },
+{ 0x6b81, 0x6b82, ENC_GB_2312 },
+{ 0x6b83, 0x6b84, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b86, 0x6b86, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b87, 0x6b87, ENC_GB_2312 },
+{ 0x6b89, 0x6b8a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b8b, 0x6b8b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6b8d, 0x6b8d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6b92, 0x6b93, ENC_GB_2312 },
+{ 0x6b95, 0x6b95, ENC_JIS_0208 },
+{ 0x6b96, 0x6b96, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b98, 0x6b98, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6b9a, 0x6b9b, ENC_GB_2312 },
+{ 0x6b9e, 0x6b9e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ba1, 0x6ba1, ENC_GB_2312 },
+{ 0x6ba4, 0x6ba4, ENC_JIS_0208 },
+{ 0x6baa, 0x6baa, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6bab, 0x6bab, ENC_JIS_0208 },
+{ 0x6bae, 0x6bae, ENC_KSC_5601 },
+{ 0x6baf, 0x6baf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bb1, 0x6bb1, ENC_JIS_0208 },
+{ 0x6bb2, 0x6bb2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bb3, 0x6bb4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6bb5, 0x6bb5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bb7, 0x6bb7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bba, 0x6bba, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bbb, 0x6bbb, ENC_JIS_0208 },
+{ 0x6bbc, 0x6bbc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bbf, 0x6bbf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bc0, 0x6bc0, ENC_JIS_0208 },
+{ 0x6bc1, 0x6bc1, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6bc2, 0x6bc2, ENC_GB_2312 },
+{ 0x6bc5, 0x6bc5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bc6, 0x6bc6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bcb, 0x6bcb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bcd, 0x6bcd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bce, 0x6bce, ENC_JIS_0208 },
+{ 0x6bcf, 0x6bcf, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6bd2, 0x6bd4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bd5, 0x6bd5, ENC_GB_2312 },
+{ 0x6bd6, 0x6bd7, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6bd8, 0x6bd8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bd9, 0x6bd9, ENC_GB_2312 },
+{ 0x6bdb, 0x6bdb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bdf, 0x6bdf, ENC_JIS_0208 },
+{ 0x6be1, 0x6be1, ENC_GB_2312 },
+{ 0x6bea, 0x6bea, ENC_GB_2312 },
+{ 0x6beb, 0x6beb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bec, 0x6bec, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6bef, 0x6bef, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6bf3, 0x6bf3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6bf5, 0x6bf5, ENC_GB_2312 },
+{ 0x6bf9, 0x6bf9, ENC_GB_2312 },
+{ 0x6bfd, 0x6bfd, ENC_GB_2312 },
+{ 0x6c05, 0x6c07, ENC_GB_2312 },
+{ 0x6c08, 0x6c08, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c0d, 0x6c0d, ENC_GB_2312 },
+{ 0x6c0f, 0x6c0f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c10, 0x6c10, ENC_GB_2312 },
+{ 0x6c11, 0x6c11, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c13, 0x6c13, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c14, 0x6c14, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6c15, 0x6c16, ENC_GB_2312 },
+{ 0x6c17, 0x6c17, ENC_JIS_0208 },
+{ 0x6c18, 0x6c1a, ENC_GB_2312 },
+{ 0x6c1b, 0x6c1b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6c1f, 0x6c1f, ENC_GB_2312 },
+{ 0x6c21, 0x6c22, ENC_GB_2312 },
+{ 0x6c23, 0x6c23, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c24, 0x6c24, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6c26, 0x6c2a, ENC_GB_2312 },
+{ 0x6c2e, 0x6c30, ENC_GB_2312 },
+{ 0x6c32, 0x6c32, ENC_GB_2312 },
+{ 0x6c34, 0x6c34, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c35, 0x6c35, ENC_GB_2312 },
+{ 0x6c37, 0x6c37, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c38, 0x6c38, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c3d, 0x6c3d, ENC_GB_2312 },
+{ 0x6c3e, 0x6c3e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c40, 0x6c42, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c46, 0x6c47, ENC_GB_2312 },
+{ 0x6c49, 0x6c4a, ENC_GB_2312 },
+{ 0x6c4e, 0x6c4e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c50, 0x6c50, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c54, 0x6c54, ENC_GB_2312 },
+{ 0x6c55, 0x6c55, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c57, 0x6c57, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c5a, 0x6c5a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c5b, 0x6c5c, ENC_GB_2312 },
+{ 0x6c5d, 0x6c60, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c61, 0x6c61, ENC_GB_2312 },
+{ 0x6c62, 0x6c62, ENC_JIS_0208 },
+{ 0x6c64, 0x6c64, ENC_GB_2312 },
+{ 0x6c68, 0x6c68, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c69, 0x6c69, ENC_GB_2312 },
+{ 0x6c6a, 0x6c6a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c6d, 0x6c6d, ENC_KSC_5601 },
+{ 0x6c70, 0x6c70, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c72, 0x6c72, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c73, 0x6c73, ENC_JIS_0208 },
+{ 0x6c74, 0x6c74, ENC_GB_2312 },
+{ 0x6c76, 0x6c76, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6c79, 0x6c79, ENC_GB_2312 },
+{ 0x6c7a, 0x6c7a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c7d, 0x6c7e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c81, 0x6c83, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c85, 0x6c86, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6c87, 0x6c87, ENC_KSC_5601 },
+{ 0x6c88, 0x6c88, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c89, 0x6c89, ENC_GB_2312 },
+{ 0x6c8c, 0x6c8c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c8d, 0x6c8d, ENC_JIS_0208 },
+{ 0x6c8f, 0x6c8f, ENC_GB_2312 },
+{ 0x6c90, 0x6c90, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c92, 0x6c92, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c93, 0x6c93, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c94, 0x6c94, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6c95, 0x6c95, ENC_KSC_5601 },
+{ 0x6c96, 0x6c96, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c99, 0x6c99, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c9a, 0x6c9a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c9b, 0x6c9b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6c9f, 0x6c9f, ENC_GB_2312 },
+{ 0x6ca1, 0x6ca1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6ca2, 0x6ca2, ENC_JIS_0208 },
+{ 0x6ca3, 0x6ca7, ENC_GB_2312 },
+{ 0x6ca9, 0x6caa, ENC_GB_2312 },
+{ 0x6cab, 0x6cab, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cad, 0x6cad, ENC_GB_2312 },
+{ 0x6cae, 0x6cae, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cb1, 0x6cb1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6cb2, 0x6cb2, ENC_GB_2312 },
+{ 0x6cb3, 0x6cb3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cb8, 0x6cb9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cba, 0x6cba, ENC_JIS_0208 },
+{ 0x6cbb, 0x6cbf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cc1, 0x6cc1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cc2, 0x6cc2, ENC_KSC_5601 },
+{ 0x6cc4, 0x6cc4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cc5, 0x6cc5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6cc9, 0x6cca, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ccc, 0x6ccc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cd0, 0x6cd0, ENC_GB_2312 },
+{ 0x6cd3, 0x6cd3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cd4, 0x6cd4, ENC_GB_2312 },
+{ 0x6cd5, 0x6cd5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cd6, 0x6cd6, ENC_GB_2312 },
+{ 0x6cd7, 0x6cd7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cd9, 0x6cd9, ENC_JIS_0208 },
+{ 0x6cdb, 0x6cdb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cdd, 0x6cdd, ENC_JIS_0208 },
+{ 0x6cde, 0x6cde, ENC_GB_2312 },
+{ 0x6ce0, 0x6ce0, ENC_GB_2312 },
+{ 0x6ce1, 0x6ce3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ce5, 0x6ce5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ce8, 0x6ce8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cea, 0x6cea, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6ceb, 0x6ceb, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6cee, 0x6cee, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6cef, 0x6cf0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cf1, 0x6cf1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6cf3, 0x6cf3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6cf5, 0x6cf8, ENC_GB_2312 },
+{ 0x6cfa, 0x6cfe, ENC_GB_2312 },
+{ 0x6d01, 0x6d01, ENC_GB_2312 },
+{ 0x6d04, 0x6d04, ENC_GB_2312 },
+{ 0x6d07, 0x6d07, ENC_GB_2312 },
+{ 0x6d0b, 0x6d0c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d0e, 0x6d0e, ENC_GB_2312 },
+{ 0x6d11, 0x6d11, ENC_KSC_5601 },
+{ 0x6d12, 0x6d12, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6d17, 0x6d17, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d19, 0x6d19, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d1a, 0x6d1a, ENC_GB_2312 },
+{ 0x6d1b, 0x6d1b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d1e, 0x6d1e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d1f, 0x6d1f, ENC_JIS_0208 },
+{ 0x6d25, 0x6d25, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d27, 0x6d27, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6d29, 0x6d29, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d2a, 0x6d2a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d2b, 0x6d2b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6d2e, 0x6d2e, ENC_GB_2312 },
+{ 0x6d31, 0x6d31, ENC_GB_2312 },
+{ 0x6d32, 0x6d32, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d33, 0x6d33, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6d35, 0x6d35, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d36, 0x6d36, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d38, 0x6d38, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d39, 0x6d39, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6d3b, 0x6d3b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d3c, 0x6d3c, ENC_GB_2312 },
+{ 0x6d3d, 0x6d3e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d41, 0x6d41, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d43, 0x6d43, ENC_GB_2312 },
+{ 0x6d44, 0x6d44, ENC_JIS_0208 },
+{ 0x6d45, 0x6d45, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6d46, 0x6d48, ENC_GB_2312 },
+{ 0x6d4a, 0x6d4b, ENC_GB_2312 },
+{ 0x6d4d, 0x6d4f, ENC_GB_2312 },
+{ 0x6d51, 0x6d54, ENC_GB_2312 },
+{ 0x6d59, 0x6d5a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d5c, 0x6d5c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d5e, 0x6d5e, ENC_GB_2312 },
+{ 0x6d60, 0x6d60, ENC_GB_2312 },
+{ 0x6d63, 0x6d63, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d64, 0x6d64, ENC_JIS_0208 },
+{ 0x6d66, 0x6d66, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d69, 0x6d6a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d6c, 0x6d6c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d6e, 0x6d6e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d6f, 0x6d6f, ENC_GB_2312 },
+{ 0x6d74, 0x6d74, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d77, 0x6d78, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d79, 0x6d79, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d7c, 0x6d7c, ENC_GB_2312 },
+{ 0x6d7f, 0x6d7f, ENC_KSC_5601 },
+{ 0x6d82, 0x6d82, ENC_GB_2312 },
+{ 0x6d85, 0x6d85, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d87, 0x6d87, ENC_KSC_5601 },
+{ 0x6d88, 0x6d88, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d89, 0x6d89, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6d8c, 0x6d8c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d8d, 0x6d8d, ENC_KSC_5601 },
+{ 0x6d8e, 0x6d8e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d91, 0x6d91, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6d93, 0x6d93, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d94, 0x6d94, ENC_GB_2312 },
+{ 0x6d95, 0x6d95, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6d99, 0x6d99, ENC_JIS_0208 },
+{ 0x6d9b, 0x6d9b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6d9c, 0x6d9c, ENC_JIS_0208 },
+{ 0x6d9d, 0x6da1, ENC_GB_2312 },
+{ 0x6da3, 0x6da4, ENC_GB_2312 },
+{ 0x6da6, 0x6dab, ENC_GB_2312 },
+{ 0x6dae, 0x6dae, ENC_GB_2312 },
+{ 0x6daf, 0x6daf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6db2, 0x6db2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6db5, 0x6db5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6db8, 0x6db8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6dbc, 0x6dbc, ENC_JIS_0208 },
+{ 0x6dbf, 0x6dbf, ENC_GB_2312 },
+{ 0x6dc0, 0x6dc0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dc3, 0x6dc3, ENC_KSC_5601 },
+{ 0x6dc4, 0x6dc4, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6dc5, 0x6dc7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dcb, 0x6dcb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dcc, 0x6dcc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6dcf, 0x6dcf, ENC_KSC_5601 },
+{ 0x6dd1, 0x6dd1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dd2, 0x6dd2, ENC_JIS_0208 },
+{ 0x6dd5, 0x6dd5, ENC_JIS_0208 },
+{ 0x6dd6, 0x6dd6, ENC_GB_2312 },
+{ 0x6dd8, 0x6dd9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dda, 0x6dda, ENC_KSC_5601 },
+{ 0x6ddd, 0x6ddd, ENC_GB_2312 },
+{ 0x6dde, 0x6dde, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6de0, 0x6de0, ENC_GB_2312 },
+{ 0x6de1, 0x6de1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6de4, 0x6de4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6de6, 0x6de6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6de8, 0x6de8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dea, 0x6dea, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6deb, 0x6deb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dec, 0x6dec, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6dee, 0x6dee, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6df1, 0x6df1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6df3, 0x6df3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6df5, 0x6df5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6df7, 0x6df7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6df8, 0x6df8, ENC_KSC_5601 },
+{ 0x6df9, 0x6df9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dfa, 0x6dfa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dfb, 0x6dfb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6dfc, 0x6dfc, ENC_GB_2312 },
+{ 0x6e05, 0x6e05, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6e07, 0x6e09, ENC_JIS_0208 },
+{ 0x6e0a, 0x6e0a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6e0b, 0x6e0b, ENC_JIS_0208 },
+{ 0x6e0c, 0x6e0e, ENC_GB_2312 },
+{ 0x6e10, 0x6e11, ENC_GB_2312 },
+{ 0x6e13, 0x6e13, ENC_JIS_0208 },
+{ 0x6e14, 0x6e14, ENC_GB_2312 },
+{ 0x6e15, 0x6e15, ENC_JIS_0208 },
+{ 0x6e16, 0x6e16, ENC_GB_2312 },
+{ 0x6e17, 0x6e17, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6e19, 0x6e19, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e1a, 0x6e1a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e1b, 0x6e1b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e1d, 0x6e1d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6e1f, 0x6e1f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e20, 0x6e21, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e23, 0x6e25, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e26, 0x6e26, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e29, 0x6e29, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6e2b, 0x6e2b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e2c, 0x6e2c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e2d, 0x6e2d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e2e, 0x6e2e, ENC_JIS_0208 },
+{ 0x6e2f, 0x6e2f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e32, 0x6e32, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6e34, 0x6e34, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6e36, 0x6e36, ENC_KSC_5601 },
+{ 0x6e38, 0x6e38, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e3a, 0x6e3a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e3c, 0x6e3d, ENC_KSC_5601 },
+{ 0x6e3e, 0x6e3e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e43, 0x6e43, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e44, 0x6e44, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6e4a, 0x6e4a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e4d, 0x6e4d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e4e, 0x6e4e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6e53, 0x6e54, ENC_GB_2312 },
+{ 0x6e56, 0x6e56, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e58, 0x6e58, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e5b, 0x6e5b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e5c, 0x6e5c, ENC_KSC_5601 },
+{ 0x6e5e, 0x6e5e, ENC_KSC_5601 },
+{ 0x6e5f, 0x6e5f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e67, 0x6e67, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e6b, 0x6e6b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e6e, 0x6e6e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e6f, 0x6e6f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e72, 0x6e72, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e73, 0x6e73, ENC_KSC_5601 },
+{ 0x6e76, 0x6e76, ENC_JIS_0208 },
+{ 0x6e7a, 0x6e7a, ENC_KSC_5601 },
+{ 0x6e7e, 0x6e7f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6e80, 0x6e80, ENC_JIS_0208 },
+{ 0x6e82, 0x6e82, ENC_JIS_0208 },
+{ 0x6e83, 0x6e83, ENC_GB_2312 },
+{ 0x6e85, 0x6e86, ENC_GB_2312 },
+{ 0x6e89, 0x6e89, ENC_GB_2312 },
+{ 0x6e8c, 0x6e8c, ENC_JIS_0208 },
+{ 0x6e8f, 0x6e8f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6e90, 0x6e90, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e96, 0x6e96, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e98, 0x6e98, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6e9c, 0x6e9c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e9d, 0x6e9d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6e9f, 0x6e9f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ea2, 0x6ea2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ea5, 0x6ea5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ea7, 0x6ea7, ENC_GB_2312 },
+{ 0x6eaa, 0x6eaa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6eab, 0x6eab, ENC_KSC_5601 },
+{ 0x6eaf, 0x6eaf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6eb1, 0x6eb1, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6eb2, 0x6eb2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6eb4, 0x6eb4, ENC_GB_2312 },
+{ 0x6eb6, 0x6eb6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6eb7, 0x6eb7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6eba, 0x6eba, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ebb, 0x6ebb, ENC_GB_2312 },
+{ 0x6ebd, 0x6ebd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6ec1, 0x6ec1, ENC_GB_2312 },
+{ 0x6ec2, 0x6ec2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ec4, 0x6ec5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ec7, 0x6ec7, ENC_GB_2312 },
+{ 0x6ec9, 0x6ec9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ecb, 0x6ecb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ecc, 0x6ecc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ece, 0x6ece, ENC_KSC_5601 },
+{ 0x6ecf, 0x6ecf, ENC_GB_2312 },
+{ 0x6ed1, 0x6ed1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ed3, 0x6ed4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ed5, 0x6ed5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6ed7, 0x6ed7, ENC_GB_2312 },
+{ 0x6eda, 0x6eda, ENC_GB_2312 },
+{ 0x6edd, 0x6edd, ENC_JIS_0208 },
+{ 0x6ede, 0x6ede, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6edf, 0x6ee2, ENC_GB_2312 },
+{ 0x6ee4, 0x6ee6, ENC_GB_2312 },
+{ 0x6ee8, 0x6ee9, ENC_GB_2312 },
+{ 0x6eec, 0x6eec, ENC_JIS_0208 },
+{ 0x6eef, 0x6eef, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ef2, 0x6ef2, ENC_JIS_0208 },
+{ 0x6ef4, 0x6ef4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ef7, 0x6ef7, ENC_JIS_0208 },
+{ 0x6ef8, 0x6ef8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ef9, 0x6ef9, ENC_GB_2312 },
+{ 0x6efe, 0x6eff, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f01, 0x6f01, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f02, 0x6f02, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f06, 0x6f06, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f09, 0x6f09, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6f0f, 0x6f0f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f11, 0x6f11, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f13, 0x6f13, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6f14, 0x6f15, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f20, 0x6f20, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f22, 0x6f23, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f24, 0x6f24, ENC_GB_2312 },
+{ 0x6f29, 0x6f2a, ENC_GB_2312 },
+{ 0x6f2b, 0x6f2b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f2c, 0x6f2c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f2d, 0x6f2d, ENC_GB_2312 },
+{ 0x6f2f, 0x6f2f, ENC_GB_2312 },
+{ 0x6f31, 0x6f31, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f32, 0x6f32, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f33, 0x6f33, ENC_GB_2312 },
+{ 0x6f36, 0x6f36, ENC_GB_2312 },
+{ 0x6f38, 0x6f38, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f3e, 0x6f3e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6f3f, 0x6f3f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f41, 0x6f41, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f45, 0x6f45, ENC_JIS_0208 },
+{ 0x6f46, 0x6f47, ENC_GB_2312 },
+{ 0x6f4b, 0x6f4b, ENC_GB_2312 },
+{ 0x6f4d, 0x6f4d, ENC_GB_2312 },
+{ 0x6f51, 0x6f51, ENC_KSC_5601 },
+{ 0x6f54, 0x6f54, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f57, 0x6f57, ENC_KSC_5601 },
+{ 0x6f58, 0x6f58, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f5a, 0x6f5a, ENC_KSC_5601 },
+{ 0x6f5b, 0x6f5b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f5c, 0x6f5c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6f5e, 0x6f5e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6f5f, 0x6f5f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f62, 0x6f62, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6f64, 0x6f64, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f66, 0x6f66, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6f6d, 0x6f6e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f6f, 0x6f6f, ENC_JIS_0208 },
+{ 0x6f70, 0x6f70, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f72, 0x6f72, ENC_GB_2312 },
+{ 0x6f74, 0x6f74, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6f78, 0x6f78, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6f7a, 0x6f7a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f7c, 0x6f7c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f7d, 0x6f7e, ENC_KSC_5601 },
+{ 0x6f80, 0x6f80, ENC_JIS_0208 },
+{ 0x6f81, 0x6f81, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f82, 0x6f82, ENC_JIS_0208 },
+{ 0x6f84, 0x6f84, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f86, 0x6f86, ENC_JIS_0208 },
+{ 0x6f88, 0x6f88, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6f89, 0x6f89, ENC_GB_2312 },
+{ 0x6f8c, 0x6f8c, ENC_GB_2312 },
+{ 0x6f8d, 0x6f8d, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6f8e, 0x6f8e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f90, 0x6f90, ENC_KSC_5601 },
+{ 0x6f91, 0x6f91, ENC_JIS_0208 },
+{ 0x6f94, 0x6f94, ENC_KSC_5601 },
+{ 0x6f97, 0x6f97, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6f9c, 0x6f9c, ENC_GB_2312 },
+{ 0x6fa1, 0x6fa1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6fa3, 0x6fa4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fa7, 0x6fa7, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x6faa, 0x6faa, ENC_JIS_0208 },
+{ 0x6fae, 0x6faf, ENC_KSC_5601 },
+{ 0x6fb1, 0x6fb1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fb3, 0x6fb3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fb6, 0x6fb6, ENC_GB_2312 },
+{ 0x6fb9, 0x6fb9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fbe, 0x6fbe, ENC_KSC_5601 },
+{ 0x6fc0, 0x6fc0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fc1, 0x6fc1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fc2, 0x6fc2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fc3, 0x6fc3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fc6, 0x6fc6, ENC_JIS_0208 },
+{ 0x6fc9, 0x6fc9, ENC_GB_2312 },
+{ 0x6fca, 0x6fca, ENC_KSC_5601 },
+{ 0x6fd1, 0x6fd2, ENC_GB_2312 },
+{ 0x6fd4, 0x6fd4, ENC_JIS_0208 },
+{ 0x6fd5, 0x6fd5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fd8, 0x6fd8, ENC_JIS_0208 },
+{ 0x6fda, 0x6fda, ENC_KSC_5601 },
+{ 0x6fdb, 0x6fdb, ENC_JIS_0208 },
+{ 0x6fde, 0x6fde, ENC_GB_2312 },
+{ 0x6fdf, 0x6fdf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fe0, 0x6fe1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fe4, 0x6fe4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fe9, 0x6fe9, ENC_KSC_5601 },
+{ 0x6feb, 0x6fec, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6fee, 0x6fee, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x6fef, 0x6fef, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ff1, 0x6ff1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x6ff3, 0x6ff3, ENC_JIS_0208 },
+{ 0x6ff6, 0x6ff6, ENC_JIS_0208 },
+{ 0x6ffa, 0x6ffa, ENC_JIS_0208 },
+{ 0x6ffe, 0x6ffe, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7001, 0x7001, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7005, 0x7006, ENC_KSC_5601 },
+{ 0x7009, 0x7009, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x700b, 0x700b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x700f, 0x700f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7011, 0x7011, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7015, 0x7015, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7018, 0x7018, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x701a, 0x701b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x701c, 0x701c, ENC_KSC_5601 },
+{ 0x701d, 0x701f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7023, 0x7023, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7026, 0x7026, ENC_JIS_0208 },
+{ 0x7027, 0x7027, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7028, 0x7028, ENC_KSC_5601 },
+{ 0x702c, 0x702c, ENC_JIS_0208 },
+{ 0x702f, 0x702f, ENC_KSC_5601 },
+{ 0x7030, 0x7030, ENC_JIS_0208 },
+{ 0x7032, 0x7032, ENC_JIS_0208 },
+{ 0x7035, 0x7035, ENC_GB_2312 },
+{ 0x7037, 0x7037, ENC_KSC_5601 },
+{ 0x7039, 0x7039, ENC_GB_2312 },
+{ 0x703e, 0x703e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x704c, 0x704c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x704f, 0x704f, ENC_GB_2312 },
+{ 0x7050, 0x7050, ENC_KSC_5601 },
+{ 0x7051, 0x7051, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7058, 0x7058, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x705d, 0x705d, ENC_KSC_5601 },
+{ 0x705e, 0x705e, ENC_GB_2312 },
+{ 0x7063, 0x7063, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x706b, 0x706b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x706c, 0x706d, ENC_GB_2312 },
+{ 0x706f, 0x706f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7070, 0x7070, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7075, 0x7076, ENC_GB_2312 },
+{ 0x7078, 0x7078, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x707c, 0x707c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x707d, 0x707d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x707e, 0x7080, ENC_GB_2312 },
+{ 0x7085, 0x7085, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7089, 0x7089, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x708a, 0x708a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x708e, 0x708e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7092, 0x7092, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7094, 0x7096, ENC_GB_2312 },
+{ 0x7098, 0x7098, ENC_KSC_5601 },
+{ 0x7099, 0x7099, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x709a, 0x709a, ENC_KSC_5601 },
+{ 0x709c, 0x709d, ENC_GB_2312 },
+{ 0x70a1, 0x70a1, ENC_KSC_5601 },
+{ 0x70a4, 0x70a4, ENC_KSC_5601 },
+{ 0x70ab, 0x70ab, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x70ac, 0x70ad, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70ae, 0x70ae, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x70af, 0x70af, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70b1, 0x70b1, ENC_GB_2312 },
+{ 0x70b3, 0x70b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70b7, 0x70b7, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x70b8, 0x70b9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70ba, 0x70ba, ENC_JIS_0208 },
+{ 0x70bb, 0x70bd, ENC_GB_2312 },
+{ 0x70c0, 0x70c3, ENC_GB_2312 },
+{ 0x70c8, 0x70c8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70ca, 0x70ca, ENC_GB_2312 },
+{ 0x70cb, 0x70cb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70cf, 0x70cf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70d8, 0x70d8, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x70d9, 0x70d9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70db, 0x70db, ENC_GB_2312 },
+{ 0x70dd, 0x70dd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70df, 0x70df, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70e4, 0x70e4, ENC_GB_2312 },
+{ 0x70e6, 0x70e9, ENC_GB_2312 },
+{ 0x70eb, 0x70ed, ENC_GB_2312 },
+{ 0x70ef, 0x70ef, ENC_GB_2312 },
+{ 0x70f1, 0x70f1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70f7, 0x70f7, ENC_GB_2312 },
+{ 0x70f9, 0x70f9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x70fd, 0x70fd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7104, 0x7104, ENC_KSC_5601 },
+{ 0x7109, 0x7109, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x710a, 0x710a, ENC_GB_2312 },
+{ 0x710c, 0x710c, ENC_KSC_5601 },
+{ 0x7110, 0x7110, ENC_GB_2312 },
+{ 0x7113, 0x7113, ENC_GB_2312 },
+{ 0x7114, 0x7114, ENC_JIS_0208 },
+{ 0x7115, 0x7116, ENC_GB_2312 },
+{ 0x7118, 0x7118, ENC_GB_2312 },
+{ 0x7119, 0x711a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x711c, 0x711c, ENC_JIS_0208 },
+{ 0x711e, 0x711e, ENC_KSC_5601 },
+{ 0x7121, 0x7121, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7126, 0x7126, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x712f, 0x712f, ENC_GB_2312 },
+{ 0x7130, 0x7130, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7131, 0x7131, ENC_GB_2312 },
+{ 0x7136, 0x7136, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x713c, 0x713c, ENC_JIS_0208 },
+{ 0x7145, 0x7145, ENC_GB_2312 },
+{ 0x7147, 0x7147, ENC_KSC_5601 },
+{ 0x7149, 0x7149, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x714a, 0x714a, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x714c, 0x714c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x714e, 0x714e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7150, 0x7150, ENC_KSC_5601 },
+{ 0x7155, 0x7155, ENC_JIS_0208 },
+{ 0x7156, 0x7156, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7159, 0x7159, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x715c, 0x715c, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x715e, 0x715e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7162, 0x7162, ENC_JIS_0208 },
+{ 0x7164, 0x7164, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7165, 0x7165, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7166, 0x7167, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7168, 0x7168, ENC_GB_2312 },
+{ 0x7169, 0x7169, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x716c, 0x716c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x716e, 0x716e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7172, 0x7173, ENC_GB_2312 },
+{ 0x7178, 0x7178, ENC_GB_2312 },
+{ 0x717a, 0x717a, ENC_GB_2312 },
+{ 0x717d, 0x717d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7184, 0x7184, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7188, 0x7188, ENC_JIS_0208 },
+{ 0x7189, 0x7189, ENC_KSC_5601 },
+{ 0x718a, 0x718a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x718f, 0x718f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7192, 0x7192, ENC_KSC_5601 },
+{ 0x7194, 0x7194, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7195, 0x7195, ENC_JIS_0208 },
+{ 0x7198, 0x7198, ENC_GB_2312 },
+{ 0x7199, 0x7199, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x719f, 0x719f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71a0, 0x71a0, ENC_GB_2312 },
+{ 0x71a2, 0x71a2, ENC_KSC_5601 },
+{ 0x71a8, 0x71a8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x71ac, 0x71ac, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71b1, 0x71b1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71b3, 0x71b3, ENC_GB_2312 },
+{ 0x71b5, 0x71b5, ENC_GB_2312 },
+{ 0x71b9, 0x71b9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71ba, 0x71ba, ENC_KSC_5601 },
+{ 0x71be, 0x71be, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71c1, 0x71c1, ENC_KSC_5601 },
+{ 0x71c3, 0x71c3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71c8, 0x71c9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71ce, 0x71ce, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71d0, 0x71d0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71d2, 0x71d2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71d4, 0x71d5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71d7, 0x71d7, ENC_JIS_0208 },
+{ 0x71df, 0x71df, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71e0, 0x71e0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x71e5, 0x71e5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71e6, 0x71e6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71e7, 0x71e7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71ec, 0x71ec, ENC_JIS_0208 },
+{ 0x71ed, 0x71ed, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71ee, 0x71ee, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71f5, 0x71f5, ENC_JIS_0208 },
+{ 0x71f9, 0x71f9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x71fb, 0x71fc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x71fe, 0x71fe, ENC_KSC_5601 },
+{ 0x71ff, 0x71ff, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7200, 0x7200, ENC_KSC_5601 },
+{ 0x7206, 0x7206, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x720d, 0x720d, ENC_JIS_0208 },
+{ 0x7210, 0x7210, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x721b, 0x721b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x721d, 0x721d, ENC_GB_2312 },
+{ 0x7228, 0x7228, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x722a, 0x722a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x722c, 0x722c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x722d, 0x722d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7230, 0x7230, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7231, 0x7231, ENC_GB_2312 },
+{ 0x7232, 0x7232, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7235, 0x7236, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7237, 0x7239, ENC_GB_2312 },
+{ 0x723a, 0x723a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x723b, 0x723b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x723c, 0x723c, ENC_JIS_0208 },
+{ 0x723d, 0x723d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x723e, 0x723e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x723f, 0x723f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7240, 0x7240, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7246, 0x7246, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7247, 0x7248, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x724b, 0x724b, ENC_JIS_0208 },
+{ 0x724c, 0x724c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x724d, 0x724d, ENC_GB_2312 },
+{ 0x7252, 0x7252, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7256, 0x7256, ENC_GB_2312 },
+{ 0x7258, 0x7258, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7259, 0x7259, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x725b, 0x725b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x725d, 0x725d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x725f, 0x725f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7261, 0x7262, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7266, 0x7266, ENC_GB_2312 },
+{ 0x7267, 0x7267, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7269, 0x7269, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x726e, 0x726f, ENC_GB_2312 },
+{ 0x7272, 0x7272, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7274, 0x7274, ENC_JIS_0208 },
+{ 0x7275, 0x7275, ENC_GB_2312 },
+{ 0x7279, 0x7279, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x727a, 0x727a, ENC_GB_2312 },
+{ 0x727d, 0x727d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x727e, 0x727e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x727f, 0x727f, ENC_GB_2312 },
+{ 0x7280, 0x7281, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7282, 0x7282, ENC_JIS_0208 },
+{ 0x7284, 0x7284, ENC_GB_2312 },
+{ 0x7287, 0x7287, ENC_JIS_0208 },
+{ 0x728a, 0x728b, ENC_GB_2312 },
+{ 0x728d, 0x728d, ENC_GB_2312 },
+{ 0x728f, 0x728f, ENC_GB_2312 },
+{ 0x7292, 0x7292, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7296, 0x7296, ENC_JIS_0208 },
+{ 0x729f, 0x729f, ENC_GB_2312 },
+{ 0x72a0, 0x72a0, ENC_JIS_0208 },
+{ 0x72a2, 0x72a2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72a7, 0x72a7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72ac, 0x72ac, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72ad, 0x72ad, ENC_GB_2312 },
+{ 0x72af, 0x72af, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72b0, 0x72b0, ENC_GB_2312 },
+{ 0x72b2, 0x72b2, ENC_JIS_0208 },
+{ 0x72b4, 0x72b4, ENC_GB_2312 },
+{ 0x72b6, 0x72b6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x72b7, 0x72b8, ENC_GB_2312 },
+{ 0x72b9, 0x72b9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x72c0, 0x72c0, ENC_KSC_5601 },
+{ 0x72c1, 0x72c1, ENC_GB_2312 },
+{ 0x72c2, 0x72c2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72c3, 0x72c3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x72c4, 0x72c4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72c6, 0x72c6, ENC_JIS_0208 },
+{ 0x72c8, 0x72c8, ENC_GB_2312 },
+{ 0x72cd, 0x72cd, ENC_GB_2312 },
+{ 0x72ce, 0x72ce, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72d0, 0x72d0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72d2, 0x72d2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x72d7, 0x72d7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72d9, 0x72d9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72db, 0x72db, ENC_JIS_0208 },
+{ 0x72de, 0x72de, ENC_GB_2312 },
+{ 0x72e0, 0x72e0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x72e1, 0x72e1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72e2, 0x72e2, ENC_JIS_0208 },
+{ 0x72e8, 0x72e8, ENC_GB_2312 },
+{ 0x72e9, 0x72e9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72ec, 0x72ed, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x72ee, 0x72f4, ENC_GB_2312 },
+{ 0x72f7, 0x72f7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x72f8, 0x72f8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72f9, 0x72f9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72fa, 0x72fb, ENC_GB_2312 },
+{ 0x72fc, 0x72fc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x72fd, 0x72fd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7301, 0x7301, ENC_GB_2312 },
+{ 0x7303, 0x7303, ENC_GB_2312 },
+{ 0x730a, 0x730a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x730e, 0x730e, ENC_GB_2312 },
+{ 0x7313, 0x7313, ENC_GB_2312 },
+{ 0x7315, 0x7315, ENC_GB_2312 },
+{ 0x7316, 0x7316, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7317, 0x7317, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x731b, 0x731d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x731e, 0x731e, ENC_GB_2312 },
+{ 0x731f, 0x731f, ENC_JIS_0208 },
+{ 0x7321, 0x7322, ENC_GB_2312 },
+{ 0x7325, 0x7325, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7329, 0x732b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x732c, 0x732c, ENC_GB_2312 },
+{ 0x732e, 0x732e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x732f, 0x732f, ENC_JIS_0208 },
+{ 0x7331, 0x7331, ENC_GB_2312 },
+{ 0x7334, 0x7334, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7336, 0x7336, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7337, 0x7337, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7338, 0x7339, ENC_GB_2312 },
+{ 0x733e, 0x733f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7344, 0x7345, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x734d, 0x734d, ENC_GB_2312 },
+{ 0x734e, 0x734f, ENC_JIS_0208 },
+{ 0x7350, 0x7350, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7352, 0x7352, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7357, 0x7357, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7360, 0x7360, ENC_GB_2312 },
+{ 0x7363, 0x7363, ENC_JIS_0208 },
+{ 0x7368, 0x7368, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x736a, 0x736a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x736c, 0x736d, ENC_GB_2312 },
+{ 0x736f, 0x736f, ENC_GB_2312 },
+{ 0x7370, 0x7370, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7372, 0x7372, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7375, 0x7375, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7378, 0x7378, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x737a, 0x737b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x737e, 0x737e, ENC_GB_2312 },
+{ 0x7384, 0x7384, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7386, 0x7386, ENC_KSC_5601 },
+{ 0x7387, 0x7387, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7389, 0x7389, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x738b, 0x738b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x738e, 0x738e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7391, 0x7391, ENC_GB_2312 },
+{ 0x7394, 0x7394, ENC_KSC_5601 },
+{ 0x7396, 0x7396, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7397, 0x7398, ENC_KSC_5601 },
+{ 0x739b, 0x739b, ENC_GB_2312 },
+{ 0x739f, 0x739f, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x73a2, 0x73a2, ENC_GB_2312 },
+{ 0x73a7, 0x73a7, ENC_KSC_5601 },
+{ 0x73a9, 0x73a9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73ab, 0x73ab, ENC_GB_2312 },
+{ 0x73ad, 0x73ad, ENC_KSC_5601 },
+{ 0x73ae, 0x73b0, ENC_GB_2312 },
+{ 0x73b2, 0x73b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73b7, 0x73b7, ENC_GB_2312 },
+{ 0x73b9, 0x73b9, ENC_KSC_5601 },
+{ 0x73ba, 0x73ba, ENC_GB_2312 },
+{ 0x73bb, 0x73bb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x73c0, 0x73c0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73c2, 0x73c2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73c8, 0x73c8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x73c9, 0x73c9, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x73ca, 0x73ca, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73cc, 0x73cc, ENC_KSC_5601 },
+{ 0x73cd, 0x73cd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73ce, 0x73ce, ENC_JIS_0208 },
+{ 0x73cf, 0x73cf, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x73d0, 0x73d1, ENC_GB_2312 },
+{ 0x73d6, 0x73d6, ENC_KSC_5601 },
+{ 0x73d9, 0x73d9, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x73dd, 0x73dd, ENC_KSC_5601 },
+{ 0x73de, 0x73de, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73e0, 0x73e0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73e3, 0x73e4, ENC_KSC_5601 },
+{ 0x73e5, 0x73e5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73e6, 0x73e6, ENC_KSC_5601 },
+{ 0x73e7, 0x73e7, ENC_GB_2312 },
+{ 0x73e9, 0x73e9, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x73ea, 0x73ea, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73ed, 0x73ed, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x73ee, 0x73ee, ENC_JIS_0208 },
+{ 0x73f1, 0x73f1, ENC_JIS_0208 },
+{ 0x73f2, 0x73f2, ENC_GB_2312 },
+{ 0x73f7, 0x73f7, ENC_KSC_5601 },
+{ 0x73f8, 0x73f8, ENC_JIS_0208 },
+{ 0x73f9, 0x73f9, ENC_KSC_5601 },
+{ 0x73fd, 0x73fd, ENC_KSC_5601 },
+{ 0x73fe, 0x73fe, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7401, 0x7401, ENC_KSC_5601 },
+{ 0x7403, 0x7403, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7405, 0x7406, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7407, 0x7407, ENC_KSC_5601 },
+{ 0x7409, 0x7409, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x740a, 0x740a, ENC_GB_2312 },
+{ 0x740f, 0x7410, ENC_GB_2312 },
+{ 0x7413, 0x7413, ENC_KSC_5601 },
+{ 0x741a, 0x741a, ENC_GB_2312 },
+{ 0x741b, 0x741b, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7420, 0x7421, ENC_KSC_5601 },
+{ 0x7422, 0x7422, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7425, 0x7425, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7426, 0x7426, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7428, 0x7428, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x742a, 0x742a, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x742b, 0x742b, ENC_KSC_5601 },
+{ 0x742c, 0x742c, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x742e, 0x742e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x742f, 0x742f, ENC_KSC_5601 },
+{ 0x7430, 0x7430, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7432, 0x7432, ENC_JIS_0208 },
+{ 0x7433, 0x7436, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7438, 0x7438, ENC_KSC_5601 },
+{ 0x743a, 0x743a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x743c, 0x743c, ENC_GB_2312 },
+{ 0x743f, 0x743f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7440, 0x7440, ENC_KSC_5601 },
+{ 0x7441, 0x7441, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7443, 0x7444, ENC_KSC_5601 },
+{ 0x744b, 0x744b, ENC_KSC_5601 },
+{ 0x7455, 0x7455, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7457, 0x7457, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7459, 0x745c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x745e, 0x745f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7460, 0x7460, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7462, 0x7462, ENC_KSC_5601 },
+{ 0x7463, 0x7463, ENC_JIS_0208 },
+{ 0x7464, 0x7464, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7465, 0x7465, ENC_KSC_5601 },
+{ 0x7468, 0x7468, ENC_KSC_5601 },
+{ 0x7469, 0x746a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x746d, 0x746d, ENC_GB_2312 },
+{ 0x746f, 0x746f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7470, 0x7470, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7473, 0x7473, ENC_JIS_0208 },
+{ 0x7476, 0x7476, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7477, 0x7477, ENC_GB_2312 },
+{ 0x747e, 0x747e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7480, 0x7481, ENC_GB_2312 },
+{ 0x7482, 0x7482, ENC_KSC_5601 },
+{ 0x7483, 0x7483, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7487, 0x7487, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7489, 0x7489, ENC_KSC_5601 },
+{ 0x748b, 0x748b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x748e, 0x748e, ENC_GB_2312 },
+{ 0x7490, 0x7490, ENC_GB_2312 },
+{ 0x7498, 0x7498, ENC_KSC_5601 },
+{ 0x749c, 0x749c, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x749e, 0x749e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x749f, 0x749f, ENC_KSC_5601 },
+{ 0x74a1, 0x74a1, ENC_KSC_5601 },
+{ 0x74a2, 0x74a2, ENC_JIS_0208 },
+{ 0x74a3, 0x74a3, ENC_KSC_5601 },
+{ 0x74a5, 0x74a5, ENC_KSC_5601 },
+{ 0x74a7, 0x74a7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74a8, 0x74a8, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x74a9, 0x74a9, ENC_GB_2312 },
+{ 0x74aa, 0x74aa, ENC_KSC_5601 },
+{ 0x74b0, 0x74b0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74b2, 0x74b2, ENC_KSC_5601 },
+{ 0x74b5, 0x74b5, ENC_KSC_5601 },
+{ 0x74b9, 0x74b9, ENC_KSC_5601 },
+{ 0x74ba, 0x74ba, ENC_GB_2312 },
+{ 0x74bd, 0x74bd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74bf, 0x74bf, ENC_KSC_5601 },
+{ 0x74c6, 0x74c6, ENC_KSC_5601 },
+{ 0x74ca, 0x74ca, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74cf, 0x74cf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74d2, 0x74d2, ENC_GB_2312 },
+{ 0x74d4, 0x74d4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74d8, 0x74d8, ENC_KSC_5601 },
+{ 0x74da, 0x74da, ENC_KSC_5601 },
+{ 0x74dc, 0x74dc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74de, 0x74de, ENC_GB_2312 },
+{ 0x74e0, 0x74e0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74e2, 0x74e3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74e4, 0x74e4, ENC_GB_2312 },
+{ 0x74e6, 0x74e6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74e7, 0x74e7, ENC_JIS_0208 },
+{ 0x74e9, 0x74e9, ENC_JIS_0208 },
+{ 0x74ee, 0x74ee, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74ef, 0x74ef, ENC_GB_2312 },
+{ 0x74f0, 0x74f2, ENC_JIS_0208 },
+{ 0x74f4, 0x74f4, ENC_GB_2312 },
+{ 0x74f6, 0x74f6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x74f7, 0x74f7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x74f8, 0x74f8, ENC_JIS_0208 },
+{ 0x74ff, 0x74ff, ENC_GB_2312 },
+{ 0x7501, 0x7501, ENC_KSC_5601 },
+{ 0x7503, 0x7503, ENC_JIS_0208 },
+{ 0x7504, 0x7504, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7505, 0x7505, ENC_JIS_0208 },
+{ 0x750c, 0x750c, ENC_JIS_0208 },
+{ 0x750d, 0x750d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x750e, 0x750e, ENC_JIS_0208 },
+{ 0x750f, 0x750f, ENC_GB_2312 },
+{ 0x7511, 0x7511, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7513, 0x7513, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7515, 0x7515, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7518, 0x7518, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7519, 0x7519, ENC_GB_2312 },
+{ 0x751a, 0x751a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x751b, 0x751b, ENC_KSC_5601 },
+{ 0x751c, 0x751c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x751e, 0x751e, ENC_JIS_0208 },
+{ 0x751f, 0x751f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7523, 0x7523, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7525, 0x7525, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7526, 0x7526, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7528, 0x7528, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7529, 0x7529, ENC_GB_2312 },
+{ 0x752b, 0x752c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x752d, 0x752d, ENC_GB_2312 },
+{ 0x752f, 0x752f, ENC_GB_2312 },
+{ 0x7530, 0x7533, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7535, 0x7535, ENC_GB_2312 },
+{ 0x7537, 0x7538, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x753a, 0x753a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x753b, 0x753b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x753c, 0x753c, ENC_JIS_0208 },
+{ 0x753e, 0x753e, ENC_GB_2312 },
+{ 0x7540, 0x7540, ENC_GB_2312 },
+{ 0x7544, 0x7544, ENC_JIS_0208 },
+{ 0x7545, 0x7545, ENC_GB_2312 },
+{ 0x7546, 0x7546, ENC_JIS_0208 },
+{ 0x7547, 0x7547, ENC_KSC_5601 },
+{ 0x7548, 0x7548, ENC_GB_2312 },
+{ 0x7549, 0x754a, ENC_JIS_0208 },
+{ 0x754b, 0x754b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x754c, 0x754c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x754d, 0x754d, ENC_JIS_0208 },
+{ 0x754e, 0x754e, ENC_GB_2312 },
+{ 0x754f, 0x754f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7551, 0x7551, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7553, 0x7553, ENC_KSC_5601 },
+{ 0x7554, 0x7554, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7559, 0x7559, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x755a, 0x755a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x755b, 0x755c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x755d, 0x755d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7560, 0x7560, ENC_JIS_0208 },
+{ 0x7562, 0x7562, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7564, 0x7564, ENC_JIS_0208 },
+{ 0x7565, 0x7566, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7567, 0x7567, ENC_JIS_0208 },
+{ 0x7569, 0x7569, ENC_JIS_0208 },
+{ 0x756a, 0x756a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x756b, 0x756b, ENC_JIS_0208 },
+{ 0x756d, 0x756d, ENC_JIS_0208 },
+{ 0x756f, 0x756f, ENC_KSC_5601 },
+{ 0x7570, 0x7570, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7572, 0x7572, ENC_GB_2312 },
+{ 0x7573, 0x7573, ENC_JIS_0208 },
+{ 0x7574, 0x7574, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7575, 0x7575, ENC_KSC_5601 },
+{ 0x7576, 0x7576, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7577, 0x7577, ENC_JIS_0208 },
+{ 0x7578, 0x7578, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7579, 0x7579, ENC_GB_2312 },
+{ 0x757a, 0x757a, ENC_KSC_5601 },
+{ 0x757f, 0x757f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7582, 0x7582, ENC_JIS_0208 },
+{ 0x7583, 0x7583, ENC_GB_2312 },
+{ 0x7586, 0x7586, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7587, 0x7587, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7589, 0x7589, ENC_JIS_0208 },
+{ 0x758a, 0x758a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x758b, 0x758b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x758e, 0x758e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x758f, 0x758f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7591, 0x7591, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7592, 0x7592, ENC_GB_2312 },
+{ 0x7594, 0x7594, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7596, 0x7597, ENC_GB_2312 },
+{ 0x7599, 0x7599, ENC_GB_2312 },
+{ 0x759a, 0x759a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x759d, 0x759d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x759f, 0x75a1, ENC_GB_2312 },
+{ 0x75a3, 0x75a3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x75a4, 0x75a4, ENC_GB_2312 },
+{ 0x75a5, 0x75a5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75ab, 0x75ab, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75ac, 0x75ac, ENC_GB_2312 },
+{ 0x75ae, 0x75b0, ENC_GB_2312 },
+{ 0x75b1, 0x75b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75b4, 0x75b4, ENC_GB_2312 },
+{ 0x75b5, 0x75b5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75b8, 0x75b9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75bc, 0x75be, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75c2, 0x75c2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75c3, 0x75c3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x75c4, 0x75c4, ENC_GB_2312 },
+{ 0x75c5, 0x75c5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75c7, 0x75c7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75c8, 0x75c9, ENC_GB_2312 },
+{ 0x75ca, 0x75ca, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x75cd, 0x75cd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75d2, 0x75d2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75d4, 0x75d5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75d6, 0x75d6, ENC_GB_2312 },
+{ 0x75d8, 0x75d8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75d9, 0x75d9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75db, 0x75db, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75de, 0x75de, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x75e2, 0x75e2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75e3, 0x75e3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x75e4, 0x75e4, ENC_GB_2312 },
+{ 0x75e6, 0x75e8, ENC_GB_2312 },
+{ 0x75e9, 0x75e9, ENC_JIS_0208 },
+{ 0x75ea, 0x75eb, ENC_GB_2312 },
+{ 0x75f0, 0x75f0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75f1, 0x75f1, ENC_GB_2312 },
+{ 0x75f2, 0x75f2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75f3, 0x75f3, ENC_JIS_0208 },
+{ 0x75f4, 0x75f4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75f9, 0x75f9, ENC_GB_2312 },
+{ 0x75fa, 0x75fa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75fc, 0x75fc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x75fe, 0x75fe, ENC_JIS_0208 },
+{ 0x75ff, 0x75ff, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7600, 0x7600, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7601, 0x7601, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7603, 0x7603, ENC_GB_2312 },
+{ 0x7605, 0x7605, ENC_GB_2312 },
+{ 0x7609, 0x7609, ENC_JIS_0208 },
+{ 0x760a, 0x760a, ENC_GB_2312 },
+{ 0x760b, 0x760b, ENC_JIS_0208 },
+{ 0x760c, 0x760c, ENC_GB_2312 },
+{ 0x760d, 0x760d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7610, 0x7610, ENC_GB_2312 },
+{ 0x7615, 0x7615, ENC_GB_2312 },
+{ 0x7617, 0x7618, ENC_GB_2312 },
+{ 0x7619, 0x7619, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x761b, 0x761b, ENC_GB_2312 },
+{ 0x761f, 0x7620, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7621, 0x7621, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7622, 0x7622, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7624, 0x7624, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7625, 0x7625, ENC_GB_2312 },
+{ 0x7626, 0x7626, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7627, 0x7627, ENC_JIS_0208 },
+{ 0x7629, 0x762b, ENC_GB_2312 },
+{ 0x762d, 0x762d, ENC_GB_2312 },
+{ 0x7630, 0x7630, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7633, 0x7633, ENC_GB_2312 },
+{ 0x7634, 0x7634, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7635, 0x7635, ENC_GB_2312 },
+{ 0x7638, 0x7638, ENC_GB_2312 },
+{ 0x763b, 0x763b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x763c, 0x763c, ENC_GB_2312 },
+{ 0x763e, 0x7640, ENC_GB_2312 },
+{ 0x7642, 0x7642, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7643, 0x7643, ENC_GB_2312 },
+{ 0x7646, 0x7648, ENC_JIS_0208 },
+{ 0x764c, 0x764c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x764d, 0x764d, ENC_GB_2312 },
+{ 0x764e, 0x764e, ENC_KSC_5601 },
+{ 0x7652, 0x7652, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7654, 0x7654, ENC_GB_2312 },
+{ 0x7656, 0x7656, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7658, 0x7658, ENC_JIS_0208 },
+{ 0x765c, 0x765c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x765e, 0x765e, ENC_GB_2312 },
+{ 0x7661, 0x7661, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7662, 0x7662, ENC_JIS_0208 },
+{ 0x7663, 0x7663, ENC_GB_2312 },
+{ 0x7664, 0x7664, ENC_KSC_5601 },
+{ 0x7667, 0x7668, ENC_JIS_0208 },
+{ 0x7669, 0x7669, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x766a, 0x766a, ENC_JIS_0208 },
+{ 0x766b, 0x766b, ENC_GB_2312 },
+{ 0x766c, 0x766c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x766f, 0x766f, ENC_GB_2312 },
+{ 0x7670, 0x7670, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7672, 0x7672, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7676, 0x7676, ENC_JIS_0208 },
+{ 0x7678, 0x7678, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x767a, 0x767a, ENC_JIS_0208 },
+{ 0x767b, 0x767b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x767c, 0x767c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x767d, 0x767e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7680, 0x7680, ENC_JIS_0208 },
+{ 0x7682, 0x7682, ENC_GB_2312 },
+{ 0x7683, 0x7683, ENC_JIS_0208 },
+{ 0x7684, 0x7684, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7686, 0x7687, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7688, 0x7688, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x768b, 0x768b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x768e, 0x768e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7690, 0x7690, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7691, 0x7691, ENC_GB_2312 },
+{ 0x7693, 0x7693, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7696, 0x7696, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7699, 0x7699, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x769a, 0x769a, ENC_JIS_0208 },
+{ 0x76a4, 0x76a4, ENC_GB_2312 },
+{ 0x76ae, 0x76ae, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76b0, 0x76b0, ENC_JIS_0208 },
+{ 0x76b1, 0x76b2, ENC_GB_2312 },
+{ 0x76b4, 0x76b4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x76b7, 0x76b9, ENC_JIS_0208 },
+{ 0x76ba, 0x76ba, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76bf, 0x76bf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76c2, 0x76c2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76c3, 0x76c3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76c5, 0x76c5, ENC_GB_2312 },
+{ 0x76c6, 0x76c6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76c8, 0x76c8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76ca, 0x76ca, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76cd, 0x76cd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x76ce, 0x76d1, ENC_GB_2312 },
+{ 0x76d2, 0x76d2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76d4, 0x76d4, ENC_GB_2312 },
+{ 0x76d6, 0x76d6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76d7, 0x76d7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x76d8, 0x76d8, ENC_GB_2312 },
+{ 0x76db, 0x76db, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76dc, 0x76dc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76de, 0x76de, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76df, 0x76df, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76e1, 0x76e1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76e3, 0x76e4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76e5, 0x76e5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x76e7, 0x76e7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76ea, 0x76ea, ENC_JIS_0208 },
+{ 0x76ee, 0x76ee, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76ef, 0x76ef, ENC_GB_2312 },
+{ 0x76f1, 0x76f1, ENC_GB_2312 },
+{ 0x76f2, 0x76f2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76f4, 0x76f4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76f8, 0x76f8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x76f9, 0x76f9, ENC_GB_2312 },
+{ 0x76fb, 0x76fb, ENC_JIS_0208 },
+{ 0x76fc, 0x76fc, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x76fe, 0x76fe, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7701, 0x7701, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7704, 0x7704, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7707, 0x7707, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7708, 0x7709, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x770b, 0x770b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x770c, 0x770c, ENC_JIS_0208 },
+{ 0x770d, 0x770d, ENC_GB_2312 },
+{ 0x7719, 0x771a, ENC_GB_2312 },
+{ 0x771b, 0x771b, ENC_JIS_0208 },
+{ 0x771e, 0x771e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x771f, 0x771f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7720, 0x7720, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7722, 0x7722, ENC_GB_2312 },
+{ 0x7724, 0x7725, ENC_JIS_0208 },
+{ 0x7726, 0x7726, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7728, 0x7728, ENC_GB_2312 },
+{ 0x7729, 0x7729, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x772d, 0x772d, ENC_GB_2312 },
+{ 0x772f, 0x772f, ENC_GB_2312 },
+{ 0x7735, 0x7736, ENC_GB_2312 },
+{ 0x7737, 0x7738, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x773a, 0x773a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x773c, 0x773c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7740, 0x7740, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7741, 0x7741, ENC_GB_2312 },
+{ 0x7743, 0x7743, ENC_GB_2312 },
+{ 0x7747, 0x7747, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x774d, 0x774d, ENC_KSC_5601 },
+{ 0x7750, 0x7751, ENC_GB_2312 },
+{ 0x775a, 0x775a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x775b, 0x775b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7761, 0x7761, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7762, 0x7762, ENC_GB_2312 },
+{ 0x7763, 0x7763, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7765, 0x7765, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7766, 0x7766, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7768, 0x7768, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x776b, 0x776b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x776c, 0x776c, ENC_GB_2312 },
+{ 0x7779, 0x7779, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x777d, 0x777d, ENC_GB_2312 },
+{ 0x777e, 0x777f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7780, 0x7780, ENC_GB_2312 },
+{ 0x7784, 0x7785, ENC_GB_2312 },
+{ 0x778b, 0x778b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x778c, 0x778d, ENC_GB_2312 },
+{ 0x778e, 0x778e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7791, 0x7791, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7792, 0x7792, ENC_GB_2312 },
+{ 0x779e, 0x779e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x779f, 0x779f, ENC_GB_2312 },
+{ 0x77a0, 0x77a0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x77a2, 0x77a2, ENC_GB_2312 },
+{ 0x77a5, 0x77a5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77a7, 0x77a7, ENC_GB_2312 },
+{ 0x77a9, 0x77aa, ENC_GB_2312 },
+{ 0x77ac, 0x77ac, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77ad, 0x77ad, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77b0, 0x77b0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77b3, 0x77b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77b5, 0x77b5, ENC_GB_2312 },
+{ 0x77b6, 0x77b6, ENC_JIS_0208 },
+{ 0x77b9, 0x77b9, ENC_JIS_0208 },
+{ 0x77bb, 0x77bb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77bc, 0x77bc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77bd, 0x77bd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x77bf, 0x77bf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77c7, 0x77c7, ENC_JIS_0208 },
+{ 0x77cd, 0x77cd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x77d7, 0x77d7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77da, 0x77da, ENC_JIS_0208 },
+{ 0x77db, 0x77dc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77e2, 0x77e3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77e5, 0x77e5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77e7, 0x77e7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x77e9, 0x77e9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77eb, 0x77ec, ENC_GB_2312 },
+{ 0x77ed, 0x77ee, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77ef, 0x77ef, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77f3, 0x77f3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x77f6, 0x77f6, ENC_GB_2312 },
+{ 0x77f8, 0x77f8, ENC_GB_2312 },
+{ 0x77fc, 0x77fc, ENC_JIS_0208 },
+{ 0x77fd, 0x7801, ENC_GB_2312 },
+{ 0x7802, 0x7802, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7809, 0x7809, ENC_GB_2312 },
+{ 0x780c, 0x780c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x780d, 0x780d, ENC_GB_2312 },
+{ 0x7811, 0x7811, ENC_GB_2312 },
+{ 0x7812, 0x7812, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7814, 0x7814, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7815, 0x7815, ENC_JIS_0208 },
+{ 0x7816, 0x7818, ENC_GB_2312 },
+{ 0x781a, 0x781a, ENC_GB_2312 },
+{ 0x781c, 0x781d, ENC_GB_2312 },
+{ 0x781f, 0x781f, ENC_GB_2312 },
+{ 0x7820, 0x7820, ENC_JIS_0208 },
+{ 0x7823, 0x7823, ENC_GB_2312 },
+{ 0x7825, 0x7827, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7829, 0x7829, ENC_GB_2312 },
+{ 0x782c, 0x782c, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x782d, 0x782d, ENC_GB_2312 },
+{ 0x7830, 0x7830, ENC_GB_2312 },
+{ 0x7832, 0x7832, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7834, 0x7834, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7837, 0x7839, ENC_GB_2312 },
+{ 0x783a, 0x783a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x783b, 0x783c, ENC_GB_2312 },
+{ 0x783e, 0x783e, ENC_GB_2312 },
+{ 0x783f, 0x783f, ENC_JIS_0208 },
+{ 0x7840, 0x7840, ENC_GB_2312 },
+{ 0x7845, 0x7845, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7847, 0x7847, ENC_GB_2312 },
+{ 0x784c, 0x784c, ENC_GB_2312 },
+{ 0x784e, 0x784e, ENC_GB_2312 },
+{ 0x784f, 0x784f, ENC_KSC_5601 },
+{ 0x7850, 0x7850, ENC_GB_2312 },
+{ 0x7852, 0x7852, ENC_GB_2312 },
+{ 0x7855, 0x7857, ENC_GB_2312 },
+{ 0x785d, 0x785d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x786a, 0x786a, ENC_GB_2312 },
+{ 0x786b, 0x786c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x786d, 0x786e, ENC_GB_2312 },
+{ 0x786f, 0x786f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7872, 0x7872, ENC_JIS_0208 },
+{ 0x7874, 0x7874, ENC_JIS_0208 },
+{ 0x7877, 0x7877, ENC_GB_2312 },
+{ 0x787c, 0x787c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7881, 0x7881, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7886, 0x7886, ENC_JIS_0208 },
+{ 0x7887, 0x7887, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7889, 0x7889, ENC_GB_2312 },
+{ 0x788c, 0x788e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7891, 0x7891, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7893, 0x7893, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7895, 0x7895, ENC_JIS_0208 },
+{ 0x7897, 0x7897, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7898, 0x7898, ENC_GB_2312 },
+{ 0x789a, 0x789a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x789b, 0x789c, ENC_GB_2312 },
+{ 0x789f, 0x789f, ENC_GB_2312 },
+{ 0x78a1, 0x78a1, ENC_GB_2312 },
+{ 0x78a3, 0x78a3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78a5, 0x78a5, ENC_GB_2312 },
+{ 0x78a7, 0x78a7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78a9, 0x78a9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78aa, 0x78aa, ENC_JIS_0208 },
+{ 0x78af, 0x78af, ENC_JIS_0208 },
+{ 0x78b0, 0x78b4, ENC_GB_2312 },
+{ 0x78b5, 0x78b5, ENC_JIS_0208 },
+{ 0x78b9, 0x78b9, ENC_GB_2312 },
+{ 0x78ba, 0x78ba, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78bb, 0x78bb, ENC_KSC_5601 },
+{ 0x78bc, 0x78bc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78be, 0x78be, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x78c1, 0x78c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78c5, 0x78c5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78c6, 0x78c6, ENC_JIS_0208 },
+{ 0x78c9, 0x78c9, ENC_GB_2312 },
+{ 0x78ca, 0x78cb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78ce, 0x78ce, ENC_KSC_5601 },
+{ 0x78d0, 0x78d0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78d1, 0x78d1, ENC_JIS_0208 },
+{ 0x78d4, 0x78d4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x78d5, 0x78d5, ENC_GB_2312 },
+{ 0x78d9, 0x78d9, ENC_GB_2312 },
+{ 0x78da, 0x78da, ENC_JIS_0208 },
+{ 0x78e7, 0x78e7, ENC_JIS_0208 },
+{ 0x78e8, 0x78e8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78ec, 0x78ec, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78ef, 0x78ef, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x78f2, 0x78f2, ENC_GB_2312 },
+{ 0x78f4, 0x78f4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x78f5, 0x78f5, ENC_KSC_5601 },
+{ 0x78f7, 0x78f7, ENC_GB_2312 },
+{ 0x78fa, 0x78fa, ENC_GB_2312 },
+{ 0x78fb, 0x78fb, ENC_KSC_5601 },
+{ 0x78fd, 0x78fd, ENC_JIS_0208 },
+{ 0x7901, 0x7901, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7905, 0x7905, ENC_GB_2312 },
+{ 0x7907, 0x7907, ENC_JIS_0208 },
+{ 0x790e, 0x790e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7911, 0x7912, ENC_JIS_0208 },
+{ 0x7913, 0x7913, ENC_GB_2312 },
+{ 0x7916, 0x7916, ENC_KSC_5601 },
+{ 0x7919, 0x7919, ENC_JIS_0208 },
+{ 0x791e, 0x791e, ENC_GB_2312 },
+{ 0x7924, 0x7924, ENC_GB_2312 },
+{ 0x7926, 0x7926, ENC_JIS_0208 },
+{ 0x792a, 0x792c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7934, 0x7934, ENC_GB_2312 },
+{ 0x793a, 0x793a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x793b, 0x793b, ENC_GB_2312 },
+{ 0x793c, 0x793c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x793e, 0x793e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7940, 0x7941, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7946, 0x7946, ENC_GB_2312 },
+{ 0x7947, 0x7947, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7948, 0x7949, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7950, 0x7950, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7953, 0x7953, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7955, 0x7955, ENC_JIS_0208 },
+{ 0x7956, 0x7957, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x795a, 0x795a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x795b, 0x795c, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x795d, 0x795e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x795f, 0x795f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7960, 0x7960, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7962, 0x7962, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7965, 0x7965, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7967, 0x7967, ENC_GB_2312 },
+{ 0x7968, 0x7968, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x796d, 0x796d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x796f, 0x796f, ENC_GB_2312 },
+{ 0x7977, 0x7977, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7978, 0x7978, ENC_GB_2312 },
+{ 0x797a, 0x797a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x797f, 0x797f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7980, 0x7980, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7981, 0x7981, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7984, 0x7985, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x798a, 0x798a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x798d, 0x798e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x798f, 0x798f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7991, 0x7991, ENC_KSC_5601 },
+{ 0x799a, 0x799a, ENC_GB_2312 },
+{ 0x799d, 0x799d, ENC_JIS_0208 },
+{ 0x79a6, 0x79a6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79a7, 0x79a7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79aa, 0x79aa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79ae, 0x79ae, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79b0, 0x79b0, ENC_JIS_0208 },
+{ 0x79b1, 0x79b1, ENC_KSC_5601 },
+{ 0x79b3, 0x79b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79b9, 0x79b9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79ba, 0x79ba, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x79bb, 0x79bb, ENC_GB_2312 },
+{ 0x79bd, 0x79be, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79bf, 0x79bf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79c0, 0x79c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79c3, 0x79c3, ENC_GB_2312 },
+{ 0x79c6, 0x79c6, ENC_GB_2312 },
+{ 0x79c9, 0x79c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79ca, 0x79ca, ENC_KSC_5601 },
+{ 0x79cb, 0x79cb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79cd, 0x79cd, ENC_GB_2312 },
+{ 0x79d1, 0x79d2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79d5, 0x79d5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79d8, 0x79d8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79df, 0x79df, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79e1, 0x79e1, ENC_JIS_0208 },
+{ 0x79e3, 0x79e3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x79e4, 0x79e4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79e6, 0x79e7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79e9, 0x79e9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79eb, 0x79eb, ENC_GB_2312 },
+{ 0x79ec, 0x79ec, ENC_JIS_0208 },
+{ 0x79ed, 0x79ed, ENC_GB_2312 },
+{ 0x79ef, 0x79ef, ENC_GB_2312 },
+{ 0x79f0, 0x79f0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x79f8, 0x79f8, ENC_GB_2312 },
+{ 0x79fb, 0x79fb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x79fd, 0x79fd, ENC_GB_2312 },
+{ 0x7a00, 0x7a00, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a02, 0x7a03, ENC_GB_2312 },
+{ 0x7a05, 0x7a05, ENC_KSC_5601 },
+{ 0x7a06, 0x7a06, ENC_GB_2312 },
+{ 0x7a08, 0x7a08, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a0b, 0x7a0b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a0d, 0x7a0d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a0e, 0x7a0e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7a14, 0x7a14, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a17, 0x7a17, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a18, 0x7a18, ENC_JIS_0208 },
+{ 0x7a19, 0x7a19, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a1a, 0x7a1a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a1c, 0x7a1c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a1e, 0x7a1e, ENC_GB_2312 },
+{ 0x7a1f, 0x7a1f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a20, 0x7a20, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a23, 0x7a23, ENC_GB_2312 },
+{ 0x7a2e, 0x7a2e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a31, 0x7a31, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a32, 0x7a32, ENC_JIS_0208 },
+{ 0x7a33, 0x7a33, ENC_GB_2312 },
+{ 0x7a36, 0x7a36, ENC_KSC_5601 },
+{ 0x7a37, 0x7a37, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a39, 0x7a39, ENC_GB_2312 },
+{ 0x7a3b, 0x7a3d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a3e, 0x7a3e, ENC_JIS_0208 },
+{ 0x7a3f, 0x7a3f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a40, 0x7a40, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a42, 0x7a43, ENC_JIS_0208 },
+{ 0x7a46, 0x7a46, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a49, 0x7a49, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a4d, 0x7a4e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a4f, 0x7a50, ENC_JIS_0208 },
+{ 0x7a51, 0x7a51, ENC_GB_2312 },
+{ 0x7a57, 0x7a57, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a61, 0x7a62, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a63, 0x7a63, ENC_JIS_0208 },
+{ 0x7a69, 0x7a69, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a6b, 0x7a6b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a70, 0x7a70, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a74, 0x7a74, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a76, 0x7a76, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a77, 0x7a78, ENC_GB_2312 },
+{ 0x7a79, 0x7a7a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a7d, 0x7a7d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a7f, 0x7a7f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a80, 0x7a80, ENC_GB_2312 },
+{ 0x7a81, 0x7a81, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a83, 0x7a83, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7a84, 0x7a84, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a86, 0x7a86, ENC_GB_2312 },
+{ 0x7a88, 0x7a88, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a8d, 0x7a8d, ENC_GB_2312 },
+{ 0x7a91, 0x7a91, ENC_GB_2312 },
+{ 0x7a92, 0x7a92, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a93, 0x7a93, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a95, 0x7a95, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a96, 0x7a97, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7a98, 0x7a98, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7a9c, 0x7a9d, ENC_GB_2312 },
+{ 0x7a9f, 0x7a9f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7aa0, 0x7aa0, ENC_GB_2312 },
+{ 0x7aa5, 0x7aa6, ENC_GB_2312 },
+{ 0x7aa8, 0x7aa8, ENC_GB_2312 },
+{ 0x7aa9, 0x7aaa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7aac, 0x7aad, ENC_GB_2312 },
+{ 0x7aae, 0x7aaf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ab0, 0x7ab0, ENC_JIS_0208 },
+{ 0x7ab3, 0x7ab3, ENC_GB_2312 },
+{ 0x7ab6, 0x7ab6, ENC_JIS_0208 },
+{ 0x7aba, 0x7aba, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7abf, 0x7abf, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7ac3, 0x7ac3, ENC_JIS_0208 },
+{ 0x7ac4, 0x7ac5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ac7, 0x7ac7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ac8, 0x7ac8, ENC_JIS_0208 },
+{ 0x7aca, 0x7aca, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7acb, 0x7acb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7acd, 0x7acd, ENC_JIS_0208 },
+{ 0x7acf, 0x7acf, ENC_JIS_0208 },
+{ 0x7ad2, 0x7ad3, ENC_JIS_0208 },
+{ 0x7ad5, 0x7ad5, ENC_JIS_0208 },
+{ 0x7ad6, 0x7ad6, ENC_GB_2312 },
+{ 0x7ad7, 0x7ad7, ENC_KSC_5601 },
+{ 0x7ad9, 0x7ad9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ada, 0x7ada, ENC_JIS_0208 },
+{ 0x7adc, 0x7adc, ENC_JIS_0208 },
+{ 0x7add, 0x7add, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ade, 0x7ade, ENC_GB_2312 },
+{ 0x7adf, 0x7ae0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ae1, 0x7ae2, ENC_JIS_0208 },
+{ 0x7ae3, 0x7ae3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ae5, 0x7ae5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ae6, 0x7ae6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7aea, 0x7aea, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7aed, 0x7aed, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7aef, 0x7aef, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7af0, 0x7af0, ENC_JIS_0208 },
+{ 0x7af6, 0x7af6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7af8, 0x7af8, ENC_JIS_0208 },
+{ 0x7af9, 0x7afa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7afd, 0x7afd, ENC_GB_2312 },
+{ 0x7aff, 0x7aff, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b02, 0x7b02, ENC_JIS_0208 },
+{ 0x7b03, 0x7b03, ENC_GB_2312 },
+{ 0x7b04, 0x7b04, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b06, 0x7b06, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b08, 0x7b08, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b0a, 0x7b0b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b0f, 0x7b0f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b11, 0x7b11, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b14, 0x7b15, ENC_GB_2312 },
+{ 0x7b18, 0x7b18, ENC_JIS_0208 },
+{ 0x7b19, 0x7b19, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b1b, 0x7b1b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b1e, 0x7b1e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b20, 0x7b20, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b24, 0x7b24, ENC_GB_2312 },
+{ 0x7b25, 0x7b25, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b26, 0x7b26, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b28, 0x7b28, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b2a, 0x7b2b, ENC_GB_2312 },
+{ 0x7b2c, 0x7b2c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b2d, 0x7b2d, ENC_KSC_5601 },
+{ 0x7b2e, 0x7b2e, ENC_GB_2312 },
+{ 0x7b31, 0x7b31, ENC_GB_2312 },
+{ 0x7b33, 0x7b33, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b35, 0x7b36, ENC_JIS_0208 },
+{ 0x7b38, 0x7b38, ENC_GB_2312 },
+{ 0x7b39, 0x7b39, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b3a, 0x7b3a, ENC_GB_2312 },
+{ 0x7b3c, 0x7b3c, ENC_GB_2312 },
+{ 0x7b3e, 0x7b3e, ENC_GB_2312 },
+{ 0x7b45, 0x7b45, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b46, 0x7b46, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b47, 0x7b47, ENC_GB_2312 },
+{ 0x7b48, 0x7b48, ENC_JIS_0208 },
+{ 0x7b49, 0x7b49, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b4b, 0x7b4c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b4d, 0x7b4d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b4f, 0x7b52, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b54, 0x7b54, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b56, 0x7b56, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b58, 0x7b58, ENC_GB_2312 },
+{ 0x7b5a, 0x7b5b, ENC_GB_2312 },
+{ 0x7b5d, 0x7b5d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b60, 0x7b60, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7b62, 0x7b62, ENC_GB_2312 },
+{ 0x7b65, 0x7b65, ENC_JIS_0208 },
+{ 0x7b67, 0x7b67, ENC_JIS_0208 },
+{ 0x7b6c, 0x7b6c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b6e, 0x7b6e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b70, 0x7b70, ENC_JIS_0208 },
+{ 0x7b71, 0x7b71, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b72, 0x7b72, ENC_GB_2312 },
+{ 0x7b74, 0x7b74, ENC_JIS_0208 },
+{ 0x7b75, 0x7b75, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b77, 0x7b77, ENC_GB_2312 },
+{ 0x7b79, 0x7b79, ENC_GB_2312 },
+{ 0x7b7a, 0x7b7a, ENC_JIS_0208 },
+{ 0x7b7b, 0x7b7b, ENC_GB_2312 },
+{ 0x7b7d, 0x7b7d, ENC_KSC_5601 },
+{ 0x7b7e, 0x7b7e, ENC_GB_2312 },
+{ 0x7b80, 0x7b80, ENC_GB_2312 },
+{ 0x7b85, 0x7b85, ENC_GB_2312 },
+{ 0x7b86, 0x7b86, ENC_JIS_0208 },
+{ 0x7b87, 0x7b87, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b8b, 0x7b8b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b8d, 0x7b8d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b8f, 0x7b8f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b90, 0x7b90, ENC_GB_2312 },
+{ 0x7b92, 0x7b92, ENC_JIS_0208 },
+{ 0x7b94, 0x7b95, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b97, 0x7b97, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b98, 0x7b99, ENC_JIS_0208 },
+{ 0x7b9a, 0x7b9a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b9c, 0x7b9c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7b9d, 0x7b9d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7b9f, 0x7b9f, ENC_JIS_0208 },
+{ 0x7ba1, 0x7ba1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ba2, 0x7ba2, ENC_GB_2312 },
+{ 0x7ba6, 0x7ba9, ENC_GB_2312 },
+{ 0x7baa, 0x7baa, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7bab, 0x7bac, ENC_GB_2312 },
+{ 0x7bad, 0x7bad, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bb1, 0x7bb1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bb4, 0x7bb4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bb8, 0x7bb8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bc0, 0x7bc0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bc1, 0x7bc1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bc4, 0x7bc4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bc6, 0x7bc7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bc9, 0x7bc9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bcb, 0x7bcb, ENC_JIS_0208 },
+{ 0x7bcc, 0x7bcc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7bcf, 0x7bcf, ENC_JIS_0208 },
+{ 0x7bd1, 0x7bd1, ENC_GB_2312 },
+{ 0x7bd2, 0x7bd2, ENC_KSC_5601 },
+{ 0x7bd3, 0x7bd3, ENC_GB_2312 },
+{ 0x7bd9, 0x7bda, ENC_GB_2312 },
+{ 0x7bdd, 0x7bdd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7be0, 0x7be0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7be1, 0x7be1, ENC_GB_2312 },
+{ 0x7be4, 0x7be4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7be5, 0x7be6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7be9, 0x7be9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7bea, 0x7bea, ENC_GB_2312 },
+{ 0x7bed, 0x7bed, ENC_JIS_0208 },
+{ 0x7bee, 0x7bee, ENC_GB_2312 },
+{ 0x7bf1, 0x7bf1, ENC_GB_2312 },
+{ 0x7bf3, 0x7bf3, ENC_JIS_0208 },
+{ 0x7bf6, 0x7bf6, ENC_JIS_0208 },
+{ 0x7bf7, 0x7bf7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7bfc, 0x7bfc, ENC_GB_2312 },
+{ 0x7bfe, 0x7bfe, ENC_GB_2312 },
+{ 0x7c00, 0x7c00, ENC_JIS_0208 },
+{ 0x7c07, 0x7c07, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c0b, 0x7c0c, ENC_GB_2312 },
+{ 0x7c0d, 0x7c0d, ENC_JIS_0208 },
+{ 0x7c0f, 0x7c0f, ENC_GB_2312 },
+{ 0x7c11, 0x7c11, ENC_JIS_0208 },
+{ 0x7c12, 0x7c12, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c13, 0x7c14, ENC_JIS_0208 },
+{ 0x7c16, 0x7c16, ENC_GB_2312 },
+{ 0x7c17, 0x7c17, ENC_JIS_0208 },
+{ 0x7c1e, 0x7c1e, ENC_KSC_5601 },
+{ 0x7c1f, 0x7c1f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7c21, 0x7c21, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c23, 0x7c23, ENC_JIS_0208 },
+{ 0x7c26, 0x7c26, ENC_GB_2312 },
+{ 0x7c27, 0x7c27, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c2a, 0x7c2a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c2b, 0x7c2b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c37, 0x7c37, ENC_JIS_0208 },
+{ 0x7c38, 0x7c38, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7c3d, 0x7c3e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c3f, 0x7c3f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c40, 0x7c40, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7c41, 0x7c41, ENC_GB_2312 },
+{ 0x7c43, 0x7c43, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c4c, 0x7c4c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c4d, 0x7c4d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c4f, 0x7c50, ENC_JIS_0208 },
+{ 0x7c54, 0x7c54, ENC_JIS_0208 },
+{ 0x7c56, 0x7c56, ENC_JIS_0208 },
+{ 0x7c58, 0x7c58, ENC_JIS_0208 },
+{ 0x7c5f, 0x7c5f, ENC_JIS_0208 },
+{ 0x7c60, 0x7c60, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c64, 0x7c64, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c65, 0x7c65, ENC_JIS_0208 },
+{ 0x7c6c, 0x7c6c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c73, 0x7c73, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c74, 0x7c74, ENC_GB_2312 },
+{ 0x7c75, 0x7c75, ENC_JIS_0208 },
+{ 0x7c7b, 0x7c7d, ENC_GB_2312 },
+{ 0x7c7e, 0x7c7e, ENC_JIS_0208 },
+{ 0x7c81, 0x7c82, ENC_JIS_0208 },
+{ 0x7c83, 0x7c83, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c89, 0x7c89, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c8b, 0x7c8b, ENC_JIS_0208 },
+{ 0x7c8d, 0x7c8d, ENC_JIS_0208 },
+{ 0x7c90, 0x7c90, ENC_JIS_0208 },
+{ 0x7c91, 0x7c91, ENC_GB_2312 },
+{ 0x7c92, 0x7c92, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c95, 0x7c95, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c97, 0x7c98, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7c9b, 0x7c9b, ENC_JIS_0208 },
+{ 0x7c9c, 0x7c9e, ENC_GB_2312 },
+{ 0x7c9f, 0x7c9f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ca1, 0x7ca1, ENC_JIS_0208 },
+{ 0x7ca2, 0x7ca2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7ca4, 0x7ca4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7ca5, 0x7ca5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ca7, 0x7ca7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ca8, 0x7ca8, ENC_JIS_0208 },
+{ 0x7caa, 0x7caa, ENC_GB_2312 },
+{ 0x7cab, 0x7cab, ENC_JIS_0208 },
+{ 0x7cad, 0x7cad, ENC_JIS_0208 },
+{ 0x7cae, 0x7cae, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7cb1, 0x7cb3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7cb9, 0x7cb9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7cbc, 0x7cbc, ENC_GB_2312 },
+{ 0x7cbd, 0x7cbd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7cbe, 0x7cbe, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7cc0, 0x7cc0, ENC_JIS_0208 },
+{ 0x7cc1, 0x7cc1, ENC_GB_2312 },
+{ 0x7cc2, 0x7cc2, ENC_JIS_0208 },
+{ 0x7cc5, 0x7cc5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7cc7, 0x7cc8, ENC_GB_2312 },
+{ 0x7cca, 0x7cca, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ccc, 0x7ccd, ENC_GB_2312 },
+{ 0x7cce, 0x7cce, ENC_JIS_0208 },
+{ 0x7cd2, 0x7cd2, ENC_JIS_0208 },
+{ 0x7cd5, 0x7cd5, ENC_GB_2312 },
+{ 0x7cd6, 0x7cd6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7cd7, 0x7cd7, ENC_GB_2312 },
+{ 0x7cd8, 0x7cd8, ENC_JIS_0208 },
+{ 0x7cd9, 0x7cd9, ENC_GB_2312 },
+{ 0x7cdc, 0x7cdc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7cde, 0x7cde, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7cdf, 0x7ce0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ce2, 0x7ce2, ENC_JIS_0208 },
+{ 0x7ce7, 0x7ce7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ce8, 0x7ce8, ENC_GB_2312 },
+{ 0x7cef, 0x7cef, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7cf2, 0x7cf2, ENC_JIS_0208 },
+{ 0x7cf4, 0x7cf4, ENC_JIS_0208 },
+{ 0x7cf6, 0x7cf6, ENC_JIS_0208 },
+{ 0x7cf8, 0x7cf8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7cfa, 0x7cfa, ENC_JIS_0208 },
+{ 0x7cfb, 0x7cfb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7cfe, 0x7cfe, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d00, 0x7d00, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d02, 0x7d02, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d04, 0x7d06, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d07, 0x7d08, ENC_KSC_5601 },
+{ 0x7d0a, 0x7d0a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d0b, 0x7d0b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d0d, 0x7d0d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d10, 0x7d10, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d14, 0x7d14, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d15, 0x7d15, ENC_JIS_0208 },
+{ 0x7d17, 0x7d1b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d1c, 0x7d1c, ENC_JIS_0208 },
+{ 0x7d20, 0x7d20, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d21, 0x7d21, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d22, 0x7d22, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d27, 0x7d27, ENC_GB_2312 },
+{ 0x7d2b, 0x7d2b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d2c, 0x7d2c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d2e, 0x7d2e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d2f, 0x7d2f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d30, 0x7d30, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d32, 0x7d32, ENC_JIS_0208 },
+{ 0x7d33, 0x7d33, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d35, 0x7d35, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d39, 0x7d3a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d3f, 0x7d3f, ENC_JIS_0208 },
+{ 0x7d42, 0x7d46, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d4b, 0x7d4c, ENC_JIS_0208 },
+{ 0x7d4e, 0x7d4f, ENC_JIS_0208 },
+{ 0x7d50, 0x7d50, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d56, 0x7d56, ENC_JIS_0208 },
+{ 0x7d5b, 0x7d5b, ENC_JIS_0208 },
+{ 0x7d5e, 0x7d5e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d61, 0x7d62, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d63, 0x7d63, ENC_JIS_0208 },
+{ 0x7d66, 0x7d66, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d68, 0x7d68, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d6a, 0x7d6a, ENC_KSC_5601 },
+{ 0x7d6e, 0x7d6e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d71, 0x7d73, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d75, 0x7d75, ENC_JIS_0208 },
+{ 0x7d76, 0x7d76, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d77, 0x7d77, ENC_GB_2312 },
+{ 0x7d79, 0x7d79, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d7d, 0x7d7d, ENC_JIS_0208 },
+{ 0x7d7f, 0x7d7f, ENC_KSC_5601 },
+{ 0x7d89, 0x7d89, ENC_JIS_0208 },
+{ 0x7d8e, 0x7d8e, ENC_KSC_5601 },
+{ 0x7d8f, 0x7d8f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d93, 0x7d93, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d99, 0x7d9b, ENC_JIS_0208 },
+{ 0x7d9c, 0x7d9c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7d9f, 0x7d9f, ENC_JIS_0208 },
+{ 0x7da0, 0x7da0, ENC_KSC_5601 },
+{ 0x7da2, 0x7da2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7da3, 0x7da3, ENC_JIS_0208 },
+{ 0x7da6, 0x7da6, ENC_GB_2312 },
+{ 0x7dab, 0x7dab, ENC_JIS_0208 },
+{ 0x7dac, 0x7dad, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7dae, 0x7dae, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7daf, 0x7db0, ENC_JIS_0208 },
+{ 0x7db1, 0x7db2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7db4, 0x7db5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7db8, 0x7db8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7dba, 0x7dbb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7dbd, 0x7dbf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7dc7, 0x7dc7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7dca, 0x7dcb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7dcf, 0x7dcf, ENC_JIS_0208 },
+{ 0x7dd1, 0x7dd2, ENC_JIS_0208 },
+{ 0x7dd5, 0x7dd5, ENC_JIS_0208 },
+{ 0x7dd6, 0x7dd6, ENC_KSC_5601 },
+{ 0x7dd8, 0x7dd8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7dda, 0x7dda, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ddc, 0x7ddc, ENC_JIS_0208 },
+{ 0x7ddd, 0x7dde, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7de0, 0x7de1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7de3, 0x7de3, ENC_KSC_5601 },
+{ 0x7de4, 0x7de4, ENC_JIS_0208 },
+{ 0x7de8, 0x7de9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7dec, 0x7dec, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7def, 0x7def, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7df2, 0x7df2, ENC_JIS_0208 },
+{ 0x7df4, 0x7df4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7dfb, 0x7dfb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e01, 0x7e01, ENC_JIS_0208 },
+{ 0x7e04, 0x7e05, ENC_JIS_0208 },
+{ 0x7e09, 0x7e0a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e0b, 0x7e0b, ENC_JIS_0208 },
+{ 0x7e12, 0x7e12, ENC_JIS_0208 },
+{ 0x7e15, 0x7e15, ENC_KSC_5601 },
+{ 0x7e1b, 0x7e1b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e1d, 0x7e1d, ENC_KSC_5601 },
+{ 0x7e1e, 0x7e1f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e21, 0x7e21, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e22, 0x7e22, ENC_JIS_0208 },
+{ 0x7e23, 0x7e23, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e26, 0x7e26, ENC_JIS_0208 },
+{ 0x7e2b, 0x7e2b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e2e, 0x7e2e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e2f, 0x7e2f, ENC_KSC_5601 },
+{ 0x7e31, 0x7e31, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e32, 0x7e32, ENC_JIS_0208 },
+{ 0x7e35, 0x7e35, ENC_JIS_0208 },
+{ 0x7e37, 0x7e37, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e39, 0x7e3a, ENC_JIS_0208 },
+{ 0x7e3b, 0x7e3b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7e3d, 0x7e3e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e41, 0x7e41, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e43, 0x7e43, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e46, 0x7e46, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e47, 0x7e47, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7e4a, 0x7e4b, ENC_JIS_0208 },
+{ 0x7e4d, 0x7e4d, ENC_JIS_0208 },
+{ 0x7e52, 0x7e52, ENC_KSC_5601 },
+{ 0x7e54, 0x7e55, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e56, 0x7e56, ENC_JIS_0208 },
+{ 0x7e59, 0x7e5a, ENC_JIS_0208 },
+{ 0x7e5d, 0x7e5d, ENC_JIS_0208 },
+{ 0x7e5e, 0x7e5e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e61, 0x7e61, ENC_KSC_5601 },
+{ 0x7e66, 0x7e67, ENC_JIS_0208 },
+{ 0x7e69, 0x7e6a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e6b, 0x7e6b, ENC_KSC_5601 },
+{ 0x7e6d, 0x7e6d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e70, 0x7e70, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e79, 0x7e79, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e7b, 0x7e7b, ENC_JIS_0208 },
+{ 0x7e7c, 0x7e7c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e7d, 0x7e7d, ENC_JIS_0208 },
+{ 0x7e7f, 0x7e7f, ENC_JIS_0208 },
+{ 0x7e82, 0x7e82, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e83, 0x7e83, ENC_JIS_0208 },
+{ 0x7e88, 0x7e89, ENC_JIS_0208 },
+{ 0x7e8c, 0x7e8c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e8e, 0x7e8e, ENC_JIS_0208 },
+{ 0x7e8f, 0x7e8f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e90, 0x7e90, ENC_JIS_0208 },
+{ 0x7e92, 0x7e92, ENC_JIS_0208 },
+{ 0x7e93, 0x7e93, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e94, 0x7e94, ENC_JIS_0208 },
+{ 0x7e96, 0x7e96, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e98, 0x7e98, ENC_KSC_5601 },
+{ 0x7e9b, 0x7e9b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e9c, 0x7e9c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7e9f, 0x7ead, ENC_GB_2312 },
+{ 0x7eaf, 0x7eb3, ENC_GB_2312 },
+{ 0x7eb5, 0x7eba, ENC_GB_2312 },
+{ 0x7ebd, 0x7ed5, ENC_GB_2312 },
+{ 0x7ed7, 0x7ee3, ENC_GB_2312 },
+{ 0x7ee5, 0x7eeb, ENC_GB_2312 },
+{ 0x7eed, 0x7ef8, ENC_GB_2312 },
+{ 0x7efa, 0x7f09, ENC_GB_2312 },
+{ 0x7f0b, 0x7f0f, ENC_GB_2312 },
+{ 0x7f11, 0x7f1d, ENC_GB_2312 },
+{ 0x7f1f, 0x7f35, ENC_GB_2312 },
+{ 0x7f36, 0x7f36, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f38, 0x7f38, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f3a, 0x7f3a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f42, 0x7f42, ENC_GB_2312 },
+{ 0x7f44, 0x7f44, ENC_GB_2312 },
+{ 0x7f45, 0x7f45, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7f4c, 0x7f4c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f4d, 0x7f4e, ENC_JIS_0208 },
+{ 0x7f50, 0x7f50, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f51, 0x7f51, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7f54, 0x7f55, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f57, 0x7f57, ENC_GB_2312 },
+{ 0x7f58, 0x7f58, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7f5a, 0x7f5a, ENC_GB_2312 },
+{ 0x7f5f, 0x7f5f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7f60, 0x7f60, ENC_JIS_0208 },
+{ 0x7f61, 0x7f62, ENC_GB_2312 },
+{ 0x7f67, 0x7f67, ENC_JIS_0208 },
+{ 0x7f68, 0x7f69, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7f6a, 0x7f6a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f6b, 0x7f6b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f6e, 0x7f6e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f70, 0x7f70, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f71, 0x7f71, ENC_GB_2312 },
+{ 0x7f72, 0x7f72, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f74, 0x7f74, ENC_GB_2312 },
+{ 0x7f75, 0x7f75, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f77, 0x7f77, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f78, 0x7f78, ENC_JIS_0208 },
+{ 0x7f79, 0x7f79, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f7e, 0x7f7e, ENC_GB_2312 },
+{ 0x7f81, 0x7f81, ENC_GB_2312 },
+{ 0x7f82, 0x7f83, ENC_JIS_0208 },
+{ 0x7f85, 0x7f85, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f86, 0x7f87, ENC_JIS_0208 },
+{ 0x7f88, 0x7f88, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f8a, 0x7f8a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f8c, 0x7f8c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f8e, 0x7f8e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f94, 0x7f94, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f9a, 0x7f9a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f9d, 0x7f9d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7f9e, 0x7f9e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7f9f, 0x7f9f, ENC_GB_2312 },
+{ 0x7fa1, 0x7fa1, ENC_GB_2312 },
+{ 0x7fa3, 0x7fa3, ENC_JIS_0208 },
+{ 0x7fa4, 0x7fa4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fa7, 0x7fa7, ENC_GB_2312 },
+{ 0x7fa8, 0x7fa9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fae, 0x7fae, ENC_JIS_0208 },
+{ 0x7faf, 0x7faf, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7fb0, 0x7fb0, ENC_GB_2312 },
+{ 0x7fb2, 0x7fb2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fb6, 0x7fb6, ENC_JIS_0208 },
+{ 0x7fb8, 0x7fb9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fbc, 0x7fbc, ENC_GB_2312 },
+{ 0x7fbd, 0x7fbd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fbf, 0x7fbf, ENC_GB_2312 },
+{ 0x7fc1, 0x7fc1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fc5, 0x7fc5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fc6, 0x7fc6, ENC_JIS_0208 },
+{ 0x7fca, 0x7fca, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fcc, 0x7fcc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fce, 0x7fce, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7fd2, 0x7fd2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fd4, 0x7fd5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fd8, 0x7fd8, ENC_GB_2312 },
+{ 0x7fdf, 0x7fdf, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x7fe0, 0x7fe1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fe5, 0x7fe5, ENC_GB_2312 },
+{ 0x7fe6, 0x7fe6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7fe9, 0x7fe9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7feb, 0x7feb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7fee, 0x7fee, ENC_GB_2312 },
+{ 0x7ff0, 0x7ff0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ff1, 0x7ff1, ENC_GB_2312 },
+{ 0x7ff3, 0x7ff3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7ff9, 0x7ff9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x7ffb, 0x7ffb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x7ffc, 0x7ffc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8000, 0x8001, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8003, 0x8003, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8004, 0x8004, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8005, 0x8006, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8009, 0x8009, ENC_KSC_5601 },
+{ 0x800b, 0x800b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x800c, 0x800c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x800d, 0x800d, ENC_GB_2312 },
+{ 0x8010, 0x8010, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8012, 0x8012, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8014, 0x8014, ENC_GB_2312 },
+{ 0x8015, 0x8015, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8016, 0x8016, ENC_GB_2312 },
+{ 0x8017, 0x8018, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8019, 0x8019, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x801c, 0x801c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8020, 0x8020, ENC_GB_2312 },
+{ 0x8021, 0x8021, ENC_JIS_0208 },
+{ 0x8022, 0x8022, ENC_GB_2312 },
+{ 0x8025, 0x8027, ENC_GB_2312 },
+{ 0x8028, 0x8028, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8029, 0x802a, ENC_GB_2312 },
+{ 0x802d, 0x802d, ENC_KSC_5601 },
+{ 0x8031, 0x8031, ENC_GB_2312 },
+{ 0x8033, 0x8033, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8035, 0x8035, ENC_GB_2312 },
+{ 0x8036, 0x8036, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8037, 0x8038, ENC_GB_2312 },
+{ 0x803b, 0x803b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x803d, 0x803d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x803f, 0x803f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8042, 0x8042, ENC_GB_2312 },
+{ 0x8043, 0x8043, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x8046, 0x8046, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x804a, 0x804a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x804b, 0x804d, ENC_GB_2312 },
+{ 0x8052, 0x8052, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8054, 0x8054, ENC_GB_2312 },
+{ 0x8056, 0x8056, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8058, 0x8058, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x805a, 0x805a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x805e, 0x805e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x805f, 0x805f, ENC_JIS_0208 },
+{ 0x8061, 0x8062, ENC_JIS_0208 },
+{ 0x8068, 0x8068, ENC_JIS_0208 },
+{ 0x8069, 0x806a, ENC_GB_2312 },
+{ 0x806f, 0x8070, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8071, 0x8071, ENC_GB_2312 },
+{ 0x8072, 0x8073, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8074, 0x8074, ENC_JIS_0208 },
+{ 0x8076, 0x8076, ENC_JIS_0208 },
+{ 0x8077, 0x8077, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8079, 0x8079, ENC_JIS_0208 },
+{ 0x807d, 0x807e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x807f, 0x807f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8080, 0x8080, ENC_GB_2312 },
+{ 0x8083, 0x8083, ENC_GB_2312 },
+{ 0x8084, 0x8084, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8085, 0x8085, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8086, 0x8087, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8089, 0x8089, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x808b, 0x808c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8093, 0x8093, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8096, 0x8096, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8098, 0x8098, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x809a, 0x809a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x809b, 0x809b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x809c, 0x809c, ENC_GB_2312 },
+{ 0x809d, 0x809d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x809f, 0x80a0, ENC_GB_2312 },
+{ 0x80a1, 0x80a2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80a4, 0x80a4, ENC_GB_2312 },
+{ 0x80a5, 0x80a5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80a9, 0x80aa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80ab, 0x80ab, ENC_GB_2312 },
+{ 0x80ac, 0x80ac, ENC_JIS_0208 },
+{ 0x80ad, 0x80ad, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x80ae, 0x80ae, ENC_GB_2312 },
+{ 0x80af, 0x80af, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80b1, 0x80b2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80b4, 0x80b4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80b7, 0x80b7, ENC_GB_2312 },
+{ 0x80ba, 0x80ba, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80bc, 0x80c2, ENC_GB_2312 },
+{ 0x80c3, 0x80c4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80c6, 0x80c6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x80cc, 0x80cc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80cd, 0x80cd, ENC_GB_2312 },
+{ 0x80ce, 0x80ce, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80d6, 0x80d6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x80d7, 0x80d7, ENC_GB_2312 },
+{ 0x80d9, 0x80d9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x80da, 0x80db, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80dc, 0x80dc, ENC_GB_2312 },
+{ 0x80dd, 0x80dd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x80de, 0x80de, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80e1, 0x80e1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80e4, 0x80e5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80e7, 0x80ed, ENC_GB_2312 },
+{ 0x80ef, 0x80ef, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x80f0, 0x80f0, ENC_GB_2312 },
+{ 0x80f1, 0x80f1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80f2, 0x80f3, ENC_GB_2312 },
+{ 0x80f4, 0x80f4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80f6, 0x80f6, ENC_GB_2312 },
+{ 0x80f8, 0x80f8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x80fa, 0x80fa, ENC_GB_2312 },
+{ 0x80fc, 0x80fc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x80fd, 0x80fd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8102, 0x8102, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8105, 0x8105, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8106, 0x8106, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8107, 0x8108, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8109, 0x8109, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x810a, 0x810a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x810d, 0x8114, ENC_GB_2312 },
+{ 0x8116, 0x8116, ENC_GB_2312 },
+{ 0x8118, 0x8118, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x811a, 0x811a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x811b, 0x811b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x811e, 0x811e, ENC_GB_2312 },
+{ 0x8123, 0x8123, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8129, 0x8129, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x812b, 0x812b, ENC_KSC_5601 },
+{ 0x812c, 0x812c, ENC_GB_2312 },
+{ 0x812f, 0x812f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8131, 0x8131, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8132, 0x8132, ENC_GB_2312 },
+{ 0x8133, 0x8133, ENC_JIS_0208 },
+{ 0x8136, 0x8136, ENC_GB_2312 },
+{ 0x8138, 0x8138, ENC_GB_2312 },
+{ 0x8139, 0x8139, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x813e, 0x813e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8146, 0x8146, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8148, 0x8148, ENC_GB_2312 },
+{ 0x814a, 0x814a, ENC_GB_2312 },
+{ 0x814b, 0x814b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x814c, 0x814c, ENC_GB_2312 },
+{ 0x814e, 0x814e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8150, 0x8151, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8153, 0x8153, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8154, 0x8155, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8159, 0x815a, ENC_GB_2312 },
+{ 0x815f, 0x815f, ENC_JIS_0208 },
+{ 0x8160, 0x8160, ENC_GB_2312 },
+{ 0x8165, 0x8165, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8166, 0x8166, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8167, 0x8167, ENC_GB_2312 },
+{ 0x8169, 0x8169, ENC_GB_2312 },
+{ 0x816b, 0x816b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x816d, 0x816d, ENC_GB_2312 },
+{ 0x816e, 0x816e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8170, 0x8171, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8174, 0x8174, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8178, 0x8178, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8179, 0x817a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x817b, 0x817e, ENC_GB_2312 },
+{ 0x817f, 0x8180, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8182, 0x8182, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8183, 0x8183, ENC_JIS_0208 },
+{ 0x8188, 0x8188, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x818a, 0x818a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x818f, 0x818f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8191, 0x8191, ENC_GB_2312 },
+{ 0x8193, 0x8193, ENC_JIS_0208 },
+{ 0x8195, 0x8195, ENC_JIS_0208 },
+{ 0x8198, 0x8198, ENC_GB_2312 },
+{ 0x819a, 0x819a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x819b, 0x819b, ENC_GB_2312 },
+{ 0x819c, 0x819d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81a0, 0x81a0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81a3, 0x81a3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81a4, 0x81a4, ENC_JIS_0208 },
+{ 0x81a6, 0x81a6, ENC_GB_2312 },
+{ 0x81a8, 0x81a8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81a9, 0x81a9, ENC_JIS_0208 },
+{ 0x81aa, 0x81aa, ENC_GB_2312 },
+{ 0x81b0, 0x81b0, ENC_JIS_0208 },
+{ 0x81b3, 0x81b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81b5, 0x81b5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81b8, 0x81b8, ENC_JIS_0208 },
+{ 0x81ba, 0x81ba, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81bb, 0x81bb, ENC_GB_2312 },
+{ 0x81bd, 0x81bf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81c0, 0x81c0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81c1, 0x81c1, ENC_GB_2312 },
+{ 0x81c2, 0x81c2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81c3, 0x81c3, ENC_GB_2312 },
+{ 0x81c6, 0x81c6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81c8, 0x81c9, ENC_JIS_0208 },
+{ 0x81ca, 0x81ca, ENC_GB_2312 },
+{ 0x81cc, 0x81cc, ENC_GB_2312 },
+{ 0x81cd, 0x81cd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81d1, 0x81d1, ENC_JIS_0208 },
+{ 0x81d3, 0x81d3, ENC_JIS_0208 },
+{ 0x81d8, 0x81d8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81d9, 0x81da, ENC_JIS_0208 },
+{ 0x81df, 0x81df, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81e0, 0x81e0, ENC_JIS_0208 },
+{ 0x81e3, 0x81e3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81e5, 0x81e5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81e7, 0x81e7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81e8, 0x81e8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81ea, 0x81ea, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81ec, 0x81ec, ENC_GB_2312 },
+{ 0x81ed, 0x81ed, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81f3, 0x81f4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81fa, 0x81fa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81fb, 0x81fc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x81fe, 0x81fe, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8200, 0x8200, ENC_GB_2312 },
+{ 0x8201, 0x8202, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8204, 0x8204, ENC_GB_2312 },
+{ 0x8205, 0x8205, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8206, 0x8206, ENC_GB_2312 },
+{ 0x8207, 0x8208, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8209, 0x8209, ENC_JIS_0208 },
+{ 0x820a, 0x820a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x820c, 0x820d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x820e, 0x820e, ENC_JIS_0208 },
+{ 0x8210, 0x8210, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8212, 0x8212, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8214, 0x8214, ENC_GB_2312 },
+{ 0x8216, 0x8218, ENC_JIS_0208 },
+{ 0x821b, 0x821c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x821e, 0x821f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8221, 0x8221, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x8222, 0x8223, ENC_GB_2312 },
+{ 0x8228, 0x8228, ENC_GB_2312 },
+{ 0x8229, 0x8229, ENC_JIS_0208 },
+{ 0x822a, 0x822c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x822d, 0x822d, ENC_GB_2312 },
+{ 0x822e, 0x822e, ENC_JIS_0208 },
+{ 0x822f, 0x8231, ENC_GB_2312 },
+{ 0x8233, 0x8233, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8234, 0x8234, ENC_GB_2312 },
+{ 0x8235, 0x8237, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8238, 0x8238, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8239, 0x8239, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x823b, 0x823b, ENC_GB_2312 },
+{ 0x823e, 0x823e, ENC_GB_2312 },
+{ 0x8240, 0x8240, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8244, 0x8244, ENC_GB_2312 },
+{ 0x8245, 0x8245, ENC_KSC_5601 },
+{ 0x8247, 0x8247, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8249, 0x8249, ENC_GB_2312 },
+{ 0x824b, 0x824b, ENC_GB_2312 },
+{ 0x824f, 0x824f, ENC_GB_2312 },
+{ 0x8258, 0x8258, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8259, 0x8259, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x825a, 0x825a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x825d, 0x825d, ENC_JIS_0208 },
+{ 0x825f, 0x825f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8262, 0x8262, ENC_JIS_0208 },
+{ 0x8264, 0x8264, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8266, 0x8266, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8268, 0x8268, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x826a, 0x826b, ENC_JIS_0208 },
+{ 0x826e, 0x826f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8270, 0x8270, ENC_GB_2312 },
+{ 0x8271, 0x8271, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8272, 0x8272, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8273, 0x8274, ENC_GB_2312 },
+{ 0x8276, 0x8276, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8277, 0x8277, ENC_JIS_0208 },
+{ 0x8278, 0x8278, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8279, 0x827a, ENC_GB_2312 },
+{ 0x827d, 0x827d, ENC_GB_2312 },
+{ 0x827e, 0x827e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x827f, 0x827f, ENC_GB_2312 },
+{ 0x8282, 0x8282, ENC_GB_2312 },
+{ 0x8284, 0x8284, ENC_GB_2312 },
+{ 0x8288, 0x8288, ENC_GB_2312 },
+{ 0x828a, 0x828a, ENC_GB_2312 },
+{ 0x828b, 0x828b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x828d, 0x828d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x828e, 0x828e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x828f, 0x828f, ENC_GB_2312 },
+{ 0x8291, 0x8291, ENC_GB_2312 },
+{ 0x8292, 0x8292, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8297, 0x8298, ENC_GB_2312 },
+{ 0x8299, 0x8299, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x829a, 0x829a, ENC_KSC_5601 },
+{ 0x829c, 0x829c, ENC_GB_2312 },
+{ 0x829d, 0x829d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x829f, 0x829f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82a1, 0x82a1, ENC_GB_2312 },
+{ 0x82a4, 0x82a4, ENC_GB_2312 },
+{ 0x82a5, 0x82a6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82a8, 0x82a8, ENC_GB_2312 },
+{ 0x82a9, 0x82a9, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x82aa, 0x82aa, ENC_GB_2312 },
+{ 0x82ab, 0x82ab, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x82ac, 0x82ad, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82ae, 0x82ae, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x82af, 0x82af, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82b0, 0x82b0, ENC_GB_2312 },
+{ 0x82b1, 0x82b1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82b3, 0x82b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82b4, 0x82b4, ENC_GB_2312 },
+{ 0x82b7, 0x82b7, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x82b8, 0x82b9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82bb, 0x82bb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82bc, 0x82bc, ENC_KSC_5601 },
+{ 0x82bd, 0x82bd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82be, 0x82be, ENC_GB_2312 },
+{ 0x82bf, 0x82bf, ENC_KSC_5601 },
+{ 0x82c1, 0x82c1, ENC_GB_2312 },
+{ 0x82c4, 0x82c4, ENC_GB_2312 },
+{ 0x82c5, 0x82c5, ENC_JIS_0208 },
+{ 0x82c7, 0x82c8, ENC_GB_2312 },
+{ 0x82ca, 0x82cf, ENC_GB_2312 },
+{ 0x82d1, 0x82d2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82d3, 0x82d3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x82d4, 0x82d4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82d5, 0x82d5, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x82d7, 0x82d7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82d8, 0x82d8, ENC_GB_2312 },
+{ 0x82d9, 0x82d9, ENC_JIS_0208 },
+{ 0x82db, 0x82db, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82dc, 0x82dc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x82de, 0x82df, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82e0, 0x82e0, ENC_GB_2312 },
+{ 0x82e1, 0x82e1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82e3, 0x82e3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x82e4, 0x82e4, ENC_GB_2312 },
+{ 0x82e5, 0x82e6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82e7, 0x82e7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82eb, 0x82eb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x82ef, 0x82ef, ENC_GB_2312 },
+{ 0x82f1, 0x82f1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x82f3, 0x82f3, ENC_JIS_0208 },
+{ 0x82f4, 0x82f4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x82f7, 0x82f7, ENC_GB_2312 },
+{ 0x82f9, 0x82f9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x82fa, 0x82fa, ENC_JIS_0208 },
+{ 0x82fb, 0x82fb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x82fd, 0x82fe, ENC_KSC_5601 },
+{ 0x8301, 0x8301, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x8302, 0x8305, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8306, 0x8306, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8307, 0x8308, ENC_GB_2312 },
+{ 0x8309, 0x8309, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x830c, 0x830c, ENC_GB_2312 },
+{ 0x830e, 0x830e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x830f, 0x830f, ENC_GB_2312 },
+{ 0x8311, 0x8311, ENC_GB_2312 },
+{ 0x8314, 0x8315, ENC_GB_2312 },
+{ 0x8316, 0x8316, ENC_JIS_0208 },
+{ 0x8317, 0x8317, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8318, 0x8318, ENC_JIS_0208 },
+{ 0x831a, 0x831b, ENC_GB_2312 },
+{ 0x831c, 0x831c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8323, 0x8323, ENC_JIS_0208 },
+{ 0x8327, 0x8327, ENC_GB_2312 },
+{ 0x8328, 0x8328, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x832b, 0x832b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x832c, 0x832d, ENC_GB_2312 },
+{ 0x832f, 0x832f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8331, 0x8331, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8332, 0x8332, ENC_JIS_0208 },
+{ 0x8333, 0x8333, ENC_GB_2312 },
+{ 0x8334, 0x8336, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8338, 0x8339, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x833a, 0x833a, ENC_GB_2312 },
+{ 0x833c, 0x833c, ENC_GB_2312 },
+{ 0x8340, 0x8340, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8343, 0x8343, ENC_GB_2312 },
+{ 0x8345, 0x8345, ENC_JIS_0208 },
+{ 0x8346, 0x8346, ENC_GB_2312 },
+{ 0x8347, 0x8347, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x8349, 0x8349, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x834a, 0x834a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x834f, 0x834f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8350, 0x8350, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8351, 0x8351, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x8352, 0x8352, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8354, 0x8354, ENC_GB_2312 },
+{ 0x8358, 0x8358, ENC_JIS_0208 },
+{ 0x835a, 0x835c, ENC_GB_2312 },
+{ 0x835e, 0x8361, ENC_GB_2312 },
+{ 0x8363, 0x836f, ENC_GB_2312 },
+{ 0x8373, 0x8373, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8375, 0x8375, ENC_JIS_0208 },
+{ 0x8377, 0x8377, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8378, 0x8378, ENC_GB_2312 },
+{ 0x837b, 0x837b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x837c, 0x837c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x837d, 0x837d, ENC_GB_2312 },
+{ 0x8385, 0x8385, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8386, 0x8386, ENC_GB_2312 },
+{ 0x8387, 0x8387, ENC_JIS_0208 },
+{ 0x8389, 0x8389, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x838a, 0x838a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x838e, 0x838e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8392, 0x8392, ENC_GB_2312 },
+{ 0x8393, 0x8393, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8396, 0x8396, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8398, 0x8398, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x839a, 0x839a, ENC_JIS_0208 },
+{ 0x839b, 0x839c, ENC_GB_2312 },
+{ 0x839e, 0x839e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x839f, 0x839f, ENC_JIS_0208 },
+{ 0x83a0, 0x83a0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x83a2, 0x83a2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83a8, 0x83a8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x83a9, 0x83a9, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x83aa, 0x83ab, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83b0, 0x83b0, ENC_GB_2312 },
+{ 0x83b1, 0x83b1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x83b2, 0x83b4, ENC_GB_2312 },
+{ 0x83b5, 0x83b5, ENC_JIS_0208 },
+{ 0x83b6, 0x83ba, ENC_GB_2312 },
+{ 0x83bc, 0x83bc, ENC_GB_2312 },
+{ 0x83bd, 0x83bd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83c0, 0x83c0, ENC_GB_2312 },
+{ 0x83c1, 0x83c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83c5, 0x83c5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83c7, 0x83c7, ENC_GB_2312 },
+{ 0x83c9, 0x83c9, ENC_KSC_5601 },
+{ 0x83ca, 0x83ca, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83cc, 0x83cc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83ce, 0x83ce, ENC_JIS_0208 },
+{ 0x83cf, 0x83cf, ENC_GB_2312 },
+{ 0x83d3, 0x83d3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83d4, 0x83d4, ENC_GB_2312 },
+{ 0x83d6, 0x83d6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83d8, 0x83d8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x83dc, 0x83dc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83dd, 0x83dd, ENC_GB_2312 },
+{ 0x83df, 0x83e0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x83e1, 0x83e1, ENC_GB_2312 },
+{ 0x83e5, 0x83e5, ENC_GB_2312 },
+{ 0x83e9, 0x83e9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83ea, 0x83ea, ENC_GB_2312 },
+{ 0x83eb, 0x83eb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83ef, 0x83ef, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83f0, 0x83f2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83f4, 0x83f4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x83f7, 0x83f7, ENC_JIS_0208 },
+{ 0x83f8, 0x83f8, ENC_GB_2312 },
+{ 0x83f9, 0x83f9, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x83fb, 0x83fb, ENC_JIS_0208 },
+{ 0x83fd, 0x83fd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8401, 0x8401, ENC_GB_2312 },
+{ 0x8403, 0x8404, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8406, 0x8406, ENC_GB_2312 },
+{ 0x8407, 0x8407, ENC_JIS_0208 },
+{ 0x840a, 0x840a, ENC_KSC_5601 },
+{ 0x840b, 0x840b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x840c, 0x840e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x840f, 0x840f, ENC_GB_2312 },
+{ 0x8411, 0x8411, ENC_GB_2312 },
+{ 0x8413, 0x8413, ENC_JIS_0208 },
+{ 0x8418, 0x8418, ENC_GB_2312 },
+{ 0x841c, 0x841d, ENC_GB_2312 },
+{ 0x8420, 0x8420, ENC_JIS_0208 },
+{ 0x8422, 0x8422, ENC_JIS_0208 },
+{ 0x8424, 0x8428, ENC_GB_2312 },
+{ 0x8429, 0x8429, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x842a, 0x842a, ENC_JIS_0208 },
+{ 0x842c, 0x842c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8431, 0x8431, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8435, 0x8435, ENC_JIS_0208 },
+{ 0x8438, 0x8438, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x843c, 0x843c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x843d, 0x843d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8446, 0x8446, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8449, 0x8449, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x844e, 0x844e, ENC_JIS_0208 },
+{ 0x8451, 0x8451, ENC_GB_2312 },
+{ 0x8457, 0x8457, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8459, 0x845a, ENC_GB_2312 },
+{ 0x845b, 0x845b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x845c, 0x845c, ENC_GB_2312 },
+{ 0x8461, 0x8461, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8462, 0x8462, ENC_JIS_0208 },
+{ 0x8463, 0x8463, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8466, 0x8466, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8469, 0x8469, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x846b, 0x846c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x846d, 0x846d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x846e, 0x846e, ENC_JIS_0208 },
+{ 0x846f, 0x846f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8471, 0x8471, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8473, 0x8473, ENC_GB_2312 },
+{ 0x8475, 0x8475, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8476, 0x8476, ENC_GB_2312 },
+{ 0x8477, 0x8477, ENC_JIS_0208 },
+{ 0x8478, 0x8478, ENC_GB_2312 },
+{ 0x8479, 0x8479, ENC_JIS_0208 },
+{ 0x847a, 0x847a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8482, 0x8482, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8484, 0x8484, ENC_JIS_0208 },
+{ 0x8487, 0x8489, ENC_GB_2312 },
+{ 0x848b, 0x848b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x848c, 0x848c, ENC_GB_2312 },
+{ 0x848e, 0x848e, ENC_GB_2312 },
+{ 0x8490, 0x8490, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8494, 0x8494, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8497, 0x8497, ENC_GB_2312 },
+{ 0x8499, 0x8499, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x849c, 0x849c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x849f, 0x849f, ENC_JIS_0208 },
+{ 0x84a1, 0x84a1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84ad, 0x84ad, ENC_JIS_0208 },
+{ 0x84af, 0x84af, ENC_GB_2312 },
+{ 0x84b2, 0x84b2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84b4, 0x84b4, ENC_GB_2312 },
+{ 0x84b8, 0x84b8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84b9, 0x84b9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x84ba, 0x84ba, ENC_GB_2312 },
+{ 0x84bb, 0x84bc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84bd, 0x84bd, ENC_GB_2312 },
+{ 0x84bf, 0x84bf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84c0, 0x84c0, ENC_KSC_5601 },
+{ 0x84c1, 0x84c1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x84c2, 0x84c2, ENC_KSC_5601 },
+{ 0x84c4, 0x84c4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84c6, 0x84c6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84c9, 0x84c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84ca, 0x84ca, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x84cb, 0x84cb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84cd, 0x84cd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84d0, 0x84d0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x84d1, 0x84d1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84d3, 0x84d3, ENC_GB_2312 },
+{ 0x84d6, 0x84d6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x84d9, 0x84d9, ENC_JIS_0208 },
+{ 0x84da, 0x84da, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84dd, 0x84dd, ENC_GB_2312 },
+{ 0x84df, 0x84e0, ENC_GB_2312 },
+{ 0x84e3, 0x84e3, ENC_GB_2312 },
+{ 0x84e5, 0x84e6, ENC_GB_2312 },
+{ 0x84ec, 0x84ec, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84ee, 0x84ee, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84f0, 0x84f0, ENC_GB_2312 },
+{ 0x84f4, 0x84f4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84fc, 0x84fc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x84ff, 0x84ff, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8500, 0x8500, ENC_JIS_0208 },
+{ 0x8506, 0x8506, ENC_JIS_0208 },
+{ 0x850c, 0x850c, ENC_GB_2312 },
+{ 0x8511, 0x8511, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8513, 0x8513, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8514, 0x8514, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8515, 0x8515, ENC_JIS_0208 },
+{ 0x8517, 0x8517, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8518, 0x8518, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x851a, 0x851a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x851e, 0x851e, ENC_KSC_5601 },
+{ 0x851f, 0x851f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8521, 0x8521, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8523, 0x8523, ENC_KSC_5601 },
+{ 0x8525, 0x8525, ENC_KSC_5601 },
+{ 0x8526, 0x8526, ENC_JIS_0208 },
+{ 0x852b, 0x852b, ENC_GB_2312 },
+{ 0x852c, 0x852c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x852d, 0x852d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x852f, 0x852f, ENC_KSC_5601 },
+{ 0x8535, 0x8535, ENC_JIS_0208 },
+{ 0x8537, 0x853c, ENC_GB_2312 },
+{ 0x853d, 0x853d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x853f, 0x853f, ENC_KSC_5601 },
+{ 0x8540, 0x8540, ENC_JIS_0208 },
+{ 0x8541, 0x8541, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8543, 0x8543, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8548, 0x8548, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8549, 0x8549, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x854a, 0x854a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x854b, 0x854b, ENC_JIS_0208 },
+{ 0x854e, 0x854e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8553, 0x8553, ENC_KSC_5601 },
+{ 0x8555, 0x8555, ENC_JIS_0208 },
+{ 0x8556, 0x8556, ENC_GB_2312 },
+{ 0x8557, 0x8558, ENC_JIS_0208 },
+{ 0x8559, 0x8559, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x855a, 0x855a, ENC_JIS_0208 },
+{ 0x855e, 0x855e, ENC_GB_2312 },
+{ 0x8563, 0x8563, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8564, 0x8564, ENC_GB_2312 },
+{ 0x8568, 0x8568, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8569, 0x856a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x856d, 0x856d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8572, 0x8572, ENC_GB_2312 },
+{ 0x8574, 0x8574, ENC_GB_2312 },
+{ 0x8577, 0x8577, ENC_JIS_0208 },
+{ 0x8579, 0x857b, ENC_GB_2312 },
+{ 0x857e, 0x857e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8580, 0x8580, ENC_JIS_0208 },
+{ 0x8584, 0x8584, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8585, 0x8585, ENC_GB_2312 },
+{ 0x8587, 0x8587, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8588, 0x8588, ENC_JIS_0208 },
+{ 0x858a, 0x858a, ENC_JIS_0208 },
+{ 0x858f, 0x858f, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x8590, 0x8590, ENC_JIS_0208 },
+{ 0x8591, 0x8591, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8594, 0x8594, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8597, 0x8597, ENC_JIS_0208 },
+{ 0x8599, 0x8599, ENC_JIS_0208 },
+{ 0x859b, 0x859b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x859c, 0x859c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x85a4, 0x85a4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x85a6, 0x85a6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85a8, 0x85a8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85a9, 0x85a9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85aa, 0x85aa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85ab, 0x85ac, ENC_JIS_0208 },
+{ 0x85ae, 0x85ae, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x85af, 0x85af, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85b0, 0x85b0, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x85b7, 0x85b7, ENC_GB_2312 },
+{ 0x85b9, 0x85b9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x85ba, 0x85ba, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85c1, 0x85c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85c9, 0x85c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85cd, 0x85cd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85ce, 0x85ce, ENC_KSC_5601 },
+{ 0x85cf, 0x85cf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85d0, 0x85d0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x85d3, 0x85d3, ENC_GB_2312 },
+{ 0x85d5, 0x85d5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85dc, 0x85dc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85dd, 0x85dd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85e4, 0x85e4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85e5, 0x85e5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85e9, 0x85e9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85ea, 0x85ea, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85f7, 0x85f7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85f9, 0x85f9, ENC_JIS_0208 },
+{ 0x85fa, 0x85fa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85fb, 0x85fb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x85fe, 0x85fe, ENC_JIS_0208 },
+{ 0x85ff, 0x85ff, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x8602, 0x8602, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8605, 0x8605, ENC_GB_2312 },
+{ 0x8606, 0x8607, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x860a, 0x860a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x860b, 0x860b, ENC_JIS_0208 },
+{ 0x8611, 0x8611, ENC_GB_2312 },
+{ 0x8613, 0x8613, ENC_JIS_0208 },
+{ 0x8616, 0x8616, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8617, 0x8617, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x861a, 0x861a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8622, 0x8622, ENC_JIS_0208 },
+{ 0x8627, 0x8627, ENC_GB_2312 },
+{ 0x8629, 0x8629, ENC_GB_2312 },
+{ 0x862d, 0x862d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x862f, 0x8630, ENC_JIS_0208 },
+{ 0x8638, 0x8638, ENC_GB_2312 },
+{ 0x863c, 0x863c, ENC_GB_2312 },
+{ 0x863f, 0x863f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x864d, 0x864d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x864e, 0x864e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x864f, 0x864f, ENC_GB_2312 },
+{ 0x8650, 0x8650, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8651, 0x8651, ENC_GB_2312 },
+{ 0x8654, 0x8654, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8655, 0x8655, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x865a, 0x865a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x865b, 0x865b, ENC_KSC_5601 },
+{ 0x865c, 0x865c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x865e, 0x865e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x865f, 0x865f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8662, 0x8662, ENC_GB_2312 },
+{ 0x8667, 0x8667, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x866b, 0x866b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x866c, 0x866c, ENC_GB_2312 },
+{ 0x866e, 0x866e, ENC_GB_2312 },
+{ 0x8671, 0x8671, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8679, 0x8679, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x867a, 0x867a, ENC_GB_2312 },
+{ 0x867b, 0x867b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x867c, 0x8682, ENC_GB_2312 },
+{ 0x868a, 0x868a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x868b, 0x868b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x868c, 0x868c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x868d, 0x868d, ENC_GB_2312 },
+{ 0x8693, 0x8693, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8695, 0x8695, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x869c, 0x869d, ENC_GB_2312 },
+{ 0x86a3, 0x86a4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86a7, 0x86a8, ENC_GB_2312 },
+{ 0x86a9, 0x86a9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86aa, 0x86aa, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86ab, 0x86ab, ENC_JIS_0208 },
+{ 0x86ac, 0x86ac, ENC_GB_2312 },
+{ 0x86af, 0x86b0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86b1, 0x86b1, ENC_GB_2312 },
+{ 0x86b4, 0x86b5, ENC_GB_2312 },
+{ 0x86b6, 0x86b6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86ba, 0x86ba, ENC_GB_2312 },
+{ 0x86c0, 0x86c0, ENC_GB_2312 },
+{ 0x86c4, 0x86c4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86c6, 0x86c6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86c7, 0x86c7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86c9, 0x86c9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86ca, 0x86ca, ENC_GB_2312 },
+{ 0x86cb, 0x86cb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86cd, 0x86cd, ENC_JIS_0208 },
+{ 0x86ce, 0x86ce, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86cf, 0x86d1, ENC_GB_2312 },
+{ 0x86d4, 0x86d4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86d8, 0x86d8, ENC_GB_2312 },
+{ 0x86d9, 0x86d9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86db, 0x86db, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86de, 0x86de, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86df, 0x86df, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86e4, 0x86e4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86e9, 0x86e9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86ec, 0x86ec, ENC_JIS_0208 },
+{ 0x86ed, 0x86ed, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x86ee, 0x86ee, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86ef, 0x86ef, ENC_JIS_0208 },
+{ 0x86f0, 0x86f4, ENC_GB_2312 },
+{ 0x86f8, 0x86f9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x86fb, 0x86fb, ENC_JIS_0208 },
+{ 0x86fe, 0x86fe, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8700, 0x8700, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8702, 0x8703, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8706, 0x8706, ENC_JIS_0208 },
+{ 0x8707, 0x8707, ENC_GB_2312 },
+{ 0x8708, 0x8708, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8709, 0x870a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x870d, 0x870d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8711, 0x8711, ENC_JIS_0208 },
+{ 0x8712, 0x8712, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8713, 0x8713, ENC_GB_2312 },
+{ 0x8715, 0x8715, ENC_GB_2312 },
+{ 0x8717, 0x8717, ENC_GB_2312 },
+{ 0x8718, 0x8718, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x871a, 0x871a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x871c, 0x871c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x871e, 0x871e, ENC_GB_2312 },
+{ 0x8721, 0x8723, ENC_GB_2312 },
+{ 0x8725, 0x8725, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8729, 0x8729, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x872e, 0x872e, ENC_GB_2312 },
+{ 0x8731, 0x8731, ENC_GB_2312 },
+{ 0x8734, 0x8734, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8737, 0x8737, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x873b, 0x873b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x873e, 0x873e, ENC_GB_2312 },
+{ 0x873f, 0x873f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8747, 0x8748, ENC_GB_2312 },
+{ 0x8749, 0x8749, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x874b, 0x874b, ENC_JIS_0208 },
+{ 0x874c, 0x874c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x874e, 0x874e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8753, 0x8753, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8755, 0x8755, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8757, 0x8757, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8759, 0x8759, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x875f, 0x875f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8760, 0x8760, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8763, 0x8763, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8764, 0x8765, ENC_GB_2312 },
+{ 0x8766, 0x8766, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8768, 0x8768, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x876a, 0x876a, ENC_JIS_0208 },
+{ 0x876e, 0x876e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8770, 0x8770, ENC_GB_2312 },
+{ 0x8774, 0x8774, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8776, 0x8776, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8778, 0x8778, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x877b, 0x877e, ENC_GB_2312 },
+{ 0x877f, 0x877f, ENC_JIS_0208 },
+{ 0x8782, 0x8782, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8783, 0x8783, ENC_GB_2312 },
+{ 0x8785, 0x8785, ENC_GB_2312 },
+{ 0x8788, 0x8788, ENC_GB_2312 },
+{ 0x878b, 0x878b, ENC_GB_2312 },
+{ 0x878d, 0x878d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8793, 0x8793, ENC_GB_2312 },
+{ 0x8797, 0x8797, ENC_GB_2312 },
+{ 0x879f, 0x879f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87a2, 0x87a2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87a8, 0x87a8, ENC_GB_2312 },
+{ 0x87ab, 0x87ab, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x87ac, 0x87ad, ENC_GB_2312 },
+{ 0x87af, 0x87af, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x87b3, 0x87b3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87b5, 0x87b5, ENC_GB_2312 },
+{ 0x87ba, 0x87ba, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87bb, 0x87bb, ENC_JIS_0208 },
+{ 0x87bd, 0x87bd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x87c0, 0x87c0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x87c4, 0x87c4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87c6, 0x87c6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x87c7, 0x87c7, ENC_JIS_0208 },
+{ 0x87ca, 0x87ca, ENC_GB_2312 },
+{ 0x87cb, 0x87cb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x87d0, 0x87d0, ENC_JIS_0208 },
+{ 0x87d1, 0x87d1, ENC_GB_2312 },
+{ 0x87d2, 0x87d2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x87d3, 0x87d3, ENC_GB_2312 },
+{ 0x87db, 0x87db, ENC_GB_2312 },
+{ 0x87e0, 0x87e0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87e5, 0x87e5, ENC_GB_2312 },
+{ 0x87ea, 0x87ea, ENC_GB_2312 },
+{ 0x87ec, 0x87ec, ENC_KSC_5601 },
+{ 0x87ee, 0x87ee, ENC_GB_2312 },
+{ 0x87ef, 0x87ef, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87f2, 0x87f2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87f6, 0x87f7, ENC_JIS_0208 },
+{ 0x87f9, 0x87f9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87fb, 0x87fb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x87fe, 0x87fe, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8803, 0x8803, ENC_GB_2312 },
+{ 0x8805, 0x8805, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x880a, 0x880a, ENC_GB_2312 },
+{ 0x880d, 0x880f, ENC_JIS_0208 },
+{ 0x8811, 0x8811, ENC_JIS_0208 },
+{ 0x8813, 0x8813, ENC_GB_2312 },
+{ 0x8815, 0x8816, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x881b, 0x881b, ENC_GB_2312 },
+{ 0x881f, 0x881f, ENC_KSC_5601 },
+{ 0x8821, 0x8821, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8822, 0x8822, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8823, 0x8823, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8827, 0x8827, ENC_JIS_0208 },
+{ 0x8831, 0x8831, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8832, 0x8832, ENC_GB_2312 },
+{ 0x8836, 0x8836, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8839, 0x8839, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x883b, 0x883b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x883c, 0x883c, ENC_GB_2312 },
+{ 0x8840, 0x8840, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8842, 0x8842, ENC_JIS_0208 },
+{ 0x8844, 0x8844, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8845, 0x8845, ENC_GB_2312 },
+{ 0x8846, 0x8846, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x884c, 0x884d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8852, 0x8853, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8854, 0x8854, ENC_GB_2312 },
+{ 0x8857, 0x8857, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8859, 0x8859, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x885b, 0x885b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x885d, 0x885d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x885e, 0x885e, ENC_JIS_0208 },
+{ 0x8861, 0x8863, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8864, 0x8865, ENC_GB_2312 },
+{ 0x8868, 0x8868, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8869, 0x8869, ENC_GB_2312 },
+{ 0x886b, 0x886b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x886c, 0x886c, ENC_GB_2312 },
+{ 0x886e, 0x886e, ENC_GB_2312 },
+{ 0x8870, 0x8870, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8872, 0x8872, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8875, 0x8875, ENC_JIS_0208 },
+{ 0x8877, 0x8877, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x887d, 0x887d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x887e, 0x887f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8881, 0x8882, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8884, 0x8885, ENC_GB_2312 },
+{ 0x8888, 0x8888, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x888b, 0x888b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x888d, 0x888d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8892, 0x8892, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8896, 0x8896, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8897, 0x8897, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8899, 0x8899, ENC_JIS_0208 },
+{ 0x889c, 0x889c, ENC_GB_2312 },
+{ 0x889e, 0x889e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88a2, 0x88a2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x88a4, 0x88a4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x88ab, 0x88ab, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88ad, 0x88ad, ENC_GB_2312 },
+{ 0x88ae, 0x88ae, ENC_JIS_0208 },
+{ 0x88b0, 0x88b0, ENC_JIS_0208 },
+{ 0x88b1, 0x88b1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x88b4, 0x88b4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88b5, 0x88b5, ENC_JIS_0208 },
+{ 0x88b7, 0x88b7, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x88bc, 0x88bc, ENC_GB_2312 },
+{ 0x88bf, 0x88bf, ENC_JIS_0208 },
+{ 0x88c1, 0x88c2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88c3, 0x88c4, ENC_JIS_0208 },
+{ 0x88c5, 0x88c5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x88c6, 0x88c6, ENC_GB_2312 },
+{ 0x88c9, 0x88c9, ENC_GB_2312 },
+{ 0x88ce, 0x88ce, ENC_GB_2312 },
+{ 0x88cf, 0x88cf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88d2, 0x88d2, ENC_GB_2312 },
+{ 0x88d4, 0x88d5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88d8, 0x88d8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x88d9, 0x88d9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88dc, 0x88dd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88df, 0x88df, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88e1, 0x88e1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88e2, 0x88e5, ENC_GB_2312 },
+{ 0x88e8, 0x88e8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88f0, 0x88f1, ENC_GB_2312 },
+{ 0x88f2, 0x88f2, ENC_JIS_0208 },
+{ 0x88f3, 0x88f4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88f5, 0x88f5, ENC_KSC_5601 },
+{ 0x88f8, 0x88f8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88f9, 0x88f9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x88fc, 0x88fc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x88fd, 0x88fd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x88fe, 0x88fe, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8902, 0x8902, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8904, 0x8904, ENC_JIS_0208 },
+{ 0x8907, 0x8907, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x890a, 0x890a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x890c, 0x890c, ENC_JIS_0208 },
+{ 0x8910, 0x8910, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8912, 0x8913, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8918, 0x8918, ENC_KSC_5601 },
+{ 0x8919, 0x8919, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x891a, 0x891b, ENC_GB_2312 },
+{ 0x891d, 0x891e, ENC_JIS_0208 },
+{ 0x8921, 0x8921, ENC_GB_2312 },
+{ 0x8925, 0x8925, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x892a, 0x892a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x892b, 0x892b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8930, 0x8930, ENC_GB_2312 },
+{ 0x8934, 0x8934, ENC_GB_2312 },
+{ 0x8936, 0x8936, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8938, 0x8938, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x893b, 0x893b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8941, 0x8941, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8943, 0x8943, ENC_JIS_0208 },
+{ 0x8944, 0x8944, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x894c, 0x894d, ENC_JIS_0208 },
+{ 0x8956, 0x8956, ENC_JIS_0208 },
+{ 0x895e, 0x895e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x895f, 0x895f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8960, 0x8960, ENC_JIS_0208 },
+{ 0x8964, 0x8964, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8966, 0x8966, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x896a, 0x896a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x896d, 0x896d, ENC_JIS_0208 },
+{ 0x896f, 0x896f, ENC_JIS_0208 },
+{ 0x8972, 0x8972, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8974, 0x8974, ENC_JIS_0208 },
+{ 0x8977, 0x8977, ENC_JIS_0208 },
+{ 0x897b, 0x897b, ENC_GB_2312 },
+{ 0x897e, 0x897e, ENC_JIS_0208 },
+{ 0x897f, 0x897f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8981, 0x8981, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8983, 0x8983, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8986, 0x8986, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8987, 0x8987, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8988, 0x8988, ENC_JIS_0208 },
+{ 0x898a, 0x898a, ENC_JIS_0208 },
+{ 0x898b, 0x898b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x898f, 0x898f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8993, 0x8993, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8996, 0x8996, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8997, 0x8998, ENC_JIS_0208 },
+{ 0x899a, 0x899a, ENC_JIS_0208 },
+{ 0x89a1, 0x89a1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x89a6, 0x89a7, ENC_JIS_0208 },
+{ 0x89a9, 0x89aa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x89ac, 0x89ac, ENC_JIS_0208 },
+{ 0x89af, 0x89af, ENC_JIS_0208 },
+{ 0x89b2, 0x89b2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x89b3, 0x89b3, ENC_JIS_0208 },
+{ 0x89ba, 0x89ba, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x89bd, 0x89bd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x89bf, 0x89bf, ENC_JIS_0208 },
+{ 0x89c0, 0x89c0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x89c1, 0x89c2, ENC_GB_2312 },
+{ 0x89c4, 0x89cc, ENC_GB_2312 },
+{ 0x89ce, 0x89d1, ENC_GB_2312 },
+{ 0x89d2, 0x89d2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x89d6, 0x89d6, ENC_GB_2312 },
+{ 0x89da, 0x89da, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x89dc, 0x89dc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x89dd, 0x89dd, ENC_JIS_0208 },
+{ 0x89de, 0x89de, ENC_GB_2312 },
+{ 0x89e3, 0x89e3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x89e5, 0x89e5, ENC_GB_2312 },
+{ 0x89e6, 0x89e6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x89e7, 0x89e7, ENC_JIS_0208 },
+{ 0x89eb, 0x89eb, ENC_GB_2312 },
+{ 0x89ef, 0x89ef, ENC_GB_2312 },
+{ 0x89f3, 0x89f3, ENC_GB_2312 },
+{ 0x89f4, 0x89f4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x89f8, 0x89f8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a00, 0x8a00, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a02, 0x8a03, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a07, 0x8a07, ENC_GB_2312 },
+{ 0x8a08, 0x8a08, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a0a, 0x8a0a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a0c, 0x8a0c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a0e, 0x8a0e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a10, 0x8a10, ENC_JIS_0208 },
+{ 0x8a13, 0x8a13, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a16, 0x8a18, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a1b, 0x8a1b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a1d, 0x8a1d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a1f, 0x8a1f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a23, 0x8a23, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a25, 0x8a25, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a2a, 0x8a2a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a2d, 0x8a2d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a31, 0x8a31, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a33, 0x8a33, ENC_JIS_0208 },
+{ 0x8a34, 0x8a34, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a36, 0x8a36, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a3a, 0x8a3b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a3c, 0x8a3c, ENC_JIS_0208 },
+{ 0x8a3e, 0x8a3e, ENC_GB_2312 },
+{ 0x8a41, 0x8a41, ENC_JIS_0208 },
+{ 0x8a46, 0x8a46, ENC_JIS_0208 },
+{ 0x8a48, 0x8a48, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8a50, 0x8a50, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a51, 0x8a52, ENC_JIS_0208 },
+{ 0x8a54, 0x8a55, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a5b, 0x8a5b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a5e, 0x8a5e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a60, 0x8a60, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a62, 0x8a63, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a66, 0x8a66, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a69, 0x8a69, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a6b, 0x8a6c, ENC_JIS_0208 },
+{ 0x8a6d, 0x8a6e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a70, 0x8a73, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a75, 0x8a75, ENC_KSC_5601 },
+{ 0x8a79, 0x8a79, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x8a7c, 0x8a7c, ENC_JIS_0208 },
+{ 0x8a82, 0x8a82, ENC_JIS_0208 },
+{ 0x8a84, 0x8a84, ENC_JIS_0208 },
+{ 0x8a85, 0x8a85, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a87, 0x8a87, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a89, 0x8a89, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8a8a, 0x8a8a, ENC_GB_2312 },
+{ 0x8a8c, 0x8a8d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a91, 0x8a91, ENC_JIS_0208 },
+{ 0x8a93, 0x8a93, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a95, 0x8a95, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a98, 0x8a98, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8a9a, 0x8a9a, ENC_JIS_0208 },
+{ 0x8a9e, 0x8a9e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8aa0, 0x8aa1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8aa3, 0x8aa6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8aa8, 0x8aa8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8aaa, 0x8aaa, ENC_KSC_5601 },
+{ 0x8aac, 0x8aad, ENC_JIS_0208 },
+{ 0x8ab0, 0x8ab0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ab2, 0x8ab2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ab9, 0x8ab9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8abc, 0x8abc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8abe, 0x8abe, ENC_KSC_5601 },
+{ 0x8abf, 0x8abf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ac2, 0x8ac2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ac4, 0x8ac4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ac7, 0x8ac7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8acb, 0x8acb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8acc, 0x8acc, ENC_JIS_0208 },
+{ 0x8acd, 0x8acd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8acf, 0x8acf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ad2, 0x8ad2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ad6, 0x8ad6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ada, 0x8ada, ENC_JIS_0208 },
+{ 0x8adb, 0x8adc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ade, 0x8ade, ENC_JIS_0208 },
+{ 0x8ae0, 0x8ae0, ENC_JIS_0208 },
+{ 0x8ae1, 0x8ae1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ae2, 0x8ae2, ENC_JIS_0208 },
+{ 0x8ae4, 0x8ae4, ENC_JIS_0208 },
+{ 0x8ae6, 0x8ae7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8aea, 0x8aea, ENC_KSC_5601 },
+{ 0x8aeb, 0x8aeb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8aed, 0x8aee, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8af1, 0x8af1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8af3, 0x8af3, ENC_JIS_0208 },
+{ 0x8af6, 0x8af6, ENC_KSC_5601 },
+{ 0x8af7, 0x8af8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8afa, 0x8afa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8afe, 0x8afe, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b00, 0x8b02, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b04, 0x8b04, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b07, 0x8b07, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8b0c, 0x8b0c, ENC_JIS_0208 },
+{ 0x8b0e, 0x8b0e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b10, 0x8b10, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b14, 0x8b14, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b16, 0x8b17, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b19, 0x8b1b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b1d, 0x8b1d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b20, 0x8b20, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b21, 0x8b21, ENC_JIS_0208 },
+{ 0x8b26, 0x8b26, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8b28, 0x8b28, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b2b, 0x8b2c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b33, 0x8b33, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b39, 0x8b39, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b3e, 0x8b3e, ENC_JIS_0208 },
+{ 0x8b41, 0x8b41, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b49, 0x8b49, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b4c, 0x8b4c, ENC_JIS_0208 },
+{ 0x8b4e, 0x8b4f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b56, 0x8b56, ENC_JIS_0208 },
+{ 0x8b58, 0x8b58, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b5a, 0x8b5a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b5b, 0x8b5b, ENC_JIS_0208 },
+{ 0x8b5c, 0x8b5c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b5f, 0x8b5f, ENC_JIS_0208 },
+{ 0x8b66, 0x8b66, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b6b, 0x8b6b, ENC_JIS_0208 },
+{ 0x8b6c, 0x8b6c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b6f, 0x8b70, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b71, 0x8b72, ENC_JIS_0208 },
+{ 0x8b74, 0x8b74, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b77, 0x8b77, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b7d, 0x8b7d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b80, 0x8b80, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b83, 0x8b83, ENC_JIS_0208 },
+{ 0x8b8a, 0x8b8a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b8c, 0x8b8c, ENC_JIS_0208 },
+{ 0x8b8e, 0x8b8e, ENC_JIS_0208 },
+{ 0x8b90, 0x8b90, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b92, 0x8b93, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b96, 0x8b96, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8b99, 0x8b99, ENC_JIS_0208 },
+{ 0x8b9a, 0x8b9a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ba0, 0x8bab, ENC_GB_2312 },
+{ 0x8bad, 0x8bb0, ENC_GB_2312 },
+{ 0x8bb2, 0x8bba, ENC_GB_2312 },
+{ 0x8bbc, 0x8bc6, ENC_GB_2312 },
+{ 0x8bc8, 0x8bcf, ENC_GB_2312 },
+{ 0x8bd1, 0x8be9, ENC_GB_2312 },
+{ 0x8beb, 0x8c08, ENC_GB_2312 },
+{ 0x8c0a, 0x8c1d, ENC_GB_2312 },
+{ 0x8c1f, 0x8c36, ENC_GB_2312 },
+{ 0x8c37, 0x8c37, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c3a, 0x8c3a, ENC_JIS_0208 },
+{ 0x8c3f, 0x8c3f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c41, 0x8c41, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c46, 0x8c46, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c47, 0x8c47, ENC_GB_2312 },
+{ 0x8c48, 0x8c48, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c49, 0x8c49, ENC_GB_2312 },
+{ 0x8c4a, 0x8c4a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c4c, 0x8c4c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c4e, 0x8c4e, ENC_JIS_0208 },
+{ 0x8c50, 0x8c50, ENC_JIS_0208 },
+{ 0x8c55, 0x8c55, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c5a, 0x8c5a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c61, 0x8c61, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c62, 0x8c62, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8c6a, 0x8c6b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c6c, 0x8c6c, ENC_JIS_0208 },
+{ 0x8c73, 0x8c73, ENC_GB_2312 },
+{ 0x8c78, 0x8c78, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8c79, 0x8c7a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c7c, 0x8c7c, ENC_JIS_0208 },
+{ 0x8c82, 0x8c82, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c85, 0x8c85, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8c89, 0x8c89, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8c8a, 0x8c8a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c8c, 0x8c8c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8c8d, 0x8c8e, ENC_JIS_0208 },
+{ 0x8c94, 0x8c94, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8c98, 0x8c98, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8c9d, 0x8c9e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ca0, 0x8ca2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ca7, 0x8cac, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cad, 0x8cae, ENC_JIS_0208 },
+{ 0x8caf, 0x8cb0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cb2, 0x8cb2, ENC_JIS_0208 },
+{ 0x8cb3, 0x8cb4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cb6, 0x8cb8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cbb, 0x8cbd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cbf, 0x8cc4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cc7, 0x8cc8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cca, 0x8cca, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ccd, 0x8cce, ENC_JIS_0208 },
+{ 0x8cd1, 0x8cd1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cd3, 0x8cd3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cda, 0x8cda, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cdb, 0x8cdb, ENC_JIS_0208 },
+{ 0x8cdc, 0x8cdc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cde, 0x8cde, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ce0, 0x8ce0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ce2, 0x8ce4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ce6, 0x8ce6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cea, 0x8cea, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ced, 0x8ced, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8cf4, 0x8cf4, ENC_KSC_5601 },
+{ 0x8cfa, 0x8cfa, ENC_JIS_0208 },
+{ 0x8cfb, 0x8cfd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d04, 0x8d05, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d07, 0x8d08, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d0a, 0x8d0a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d0b, 0x8d0b, ENC_JIS_0208 },
+{ 0x8d0d, 0x8d0d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d0f, 0x8d10, ENC_JIS_0208 },
+{ 0x8d13, 0x8d13, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d14, 0x8d14, ENC_JIS_0208 },
+{ 0x8d16, 0x8d16, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d1d, 0x8d1f, ENC_GB_2312 },
+{ 0x8d21, 0x8d50, ENC_GB_2312 },
+{ 0x8d53, 0x8d56, ENC_GB_2312 },
+{ 0x8d58, 0x8d5e, ENC_GB_2312 },
+{ 0x8d60, 0x8d63, ENC_GB_2312 },
+{ 0x8d64, 0x8d64, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d66, 0x8d66, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d67, 0x8d67, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8d6b, 0x8d6b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d6d, 0x8d6d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8d70, 0x8d70, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d71, 0x8d71, ENC_JIS_0208 },
+{ 0x8d73, 0x8d74, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d75, 0x8d76, ENC_GB_2312 },
+{ 0x8d77, 0x8d77, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d81, 0x8d81, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8d84, 0x8d84, ENC_GB_2312 },
+{ 0x8d85, 0x8d85, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d8a, 0x8d8a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d8b, 0x8d8b, ENC_GB_2312 },
+{ 0x8d91, 0x8d91, ENC_GB_2312 },
+{ 0x8d94, 0x8d94, ENC_GB_2312 },
+{ 0x8d99, 0x8d99, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8d9f, 0x8d9f, ENC_GB_2312 },
+{ 0x8da3, 0x8da3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8da8, 0x8da8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8db1, 0x8db1, ENC_GB_2312 },
+{ 0x8db3, 0x8db3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8db4, 0x8db5, ENC_GB_2312 },
+{ 0x8db8, 0x8db8, ENC_GB_2312 },
+{ 0x8dba, 0x8dba, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8dbc, 0x8dbc, ENC_GB_2312 },
+{ 0x8dbe, 0x8dbe, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8dbf, 0x8dbf, ENC_GB_2312 },
+{ 0x8dc2, 0x8dc2, ENC_JIS_0208 },
+{ 0x8dc3, 0x8dc4, ENC_GB_2312 },
+{ 0x8dc6, 0x8dc6, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x8dcb, 0x8dcc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8dce, 0x8dce, ENC_GB_2312 },
+{ 0x8dcf, 0x8dcf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8dd1, 0x8dd1, ENC_GB_2312 },
+{ 0x8dd6, 0x8dd6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8dd7, 0x8dd7, ENC_GB_2312 },
+{ 0x8dda, 0x8dda, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8ddb, 0x8ddb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ddd, 0x8ddd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8dde, 0x8dde, ENC_GB_2312 },
+{ 0x8ddf, 0x8ddf, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8de1, 0x8de1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8de3, 0x8de3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8de4, 0x8de4, ENC_GB_2312 },
+{ 0x8de8, 0x8de8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8dea, 0x8deb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8dec, 0x8dec, ENC_GB_2312 },
+{ 0x8def, 0x8def, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8df3, 0x8df3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8df5, 0x8df5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8df7, 0x8dfb, ENC_GB_2312 },
+{ 0x8dfc, 0x8dfc, ENC_JIS_0208 },
+{ 0x8dfd, 0x8dfd, ENC_GB_2312 },
+{ 0x8dff, 0x8dff, ENC_JIS_0208 },
+{ 0x8e05, 0x8e05, ENC_GB_2312 },
+{ 0x8e08, 0x8e08, ENC_JIS_0208 },
+{ 0x8e09, 0x8e09, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8e0a, 0x8e0a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e0c, 0x8e0c, ENC_GB_2312 },
+{ 0x8e0f, 0x8e0f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e10, 0x8e10, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e14, 0x8e14, ENC_GB_2312 },
+{ 0x8e1d, 0x8e1d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8e1e, 0x8e1e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e1f, 0x8e1f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8e22, 0x8e23, ENC_GB_2312 },
+{ 0x8e29, 0x8e29, ENC_GB_2312 },
+{ 0x8e2a, 0x8e2a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e2c, 0x8e2c, ENC_GB_2312 },
+{ 0x8e2e, 0x8e2f, ENC_GB_2312 },
+{ 0x8e30, 0x8e30, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e31, 0x8e31, ENC_GB_2312 },
+{ 0x8e34, 0x8e34, ENC_JIS_0208 },
+{ 0x8e35, 0x8e35, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e39, 0x8e3a, ENC_GB_2312 },
+{ 0x8e3d, 0x8e3d, ENC_GB_2312 },
+{ 0x8e40, 0x8e41, ENC_GB_2312 },
+{ 0x8e42, 0x8e42, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e44, 0x8e44, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e47, 0x8e4a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e4b, 0x8e4b, ENC_GB_2312 },
+{ 0x8e4c, 0x8e4c, ENC_JIS_0208 },
+{ 0x8e50, 0x8e50, ENC_JIS_0208 },
+{ 0x8e51, 0x8e52, ENC_GB_2312 },
+{ 0x8e55, 0x8e55, ENC_JIS_0208 },
+{ 0x8e59, 0x8e59, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e5f, 0x8e60, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e63, 0x8e64, ENC_JIS_0208 },
+{ 0x8e66, 0x8e66, ENC_GB_2312 },
+{ 0x8e69, 0x8e69, ENC_GB_2312 },
+{ 0x8e6c, 0x8e6d, ENC_GB_2312 },
+{ 0x8e6f, 0x8e70, ENC_GB_2312 },
+{ 0x8e72, 0x8e72, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8e74, 0x8e74, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e76, 0x8e76, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e7c, 0x8e7c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8e7f, 0x8e7f, ENC_GB_2312 },
+{ 0x8e81, 0x8e81, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e84, 0x8e84, ENC_JIS_0208 },
+{ 0x8e85, 0x8e85, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8e87, 0x8e87, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e8a, 0x8e8a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e8b, 0x8e8b, ENC_JIS_0208 },
+{ 0x8e8d, 0x8e8d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8e8f, 0x8e90, ENC_GB_2312 },
+{ 0x8e91, 0x8e91, ENC_JIS_0208 },
+{ 0x8e93, 0x8e93, ENC_JIS_0208 },
+{ 0x8e94, 0x8e94, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8e99, 0x8e99, ENC_JIS_0208 },
+{ 0x8e9c, 0x8e9c, ENC_GB_2312 },
+{ 0x8e9e, 0x8e9e, ENC_GB_2312 },
+{ 0x8ea1, 0x8ea1, ENC_JIS_0208 },
+{ 0x8eaa, 0x8eaa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8eab, 0x8eac, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8eaf, 0x8eaf, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8eb0, 0x8eb1, ENC_JIS_0208 },
+{ 0x8eb2, 0x8eb2, ENC_GB_2312 },
+{ 0x8eba, 0x8eba, ENC_GB_2312 },
+{ 0x8ebe, 0x8ebe, ENC_JIS_0208 },
+{ 0x8ec0, 0x8ec0, ENC_KSC_5601 },
+{ 0x8ec5, 0x8ec6, ENC_JIS_0208 },
+{ 0x8ec8, 0x8ec8, ENC_JIS_0208 },
+{ 0x8eca, 0x8ecd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ece, 0x8ece, ENC_GB_2312 },
+{ 0x8ed2, 0x8ed2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8edb, 0x8edb, ENC_JIS_0208 },
+{ 0x8edf, 0x8edf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ee2, 0x8ee3, ENC_JIS_0208 },
+{ 0x8eeb, 0x8eeb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ef8, 0x8ef8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8efb, 0x8efb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8efc, 0x8efd, ENC_JIS_0208 },
+{ 0x8efe, 0x8efe, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f03, 0x8f03, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f05, 0x8f05, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f09, 0x8f09, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f0a, 0x8f0a, ENC_JIS_0208 },
+{ 0x8f0c, 0x8f0c, ENC_JIS_0208 },
+{ 0x8f12, 0x8f15, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f19, 0x8f19, ENC_JIS_0208 },
+{ 0x8f1b, 0x8f1d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f1e, 0x8f1e, ENC_KSC_5601 },
+{ 0x8f1f, 0x8f1f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f26, 0x8f26, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f27, 0x8f27, ENC_KSC_5601 },
+{ 0x8f29, 0x8f2a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f2f, 0x8f2f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f33, 0x8f33, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f38, 0x8f39, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f3b, 0x8f3b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f3e, 0x8f3f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f42, 0x8f42, ENC_JIS_0208 },
+{ 0x8f44, 0x8f45, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f46, 0x8f46, ENC_JIS_0208 },
+{ 0x8f49, 0x8f49, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f4c, 0x8f4c, ENC_JIS_0208 },
+{ 0x8f4d, 0x8f4e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f57, 0x8f57, ENC_JIS_0208 },
+{ 0x8f5c, 0x8f5c, ENC_JIS_0208 },
+{ 0x8f5d, 0x8f5d, ENC_KSC_5601 },
+{ 0x8f5f, 0x8f5f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f61, 0x8f61, ENC_JIS_0208 },
+{ 0x8f62, 0x8f62, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f63, 0x8f64, ENC_JIS_0208 },
+{ 0x8f66, 0x8f69, ENC_GB_2312 },
+{ 0x8f6b, 0x8f7f, ENC_GB_2312 },
+{ 0x8f81, 0x8f8b, ENC_GB_2312 },
+{ 0x8f8d, 0x8f91, ENC_GB_2312 },
+{ 0x8f93, 0x8f9a, ENC_GB_2312 },
+{ 0x8f9b, 0x8f9c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8f9e, 0x8f9f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8fa3, 0x8fa3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fa6, 0x8fa6, ENC_KSC_5601 },
+{ 0x8fa7, 0x8fa7, ENC_JIS_0208 },
+{ 0x8fa8, 0x8fa8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fa9, 0x8fa9, ENC_GB_2312 },
+{ 0x8fab, 0x8fab, ENC_GB_2312 },
+{ 0x8fad, 0x8fad, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fae, 0x8fae, ENC_JIS_0208 },
+{ 0x8faf, 0x8faf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fb0, 0x8fb1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fb2, 0x8fb2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fb6, 0x8fb6, ENC_GB_2312 },
+{ 0x8fb7, 0x8fb7, ENC_JIS_0208 },
+{ 0x8fb9, 0x8fb9, ENC_GB_2312 },
+{ 0x8fba, 0x8fbc, ENC_JIS_0208 },
+{ 0x8fbd, 0x8fbe, ENC_GB_2312 },
+{ 0x8fbf, 0x8fbf, ENC_JIS_0208 },
+{ 0x8fc1, 0x8fc1, ENC_GB_2312 },
+{ 0x8fc2, 0x8fc2, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fc4, 0x8fc4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8fc5, 0x8fc5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fc7, 0x8fc8, ENC_GB_2312 },
+{ 0x8fce, 0x8fce, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fd0, 0x8fd0, ENC_GB_2312 },
+{ 0x8fd1, 0x8fd1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fd3, 0x8fd3, ENC_GB_2312 },
+{ 0x8fd4, 0x8fd4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fd5, 0x8fd5, ENC_GB_2312 },
+{ 0x8fd8, 0x8fd9, ENC_GB_2312 },
+{ 0x8fda, 0x8fda, ENC_JIS_0208 },
+{ 0x8fdb, 0x8fdf, ENC_GB_2312 },
+{ 0x8fe2, 0x8fe2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8fe4, 0x8fe4, ENC_GB_2312 },
+{ 0x8fe5, 0x8fe5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8fe6, 0x8fe6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fe8, 0x8fe8, ENC_GB_2312 },
+{ 0x8fe9, 0x8fe9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8fea, 0x8feb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fed, 0x8fed, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8fee, 0x8fee, ENC_GB_2312 },
+{ 0x8fef, 0x8fef, ENC_JIS_0208 },
+{ 0x8ff0, 0x8ff0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ff2, 0x8ff2, ENC_KSC_5601 },
+{ 0x8ff3, 0x8ff3, ENC_GB_2312 },
+{ 0x8ff4, 0x8ff4, ENC_JIS_0208 },
+{ 0x8ff7, 0x8ff7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ff8, 0x8ff8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x8ff9, 0x8ff9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x8ffa, 0x8ffa, ENC_JIS_0208 },
+{ 0x8ffd, 0x8ffd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9000, 0x9001, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9002, 0x9002, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x9003, 0x9003, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9004, 0x9004, ENC_GB_2312 },
+{ 0x9005, 0x9006, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9008, 0x9008, ENC_KSC_5601 },
+{ 0x9009, 0x900a, ENC_GB_2312 },
+{ 0x900b, 0x900b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x900d, 0x900d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x900e, 0x900e, ENC_JIS_0208 },
+{ 0x900f, 0x9011, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9012, 0x9012, ENC_GB_2312 },
+{ 0x9013, 0x9013, ENC_JIS_0208 },
+{ 0x9014, 0x9014, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9015, 0x9015, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9016, 0x9016, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9017, 0x9017, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9019, 0x9019, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x901a, 0x901a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x901b, 0x901b, ENC_GB_2312 },
+{ 0x901d, 0x9022, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9023, 0x9023, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9026, 0x9026, ENC_GB_2312 },
+{ 0x9027, 0x9027, ENC_JIS_0208 },
+{ 0x902d, 0x902d, ENC_GB_2312 },
+{ 0x902e, 0x902e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x902f, 0x902f, ENC_GB_2312 },
+{ 0x9031, 0x9032, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9035, 0x9035, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9036, 0x9036, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9038, 0x9038, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9039, 0x9039, ENC_JIS_0208 },
+{ 0x903b, 0x903b, ENC_GB_2312 },
+{ 0x903c, 0x903c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x903e, 0x903e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9041, 0x9042, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9044, 0x9044, ENC_GB_2312 },
+{ 0x9045, 0x9045, ENC_JIS_0208 },
+{ 0x9047, 0x9047, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9049, 0x9049, ENC_JIS_0208 },
+{ 0x904a, 0x904b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x904d, 0x904d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x904e, 0x904e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x904f, 0x904f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9050, 0x9051, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9052, 0x9052, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9053, 0x9053, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9054, 0x9055, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9056, 0x9056, ENC_JIS_0208 },
+{ 0x9057, 0x9057, ENC_GB_2312 },
+{ 0x9058, 0x9058, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9059, 0x9059, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x905b, 0x905b, ENC_GB_2312 },
+{ 0x905c, 0x905c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x905d, 0x905d, ENC_KSC_5601 },
+{ 0x905e, 0x905e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9060, 0x9061, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9062, 0x9062, ENC_GB_2312 },
+{ 0x9063, 0x9063, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9065, 0x9065, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9068, 0x9068, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9069, 0x9069, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x906d, 0x906e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x906f, 0x906f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9072, 0x9072, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9074, 0x9074, ENC_GB_2312 },
+{ 0x9075, 0x9075, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9076, 0x9076, ENC_JIS_0208 },
+{ 0x9077, 0x9078, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x907a, 0x907a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x907c, 0x907c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x907d, 0x907d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x907f, 0x9080, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9081, 0x9081, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9082, 0x9083, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9084, 0x9084, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9087, 0x9087, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9088, 0x9088, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x9089, 0x9089, ENC_JIS_0208 },
+{ 0x908a, 0x908a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x908b, 0x908b, ENC_GB_2312 },
+{ 0x908f, 0x908f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9091, 0x9091, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9093, 0x9093, ENC_GB_2312 },
+{ 0x9095, 0x9095, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x9097, 0x9097, ENC_GB_2312 },
+{ 0x9099, 0x9099, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x909b, 0x909b, ENC_GB_2312 },
+{ 0x909d, 0x909d, ENC_GB_2312 },
+{ 0x90a1, 0x90a1, ENC_GB_2312 },
+{ 0x90a2, 0x90a2, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x90a3, 0x90a3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90a6, 0x90a6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90a8, 0x90a8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90aa, 0x90aa, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90ac, 0x90ac, ENC_GB_2312 },
+{ 0x90ae, 0x90ae, ENC_GB_2312 },
+{ 0x90af, 0x90af, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90b0, 0x90b0, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x90b1, 0x90b1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90b3, 0x90b4, ENC_GB_2312 },
+{ 0x90b5, 0x90b5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90b6, 0x90b6, ENC_GB_2312 },
+{ 0x90b8, 0x90b8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90b9, 0x90bb, ENC_GB_2312 },
+{ 0x90be, 0x90be, ENC_GB_2312 },
+{ 0x90c1, 0x90c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90c4, 0x90c5, ENC_GB_2312 },
+{ 0x90c7, 0x90c7, ENC_GB_2312 },
+{ 0x90ca, 0x90ca, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90ce, 0x90ce, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x90cf, 0x90d1, ENC_GB_2312 },
+{ 0x90d3, 0x90d3, ENC_GB_2312 },
+{ 0x90d7, 0x90d7, ENC_GB_2312 },
+{ 0x90db, 0x90db, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x90dc, 0x90dd, ENC_GB_2312 },
+{ 0x90de, 0x90de, ENC_KSC_5601 },
+{ 0x90e1, 0x90e1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90e2, 0x90e2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x90e4, 0x90e4, ENC_JIS_0208 },
+{ 0x90e6, 0x90e7, ENC_GB_2312 },
+{ 0x90e8, 0x90e8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90eb, 0x90eb, ENC_GB_2312 },
+{ 0x90ed, 0x90ed, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90ef, 0x90ef, ENC_GB_2312 },
+{ 0x90f4, 0x90f4, ENC_GB_2312 },
+{ 0x90f5, 0x90f5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90f7, 0x90f7, ENC_JIS_0208 },
+{ 0x90f8, 0x90f8, ENC_GB_2312 },
+{ 0x90fd, 0x90fd, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x90fe, 0x90fe, ENC_GB_2312 },
+{ 0x9102, 0x9102, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9104, 0x9104, ENC_GB_2312 },
+{ 0x9112, 0x9112, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9115, 0x9115, ENC_KSC_5601 },
+{ 0x9119, 0x9119, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x911e, 0x911e, ENC_GB_2312 },
+{ 0x9122, 0x9123, ENC_GB_2312 },
+{ 0x9127, 0x9127, ENC_KSC_5601 },
+{ 0x912d, 0x912d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x912f, 0x912f, ENC_GB_2312 },
+{ 0x9130, 0x9130, ENC_JIS_0208 },
+{ 0x9131, 0x9131, ENC_GB_2312 },
+{ 0x9132, 0x9132, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9139, 0x9139, ENC_GB_2312 },
+{ 0x9143, 0x9143, ENC_GB_2312 },
+{ 0x9146, 0x9146, ENC_GB_2312 },
+{ 0x9149, 0x914e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x914f, 0x9150, ENC_GB_2312 },
+{ 0x9152, 0x9152, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9154, 0x9154, ENC_JIS_0208 },
+{ 0x9156, 0x9156, ENC_JIS_0208 },
+{ 0x9157, 0x9157, ENC_GB_2312 },
+{ 0x9158, 0x9158, ENC_JIS_0208 },
+{ 0x915a, 0x915a, ENC_GB_2312 },
+{ 0x915d, 0x915e, ENC_GB_2312 },
+{ 0x9161, 0x9161, ENC_GB_2312 },
+{ 0x9162, 0x9162, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9163, 0x9163, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9164, 0x9164, ENC_GB_2312 },
+{ 0x9165, 0x9165, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9169, 0x916a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x916c, 0x916c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x916e, 0x9171, ENC_GB_2312 },
+{ 0x9172, 0x9172, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9173, 0x9173, ENC_JIS_0208 },
+{ 0x9174, 0x9174, ENC_GB_2312 },
+{ 0x9175, 0x9175, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9176, 0x9176, ENC_GB_2312 },
+{ 0x9177, 0x9178, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9179, 0x9179, ENC_GB_2312 },
+{ 0x917d, 0x917f, ENC_GB_2312 },
+{ 0x9182, 0x9182, ENC_JIS_0208 },
+{ 0x9185, 0x9185, ENC_GB_2312 },
+{ 0x9187, 0x9187, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9189, 0x9189, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x918b, 0x918b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x918c, 0x918c, ENC_GB_2312 },
+{ 0x918d, 0x918d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9190, 0x9190, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9191, 0x9191, ENC_GB_2312 },
+{ 0x9192, 0x9192, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9197, 0x9197, ENC_JIS_0208 },
+{ 0x919a, 0x919b, ENC_GB_2312 },
+{ 0x919c, 0x919c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91a2, 0x91a2, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x91a3, 0x91a3, ENC_GB_2312 },
+{ 0x91a4, 0x91a4, ENC_JIS_0208 },
+{ 0x91aa, 0x91aa, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x91ab, 0x91ab, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91ac, 0x91ac, ENC_KSC_5601 },
+{ 0x91ad, 0x91ad, ENC_GB_2312 },
+{ 0x91ae, 0x91ae, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x91af, 0x91af, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91b1, 0x91b1, ENC_KSC_5601 },
+{ 0x91b4, 0x91b5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91b8, 0x91b8, ENC_JIS_0208 },
+{ 0x91ba, 0x91ba, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x91c0, 0x91c0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91c1, 0x91c1, ENC_JIS_0208 },
+{ 0x91c6, 0x91c6, ENC_JIS_0208 },
+{ 0x91c7, 0x91c7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91c8, 0x91c8, ENC_JIS_0208 },
+{ 0x91c9, 0x91c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91ca, 0x91ca, ENC_GB_2312 },
+{ 0x91cb, 0x91cb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91cc, 0x91cf, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91d0, 0x91d0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91d1, 0x91d1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91d6, 0x91d6, ENC_JIS_0208 },
+{ 0x91d7, 0x91d7, ENC_KSC_5601 },
+{ 0x91d8, 0x91d8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91db, 0x91db, ENC_JIS_0208 },
+{ 0x91dc, 0x91dc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91dd, 0x91dd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91df, 0x91df, ENC_JIS_0208 },
+{ 0x91e1, 0x91e1, ENC_JIS_0208 },
+{ 0x91e3, 0x91e3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91e6, 0x91e6, ENC_JIS_0208 },
+{ 0x91e7, 0x91e7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91ea, 0x91ea, ENC_KSC_5601 },
+{ 0x91f5, 0x91f5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x91f6, 0x91f6, ENC_JIS_0208 },
+{ 0x91fc, 0x91fc, ENC_JIS_0208 },
+{ 0x91ff, 0x91ff, ENC_JIS_0208 },
+{ 0x920d, 0x920d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x920e, 0x920e, ENC_JIS_0208 },
+{ 0x9210, 0x9210, ENC_KSC_5601 },
+{ 0x9211, 0x9211, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9212, 0x9212, ENC_KSC_5601 },
+{ 0x9214, 0x9215, ENC_JIS_0208 },
+{ 0x9217, 0x9217, ENC_KSC_5601 },
+{ 0x921e, 0x921e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9229, 0x9229, ENC_JIS_0208 },
+{ 0x922c, 0x922c, ENC_JIS_0208 },
+{ 0x9234, 0x9234, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9237, 0x9237, ENC_JIS_0208 },
+{ 0x923a, 0x923a, ENC_KSC_5601 },
+{ 0x923f, 0x923f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9240, 0x9240, ENC_KSC_5601 },
+{ 0x9244, 0x9244, ENC_JIS_0208 },
+{ 0x9245, 0x9245, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9248, 0x9248, ENC_JIS_0208 },
+{ 0x9249, 0x9249, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x924b, 0x924b, ENC_JIS_0208 },
+{ 0x9250, 0x9250, ENC_JIS_0208 },
+{ 0x9257, 0x9257, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x925a, 0x925a, ENC_JIS_0208 },
+{ 0x925b, 0x925b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x925e, 0x925e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9262, 0x9262, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9264, 0x9264, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9265, 0x9265, ENC_KSC_5601 },
+{ 0x9266, 0x9266, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9271, 0x9271, ENC_JIS_0208 },
+{ 0x9274, 0x9274, ENC_GB_2312 },
+{ 0x927e, 0x927e, ENC_JIS_0208 },
+{ 0x9280, 0x9280, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9283, 0x9283, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9285, 0x9285, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x928e, 0x928e, ENC_GB_2312 },
+{ 0x9291, 0x9291, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9293, 0x9293, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9295, 0x9295, ENC_JIS_0208 },
+{ 0x9296, 0x9296, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9298, 0x9298, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x929a, 0x929b, ENC_JIS_0208 },
+{ 0x929c, 0x929c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x92ad, 0x92ad, ENC_JIS_0208 },
+{ 0x92ae, 0x92ae, ENC_GB_2312 },
+{ 0x92b3, 0x92b3, ENC_KSC_5601 },
+{ 0x92b6, 0x92b6, ENC_KSC_5601 },
+{ 0x92b7, 0x92b7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x92b9, 0x92b9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x92c8, 0x92c8, ENC_GB_2312 },
+{ 0x92cc, 0x92cc, ENC_KSC_5601 },
+{ 0x92cf, 0x92cf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x92d2, 0x92d2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x92e4, 0x92e4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x92e9, 0x92e9, ENC_JIS_0208 },
+{ 0x92ea, 0x92ea, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x92ed, 0x92ed, ENC_JIS_0208 },
+{ 0x92f2, 0x92f3, ENC_JIS_0208 },
+{ 0x92f8, 0x92f8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x92fa, 0x92fa, ENC_JIS_0208 },
+{ 0x92fc, 0x92fc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9304, 0x9304, ENC_KSC_5601 },
+{ 0x9306, 0x9306, ENC_JIS_0208 },
+{ 0x930f, 0x930f, ENC_JIS_0208 },
+{ 0x9310, 0x9310, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9318, 0x9318, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9319, 0x9319, ENC_JIS_0208 },
+{ 0x931a, 0x931a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x931e, 0x931f, ENC_KSC_5601 },
+{ 0x9320, 0x9320, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9321, 0x9321, ENC_KSC_5601 },
+{ 0x9322, 0x9322, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9323, 0x9323, ENC_JIS_0208 },
+{ 0x9324, 0x9324, ENC_KSC_5601 },
+{ 0x9326, 0x9326, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9328, 0x9328, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x932b, 0x932b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x932c, 0x932c, ENC_JIS_0208 },
+{ 0x932e, 0x932f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9332, 0x9332, ENC_JIS_0208 },
+{ 0x9335, 0x9335, ENC_JIS_0208 },
+{ 0x933a, 0x933b, ENC_JIS_0208 },
+{ 0x933e, 0x933e, ENC_GB_2312 },
+{ 0x9344, 0x9344, ENC_JIS_0208 },
+{ 0x9348, 0x9348, ENC_KSC_5601 },
+{ 0x934a, 0x934a, ENC_KSC_5601 },
+{ 0x934b, 0x934b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x934d, 0x934d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9354, 0x9354, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9356, 0x9356, ENC_JIS_0208 },
+{ 0x935b, 0x935b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x935c, 0x935c, ENC_JIS_0208 },
+{ 0x9360, 0x9360, ENC_JIS_0208 },
+{ 0x936a, 0x936a, ENC_GB_2312 },
+{ 0x936c, 0x936c, ENC_JIS_0208 },
+{ 0x936e, 0x936e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9375, 0x9375, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x937c, 0x937c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x937e, 0x937e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x938c, 0x938c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x938f, 0x938f, ENC_GB_2312 },
+{ 0x9394, 0x9394, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9396, 0x9396, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9397, 0x9397, ENC_JIS_0208 },
+{ 0x939a, 0x939a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x93a3, 0x93a3, ENC_KSC_5601 },
+{ 0x93a7, 0x93a7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x93ac, 0x93ad, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x93ae, 0x93ae, ENC_JIS_0208 },
+{ 0x93b0, 0x93b0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x93b9, 0x93b9, ENC_JIS_0208 },
+{ 0x93c3, 0x93c3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x93c8, 0x93c8, ENC_JIS_0208 },
+{ 0x93ca, 0x93ca, ENC_GB_2312 },
+{ 0x93d0, 0x93d0, ENC_JIS_0208 },
+{ 0x93d1, 0x93d1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x93d6, 0x93d6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x93d7, 0x93d8, ENC_JIS_0208 },
+{ 0x93dd, 0x93dd, ENC_JIS_0208 },
+{ 0x93de, 0x93de, ENC_KSC_5601 },
+{ 0x93e1, 0x93e1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x93e4, 0x93e4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x93e5, 0x93e5, ENC_JIS_0208 },
+{ 0x93e8, 0x93e8, ENC_JIS_0208 },
+{ 0x93f6, 0x93f6, ENC_KSC_5601 },
+{ 0x9403, 0x9403, ENC_JIS_0208 },
+{ 0x9404, 0x9404, ENC_KSC_5601 },
+{ 0x9407, 0x9407, ENC_JIS_0208 },
+{ 0x9410, 0x9410, ENC_JIS_0208 },
+{ 0x9413, 0x9414, ENC_JIS_0208 },
+{ 0x9418, 0x9418, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9419, 0x941a, ENC_JIS_0208 },
+{ 0x9421, 0x9421, ENC_JIS_0208 },
+{ 0x9425, 0x9425, ENC_KSC_5601 },
+{ 0x942b, 0x942b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9435, 0x9435, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9436, 0x9436, ENC_JIS_0208 },
+{ 0x9438, 0x9438, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x943a, 0x943a, ENC_JIS_0208 },
+{ 0x943e, 0x943e, ENC_GB_2312 },
+{ 0x9441, 0x9441, ENC_JIS_0208 },
+{ 0x9444, 0x9444, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9451, 0x9452, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9453, 0x9453, ENC_JIS_0208 },
+{ 0x945a, 0x945a, ENC_JIS_0208 },
+{ 0x945b, 0x945b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x945e, 0x945e, ENC_JIS_0208 },
+{ 0x9460, 0x9460, ENC_JIS_0208 },
+{ 0x9462, 0x9462, ENC_JIS_0208 },
+{ 0x946a, 0x946a, ENC_JIS_0208 },
+{ 0x946b, 0x946b, ENC_GB_2312 },
+{ 0x9470, 0x9470, ENC_JIS_0208 },
+{ 0x9475, 0x9475, ENC_JIS_0208 },
+{ 0x9477, 0x9477, ENC_JIS_0208 },
+{ 0x947c, 0x947c, ENC_JIS_0208 },
+{ 0x947d, 0x947d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x947e, 0x947e, ENC_JIS_0208 },
+{ 0x947f, 0x947f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9481, 0x9481, ENC_JIS_0208 },
+{ 0x9485, 0x9490, ENC_GB_2312 },
+{ 0x9492, 0x9495, ENC_GB_2312 },
+{ 0x9497, 0x9497, ENC_GB_2312 },
+{ 0x9499, 0x94c6, ENC_GB_2312 },
+{ 0x94c8, 0x94ce, ENC_GB_2312 },
+{ 0x94d0, 0x94d2, ENC_GB_2312 },
+{ 0x94d5, 0x94d9, ENC_GB_2312 },
+{ 0x94db, 0x94e5, ENC_GB_2312 },
+{ 0x94e7, 0x94fa, ENC_GB_2312 },
+{ 0x94fc, 0x951b, ENC_GB_2312 },
+{ 0x951d, 0x951f, ENC_GB_2312 },
+{ 0x9521, 0x9526, ENC_GB_2312 },
+{ 0x9528, 0x9532, ENC_GB_2312 },
+{ 0x9534, 0x953c, ENC_GB_2312 },
+{ 0x953e, 0x9542, ENC_GB_2312 },
+{ 0x9544, 0x9547, ENC_GB_2312 },
+{ 0x9549, 0x954a, ENC_GB_2312 },
+{ 0x954c, 0x9554, ENC_GB_2312 },
+{ 0x9556, 0x9559, ENC_GB_2312 },
+{ 0x955b, 0x955f, ENC_GB_2312 },
+{ 0x9561, 0x956d, ENC_GB_2312 },
+{ 0x956f, 0x9573, ENC_GB_2312 },
+{ 0x9576, 0x9576, ENC_GB_2312 },
+{ 0x9577, 0x9577, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x957f, 0x957f, ENC_GB_2312 },
+{ 0x9580, 0x9580, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9582, 0x9582, ENC_JIS_0208 },
+{ 0x9583, 0x9583, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9587, 0x9587, ENC_JIS_0208 },
+{ 0x9589, 0x9589, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x958a, 0x958a, ENC_JIS_0208 },
+{ 0x958b, 0x958b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x958f, 0x958f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9591, 0x9591, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9592, 0x9592, ENC_KSC_5601 },
+{ 0x9593, 0x9594, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9596, 0x9596, ENC_JIS_0208 },
+{ 0x9598, 0x9598, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9599, 0x9599, ENC_JIS_0208 },
+{ 0x95a0, 0x95a0, ENC_JIS_0208 },
+{ 0x95a2, 0x95a2, ENC_JIS_0208 },
+{ 0x95a3, 0x95a5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x95a7, 0x95a7, ENC_JIS_0208 },
+{ 0x95a8, 0x95a8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x95ad, 0x95ad, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x95b1, 0x95b1, ENC_KSC_5601 },
+{ 0x95b2, 0x95b2, ENC_JIS_0208 },
+{ 0x95b9, 0x95b9, ENC_JIS_0208 },
+{ 0x95bb, 0x95bc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x95be, 0x95be, ENC_JIS_0208 },
+{ 0x95c3, 0x95c3, ENC_JIS_0208 },
+{ 0x95c7, 0x95c7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x95ca, 0x95ca, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x95cc, 0x95cd, ENC_JIS_0208 },
+{ 0x95d4, 0x95d6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x95d8, 0x95d8, ENC_JIS_0208 },
+{ 0x95dc, 0x95dc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x95e1, 0x95e2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x95e5, 0x95e5, ENC_JIS_0208 },
+{ 0x95e8, 0x95eb, ENC_GB_2312 },
+{ 0x95ed, 0x95fe, ENC_GB_2312 },
+{ 0x9600, 0x9606, ENC_GB_2312 },
+{ 0x9608, 0x9612, ENC_GB_2312 },
+{ 0x9614, 0x9617, ENC_GB_2312 },
+{ 0x9619, 0x961a, ENC_GB_2312 },
+{ 0x961c, 0x961c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x961d, 0x961d, ENC_GB_2312 },
+{ 0x961f, 0x961f, ENC_GB_2312 },
+{ 0x9621, 0x9621, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9622, 0x9622, ENC_GB_2312 },
+{ 0x9628, 0x9628, ENC_JIS_0208 },
+{ 0x962a, 0x962a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x962e, 0x962e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x962f, 0x962f, ENC_JIS_0208 },
+{ 0x9631, 0x9631, ENC_GB_2312 },
+{ 0x9632, 0x9632, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9633, 0x9636, ENC_GB_2312 },
+{ 0x963b, 0x963b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x963c, 0x963d, ENC_GB_2312 },
+{ 0x963f, 0x9640, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9642, 0x9642, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9644, 0x9644, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9645, 0x9649, ENC_GB_2312 },
+{ 0x964b, 0x964d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x964f, 0x964f, ENC_JIS_0208 },
+{ 0x9650, 0x9650, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9654, 0x9655, ENC_GB_2312 },
+{ 0x965b, 0x965b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x965c, 0x965e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x965f, 0x965f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9661, 0x9661, ENC_GB_2312 },
+{ 0x9662, 0x9662, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9663, 0x9663, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9664, 0x9664, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9665, 0x9666, ENC_JIS_0208 },
+{ 0x9667, 0x9669, ENC_GB_2312 },
+{ 0x966a, 0x966a, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x966c, 0x966c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9670, 0x9670, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9672, 0x9672, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9673, 0x9673, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9674, 0x9674, ENC_GB_2312 },
+{ 0x9675, 0x9677, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9678, 0x9678, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x967a, 0x967a, ENC_JIS_0208 },
+{ 0x967d, 0x967d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9685, 0x9686, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9688, 0x9688, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x968a, 0x968a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x968b, 0x968b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x968d, 0x968d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x968e, 0x968e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x968f, 0x968f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9690, 0x9690, ENC_GB_2312 },
+{ 0x9694, 0x9694, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9695, 0x9695, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9697, 0x9697, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9698, 0x9699, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x969b, 0x969b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x969c, 0x969c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96a0, 0x96a0, ENC_JIS_0208 },
+{ 0x96a3, 0x96a3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96a7, 0x96a7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96a8, 0x96a8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96aa, 0x96aa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96b0, 0x96b0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x96b1, 0x96b1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96b2, 0x96b2, ENC_JIS_0208 },
+{ 0x96b3, 0x96b3, ENC_GB_2312 },
+{ 0x96b4, 0x96b4, ENC_JIS_0208 },
+{ 0x96b6, 0x96b6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x96b7, 0x96b7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96b8, 0x96b8, ENC_JIS_0208 },
+{ 0x96b9, 0x96b9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x96bb, 0x96bb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96bc, 0x96bc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x96bd, 0x96be, ENC_GB_2312 },
+{ 0x96c0, 0x96c1, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96c4, 0x96c7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96c9, 0x96c9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96cb, 0x96cb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96cc, 0x96ce, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96cf, 0x96cf, ENC_GB_2312 },
+{ 0x96d1, 0x96d1, ENC_JIS_0208 },
+{ 0x96d2, 0x96d2, ENC_GB_2312 },
+{ 0x96d5, 0x96d5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96d6, 0x96d6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96d9, 0x96d9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96db, 0x96dc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96e0, 0x96e0, ENC_GB_2312 },
+{ 0x96e2, 0x96e3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96e8, 0x96e8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96e9, 0x96e9, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x96ea, 0x96ea, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96eb, 0x96eb, ENC_JIS_0208 },
+{ 0x96ef, 0x96ef, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x96f0, 0x96f0, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96f2, 0x96f2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96f3, 0x96f3, ENC_GB_2312 },
+{ 0x96f6, 0x96f7, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96f9, 0x96f9, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96fb, 0x96fb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x96fe, 0x96fe, ENC_GB_2312 },
+{ 0x9700, 0x9700, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9701, 0x9701, ENC_GB_2312 },
+{ 0x9704, 0x9704, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9706, 0x9707, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9708, 0x9708, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9709, 0x9709, ENC_GB_2312 },
+{ 0x970a, 0x970a, ENC_JIS_0208 },
+{ 0x970d, 0x970f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9711, 0x9711, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9713, 0x9713, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9716, 0x9716, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9719, 0x9719, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x971c, 0x971c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x971e, 0x971e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9724, 0x9724, ENC_JIS_0208 },
+{ 0x9727, 0x9727, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x972a, 0x972a, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x972d, 0x972d, ENC_GB_2312 },
+{ 0x9730, 0x9730, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9732, 0x9732, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9738, 0x9738, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9739, 0x9739, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x973d, 0x973d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x973e, 0x973e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9742, 0x9742, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9744, 0x9744, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9746, 0x9746, ENC_JIS_0208 },
+{ 0x9748, 0x9748, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9749, 0x9749, ENC_JIS_0208 },
+{ 0x9751, 0x9751, ENC_KSC_5601 },
+{ 0x9752, 0x9752, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9753, 0x9753, ENC_GB_2312 },
+{ 0x9756, 0x9756, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9759, 0x9759, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x975b, 0x975b, ENC_GB_2312 },
+{ 0x975c, 0x975c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x975e, 0x975e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9760, 0x9760, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9761, 0x9762, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9764, 0x9764, ENC_JIS_0208 },
+{ 0x9765, 0x9765, ENC_GB_2312 },
+{ 0x9766, 0x9766, ENC_JIS_0208 },
+{ 0x9768, 0x9768, ENC_JIS_0208 },
+{ 0x9769, 0x9769, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x976b, 0x976b, ENC_JIS_0208 },
+{ 0x976d, 0x976d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9771, 0x9771, ENC_JIS_0208 },
+{ 0x9773, 0x9773, ENC_GB_2312 },
+{ 0x9774, 0x9774, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9776, 0x9776, ENC_GB_2312 },
+{ 0x9777, 0x9777, ENC_KSC_5601 },
+{ 0x9779, 0x9779, ENC_JIS_0208 },
+{ 0x977a, 0x977a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x977c, 0x977c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9781, 0x9781, ENC_JIS_0208 },
+{ 0x9784, 0x9784, ENC_JIS_0208 },
+{ 0x9785, 0x9785, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9786, 0x9786, ENC_JIS_0208 },
+{ 0x978b, 0x978b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x978d, 0x978d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x978f, 0x978f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9790, 0x9790, ENC_JIS_0208 },
+{ 0x9791, 0x9792, ENC_GB_2312 },
+{ 0x9794, 0x9794, ENC_GB_2312 },
+{ 0x9798, 0x9798, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x979c, 0x979c, ENC_JIS_0208 },
+{ 0x97a0, 0x97a0, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97a3, 0x97a3, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x97a6, 0x97a6, ENC_JIS_0208 },
+{ 0x97a8, 0x97a8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97ab, 0x97ab, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97ad, 0x97ad, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97af, 0x97af, ENC_GB_2312 },
+{ 0x97b2, 0x97b2, ENC_GB_2312 },
+{ 0x97b3, 0x97b3, ENC_JIS_0208 },
+{ 0x97b4, 0x97b4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x97c3, 0x97c3, ENC_JIS_0208 },
+{ 0x97c6, 0x97c6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97c8, 0x97c8, ENC_JIS_0208 },
+{ 0x97cb, 0x97cb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97d3, 0x97d3, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97dc, 0x97dc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97e6, 0x97e7, ENC_GB_2312 },
+{ 0x97e9, 0x97ec, ENC_GB_2312 },
+{ 0x97ed, 0x97ed, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x97ee, 0x97ee, ENC_JIS_0208 },
+{ 0x97f2, 0x97f2, ENC_JIS_0208 },
+{ 0x97f3, 0x97f3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97f5, 0x97f5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x97f6, 0x97f6, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97fb, 0x97fb, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x97ff, 0x97ff, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9800, 0x9800, ENC_KSC_5601 },
+{ 0x9801, 0x9803, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9805, 0x9806, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9808, 0x9808, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x980a, 0x980a, ENC_KSC_5601 },
+{ 0x980c, 0x980c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x980f, 0x980f, ENC_JIS_0208 },
+{ 0x9810, 0x9813, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9817, 0x9818, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x981a, 0x981a, ENC_JIS_0208 },
+{ 0x9821, 0x9821, ENC_JIS_0208 },
+{ 0x9824, 0x9824, ENC_JIS_0208 },
+{ 0x982c, 0x982c, ENC_JIS_0208 },
+{ 0x982d, 0x982d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9830, 0x9830, ENC_KSC_5601 },
+{ 0x9834, 0x9834, ENC_JIS_0208 },
+{ 0x9837, 0x9837, ENC_JIS_0208 },
+{ 0x9838, 0x9838, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9839, 0x9839, ENC_KSC_5601 },
+{ 0x983b, 0x983b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x983c, 0x983d, ENC_JIS_0208 },
+{ 0x9846, 0x9846, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x984b, 0x984b, ENC_JIS_0208 },
+{ 0x984c, 0x984e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x984f, 0x984f, ENC_JIS_0208 },
+{ 0x9854, 0x9854, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9855, 0x9855, ENC_JIS_0208 },
+{ 0x9858, 0x9858, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x985a, 0x985a, ENC_KSC_5601 },
+{ 0x985b, 0x985b, ENC_JIS_0208 },
+{ 0x985e, 0x985e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9865, 0x9865, ENC_KSC_5601 },
+{ 0x9867, 0x9867, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x986b, 0x986b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x986f, 0x986f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9870, 0x9871, ENC_JIS_0208 },
+{ 0x9873, 0x9874, ENC_JIS_0208 },
+{ 0x9875, 0x988a, ENC_GB_2312 },
+{ 0x988c, 0x988d, ENC_GB_2312 },
+{ 0x988f, 0x9891, ENC_GB_2312 },
+{ 0x9893, 0x9894, ENC_GB_2312 },
+{ 0x9896, 0x9898, ENC_GB_2312 },
+{ 0x989a, 0x98a2, ENC_GB_2312 },
+{ 0x98a4, 0x98a7, ENC_GB_2312 },
+{ 0x98a8, 0x98a8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x98aa, 0x98aa, ENC_JIS_0208 },
+{ 0x98af, 0x98af, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x98b1, 0x98b1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x98b6, 0x98b6, ENC_JIS_0208 },
+{ 0x98c3, 0x98c3, ENC_JIS_0208 },
+{ 0x98c4, 0x98c4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x98c6, 0x98c6, ENC_JIS_0208 },
+{ 0x98c7, 0x98c7, ENC_KSC_5601 },
+{ 0x98ce, 0x98ce, ENC_GB_2312 },
+{ 0x98d1, 0x98d3, ENC_GB_2312 },
+{ 0x98d5, 0x98d5, ENC_GB_2312 },
+{ 0x98d8, 0x98da, ENC_GB_2312 },
+{ 0x98db, 0x98dc, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x98de, 0x98de, ENC_GB_2312 },
+{ 0x98df, 0x98df, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x98e1, 0x98e1, ENC_KSC_5601 },
+{ 0x98e2, 0x98e2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x98e7, 0x98e8, ENC_GB_2312 },
+{ 0x98e9, 0x98e9, ENC_JIS_0208 },
+{ 0x98eb, 0x98eb, ENC_JIS_0208 },
+{ 0x98ed, 0x98ef, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x98f2, 0x98f2, ENC_JIS_0208 },
+{ 0x98f4, 0x98f4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x98fc, 0x98fe, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9903, 0x9903, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9905, 0x9905, ENC_JIS_0208 },
+{ 0x9909, 0x990a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x990c, 0x990c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x990d, 0x990d, ENC_GB_2312 },
+{ 0x9910, 0x9910, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9912, 0x9912, ENC_JIS_0208 },
+{ 0x9913, 0x9913, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9914, 0x9914, ENC_JIS_0208 },
+{ 0x9918, 0x9918, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x991d, 0x991d, ENC_JIS_0208 },
+{ 0x991e, 0x991e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9920, 0x9920, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9921, 0x9921, ENC_JIS_0208 },
+{ 0x9924, 0x9924, ENC_JIS_0208 },
+{ 0x9928, 0x9928, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x992c, 0x992c, ENC_JIS_0208 },
+{ 0x992e, 0x992e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x993d, 0x993e, ENC_JIS_0208 },
+{ 0x9942, 0x9942, ENC_JIS_0208 },
+{ 0x9945, 0x9945, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9949, 0x9949, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x994b, 0x994c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x994d, 0x994d, ENC_KSC_5601 },
+{ 0x9950, 0x9950, ENC_JIS_0208 },
+{ 0x9951, 0x9952, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9954, 0x9954, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x9955, 0x9955, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9957, 0x9957, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9963, 0x9963, ENC_GB_2312 },
+{ 0x9965, 0x9965, ENC_GB_2312 },
+{ 0x9967, 0x9972, ENC_GB_2312 },
+{ 0x9974, 0x9977, ENC_GB_2312 },
+{ 0x997a, 0x997a, ENC_GB_2312 },
+{ 0x997c, 0x997d, ENC_GB_2312 },
+{ 0x997f, 0x9981, ENC_GB_2312 },
+{ 0x9984, 0x9988, ENC_GB_2312 },
+{ 0x998a, 0x998b, ENC_GB_2312 },
+{ 0x998d, 0x998d, ENC_GB_2312 },
+{ 0x998f, 0x9995, ENC_GB_2312 },
+{ 0x9996, 0x9996, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9997, 0x9998, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9999, 0x9999, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x999d, 0x999d, ENC_KSC_5601 },
+{ 0x99a5, 0x99a5, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99a8, 0x99a8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99ac, 0x99ae, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99b1, 0x99b1, ENC_KSC_5601 },
+{ 0x99b3, 0x99b4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99b9, 0x99b9, ENC_KSC_5601 },
+{ 0x99bc, 0x99bc, ENC_JIS_0208 },
+{ 0x99c1, 0x99c1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99c4, 0x99c6, ENC_JIS_0208 },
+{ 0x99c8, 0x99c8, ENC_JIS_0208 },
+{ 0x99d0, 0x99d2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99d5, 0x99d5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99d8, 0x99d8, ENC_JIS_0208 },
+{ 0x99d9, 0x99d9, ENC_KSC_5601 },
+{ 0x99db, 0x99db, ENC_JIS_0208 },
+{ 0x99dd, 0x99dd, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99df, 0x99df, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99e2, 0x99e2, ENC_JIS_0208 },
+{ 0x99ed, 0x99ed, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99ee, 0x99ee, ENC_JIS_0208 },
+{ 0x99f1, 0x99f1, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x99f2, 0x99f2, ENC_JIS_0208 },
+{ 0x99f8, 0x99f8, ENC_JIS_0208 },
+{ 0x99fb, 0x99fb, ENC_JIS_0208 },
+{ 0x99ff, 0x99ff, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a01, 0x9a01, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a05, 0x9a05, ENC_JIS_0208 },
+{ 0x9a08, 0x9a08, ENC_KSC_5601 },
+{ 0x9a0e, 0x9a0f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a12, 0x9a13, ENC_JIS_0208 },
+{ 0x9a19, 0x9a19, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a28, 0x9a28, ENC_JIS_0208 },
+{ 0x9a2b, 0x9a2b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a30, 0x9a30, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a36, 0x9a36, ENC_KSC_5601 },
+{ 0x9a37, 0x9a37, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a3e, 0x9a3e, ENC_JIS_0208 },
+{ 0x9a40, 0x9a40, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a42, 0x9a42, ENC_JIS_0208 },
+{ 0x9a43, 0x9a43, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a45, 0x9a45, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a4d, 0x9a4d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a55, 0x9a55, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a57, 0x9a57, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a5a, 0x9a5b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a5f, 0x9a5f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a62, 0x9a62, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a64, 0x9a64, ENC_JIS_0208 },
+{ 0x9a65, 0x9a65, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a69, 0x9a6a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9a6b, 0x9a6b, ENC_JIS_0208 },
+{ 0x9a6c, 0x9a71, ENC_GB_2312 },
+{ 0x9a73, 0x9a82, ENC_GB_2312 },
+{ 0x9a84, 0x9a88, ENC_GB_2312 },
+{ 0x9a8a, 0x9a8c, ENC_GB_2312 },
+{ 0x9a8f, 0x9a93, ENC_GB_2312 },
+{ 0x9a96, 0x9a98, ENC_GB_2312 },
+{ 0x9a9a, 0x9aa5, ENC_GB_2312 },
+{ 0x9aa7, 0x9aa7, ENC_GB_2312 },
+{ 0x9aa8, 0x9aa8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9aad, 0x9aad, ENC_JIS_0208 },
+{ 0x9ab0, 0x9ab0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ab1, 0x9ab1, ENC_GB_2312 },
+{ 0x9ab6, 0x9ab7, ENC_GB_2312 },
+{ 0x9ab8, 0x9ab8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9aba, 0x9aba, ENC_GB_2312 },
+{ 0x9abc, 0x9abc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ac0, 0x9ac0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ac1, 0x9ac2, ENC_GB_2312 },
+{ 0x9ac4, 0x9ac4, ENC_JIS_0208 },
+{ 0x9ac5, 0x9ac5, ENC_GB_2312 },
+{ 0x9acb, 0x9acc, ENC_GB_2312 },
+{ 0x9acf, 0x9acf, ENC_JIS_0208 },
+{ 0x9ad1, 0x9ad1, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ad3, 0x9ad3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ad4, 0x9ad4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ad8, 0x9ad8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ade, 0x9ade, ENC_JIS_0208 },
+{ 0x9adf, 0x9adf, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ae1, 0x9ae1, ENC_GB_2312 },
+{ 0x9ae2, 0x9ae3, ENC_JIS_0208 },
+{ 0x9ae5, 0x9ae5, ENC_KSC_5601 },
+{ 0x9ae6, 0x9ae6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9aea, 0x9aea, ENC_JIS_0208 },
+{ 0x9aeb, 0x9aeb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9aed, 0x9aed, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9aee, 0x9aee, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9aef, 0x9aef, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9af1, 0x9af1, ENC_JIS_0208 },
+{ 0x9af4, 0x9af4, ENC_JIS_0208 },
+{ 0x9af7, 0x9af7, ENC_JIS_0208 },
+{ 0x9af9, 0x9af9, ENC_GB_2312 },
+{ 0x9afb, 0x9afb, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9b03, 0x9b03, ENC_GB_2312 },
+{ 0x9b06, 0x9b06, ENC_JIS_0208 },
+{ 0x9b08, 0x9b08, ENC_GB_2312 },
+{ 0x9b0f, 0x9b0f, ENC_GB_2312 },
+{ 0x9b13, 0x9b13, ENC_GB_2312 },
+{ 0x9b18, 0x9b18, ENC_JIS_0208 },
+{ 0x9b1a, 0x9b1a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b1f, 0x9b1f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9b22, 0x9b22, ENC_JIS_0208 },
+{ 0x9b23, 0x9b23, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9b25, 0x9b25, ENC_JIS_0208 },
+{ 0x9b27, 0x9b27, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b28, 0x9b29, ENC_JIS_0208 },
+{ 0x9b2a, 0x9b2a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b2e, 0x9b2e, ENC_JIS_0208 },
+{ 0x9b2f, 0x9b2f, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9b31, 0x9b31, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b32, 0x9b32, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9b3b, 0x9b3b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9b3c, 0x9b3c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b41, 0x9b45, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b47, 0x9b49, ENC_GB_2312 },
+{ 0x9b4d, 0x9b4d, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9b4e, 0x9b4e, ENC_JIS_0208 },
+{ 0x9b4f, 0x9b4f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b51, 0x9b51, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9b54, 0x9b54, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b58, 0x9b58, ENC_JIS_0208 },
+{ 0x9b5a, 0x9b5a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b6f, 0x9b6f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b74, 0x9b74, ENC_JIS_0208 },
+{ 0x9b83, 0x9b83, ENC_JIS_0208 },
+{ 0x9b8e, 0x9b8e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b91, 0x9b91, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9b92, 0x9b93, ENC_JIS_0208 },
+{ 0x9b96, 0x9b97, ENC_JIS_0208 },
+{ 0x9b9f, 0x9b9f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ba0, 0x9ba0, ENC_JIS_0208 },
+{ 0x9ba8, 0x9ba8, ENC_JIS_0208 },
+{ 0x9baa, 0x9baa, ENC_JIS_0208 },
+{ 0x9bab, 0x9bab, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9bad, 0x9bad, ENC_JIS_0208 },
+{ 0x9bae, 0x9bae, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9bb4, 0x9bb4, ENC_JIS_0208 },
+{ 0x9bb9, 0x9bb9, ENC_JIS_0208 },
+{ 0x9bc0, 0x9bc0, ENC_JIS_0208 },
+{ 0x9bc6, 0x9bc6, ENC_JIS_0208 },
+{ 0x9bc9, 0x9bc9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9bca, 0x9bca, ENC_JIS_0208 },
+{ 0x9bcf, 0x9bcf, ENC_JIS_0208 },
+{ 0x9bd1, 0x9bd2, ENC_JIS_0208 },
+{ 0x9bd4, 0x9bd4, ENC_JIS_0208 },
+{ 0x9bd6, 0x9bd6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9bdb, 0x9bdb, ENC_JIS_0208 },
+{ 0x9be1, 0x9be3, ENC_JIS_0208 },
+{ 0x9be4, 0x9be4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9be8, 0x9be8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9bf0, 0x9bf2, ENC_JIS_0208 },
+{ 0x9bf5, 0x9bf5, ENC_JIS_0208 },
+{ 0x9c04, 0x9c04, ENC_JIS_0208 },
+{ 0x9c06, 0x9c06, ENC_JIS_0208 },
+{ 0x9c08, 0x9c0a, ENC_JIS_0208 },
+{ 0x9c0c, 0x9c0c, ENC_JIS_0208 },
+{ 0x9c0d, 0x9c0d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9c10, 0x9c10, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9c12, 0x9c12, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9c13, 0x9c14, ENC_JIS_0208 },
+{ 0x9c15, 0x9c15, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9c1b, 0x9c1b, ENC_JIS_0208 },
+{ 0x9c21, 0x9c21, ENC_JIS_0208 },
+{ 0x9c24, 0x9c24, ENC_JIS_0208 },
+{ 0x9c25, 0x9c25, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9c2d, 0x9c30, ENC_JIS_0208 },
+{ 0x9c32, 0x9c32, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9c39, 0x9c3a, ENC_JIS_0208 },
+{ 0x9c3b, 0x9c3b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9c3e, 0x9c3e, ENC_JIS_0208 },
+{ 0x9c46, 0x9c46, ENC_JIS_0208 },
+{ 0x9c47, 0x9c47, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9c48, 0x9c48, ENC_JIS_0208 },
+{ 0x9c49, 0x9c49, ENC_KSC_5601 },
+{ 0x9c52, 0x9c52, ENC_JIS_0208 },
+{ 0x9c57, 0x9c57, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9c5a, 0x9c5a, ENC_JIS_0208 },
+{ 0x9c60, 0x9c60, ENC_JIS_0208 },
+{ 0x9c67, 0x9c67, ENC_JIS_0208 },
+{ 0x9c76, 0x9c76, ENC_JIS_0208 },
+{ 0x9c78, 0x9c78, ENC_JIS_0208 },
+{ 0x9c7c, 0x9c7c, ENC_GB_2312 },
+{ 0x9c7f, 0x9c7f, ENC_GB_2312 },
+{ 0x9c81, 0x9c82, ENC_GB_2312 },
+{ 0x9c85, 0x9c88, ENC_GB_2312 },
+{ 0x9c8b, 0x9c8b, ENC_GB_2312 },
+{ 0x9c8d, 0x9c8e, ENC_GB_2312 },
+{ 0x9c90, 0x9c92, ENC_GB_2312 },
+{ 0x9c94, 0x9c95, ENC_GB_2312 },
+{ 0x9c9a, 0x9c9c, ENC_GB_2312 },
+{ 0x9c9e, 0x9ca9, ENC_GB_2312 },
+{ 0x9cab, 0x9cab, ENC_GB_2312 },
+{ 0x9cad, 0x9cae, ENC_GB_2312 },
+{ 0x9cb0, 0x9cb8, ENC_GB_2312 },
+{ 0x9cba, 0x9cbd, ENC_GB_2312 },
+{ 0x9cc3, 0x9cc7, ENC_GB_2312 },
+{ 0x9cca, 0x9cd0, ENC_GB_2312 },
+{ 0x9cd3, 0x9cd9, ENC_GB_2312 },
+{ 0x9cdc, 0x9cdf, ENC_GB_2312 },
+{ 0x9ce2, 0x9ce2, ENC_GB_2312 },
+{ 0x9ce5, 0x9ce5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ce7, 0x9ce7, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ce9, 0x9ce9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ceb, 0x9cec, ENC_JIS_0208 },
+{ 0x9cf0, 0x9cf0, ENC_JIS_0208 },
+{ 0x9cf3, 0x9cf4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9cf6, 0x9cf6, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d03, 0x9d03, ENC_JIS_0208 },
+{ 0x9d06, 0x9d08, ENC_JIS_0208 },
+{ 0x9d09, 0x9d09, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d0e, 0x9d0e, ENC_JIS_0208 },
+{ 0x9d12, 0x9d12, ENC_JIS_0208 },
+{ 0x9d15, 0x9d15, ENC_JIS_0208 },
+{ 0x9d1b, 0x9d1b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d1f, 0x9d1f, ENC_JIS_0208 },
+{ 0x9d23, 0x9d23, ENC_JIS_0208 },
+{ 0x9d26, 0x9d26, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d28, 0x9d28, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d2a, 0x9d2c, ENC_JIS_0208 },
+{ 0x9d3b, 0x9d3b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d3e, 0x9d3f, ENC_JIS_0208 },
+{ 0x9d41, 0x9d41, ENC_JIS_0208 },
+{ 0x9d44, 0x9d44, ENC_JIS_0208 },
+{ 0x9d46, 0x9d46, ENC_JIS_0208 },
+{ 0x9d48, 0x9d48, ENC_JIS_0208 },
+{ 0x9d50, 0x9d50, ENC_JIS_0208 },
+{ 0x9d51, 0x9d51, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d59, 0x9d59, ENC_JIS_0208 },
+{ 0x9d5c, 0x9d5c, ENC_JIS_0208 },
+{ 0x9d5d, 0x9d5d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d5e, 0x9d5e, ENC_JIS_0208 },
+{ 0x9d60, 0x9d61, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d64, 0x9d64, ENC_JIS_0208 },
+{ 0x9d6c, 0x9d6c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d6f, 0x9d6f, ENC_JIS_0208 },
+{ 0x9d72, 0x9d72, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9d7a, 0x9d7a, ENC_JIS_0208 },
+{ 0x9d87, 0x9d87, ENC_JIS_0208 },
+{ 0x9d89, 0x9d89, ENC_JIS_0208 },
+{ 0x9d8f, 0x9d8f, ENC_JIS_0208 },
+{ 0x9d9a, 0x9d9a, ENC_JIS_0208 },
+{ 0x9da4, 0x9da4, ENC_JIS_0208 },
+{ 0x9da9, 0x9da9, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9dab, 0x9dab, ENC_JIS_0208 },
+{ 0x9daf, 0x9daf, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9db2, 0x9db2, ENC_JIS_0208 },
+{ 0x9db4, 0x9db4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9db8, 0x9db8, ENC_JIS_0208 },
+{ 0x9dba, 0x9dbb, ENC_JIS_0208 },
+{ 0x9dc1, 0x9dc2, ENC_JIS_0208 },
+{ 0x9dc4, 0x9dc4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9dc6, 0x9dc6, ENC_JIS_0208 },
+{ 0x9dcf, 0x9dcf, ENC_JIS_0208 },
+{ 0x9dd3, 0x9dd3, ENC_JIS_0208 },
+{ 0x9dd7, 0x9dd7, ENC_KSC_5601 },
+{ 0x9dd9, 0x9dd9, ENC_JIS_0208 },
+{ 0x9de6, 0x9de6, ENC_JIS_0208 },
+{ 0x9ded, 0x9ded, ENC_JIS_0208 },
+{ 0x9def, 0x9def, ENC_JIS_0208 },
+{ 0x9df2, 0x9df2, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9df8, 0x9dfa, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9dfd, 0x9dfd, ENC_JIS_0208 },
+{ 0x9e1a, 0x9e1a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9e1b, 0x9e1b, ENC_JIS_0208 },
+{ 0x9e1e, 0x9e1e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9e1f, 0x9e23, ENC_GB_2312 },
+{ 0x9e25, 0x9e26, ENC_GB_2312 },
+{ 0x9e28, 0x9e2d, ENC_GB_2312 },
+{ 0x9e2f, 0x9e2f, ENC_GB_2312 },
+{ 0x9e31, 0x9e33, ENC_GB_2312 },
+{ 0x9e35, 0x9e3a, ENC_GB_2312 },
+{ 0x9e3d, 0x9e3f, ENC_GB_2312 },
+{ 0x9e41, 0x9e4c, ENC_GB_2312 },
+{ 0x9e4e, 0x9e4f, ENC_GB_2312 },
+{ 0x9e51, 0x9e51, ENC_GB_2312 },
+{ 0x9e55, 0x9e55, ENC_GB_2312 },
+{ 0x9e57, 0x9e58, ENC_GB_2312 },
+{ 0x9e5a, 0x9e5c, ENC_GB_2312 },
+{ 0x9e5e, 0x9e5e, ENC_GB_2312 },
+{ 0x9e63, 0x9e64, ENC_GB_2312 },
+{ 0x9e66, 0x9e6d, ENC_GB_2312 },
+{ 0x9e70, 0x9e71, ENC_GB_2312 },
+{ 0x9e73, 0x9e73, ENC_GB_2312 },
+{ 0x9e75, 0x9e75, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9e78, 0x9e78, ENC_JIS_0208 },
+{ 0x9e79, 0x9e79, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9e7d, 0x9e7d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9e7e, 0x9e7e, ENC_GB_2312 },
+{ 0x9e7f, 0x9e7f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9e81, 0x9e81, ENC_JIS_0208 },
+{ 0x9e82, 0x9e82, ENC_GB_2312 },
+{ 0x9e87, 0x9e87, ENC_GB_2312 },
+{ 0x9e88, 0x9e88, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9e8b, 0x9e8b, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9e8c, 0x9e8c, ENC_JIS_0208 },
+{ 0x9e91, 0x9e91, ENC_JIS_0208 },
+{ 0x9e92, 0x9e93, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9e95, 0x9e95, ENC_JIS_0208 },
+{ 0x9e97, 0x9e97, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9e9d, 0x9e9d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9e9f, 0x9e9f, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ea5, 0x9ea5, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ea6, 0x9ea6, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ea9, 0x9eaa, ENC_JIS_0208 },
+{ 0x9ead, 0x9ead, ENC_JIS_0208 },
+{ 0x9eb4, 0x9eb4, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x9eb5, 0x9eb5, ENC_KSC_5601 },
+{ 0x9eb8, 0x9eb8, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9eb9, 0x9eba, ENC_JIS_0208 },
+{ 0x9ebb, 0x9ebb, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ebc, 0x9ebc, ENC_JIS_0208 },
+{ 0x9ebd, 0x9ebd, ENC_GB_2312 },
+{ 0x9ebe, 0x9ebe, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ebf, 0x9ebf, ENC_JIS_0208 },
+{ 0x9ec3, 0x9ec3, ENC_KSC_5601 },
+{ 0x9ec4, 0x9ec4, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ec9, 0x9ec9, ENC_GB_2312 },
+{ 0x9ecc, 0x9ecc, ENC_JIS_0208 },
+{ 0x9ecd, 0x9ece, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ecf, 0x9ecf, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ed0, 0x9ed0, ENC_JIS_0208 },
+{ 0x9ed1, 0x9ed1, ENC_GB_2312|ENC_KSC_5601 },
+{ 0x9ed2, 0x9ed2, ENC_JIS_0208 },
+{ 0x9ed4, 0x9ed4, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ed8, 0x9ed8, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ed9, 0x9ed9, ENC_JIS_0208 },
+{ 0x9edb, 0x9edc, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9edd, 0x9edd, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ede, 0x9ede, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9edf, 0x9edf, ENC_GB_2312 },
+{ 0x9ee0, 0x9ee0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ee2, 0x9ee2, ENC_GB_2312 },
+{ 0x9ee5, 0x9ee5, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ee7, 0x9ee7, ENC_GB_2312 },
+{ 0x9ee8, 0x9ee8, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ee9, 0x9eea, ENC_GB_2312 },
+{ 0x9eef, 0x9eef, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9ef4, 0x9ef4, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9ef6, 0x9ef7, ENC_JIS_0208 },
+{ 0x9ef9, 0x9ef9, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9efb, 0x9efc, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9efd, 0x9efd, ENC_JIS_0208 },
+{ 0x9efe, 0x9efe, ENC_GB_2312 },
+{ 0x9f07, 0x9f08, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f0b, 0x9f0b, ENC_GB_2312 },
+{ 0x9f0d, 0x9f0d, ENC_GB_2312 },
+{ 0x9f0e, 0x9f0e, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f10, 0x9f10, ENC_GB_2312 },
+{ 0x9f13, 0x9f13, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f15, 0x9f15, ENC_JIS_0208 },
+{ 0x9f17, 0x9f17, ENC_GB_2312 },
+{ 0x9f19, 0x9f19, ENC_GB_2312 },
+{ 0x9f20, 0x9f20, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f21, 0x9f21, ENC_JIS_0208 },
+{ 0x9f22, 0x9f22, ENC_GB_2312 },
+{ 0x9f2c, 0x9f2c, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9f2f, 0x9f2f, ENC_GB_2312 },
+{ 0x9f37, 0x9f37, ENC_GB_2312 },
+{ 0x9f39, 0x9f39, ENC_GB_2312 },
+{ 0x9f3b, 0x9f3b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f3d, 0x9f3d, ENC_GB_2312 },
+{ 0x9f3e, 0x9f3e, ENC_GB_2312|ENC_JIS_0208 },
+{ 0x9f44, 0x9f44, ENC_GB_2312 },
+{ 0x9f4a, 0x9f4b, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f4e, 0x9f4e, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f4f, 0x9f4f, ENC_JIS_0208 },
+{ 0x9f50, 0x9f51, ENC_GB_2312 },
+{ 0x9f52, 0x9f52, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f54, 0x9f54, ENC_JIS_0208 },
+{ 0x9f5f, 0x9f5f, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f60, 0x9f60, ENC_JIS_0208 },
+{ 0x9f61, 0x9f61, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f62, 0x9f63, ENC_JIS_0208 },
+{ 0x9f66, 0x9f66, ENC_JIS_0208 },
+{ 0x9f67, 0x9f67, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f6a, 0x9f6a, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f6c, 0x9f6c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f72, 0x9f72, ENC_JIS_0208 },
+{ 0x9f76, 0x9f76, ENC_JIS_0208 },
+{ 0x9f77, 0x9f77, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f7f, 0x9f80, ENC_GB_2312 },
+{ 0x9f83, 0x9f8c, ENC_GB_2312 },
+{ 0x9f8d, 0x9f8d, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f90, 0x9f90, ENC_KSC_5601 },
+{ 0x9f95, 0x9f95, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f99, 0x9f9b, ENC_GB_2312 },
+{ 0x9f9c, 0x9f9c, ENC_JIS_0208|ENC_KSC_5601 },
+{ 0x9f9d, 0x9f9d, ENC_JIS_0208 },
+{ 0x9f9f, 0x9f9f, ENC_GB_2312 },
+{ 0x9fa0, 0x9fa0, ENC_GB_2312|ENC_JIS_0208 },
+{ 0xac00, 0xd7a3, ENC_KSC_5601 },
+{ 0xf900, 0xfa0b, ENC_KSC_5601 },
+{ 0xff01, 0xff01, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xff02, 0xff02, ENC_GB_2312|ENC_KSC_5601 },
+{ 0xff03, 0xff06, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xff07, 0xff07, ENC_GB_2312|ENC_KSC_5601 },
+{ 0xff08, 0xff0c, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xff0d, 0xff0d, ENC_GB_2312|ENC_KSC_5601 },
+{ 0xff0e, 0xff3b, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xff3c, 0xff3c, ENC_GB_2312|ENC_KSC_5601 },
+{ 0xff3d, 0xff5d, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+{ 0xff5e, 0xff5e, ENC_GB_2312|ENC_KSC_5601 },
+{ 0xffe0, 0xffe1, ENC_GB_2312|ENC_KSC_5601 },
+{ 0xffe2, 0xffe2, ENC_KSC_5601 },
+{ 0xffe3, 0xffe3, ENC_GB_2312|ENC_JIS_0208|ENC_KSC_5601 },
+};
+
diff --git a/modules/basic/tables-small.i b/modules/basic/tables-small.i
new file mode 100644
index 00000000..31139b4b
--- /dev/null
+++ b/modules/basic/tables-small.i
@@ -0,0 +1,194 @@
+enum {
+ ENC_ISO_8859_1 = 1 << 0,
+ ENC_ISO_8859_2 = 1 << 1,
+ ENC_ISO_8859_3 = 1 << 2,
+ ENC_ISO_8859_4 = 1 << 3,
+ ENC_ISO_8859_5 = 1 << 4,
+ ENC_ISO_8859_6 = 1 << 5,
+ ENC_ISO_8859_7 = 1 << 6,
+ ENC_ISO_8859_8 = 1 << 7,
+ ENC_ISO_8859_9 = 1 << 8,
+ ENC_ISO_10646 = 1 << 12
+};
+
+Charset charsets[] = {
+ { "ISO-8859-1", "iso8859-1", conv_8bit },
+ { "ISO-8859-2", "iso8859-2", conv_8bit },
+ { "ISO-8859-3", "iso8859-3", conv_8bit },
+ { "ISO-8859-4", "iso8859-4", conv_8bit },
+ { "ISO-8859-5", "iso8859-5", conv_8bit },
+ { "ISO-8859-6", "iso8859-6", conv_8bit },
+ { "ISO-8859-7", "iso8859-7", conv_8bit },
+ { "ISO-8859-8", "iso8859-8", conv_8bit },
+ { "ISO-8859-9", "iso8859-9", conv_8bit },
+ { "ISO-10646", "iso10646-1", conv_ucs4 }
+};
+
+static PangoEngineRange basic_ranges[] = {
+ { 0x0000, 0x02af, "*" },
+ { 0x02b0, 0x02ff, "" },
+ { 0x0380, 0x058f, "*" },
+ { 0x0591, 0x0669, "*" },
+ { 0x2015, 0x2017, "*" },
+};
+
+const CharRange ranges[] = {
+ { 0x20, 0x2f, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0x30, 0x39, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0x3a, 0x7e, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xa0, 0xa0, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xa1, 0xa1, ENC_ISO_8859_1|ENC_ISO_8859_9 },
+ { 0xa2, 0xa2, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xa3, 0xa3, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xa4, 0xa4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_6|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xa5, 0xa5, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xa6, 0xa6, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xa7, 0xa7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xa8, 0xa8, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xa9, 0xa9, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xaa, 0xaa, ENC_ISO_8859_1|ENC_ISO_8859_9 },
+ { 0xab, 0xac, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xad, 0xad, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_5|ENC_ISO_8859_6|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xae, 0xae, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xaf, 0xaf, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xb0, 0xb0, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xb1, 0xb1, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xb2, 0xb3, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xb4, 0xb4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xb5, 0xb5, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xb6, 0xb6, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xb7, 0xb7, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xb8, 0xb8, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xb9, 0xb9, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xba, 0xba, ENC_ISO_8859_1|ENC_ISO_8859_9 },
+ { 0xbb, 0xbb, ENC_ISO_8859_1|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xbc, 0xbc, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xbd, 0xbd, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_7|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xbe, 0xbe, ENC_ISO_8859_1|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xbf, 0xbf, ENC_ISO_8859_1|ENC_ISO_8859_9 },
+ { 0xc0, 0xc0, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xc1, 0xc2, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xc3, 0xc3, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xc4, 0xc4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xc5, 0xc6, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xc7, 0xc7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xc8, 0xc8, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xc9, 0xc9, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xca, 0xca, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xcb, 0xcb, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xcc, 0xcc, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xcd, 0xce, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xcf, 0xcf, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xd0, 0xd0, ENC_ISO_8859_1 },
+ { 0xd1, 0xd2, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xd3, 0xd3, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xd4, 0xd4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xd5, 0xd5, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xd6, 0xd6, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xd7, 0xd7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xd8, 0xd8, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xd9, 0xd9, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xda, 0xda, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xdb, 0xdb, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xdc, 0xdc, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xdd, 0xdd, ENC_ISO_8859_1|ENC_ISO_8859_2 },
+ { 0xde, 0xde, ENC_ISO_8859_1 },
+ { 0xdf, 0xdf, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xe0, 0xe0, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xe1, 0xe2, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xe3, 0xe3, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xe4, 0xe4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xe5, 0xe6, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xe7, 0xe7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xe8, 0xe8, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xe9, 0xe9, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xea, 0xea, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xeb, 0xeb, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xec, 0xec, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xed, 0xee, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xef, 0xef, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xf0, 0xf0, ENC_ISO_8859_1 },
+ { 0xf1, 0xf2, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xf3, 0xf3, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xf4, 0xf4, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xf5, 0xf5, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xf6, 0xf6, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xf7, 0xf7, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_8|ENC_ISO_8859_9 },
+ { 0xf8, 0xf8, ENC_ISO_8859_1|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xf9, 0xf9, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0xfa, 0xfa, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xfb, 0xfb, ENC_ISO_8859_1|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xfc, 0xfc, ENC_ISO_8859_1|ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4|ENC_ISO_8859_9 },
+ { 0xfd, 0xfd, ENC_ISO_8859_1|ENC_ISO_8859_2 },
+ { 0xfe, 0xfe, ENC_ISO_8859_1 },
+ { 0xff, 0xff, ENC_ISO_8859_1|ENC_ISO_8859_9 },
+ { 0x100, 0x101, ENC_ISO_8859_4 },
+ { 0x102, 0x103, ENC_ISO_8859_2 },
+ { 0x104, 0x105, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+ { 0x106, 0x107, ENC_ISO_8859_2 },
+ { 0x108, 0x10b, ENC_ISO_8859_3 },
+ { 0x10c, 0x10d, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+ { 0x10e, 0x10f, ENC_ISO_8859_2 },
+ { 0x110, 0x111, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+ { 0x112, 0x113, ENC_ISO_8859_4 },
+ { 0x116, 0x117, ENC_ISO_8859_4 },
+ { 0x118, 0x119, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+ { 0x11a, 0x11b, ENC_ISO_8859_2 },
+ { 0x11c, 0x11d, ENC_ISO_8859_3 },
+ { 0x11e, 0x11f, ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0x120, 0x121, ENC_ISO_8859_3 },
+ { 0x122, 0x123, ENC_ISO_8859_4 },
+ { 0x124, 0x127, ENC_ISO_8859_3 },
+ { 0x128, 0x12b, ENC_ISO_8859_4 },
+ { 0x12e, 0x12f, ENC_ISO_8859_4 },
+ { 0x130, 0x131, ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0x134, 0x135, ENC_ISO_8859_3 },
+ { 0x136, 0x138, ENC_ISO_8859_4 },
+ { 0x139, 0x13a, ENC_ISO_8859_2 },
+ { 0x13b, 0x13c, ENC_ISO_8859_4 },
+ { 0x13d, 0x13e, ENC_ISO_8859_2 },
+ { 0x141, 0x144, ENC_ISO_8859_2 },
+ { 0x145, 0x146, ENC_ISO_8859_4 },
+ { 0x147, 0x148, ENC_ISO_8859_2 },
+ { 0x14a, 0x14d, ENC_ISO_8859_4 },
+ { 0x150, 0x151, ENC_ISO_8859_2 },
+ { 0x154, 0x155, ENC_ISO_8859_2 },
+ { 0x156, 0x157, ENC_ISO_8859_4 },
+ { 0x158, 0x15b, ENC_ISO_8859_2 },
+ { 0x15c, 0x15d, ENC_ISO_8859_3 },
+ { 0x15e, 0x15f, ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_9 },
+ { 0x160, 0x161, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+ { 0x162, 0x165, ENC_ISO_8859_2 },
+ { 0x166, 0x16b, ENC_ISO_8859_4 },
+ { 0x16c, 0x16d, ENC_ISO_8859_3 },
+ { 0x16e, 0x171, ENC_ISO_8859_2 },
+ { 0x172, 0x173, ENC_ISO_8859_4 },
+ { 0x179, 0x17a, ENC_ISO_8859_2 },
+ { 0x17b, 0x17c, ENC_ISO_8859_2|ENC_ISO_8859_3 },
+ { 0x17d, 0x17e, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+ { 0x2bc, 0x2bd, ENC_ISO_8859_7 },
+ { 0x2c7, 0x2c7, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+ { 0x2d8, 0x2d8, ENC_ISO_8859_2|ENC_ISO_8859_3 },
+ { 0x2d9, 0x2d9, ENC_ISO_8859_2|ENC_ISO_8859_3|ENC_ISO_8859_4 },
+ { 0x2db, 0x2db, ENC_ISO_8859_2|ENC_ISO_8859_4 },
+ { 0x2dd, 0x2dd, ENC_ISO_8859_2 },
+ { 0x384, 0x386, ENC_ISO_8859_7 },
+ { 0x388, 0x38a, ENC_ISO_8859_7 },
+ { 0x38c, 0x38c, ENC_ISO_8859_7 },
+ { 0x38e, 0x3a1, ENC_ISO_8859_7 },
+ { 0x3a3, 0x3ce, ENC_ISO_8859_7 },
+ { 0x401, 0x40c, ENC_ISO_8859_5 },
+ { 0x40e, 0x44f, ENC_ISO_8859_5 },
+ { 0x451, 0x45c, ENC_ISO_8859_5 },
+ { 0x45e, 0x45f, ENC_ISO_8859_5 },
+ { 0x5d0, 0x5ea, ENC_ISO_8859_8 },
+ { 0x60c, 0x60c, ENC_ISO_8859_6 },
+ { 0x61b, 0x61b, ENC_ISO_8859_6 },
+ { 0x61f, 0x61f, ENC_ISO_8859_6 },
+ { 0x621, 0x63a, ENC_ISO_8859_6 },
+ { 0x640, 0x652, ENC_ISO_8859_6 },
+ { 0x660, 0x669, ENC_ISO_8859_6 },
+ { 0x2015, 0x2015, ENC_ISO_8859_7 },
+ { 0x2017, 0x2017, ENC_ISO_8859_8 }
+};
+
diff --git a/modules/hangul/Makefile.am b/modules/hangul/Makefile.am
new file mode 100644
index 00000000..4c39984e
--- /dev/null
+++ b/modules/hangul/Makefile.am
@@ -0,0 +1,12 @@
+## Process this file with automake to create Makefile.in.
+
+noinst_LTLIBRARIES = pango-hangul.la
+
+INCLUDES = -I$(top_srcdir)/libpango
+
+pango_hangul_la_SOURCES = hangul.c
+pango_hangul_la_LDFLAGS = -rpath $(libdir) -export-dynamic -avoid-version -module
+
+EXTRA_DIST = \
+ tables-ksc5601.i \
+ tables-johabfont.i
diff --git a/modules/hangul/hangul-x.c b/modules/hangul/hangul-x.c
new file mode 100644
index 00000000..b76ed86f
--- /dev/null
+++ b/modules/hangul/hangul-x.c
@@ -0,0 +1,759 @@
+/* Pango
+ * hangul.c:
+ *
+ * Copyright (C) 1999 Changwoo Ryu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <glib.h>
+
+#include "pango.h"
+#include "pangox.h"
+#include "utils.h"
+#include <unicode.h>
+
+#define MEMBERS(strct) sizeof(strct) / sizeof(strct[1])
+
+static PangoEngineRange hangul_ranges[] = {
+
+ /* Hangul Jamo U+1100 -- U+11FF */
+ { 0x1100, 0x11ff, "*" },
+ /* Hangul Compatibility Jamo U+3130 -- U+318F */
+/* { 0x3130, 0x318f, "*" }, */
+ /* Hangul (pre-composed) Syllables U+AC00 -- U+D7A3 */
+ { 0xac00, 0xd7a3, "*" }
+};
+
+
+static PangoEngineInfo script_engines[] = {
+ {
+ "HangulScriptEngineLang",
+ PANGO_ENGINE_TYPE_LANG,
+ PANGO_RENDER_TYPE_NONE,
+ hangul_ranges, MEMBERS(hangul_ranges)
+ },
+ {
+ "HangulScriptEngineX",
+ PANGO_ENGINE_TYPE_SHAPE,
+ PANGO_RENDER_TYPE_X,
+ hangul_ranges, MEMBERS(hangul_ranges)
+ }
+};
+
+static gint n_script_engines = MEMBERS (script_engines);
+
+/*
+ * Language script engine
+ */
+
+static void
+hangul_engine_break (gchar *text,
+ gint len,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs)
+{
+ /* (FIXME) */
+}
+
+static PangoEngine *
+hangul_engine_lang_new ()
+{
+ PangoEngineLang *result;
+
+ result = g_new (PangoEngineLang, 1);
+
+ result->engine.id = "HangulScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_break = hangul_engine_break;
+
+ return (PangoEngine *) result;
+}
+
+/*
+ * X window system script engine portion
+ */
+
+static void
+set_glyph (PangoGlyphString *glyphs, gint i, PangoCFont *cfont,
+ PangoGlyphIndex glyph)
+{
+ gint width;
+
+ glyphs->glyphs[i].font = cfont;
+ glyphs->glyphs[i].glyph = glyph;
+
+ glyphs->geometry[i].x_offset = 0;
+ glyphs->geometry[i].y_offset = 0;
+
+ pango_x_glyph_extents (&glyphs->glyphs[i],
+ NULL, NULL, &width, NULL, NULL, NULL, NULL);
+ glyphs->geometry[i].width = width * 72;
+}
+
+
+/*
+ * From 3.10 of the Unicode 2.0 Book; used for combining Jamos.
+ */
+
+#define SBASE 0xAC00
+#define LBASE 0x1100
+#define VBASE 0x1161
+#define TBASE 0x11A7
+#define SCOUNT 11172
+#define LCOUNT 19
+#define VCOUNT 21
+#define TCOUNT 28
+#define NCOUNT (VCOUNT * TCOUNT)
+
+/*
+ * Unicode 2.0 doesn't define the fill for trailing consonants, but
+ * I'll use 0x11A7 as that purpose internally.
+ */
+
+#define LFILL 0x115F
+#define VFILL 0x1160
+#define TFILL 0x11A7
+
+#define IS_L(wc) (wc >= 0x1100 && wc < 0x115F)
+#define IS_V(wc) (wc >= 0x1160 && wc < 0x11A2)
+#define IS_T(wc) (wc >= 0x11A7 && wc < 0x11F9)
+
+
+typedef void (* RenderSyllableFunc) (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters);
+
+
+
+#include "tables-johabfont.i"
+#include "tables-ksc5601.i"
+
+#define JOHAB_COMMON \
+ int i; \
+ PangoGlyphIndex gindex; \
+ \
+ /* \
+ * Check if there are one CHOSEONG, one JUNGSEONG, and no more \
+ * than one JONGSEONG. \
+ */ \
+ int n_cho = 0, n_jung = 0, n_jong = 0; \
+ i = 0; \
+ while (i < length && IS_L (text[i])) \
+ { \
+ n_cho++; \
+ i++; \
+ } \
+ while (i < length && IS_V (text[i])) \
+ { \
+ n_jung++; \
+ i++; \
+ } \
+ while (i < length && IS_T (text[i])) \
+ { \
+ n_jong++; \
+ i++; \
+ } \
+ \
+ if (n_cho <= 1 && n_jung <= 1 && n_jong <= 1) \
+ { \
+ GUChar2 l, v, t; \
+ \
+ if (n_cho > 0) \
+ l = text[0]; \
+ else \
+ l = LFILL; \
+ \
+ if (n_jung > 0) \
+ v = text[n_cho]; \
+ else \
+ v = VFILL; \
+ \
+ if (n_jong > 0) \
+ t = text[n_cho + n_jung]; \
+ else \
+ t = TFILL; \
+ \
+ /* COMPOSABLE */ \
+ if ((__choseong_johabfont_base[l - LBASE] != 0 || l == LFILL) && \
+ (__jungseong_johabfont_base[v - VBASE] != 0 || v == VFILL) && \
+ (__jongseong_johabfont_base[t - TBASE] != 0 || t == TFILL)) \
+ { \
+ if (l != LFILL) \
+ { \
+ gindex = __choseong_johabfont_base[l - LBASE]; \
+ if (t == TFILL) \
+ { \
+ if (v == VFILL) \
+ gindex += 1; \
+ else \
+ gindex += __choseong_map_1[v - VBASE]; \
+ } \
+ else \
+ { \
+ if (v == VFILL) \
+ gindex += 6; \
+ else \
+ gindex += __choseong_map_2[v - VBASE]; \
+ } \
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1); \
+ set_glyph (glyphs, *n_glyphs, cfont, gindex); \
+ glyphs->log_clusters[*n_glyphs] = n_clusters; \
+ (*n_glyphs)++; \
+ } \
+ \
+ if (v != VFILL) \
+ { \
+ gindex = __jungseong_johabfont_base[v - VBASE]; \
+ switch (__johabfont_jungseong_kind[v - VBASE]) \
+ { \
+ case 3: \
+ gindex += __johabfont_jongseong_kind[t - TBASE]; \
+ break; \
+ case 4: \
+ gindex += ((l == 0x1100 || l == 0x110f) ? 0 : 1) + \
+ ((t != TFILL) ? 2 : 0); \
+ break; \
+ } \
+ \
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1); \
+ set_glyph (glyphs, *n_glyphs, cfont, gindex); \
+ glyphs->log_clusters[*n_glyphs] = n_clusters; \
+ (*n_glyphs)++; \
+ } \
+ \
+ if (t != TFILL) \
+ { \
+ gindex = __jongseong_johabfont_base[t - TBASE] + \
+ __jongseong_map[v - VBASE]; \
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1); \
+ set_glyph (glyphs, *n_glyphs, cfont, gindex); \
+ glyphs->log_clusters[*n_glyphs] = n_clusters; \
+ (*n_glyphs)++; \
+ } \
+ \
+ if (v == VFILL && t == TFILL) /* dummy for no zero width */ \
+ { \
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1); \
+ set_glyph (glyphs, *n_glyphs, cfont, JOHAB_FILLER); \
+ glyphs->log_clusters[*n_glyphs] = n_clusters; \
+ (*n_glyphs)++; \
+ } \
+ \
+ return; \
+ } \
+ }
+
+static void
+render_syllable_with_johabs (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters)
+{
+JOHAB_COMMON
+
+ /* Render as uncomposed forms as a fallback. */
+ for (i = 0; i < length; i++)
+ {
+ int j;
+
+ /*
+ * Uses KSC5601 symbol glyphs which johabS-1 has; they're
+ * not in the normal johab-1. The glyphs are better than composable
+ * components.
+ */
+ for (j = 0; j < 3; j++)
+ {
+ gindex = __jamo_to_ksc5601[text[i] - LBASE][j];
+
+ if (gindex != 0)
+ {
+ if ((gindex >= 0x2421) && (gindex <= 0x247f))
+ gindex += (0x032b - 0x2420);
+ else if ((gindex >= 0x2421) && (gindex <= 0x247f))
+ gindex += (0x02cd - 0x2321);
+ else
+ break;
+
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, gindex);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ }
+ else
+ break;
+ }
+ }
+}
+
+static void
+render_syllable_with_johab (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters)
+{
+JOHAB_COMMON
+
+ /* Render as uncomposed forms as a fallback. */
+ for (i = 0; i < length; i++)
+ {
+ int j;
+ GUChar2 wc;
+
+ wc = text[i];
+ for (j = 0; (j < 3) && (__jamo_to_johabfont[wc-LBASE][j] != 0); j++)
+ {
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont,
+ __jamo_to_johabfont[wc - LBASE][j]);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ if (IS_L (wc))
+ {
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, JOHAB_FILLER);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ }
+ }
+ }
+}
+
+static void
+render_syllable_with_iso10646 (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters)
+{
+ PangoGlyphIndex gindex;
+ int i;
+
+ /*
+ * Check if there are one CHOSEONG, one JUNGSEONG, and no more
+ * than one JONGSEONG.
+ */
+ int n_cho = 0, n_jung = 0, n_jong = 0;
+ i = 0;
+ while (i < length && IS_L (text[i]))
+ {
+ n_cho++;
+ i++;
+ }
+ while (i < length && IS_V (text[i]))
+ {
+ n_jung++;
+ i++;
+ }
+ while (i < length && IS_T (text[i]))
+ {
+ n_jong++;
+ i++;
+ }
+
+ if (n_cho == 1 && n_jung == 1 && n_jong <= 1)
+ {
+ int lindex, vindex, tindex;
+
+ lindex = text[0] - LBASE;
+ vindex = text[1] - VBASE;
+ if (n_jong > 0)
+ tindex = text[2] - TBASE;
+ else
+ tindex = 0;
+
+ /* COMPOSABLE */
+ if (lindex >= 0 && lindex < LCOUNT &&
+ vindex >= 0 && vindex < VCOUNT &&
+ tindex >= 0 && tindex < TCOUNT)
+ {
+ gindex = (lindex * VCOUNT + vindex) * TCOUNT + tindex + SBASE;
+ /* easy for composed syllables. */
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, gindex);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ return;
+ }
+ }
+
+ /* Render as uncomposed forms as a fallback. */
+ for (i = 0; i < length; i++)
+ {
+ gindex = text[i];
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, gindex);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ }
+}
+
+static void
+render_syllable_with_ksc5601 (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters)
+{
+ guint16 sindex;
+ PangoGlyphIndex gindex;
+ int i;
+
+ /*
+ * Check if there are one CHOSEONG, one JUNGSEONG, and no more
+ * than one JONGSEONG.
+ */
+ int n_cho = 0, n_jung = 0, n_jong = 0;
+ i = 0;
+ while (i < length && IS_L (text[i]))
+ {
+ n_cho++;
+ i++;
+ }
+ while (i < length && IS_V (text[i]))
+ {
+ n_jung++;
+ i++;
+ }
+ while (i < length && IS_T (text[i]))
+ {
+ n_jong++;
+ i++;
+ }
+
+ if (n_cho == 1 && n_jung == 1 && n_jong <= 1)
+ {
+ int lindex, vindex, tindex;
+
+ lindex = text[0] - LBASE;
+ vindex = text[1] - VBASE;
+ if (n_jong > 0)
+ tindex = text[2] - TBASE;
+ else
+ tindex = 0;
+
+ /* COMPOSABLE */
+ if (lindex >= 0 && lindex < LCOUNT &&
+ vindex >= 0 && vindex < VCOUNT &&
+ tindex >= 0 && tindex < TCOUNT)
+ {
+ int l = 0;
+ int u = KSC5601_HANGUL - 1;
+ guint16 try;
+
+ sindex = (lindex * VCOUNT + vindex) * TCOUNT + tindex + SBASE;
+
+ /* Do binary search. */
+ while (l <= u)
+ {
+ int m = (l + u) / 2;
+ try = __ksc5601_hangul_to_ucs[m];
+ if (try > sindex)
+ u = m - 1;
+ else if (try < sindex)
+ l = m + 1;
+ else
+ {
+ gindex = (((m / 94) + 0x30) << 8) | ((m % 94) + 0x21);
+
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, gindex);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ return;
+ }
+ }
+ }
+ }
+
+ for (i = 0; i < length; i++)
+ {
+ int j;
+
+ gindex = text[i];
+ for (j = 0; (j < 3) && (__jamo_to_ksc5601[gindex - LBASE][j] != 0); j++)
+ {
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont,
+ __jamo_to_ksc5601[gindex - LBASE][j]);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ }
+ }
+}
+
+/* Compare the tail of a to b */
+static gboolean
+match_end (char *a, char *b)
+{
+ size_t len_a = strlen (a);
+ size_t len_b = strlen (b);
+
+ if (len_b > len_a)
+ return FALSE;
+ else
+ return (strcmp (a + len_a - len_b, b) == 0);
+}
+
+static gboolean
+ranges_include_korean (int *ranges,
+ int n_ranges)
+{
+ gboolean have_syllables = FALSE;
+ gboolean have_jamos = FALSE;
+ gint i;
+
+ /* Check for syllables and for uncomposed jamos */
+
+ for (i=0; i<n_ranges; i++)
+ {
+ if (ranges[2*i] <= 0xac00 && ranges[2*i+1] >= 0xd7a3)
+ have_syllables = 1;
+ if (ranges[2*i] <= 0x1100 && ranges[2*i+1] >= 0x11ff)
+ have_jamos = 1;
+ }
+
+ return have_syllables && have_jamos;
+}
+
+static gboolean
+find_cfont (PangoFont *font, gchar **charsets, gint n_charsets,
+ PangoCFont **cfont, RenderSyllableFunc *render_func)
+{
+ int i;
+ char **xlfds;
+ int n_xlfds;
+
+ pango_x_list_cfonts (font, charsets, n_charsets, &xlfds, &n_xlfds);
+
+ *cfont = NULL;
+ for (i=0; i<n_xlfds; i++)
+ {
+ if (match_end (xlfds[i], "johabs-1"))
+ {
+ *cfont = pango_x_load_xlfd (font, xlfds[i]);
+ *render_func = render_syllable_with_johabs;
+ break;
+ }
+ if (match_end (xlfds[i], "johab-1"))
+ {
+ *cfont = pango_x_load_xlfd (font, xlfds[i]);
+ *render_func = render_syllable_with_johab;
+ break;
+ }
+ else if (match_end (xlfds[i], "iso10646-1"))
+ {
+ gint *ranges;
+ int n_ranges;
+
+ pango_x_xlfd_get_ranges (font, xlfds[i], &ranges, &n_ranges);
+
+ if (ranges_include_korean (ranges, n_ranges))
+ {
+ *cfont = pango_x_load_xlfd (font, xlfds[i]);
+ *render_func = render_syllable_with_iso10646;
+ g_free (ranges);
+ break;
+ }
+
+ g_free (ranges);
+ }
+ else if (match_end (xlfds[i], "ksc5601.1987-0"))
+ {
+ *cfont = pango_x_load_xlfd (font, xlfds[i]);
+ *render_func = render_syllable_with_ksc5601;
+ break;
+ }
+ }
+
+ for (i=0; i<n_xlfds; i++)
+ g_free (xlfds[i]);
+ g_free (xlfds);
+
+ return (*cfont != NULL);
+}
+
+static void
+hangul_engine_shape (PangoFont *font,
+ gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs)
+{
+ PangoCFont *cfont;
+ RenderSyllableFunc render_func = NULL;
+
+ char *ptr, *next;
+ int i, n_chars;
+ GUChar2 jamos[4];
+ int n_jamos = 0;
+
+ int n_glyphs = 0, n_clusters = 0;
+
+ static char *default_charset[] = {
+ "johabs-1"
+ };
+
+ static char *secondary_charset[] = {
+ "johab-1"
+ };
+
+ static char *fallback_charsets[] = {
+ "iso10646-1",
+ "ksc5601.1987-0"
+ };
+
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (text != NULL);
+ g_return_if_fail (length >= 0);
+ g_return_if_fail (analysis != NULL);
+
+ /* check available fonts. Always use a johab font if available;
+ * otherwise use iso-10646 or KSC font depending on the ordering
+ * of the fontlist.
+ */
+ if (!find_cfont (font, default_charset, 1, &cfont, &render_func))
+ if (!find_cfont (font, secondary_charset, 1, &cfont, &render_func))
+ if (!find_cfont (font, fallback_charsets, 2, &cfont, &render_func))
+ {
+ g_warning ("No available Hangul fonts.");
+ return;
+ }
+
+ n_chars = unicode_strlen (text, length);
+ ptr = text;
+
+ for (i = 0; i < n_chars; i++)
+ {
+ GUChar4 wc4;
+ GUChar2 wcs[4], wc;
+ int n_code = 0;
+
+ _pango_utf8_iterate (ptr, &next, &wc4);
+ if (wc4 >= SBASE && wc4 < (SBASE + SCOUNT))
+ {
+ /* decompose the syllable. */
+ gint16 sindex;
+
+ sindex = wc4 - SBASE;
+ wcs[0] = LBASE + (sindex / NCOUNT);
+ wcs[1] = VBASE + ((sindex % NCOUNT) / TCOUNT);
+ wcs[2] = TBASE + (sindex % TCOUNT);
+ n_code = 3;
+
+ if (n_jamos > 0)
+ {
+ (*render_func) (cfont, jamos, n_jamos,
+ glyphs, &n_glyphs, n_clusters);
+ n_clusters++;
+ n_jamos = 0;
+ }
+
+ /* Draw a syllable. */
+ (*render_func) (cfont, wcs, 3,
+ glyphs, &n_glyphs, n_clusters);
+ n_clusters++;
+ /* Clear. */
+ }
+ else if (wc4 >= 0x1100 && wc4 <= 0x11ff)
+ {
+ wc = (GUChar2) wc4;
+
+ if (n_jamos == 0)
+ {
+ jamos[n_jamos++] = wc;
+ }
+ else
+ {
+ /* Check syllable boundaries. */
+ if ((IS_T (jamos[n_jamos - 1]) && IS_L (wc)) ||
+ (IS_V (jamos[n_jamos - 1]) && IS_L (wc)) ||
+ (IS_T (jamos[n_jamos - 1]) && IS_V (wc)))
+ {
+ /* Draw a syllable. */
+ (*render_func) (cfont, jamos, n_jamos,
+ glyphs, &n_glyphs, n_clusters);
+ n_clusters++;
+ /* Clear. */
+ n_jamos = 0;
+ }
+ jamos[n_jamos++] = wc;
+ }
+ }
+ else
+ {
+ g_warning ("Unknown character 0x04%x", wc4);
+ continue;
+ }
+
+ ptr = next;
+ }
+
+ /* Draw the remaining Jamos. */
+ if (n_jamos > 0)
+ {
+ (*render_func) (cfont, jamos, n_jamos,
+ glyphs, &n_glyphs, n_clusters);
+ n_clusters++;
+ n_jamos = 0;
+ }
+}
+
+
+static PangoEngine *
+hangul_engine_x_new ()
+{
+ PangoEngineShape *result;
+
+ result = g_new (PangoEngineShape, 1);
+
+ result->engine.id = "HangulScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_shape = hangul_engine_shape;
+
+ return (PangoEngine *)result;
+}
+
+
+
+/* The following three functions provide the public module API for
+ * Pango
+ */
+
+void
+script_engine_list (PangoEngineInfo **engines, gint *n_engines)
+{
+ *engines = script_engines;
+ *n_engines = n_script_engines;
+}
+
+PangoEngine *
+script_engine_load (const char *id)
+{
+ if (!strcmp (id, "HangulScriptEngineLang"))
+ return hangul_engine_lang_new ();
+ else if (!strcmp (id, "HangulScriptEngineX"))
+ return hangul_engine_x_new ();
+ else
+ return NULL;
+}
+
+void
+script_engine_unload (PangoEngine *engine)
+{
+}
+
diff --git a/modules/hangul/hangul.c b/modules/hangul/hangul.c
new file mode 100644
index 00000000..b76ed86f
--- /dev/null
+++ b/modules/hangul/hangul.c
@@ -0,0 +1,759 @@
+/* Pango
+ * hangul.c:
+ *
+ * Copyright (C) 1999 Changwoo Ryu
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <glib.h>
+
+#include "pango.h"
+#include "pangox.h"
+#include "utils.h"
+#include <unicode.h>
+
+#define MEMBERS(strct) sizeof(strct) / sizeof(strct[1])
+
+static PangoEngineRange hangul_ranges[] = {
+
+ /* Hangul Jamo U+1100 -- U+11FF */
+ { 0x1100, 0x11ff, "*" },
+ /* Hangul Compatibility Jamo U+3130 -- U+318F */
+/* { 0x3130, 0x318f, "*" }, */
+ /* Hangul (pre-composed) Syllables U+AC00 -- U+D7A3 */
+ { 0xac00, 0xd7a3, "*" }
+};
+
+
+static PangoEngineInfo script_engines[] = {
+ {
+ "HangulScriptEngineLang",
+ PANGO_ENGINE_TYPE_LANG,
+ PANGO_RENDER_TYPE_NONE,
+ hangul_ranges, MEMBERS(hangul_ranges)
+ },
+ {
+ "HangulScriptEngineX",
+ PANGO_ENGINE_TYPE_SHAPE,
+ PANGO_RENDER_TYPE_X,
+ hangul_ranges, MEMBERS(hangul_ranges)
+ }
+};
+
+static gint n_script_engines = MEMBERS (script_engines);
+
+/*
+ * Language script engine
+ */
+
+static void
+hangul_engine_break (gchar *text,
+ gint len,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs)
+{
+ /* (FIXME) */
+}
+
+static PangoEngine *
+hangul_engine_lang_new ()
+{
+ PangoEngineLang *result;
+
+ result = g_new (PangoEngineLang, 1);
+
+ result->engine.id = "HangulScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_break = hangul_engine_break;
+
+ return (PangoEngine *) result;
+}
+
+/*
+ * X window system script engine portion
+ */
+
+static void
+set_glyph (PangoGlyphString *glyphs, gint i, PangoCFont *cfont,
+ PangoGlyphIndex glyph)
+{
+ gint width;
+
+ glyphs->glyphs[i].font = cfont;
+ glyphs->glyphs[i].glyph = glyph;
+
+ glyphs->geometry[i].x_offset = 0;
+ glyphs->geometry[i].y_offset = 0;
+
+ pango_x_glyph_extents (&glyphs->glyphs[i],
+ NULL, NULL, &width, NULL, NULL, NULL, NULL);
+ glyphs->geometry[i].width = width * 72;
+}
+
+
+/*
+ * From 3.10 of the Unicode 2.0 Book; used for combining Jamos.
+ */
+
+#define SBASE 0xAC00
+#define LBASE 0x1100
+#define VBASE 0x1161
+#define TBASE 0x11A7
+#define SCOUNT 11172
+#define LCOUNT 19
+#define VCOUNT 21
+#define TCOUNT 28
+#define NCOUNT (VCOUNT * TCOUNT)
+
+/*
+ * Unicode 2.0 doesn't define the fill for trailing consonants, but
+ * I'll use 0x11A7 as that purpose internally.
+ */
+
+#define LFILL 0x115F
+#define VFILL 0x1160
+#define TFILL 0x11A7
+
+#define IS_L(wc) (wc >= 0x1100 && wc < 0x115F)
+#define IS_V(wc) (wc >= 0x1160 && wc < 0x11A2)
+#define IS_T(wc) (wc >= 0x11A7 && wc < 0x11F9)
+
+
+typedef void (* RenderSyllableFunc) (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters);
+
+
+
+#include "tables-johabfont.i"
+#include "tables-ksc5601.i"
+
+#define JOHAB_COMMON \
+ int i; \
+ PangoGlyphIndex gindex; \
+ \
+ /* \
+ * Check if there are one CHOSEONG, one JUNGSEONG, and no more \
+ * than one JONGSEONG. \
+ */ \
+ int n_cho = 0, n_jung = 0, n_jong = 0; \
+ i = 0; \
+ while (i < length && IS_L (text[i])) \
+ { \
+ n_cho++; \
+ i++; \
+ } \
+ while (i < length && IS_V (text[i])) \
+ { \
+ n_jung++; \
+ i++; \
+ } \
+ while (i < length && IS_T (text[i])) \
+ { \
+ n_jong++; \
+ i++; \
+ } \
+ \
+ if (n_cho <= 1 && n_jung <= 1 && n_jong <= 1) \
+ { \
+ GUChar2 l, v, t; \
+ \
+ if (n_cho > 0) \
+ l = text[0]; \
+ else \
+ l = LFILL; \
+ \
+ if (n_jung > 0) \
+ v = text[n_cho]; \
+ else \
+ v = VFILL; \
+ \
+ if (n_jong > 0) \
+ t = text[n_cho + n_jung]; \
+ else \
+ t = TFILL; \
+ \
+ /* COMPOSABLE */ \
+ if ((__choseong_johabfont_base[l - LBASE] != 0 || l == LFILL) && \
+ (__jungseong_johabfont_base[v - VBASE] != 0 || v == VFILL) && \
+ (__jongseong_johabfont_base[t - TBASE] != 0 || t == TFILL)) \
+ { \
+ if (l != LFILL) \
+ { \
+ gindex = __choseong_johabfont_base[l - LBASE]; \
+ if (t == TFILL) \
+ { \
+ if (v == VFILL) \
+ gindex += 1; \
+ else \
+ gindex += __choseong_map_1[v - VBASE]; \
+ } \
+ else \
+ { \
+ if (v == VFILL) \
+ gindex += 6; \
+ else \
+ gindex += __choseong_map_2[v - VBASE]; \
+ } \
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1); \
+ set_glyph (glyphs, *n_glyphs, cfont, gindex); \
+ glyphs->log_clusters[*n_glyphs] = n_clusters; \
+ (*n_glyphs)++; \
+ } \
+ \
+ if (v != VFILL) \
+ { \
+ gindex = __jungseong_johabfont_base[v - VBASE]; \
+ switch (__johabfont_jungseong_kind[v - VBASE]) \
+ { \
+ case 3: \
+ gindex += __johabfont_jongseong_kind[t - TBASE]; \
+ break; \
+ case 4: \
+ gindex += ((l == 0x1100 || l == 0x110f) ? 0 : 1) + \
+ ((t != TFILL) ? 2 : 0); \
+ break; \
+ } \
+ \
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1); \
+ set_glyph (glyphs, *n_glyphs, cfont, gindex); \
+ glyphs->log_clusters[*n_glyphs] = n_clusters; \
+ (*n_glyphs)++; \
+ } \
+ \
+ if (t != TFILL) \
+ { \
+ gindex = __jongseong_johabfont_base[t - TBASE] + \
+ __jongseong_map[v - VBASE]; \
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1); \
+ set_glyph (glyphs, *n_glyphs, cfont, gindex); \
+ glyphs->log_clusters[*n_glyphs] = n_clusters; \
+ (*n_glyphs)++; \
+ } \
+ \
+ if (v == VFILL && t == TFILL) /* dummy for no zero width */ \
+ { \
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1); \
+ set_glyph (glyphs, *n_glyphs, cfont, JOHAB_FILLER); \
+ glyphs->log_clusters[*n_glyphs] = n_clusters; \
+ (*n_glyphs)++; \
+ } \
+ \
+ return; \
+ } \
+ }
+
+static void
+render_syllable_with_johabs (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters)
+{
+JOHAB_COMMON
+
+ /* Render as uncomposed forms as a fallback. */
+ for (i = 0; i < length; i++)
+ {
+ int j;
+
+ /*
+ * Uses KSC5601 symbol glyphs which johabS-1 has; they're
+ * not in the normal johab-1. The glyphs are better than composable
+ * components.
+ */
+ for (j = 0; j < 3; j++)
+ {
+ gindex = __jamo_to_ksc5601[text[i] - LBASE][j];
+
+ if (gindex != 0)
+ {
+ if ((gindex >= 0x2421) && (gindex <= 0x247f))
+ gindex += (0x032b - 0x2420);
+ else if ((gindex >= 0x2421) && (gindex <= 0x247f))
+ gindex += (0x02cd - 0x2321);
+ else
+ break;
+
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, gindex);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ }
+ else
+ break;
+ }
+ }
+}
+
+static void
+render_syllable_with_johab (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters)
+{
+JOHAB_COMMON
+
+ /* Render as uncomposed forms as a fallback. */
+ for (i = 0; i < length; i++)
+ {
+ int j;
+ GUChar2 wc;
+
+ wc = text[i];
+ for (j = 0; (j < 3) && (__jamo_to_johabfont[wc-LBASE][j] != 0); j++)
+ {
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont,
+ __jamo_to_johabfont[wc - LBASE][j]);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ if (IS_L (wc))
+ {
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, JOHAB_FILLER);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ }
+ }
+ }
+}
+
+static void
+render_syllable_with_iso10646 (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters)
+{
+ PangoGlyphIndex gindex;
+ int i;
+
+ /*
+ * Check if there are one CHOSEONG, one JUNGSEONG, and no more
+ * than one JONGSEONG.
+ */
+ int n_cho = 0, n_jung = 0, n_jong = 0;
+ i = 0;
+ while (i < length && IS_L (text[i]))
+ {
+ n_cho++;
+ i++;
+ }
+ while (i < length && IS_V (text[i]))
+ {
+ n_jung++;
+ i++;
+ }
+ while (i < length && IS_T (text[i]))
+ {
+ n_jong++;
+ i++;
+ }
+
+ if (n_cho == 1 && n_jung == 1 && n_jong <= 1)
+ {
+ int lindex, vindex, tindex;
+
+ lindex = text[0] - LBASE;
+ vindex = text[1] - VBASE;
+ if (n_jong > 0)
+ tindex = text[2] - TBASE;
+ else
+ tindex = 0;
+
+ /* COMPOSABLE */
+ if (lindex >= 0 && lindex < LCOUNT &&
+ vindex >= 0 && vindex < VCOUNT &&
+ tindex >= 0 && tindex < TCOUNT)
+ {
+ gindex = (lindex * VCOUNT + vindex) * TCOUNT + tindex + SBASE;
+ /* easy for composed syllables. */
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, gindex);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ return;
+ }
+ }
+
+ /* Render as uncomposed forms as a fallback. */
+ for (i = 0; i < length; i++)
+ {
+ gindex = text[i];
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, gindex);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ }
+}
+
+static void
+render_syllable_with_ksc5601 (PangoCFont *cfont,
+ GUChar2 *text, int length,
+ PangoGlyphString *glyphs,
+ int *n_glyphs, int n_clusters)
+{
+ guint16 sindex;
+ PangoGlyphIndex gindex;
+ int i;
+
+ /*
+ * Check if there are one CHOSEONG, one JUNGSEONG, and no more
+ * than one JONGSEONG.
+ */
+ int n_cho = 0, n_jung = 0, n_jong = 0;
+ i = 0;
+ while (i < length && IS_L (text[i]))
+ {
+ n_cho++;
+ i++;
+ }
+ while (i < length && IS_V (text[i]))
+ {
+ n_jung++;
+ i++;
+ }
+ while (i < length && IS_T (text[i]))
+ {
+ n_jong++;
+ i++;
+ }
+
+ if (n_cho == 1 && n_jung == 1 && n_jong <= 1)
+ {
+ int lindex, vindex, tindex;
+
+ lindex = text[0] - LBASE;
+ vindex = text[1] - VBASE;
+ if (n_jong > 0)
+ tindex = text[2] - TBASE;
+ else
+ tindex = 0;
+
+ /* COMPOSABLE */
+ if (lindex >= 0 && lindex < LCOUNT &&
+ vindex >= 0 && vindex < VCOUNT &&
+ tindex >= 0 && tindex < TCOUNT)
+ {
+ int l = 0;
+ int u = KSC5601_HANGUL - 1;
+ guint16 try;
+
+ sindex = (lindex * VCOUNT + vindex) * TCOUNT + tindex + SBASE;
+
+ /* Do binary search. */
+ while (l <= u)
+ {
+ int m = (l + u) / 2;
+ try = __ksc5601_hangul_to_ucs[m];
+ if (try > sindex)
+ u = m - 1;
+ else if (try < sindex)
+ l = m + 1;
+ else
+ {
+ gindex = (((m / 94) + 0x30) << 8) | ((m % 94) + 0x21);
+
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont, gindex);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ return;
+ }
+ }
+ }
+ }
+
+ for (i = 0; i < length; i++)
+ {
+ int j;
+
+ gindex = text[i];
+ for (j = 0; (j < 3) && (__jamo_to_ksc5601[gindex - LBASE][j] != 0); j++)
+ {
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (glyphs, *n_glyphs, cfont,
+ __jamo_to_ksc5601[gindex - LBASE][j]);
+ glyphs->log_clusters[*n_glyphs] = n_clusters;
+ (*n_glyphs)++;
+ }
+ }
+}
+
+/* Compare the tail of a to b */
+static gboolean
+match_end (char *a, char *b)
+{
+ size_t len_a = strlen (a);
+ size_t len_b = strlen (b);
+
+ if (len_b > len_a)
+ return FALSE;
+ else
+ return (strcmp (a + len_a - len_b, b) == 0);
+}
+
+static gboolean
+ranges_include_korean (int *ranges,
+ int n_ranges)
+{
+ gboolean have_syllables = FALSE;
+ gboolean have_jamos = FALSE;
+ gint i;
+
+ /* Check for syllables and for uncomposed jamos */
+
+ for (i=0; i<n_ranges; i++)
+ {
+ if (ranges[2*i] <= 0xac00 && ranges[2*i+1] >= 0xd7a3)
+ have_syllables = 1;
+ if (ranges[2*i] <= 0x1100 && ranges[2*i+1] >= 0x11ff)
+ have_jamos = 1;
+ }
+
+ return have_syllables && have_jamos;
+}
+
+static gboolean
+find_cfont (PangoFont *font, gchar **charsets, gint n_charsets,
+ PangoCFont **cfont, RenderSyllableFunc *render_func)
+{
+ int i;
+ char **xlfds;
+ int n_xlfds;
+
+ pango_x_list_cfonts (font, charsets, n_charsets, &xlfds, &n_xlfds);
+
+ *cfont = NULL;
+ for (i=0; i<n_xlfds; i++)
+ {
+ if (match_end (xlfds[i], "johabs-1"))
+ {
+ *cfont = pango_x_load_xlfd (font, xlfds[i]);
+ *render_func = render_syllable_with_johabs;
+ break;
+ }
+ if (match_end (xlfds[i], "johab-1"))
+ {
+ *cfont = pango_x_load_xlfd (font, xlfds[i]);
+ *render_func = render_syllable_with_johab;
+ break;
+ }
+ else if (match_end (xlfds[i], "iso10646-1"))
+ {
+ gint *ranges;
+ int n_ranges;
+
+ pango_x_xlfd_get_ranges (font, xlfds[i], &ranges, &n_ranges);
+
+ if (ranges_include_korean (ranges, n_ranges))
+ {
+ *cfont = pango_x_load_xlfd (font, xlfds[i]);
+ *render_func = render_syllable_with_iso10646;
+ g_free (ranges);
+ break;
+ }
+
+ g_free (ranges);
+ }
+ else if (match_end (xlfds[i], "ksc5601.1987-0"))
+ {
+ *cfont = pango_x_load_xlfd (font, xlfds[i]);
+ *render_func = render_syllable_with_ksc5601;
+ break;
+ }
+ }
+
+ for (i=0; i<n_xlfds; i++)
+ g_free (xlfds[i]);
+ g_free (xlfds);
+
+ return (*cfont != NULL);
+}
+
+static void
+hangul_engine_shape (PangoFont *font,
+ gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs)
+{
+ PangoCFont *cfont;
+ RenderSyllableFunc render_func = NULL;
+
+ char *ptr, *next;
+ int i, n_chars;
+ GUChar2 jamos[4];
+ int n_jamos = 0;
+
+ int n_glyphs = 0, n_clusters = 0;
+
+ static char *default_charset[] = {
+ "johabs-1"
+ };
+
+ static char *secondary_charset[] = {
+ "johab-1"
+ };
+
+ static char *fallback_charsets[] = {
+ "iso10646-1",
+ "ksc5601.1987-0"
+ };
+
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (text != NULL);
+ g_return_if_fail (length >= 0);
+ g_return_if_fail (analysis != NULL);
+
+ /* check available fonts. Always use a johab font if available;
+ * otherwise use iso-10646 or KSC font depending on the ordering
+ * of the fontlist.
+ */
+ if (!find_cfont (font, default_charset, 1, &cfont, &render_func))
+ if (!find_cfont (font, secondary_charset, 1, &cfont, &render_func))
+ if (!find_cfont (font, fallback_charsets, 2, &cfont, &render_func))
+ {
+ g_warning ("No available Hangul fonts.");
+ return;
+ }
+
+ n_chars = unicode_strlen (text, length);
+ ptr = text;
+
+ for (i = 0; i < n_chars; i++)
+ {
+ GUChar4 wc4;
+ GUChar2 wcs[4], wc;
+ int n_code = 0;
+
+ _pango_utf8_iterate (ptr, &next, &wc4);
+ if (wc4 >= SBASE && wc4 < (SBASE + SCOUNT))
+ {
+ /* decompose the syllable. */
+ gint16 sindex;
+
+ sindex = wc4 - SBASE;
+ wcs[0] = LBASE + (sindex / NCOUNT);
+ wcs[1] = VBASE + ((sindex % NCOUNT) / TCOUNT);
+ wcs[2] = TBASE + (sindex % TCOUNT);
+ n_code = 3;
+
+ if (n_jamos > 0)
+ {
+ (*render_func) (cfont, jamos, n_jamos,
+ glyphs, &n_glyphs, n_clusters);
+ n_clusters++;
+ n_jamos = 0;
+ }
+
+ /* Draw a syllable. */
+ (*render_func) (cfont, wcs, 3,
+ glyphs, &n_glyphs, n_clusters);
+ n_clusters++;
+ /* Clear. */
+ }
+ else if (wc4 >= 0x1100 && wc4 <= 0x11ff)
+ {
+ wc = (GUChar2) wc4;
+
+ if (n_jamos == 0)
+ {
+ jamos[n_jamos++] = wc;
+ }
+ else
+ {
+ /* Check syllable boundaries. */
+ if ((IS_T (jamos[n_jamos - 1]) && IS_L (wc)) ||
+ (IS_V (jamos[n_jamos - 1]) && IS_L (wc)) ||
+ (IS_T (jamos[n_jamos - 1]) && IS_V (wc)))
+ {
+ /* Draw a syllable. */
+ (*render_func) (cfont, jamos, n_jamos,
+ glyphs, &n_glyphs, n_clusters);
+ n_clusters++;
+ /* Clear. */
+ n_jamos = 0;
+ }
+ jamos[n_jamos++] = wc;
+ }
+ }
+ else
+ {
+ g_warning ("Unknown character 0x04%x", wc4);
+ continue;
+ }
+
+ ptr = next;
+ }
+
+ /* Draw the remaining Jamos. */
+ if (n_jamos > 0)
+ {
+ (*render_func) (cfont, jamos, n_jamos,
+ glyphs, &n_glyphs, n_clusters);
+ n_clusters++;
+ n_jamos = 0;
+ }
+}
+
+
+static PangoEngine *
+hangul_engine_x_new ()
+{
+ PangoEngineShape *result;
+
+ result = g_new (PangoEngineShape, 1);
+
+ result->engine.id = "HangulScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_shape = hangul_engine_shape;
+
+ return (PangoEngine *)result;
+}
+
+
+
+/* The following three functions provide the public module API for
+ * Pango
+ */
+
+void
+script_engine_list (PangoEngineInfo **engines, gint *n_engines)
+{
+ *engines = script_engines;
+ *n_engines = n_script_engines;
+}
+
+PangoEngine *
+script_engine_load (const char *id)
+{
+ if (!strcmp (id, "HangulScriptEngineLang"))
+ return hangul_engine_lang_new ();
+ else if (!strcmp (id, "HangulScriptEngineX"))
+ return hangul_engine_x_new ();
+ else
+ return NULL;
+}
+
+void
+script_engine_unload (PangoEngine *engine)
+{
+}
+
diff --git a/modules/hangul/tables-johabfont.i b/modules/hangul/tables-johabfont.i
new file mode 100644
index 00000000..8d2cb05c
--- /dev/null
+++ b/modules/hangul/tables-johabfont.i
@@ -0,0 +1,608 @@
+/* -*-c-*- */
+
+#define JOHAB_LBASE 0x0001
+#define JOHAB_VBASE 0x0137
+#define JOHAB_TBASE 0x0195
+
+#define JOHAB_FILLER 0x0000
+
+const static guint16 __choseong_johabfont_base[] =
+{
+ /* the basic 19 CHOSEONGs */
+ 0x0001, 0x000b, 0x0015, 0x001f, 0x0029,
+ 0x0033, 0x003d, 0x0047, 0x0051, 0x005b,
+ 0x0065, 0x006f, 0x0079, 0x0083, 0x008d,
+ 0x0097, 0x00a1, 0x00ab, 0x00b5,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x00c9, /* PIEUP-KIYEOK */
+ 0,
+ 0x00dd, /* PIEUP-TIKEUT */
+ 0x00fb, /* PIEUP-SIOS */
+ 0, 0, 0, 0, 0,
+ 0x0119, /* PIEUP-CIEUC */
+ 0, 0, 0,
+ 0x00bf, /* KAPYEOUNPIEUP */
+ 0,
+ 0x00d3, /* SIOS-KIYEOK */
+ 0,
+ 0x00e7, /* SIOS-TIKEUT */
+ 0, 0,
+ 0x00f1, /* SIOS-PIEUP */
+ 0, 0, 0,
+ 0x0123, /* SIOS-CIEUC */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x0105, /* PANSIOS */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+ 0x012d, /* YESIEUNG */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,
+ 0x010f, /* YEORINHIEUH */
+ 0, 0, 0, 0, 0, /* reserved */
+ 0 /* CHOSEONG filler */
+};
+
+const static guint16 __jungseong_johabfont_base[] =
+{
+ /* the basic 21 JUNGSEONGs */
+ 0x0137, 0x013a, 0x013d, 0x0140, 0x0143,
+ 0x0146, 0x0149, 0x014c, 0x014f, 0x0153,
+ 0x0157, 0x015b, 0x015f, 0x0163, 0x0166,
+ 0x0169, 0x016c, 0x016f, 0x0172, 0x0176,
+ 0x017a,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0x017d, /* YO-YA */
+ 0x0180, /* YO-YAE */
+ 0, 0,
+ 0x0183, /* YO-I */
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x0186, /* YU-YEO */
+ 0x0189, /* YU-YE */
+ 0,
+ 0x018c, /* YU-I */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x018f, /* ARAEA */
+ 0, 0,
+ 0x0192, /* ARAEA-I */
+ 0,
+ 0, 0, 0, 0 /* reserved */
+};
+
+const static gint16 __jongseong_johabfont_base[] =
+{
+ 0, /* (INTERNAL) JONGSEONG filler */
+ /* The basic 27 (28 - jongseong filter) CHONGSEONGs */
+ 0x0195, 0x0199, 0x019d, 0x01a1, 0x01a5,
+ 0x01a9, 0x01ad, 0x01b1, 0x01b5, 0x01b9,
+ 0x01bd, 0x01c1, 0x01c5, 0x01c9, 0x01cd,
+ 0x01d1, 0x01d5, 0x01d9, 0x01dd, 0x01e1,
+ 0x01e5, 0x01e9, 0x01ed, 0x01f1, 0x01f5,
+ 0x01f9, 0x01fd,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,
+ 0x0201, /* RIEUL-YEORINHIEUH */
+ 0x0205, /* MIEUM-KIYEOK */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
+ 0x020d, /* YESIEUNG */
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0x0209, /* YEORINHIEUH */
+ 0, 0, 0, 0, 0, 0 /* reserved */
+};
+
+/*
+ * This table represents how many glyphs are available for each
+ * JUNGSEONGs in johab-font -- some are 3 and some are 4.
+ */
+const static gint __johabfont_jungseong_kind[] =
+{
+ /* The basic 21 JUNGSEONGs. */
+ 3, 3, 3, 3, 3, 3, 3, 3, 4, 4,
+ 4, 4, 4, 3, 3, 3, 3, 3, 4, 4,
+ 3,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 3, /* YO-YA */
+ 3, /* YO-YAE */
+ 0, 0,
+ 3, /* YO-I */
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, /* YU-YEO */
+ 3, /* YU-YE */
+ 0,
+ 3, /* YU-I */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, /* ARAEA */
+ 0, 0,
+ 3, /* ARAEA-I */
+ 0,
+ 0, 0, 0, 0 /* reserved */
+};
+
+const static gint __choseong_map_1[] = {
+ /* The basic 21 JUNGSEONGs. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 3,
+ 3, 3, 1, 2, 4, 4, 4, 2, 1, 3,
+ 0,
+
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1,
+ 3, /* YO-YA */
+ 3, /* YO-YAE */
+ -1, -1,
+ 3, /* YO-I */
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 4, /* YU-YEO */
+ 4, /* YU-YE */
+ -1,
+ 4, /* YU-I */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 2, /* ARAEA */
+ -1, -1,
+ 4, /* ARAEA-I */
+ -1,
+ -1, -1, -1, -1 /* reserved */
+};
+
+const static gint __choseong_map_2[] = {
+ /* The basic 21 JUNGSEONGs. */
+ 5, 5, 5, 5, 5, 5, 5, 5, 6, 8,
+ 8, 8, 6, 7, 9, 9, 9, 7, 6, 8,
+ 5,
+
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1,
+ 8, /* YO-YA */
+ 8, /* YO-YAE */
+ -1, -1,
+ 8, /* YO-I */
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 9, /* YU-YEO */
+ 9, /* YU-YE */
+ -1,
+ 9, /* YU-I */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 6, /* ARAEA */
+ -1, -1,
+ 9, /* ARAEA-I */
+ -1,
+ -1, -1, -1, -1 /* reserved */
+};
+
+const static gint __johabfont_jongseong_kind[] =
+{
+ 0, /* (internal) CHONGSEONG filler */
+ /* The basic 27 (28 - jongseong filter) CHONGSEONGs */
+ 1, 1, 1, 2, 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, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1,
+ 1, /* YEORINHIEUH */
+ 1, /* MIEUM-KIYEOK */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1,
+ 1, /* YESIEUNG */
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 1, /* YEORINHIEUH */
+ -1, -1, -1, -1, -1, -1 /* reserved */
+};
+
+const static gint __jongseong_map[] =
+{
+ /* The basic 21 JUNGSEONGs. */
+ 0, 2, 0, 2, 1, 2, 1, 2, 3, 0,
+ 0, 0, 3, 3, 1, 1, 1, 3, 3, 0,
+ 1,
+
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1,
+ 0, /* YO-YA */
+ 0, /* YO-YAE */
+ -1, -1,
+ 1, /* YO-I */
+ -1, -1, -1, -1, -1, -1, -1, -1,
+ 1, /* YU-YEO */
+ 1, /* YU-YE */
+ -1,
+ 1, /* YU-I */
+ -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, /* ARAEA */
+ -1, -1,
+ 0, /* ARAEA-I */
+ -1,
+ -1, -1, -1, -1 /* reserved */
+};
+
+
+/*
+ * Jamos
+ */
+
+/* from the CHOSEONG section -- mordern */
+#define JOHAB_KIYEOK 0x0002
+#define JOHAB_SSANGKIYEOK 0x000c
+#define JOHAB_NIEUN 0x0016
+#define JOHAB_TIKEUT 0x0020
+#define JOHAB_SSANGTIKEUT 0x002a
+#define JOHAB_RIEUL 0x0034
+#define JOHAB_MIEUM 0x003e
+#define JOHAB_PIEUP 0x0048
+#define JOHAB_SSANGPIEUP 0x0052
+#define JOHAB_SIOS 0x005c
+#define JOHAB_SSANGSIOS 0x0066
+#define JOHAB_IEUNG 0x0070
+#define JOHAB_CIEUC 0x007a
+#define JOHAB_SSANGCIEUC 0x0084
+#define JOHAB_CHIEUCH 0x008e
+#define JOHAB_KHIEUKH 0x0098
+#define JOHAB_THIEUTH 0x00a2
+#define JOHAB_PHIEUPH 0x00ac
+#define JOHAB_HIEUH 0x00b6
+
+/* from the CHOSEONG section -- extra */
+#define JOHAB_KAPYEOUNPIEUP 0x00c0
+#define JOHAB_PIEUP_KIYEOK 0x00ca
+#define JOHAB_SIOS_KIYEOK 0x00d4
+#define JOHAB_PIEUP_TIKEUT 0x00de
+#define JOHAB_SIOS_TIKEUT 0x00e8
+#define JOHAB_SIOS_PIEUP 0x00f2
+#define JOHAB_PIEUP_SIOS 0x00fc
+#define JOHAB_PANSIOS 0x0106
+#define JOHAB_YESIEUNG 0x0110
+#define JOHAB_PIEUP_CIEUC 0x011a
+#define JOHAB_SIOS_CIEUC 0x0124
+#define JOHAB_YEORINHIEUH 0x012e
+
+/* from the JONGSEONG section -- modern */
+#define JOHAB_KIYEOK_SIOS 0x019d
+#define JOHAB_NIEUN_CIEUC 0x01a5
+#define JOHAB_NIEUN_HIEUH 0x01a9
+#define JOHAB_RIEUL_KIYEOK 0x01b5
+#define JOHAB_RIEUL_MIEUM 0x01b9
+#define JOHAB_RIEUL_PIEUP 0x01bd
+#define JOHAB_RIEUL_SIOS 0x01c1
+#define JOHAB_RIEUL_THIEUTH 0x01c5
+#define JOHAB_RIEUL_PHIEUPH 0x01c9
+#define JOHAB_RIEUL_HIEUH 0x01cd
+
+/* from the JONGSEONG section -- extra */
+#define JOHAB_RIEUL_YEORINHIEUH 0x0201
+#define JOHAB_MIEUM_KIYEOK 0x0205
+
+/* from the JUNGSEONG section -- modern */
+#define JOHAB_A 0x0137
+#define JOHAB_AE 0x013a
+#define JOHAB_YA 0x013d
+#define JOHAB_YAE 0x014d
+#define JOHAB_EO 0x0143
+#define JOHAB_E 0x0146
+#define JOHAB_YEO 0x0149
+#define JOHAB_YE 0x014c
+#define JOHAB_O 0x014e
+#define JOHAB_WA 0x0153
+#define JOHAB_WAE 0x0157
+#define JOHAB_OE 0x015b
+#define JOHAB_YO 0x015e
+#define JOHAB_U 0x0163
+#define JOHAB_WEO 0x0166
+#define JOHAB_WE 0x0169
+#define JOHAB_WI 0x016c
+#define JOHAB_YU 0x016f
+#define JOHAB_EU 0x0172
+#define JOHAB_YI 0x0176
+#define JOHAB_I 0x017a
+
+/* from the JUNGSEONG section -- extra */
+#define JOHAB_YO_YA 0x017d
+#define JOHAB_YO_YAE 0x0180
+#define JOHAB_YO_I 0x0183
+#define JOHAB_YU_YEO 0x0186
+#define JOHAB_YU_YE 0x0189
+#define JOHAB_YU_I 0x018c
+#define JOHAB_ARAEA 0x018f
+#define JOHAB_ARAEA_I 0x0192
+
+/*
+ * Some jamos are not representable with KSC5601.
+ * Choose similar modern jamos, but different with glyphs.
+ */
+#define JOHAB_CHITUEUMSIOS 0x005e
+#define JOHAB_CEONGCHITUEUMSIOS 0x0060
+#define JOHAB_CHITUEUMCIEUC 0x007c
+#define JOHAB_CEONGEUMCIEUC 0x007e
+#define JOHAB_CHITUEUMCHIEUCH 0x0090
+#define JOHAB_CEONGEUMCHIEUCH 0x0092
+
+static guint16 __jamo_to_johabfont[0x100][3] =
+{
+ /*
+ * CHOSEONG
+ */
+ /* CHOSEONG 0x1100 -- 0x1112 : matched to each ksc5601 Jamos extactly. */
+ {JOHAB_KIYEOK, 0, 0},
+ {JOHAB_SSANGKIYEOK, 0, 0},
+ {JOHAB_NIEUN, 0, 0},
+ {JOHAB_TIKEUT, 0, 0},
+ {JOHAB_SSANGTIKEUT, 0, 0},
+ {JOHAB_RIEUL, 0, 0},
+ {JOHAB_MIEUM, 0, 0},
+ {JOHAB_PIEUP, 0, 0},
+ {JOHAB_SSANGPIEUP, 0, 0},
+ {JOHAB_SIOS, 0, 0},
+ {JOHAB_SSANGSIOS, 0, 0},
+ {JOHAB_IEUNG, 0, 0},
+ {JOHAB_CIEUC, 0, 0},
+ {JOHAB_SSANGCIEUC, 0, 0},
+ {JOHAB_CHIEUCH, 0, 0},
+ {JOHAB_KHIEUKH, 0, 0},
+ {JOHAB_THIEUTH, 0, 0},
+ {JOHAB_PHIEUPH, 0, 0},
+ {JOHAB_HIEUH, 0, 0},
+ /* Some of the following are representable as a glyph, the others not. */
+ {JOHAB_NIEUN, JOHAB_KIYEOK, 0},
+ {JOHAB_NIEUN, JOHAB_NIEUN, 0},
+ {JOHAB_NIEUN, JOHAB_TIKEUT, 0},
+ {JOHAB_NIEUN, JOHAB_PIEUP, 0},
+ {JOHAB_TIKEUT, JOHAB_KIYEOK, 0},
+ {JOHAB_RIEUL, JOHAB_NIEUN, 0},
+ {JOHAB_RIEUL, JOHAB_RIEUL, 0},
+ {JOHAB_RIEUL_HIEUH, 0, 0},
+ {JOHAB_RIEUL, JOHAB_IEUNG, 0},
+ {JOHAB_MIEUM, JOHAB_PIEUP, 0},
+ {JOHAB_MIEUM, JOHAB_IEUNG, 0}, /* KAPYEOUNMIEUM */
+ {JOHAB_PIEUP_KIYEOK, 0, 0},
+ {JOHAB_PIEUP, JOHAB_NIEUN, 0},
+ {JOHAB_PIEUP_TIKEUT, 0, 0},
+ {JOHAB_PIEUP_SIOS, 0, 0},
+ {JOHAB_PIEUP, JOHAB_SIOS, JOHAB_KIYEOK},
+ {JOHAB_PIEUP, JOHAB_SIOS, JOHAB_TIKEUT},
+ {JOHAB_PIEUP, JOHAB_SIOS, JOHAB_PIEUP},
+ {JOHAB_PIEUP, JOHAB_SIOS, JOHAB_SIOS},
+ {JOHAB_PIEUP, JOHAB_SIOS, JOHAB_CIEUC},
+ {JOHAB_PIEUP_CIEUC, 0, 0},
+ {JOHAB_PIEUP, JOHAB_CHIEUCH, 0},
+ {JOHAB_PIEUP, JOHAB_THIEUTH, 0},
+ {JOHAB_PIEUP, JOHAB_PHIEUPH, 0},
+ {JOHAB_KAPYEOUNPIEUP, 0, 0},
+ {JOHAB_SSANGPIEUP, JOHAB_IEUNG, 0}, /* KAPYEOUNSSANGPIEUP */
+ {JOHAB_SIOS_KIYEOK, 0, 0},
+ {JOHAB_SIOS, JOHAB_NIEUN, 0},
+ {JOHAB_SIOS_TIKEUT, 0, 0},
+ {JOHAB_SIOS, JOHAB_RIEUL, 0},
+ {JOHAB_SIOS, JOHAB_MIEUM, 0},
+ {JOHAB_SIOS_PIEUP, 0, 0},
+ {JOHAB_SIOS, JOHAB_PIEUP, JOHAB_KIYEOK},
+ {JOHAB_SIOS, JOHAB_SIOS, JOHAB_SIOS},
+ {JOHAB_SIOS, JOHAB_IEUNG, 0},
+ {JOHAB_SIOS_CIEUC, 0, 0},
+ {JOHAB_SIOS, JOHAB_CHIEUCH, 0},
+ {JOHAB_SIOS, JOHAB_KHIEUKH, 0},
+ {JOHAB_SIOS, JOHAB_THIEUTH, 0},
+ {JOHAB_SIOS, JOHAB_PHIEUPH, 0},
+ {JOHAB_SIOS, JOHAB_HIEUH, 0},
+ {JOHAB_CHITUEUMSIOS, 0, 0},
+ {JOHAB_CHITUEUMSIOS, JOHAB_CHITUEUMSIOS, 0},
+ {JOHAB_CEONGCHITUEUMSIOS, 0, 0},
+ {JOHAB_CEONGCHITUEUMSIOS, JOHAB_CEONGCHITUEUMSIOS, 0},
+ {JOHAB_PANSIOS, 0, 0},
+ {JOHAB_IEUNG, JOHAB_KIYEOK, 0},
+ {JOHAB_IEUNG, JOHAB_TIKEUT, 0},
+ {JOHAB_IEUNG, JOHAB_MIEUM, 0},
+ {JOHAB_IEUNG, JOHAB_PIEUP, 0},
+ {JOHAB_IEUNG, JOHAB_SIOS, 0},
+ {JOHAB_IEUNG, JOHAB_PANSIOS, 0},
+ {JOHAB_IEUNG, JOHAB_IEUNG, 0},
+ {JOHAB_IEUNG, JOHAB_CIEUC, 0},
+ {JOHAB_IEUNG, JOHAB_CHIEUCH, 0},
+ {JOHAB_IEUNG, JOHAB_THIEUTH, 0},
+ {JOHAB_IEUNG, JOHAB_PHIEUPH, 0},
+ {JOHAB_YESIEUNG, 0, 0},
+ {JOHAB_CIEUC, JOHAB_IEUNG, 0},
+ {JOHAB_CHITUEUMCIEUC, 0, 0},
+ {JOHAB_CHITUEUMCIEUC, JOHAB_CHITUEUMCIEUC, 0},
+ {JOHAB_CEONGEUMCIEUC, 0, 0},
+ {JOHAB_CEONGEUMCIEUC, JOHAB_CEONGEUMCIEUC, 0},
+ {JOHAB_CHIEUCH, JOHAB_KHIEUKH, 0},
+ {JOHAB_CHIEUCH, JOHAB_HIEUH, 0},
+ {JOHAB_CHITUEUMCHIEUCH, 0, 0},
+ {JOHAB_CEONGEUMCHIEUCH, 0, 0},
+ {JOHAB_PHIEUPH, JOHAB_PIEUP, 0},
+ {JOHAB_PHIEUPH, JOHAB_IEUNG, 0}, /* KAPYEOUNPHIEUPH */
+ {JOHAB_HIEUH, JOHAB_HIEUH, 0},
+ {JOHAB_YEORINHIEUH, 0, 0},
+ /* 0x115A ~ 0x115E -- reserved */
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ /* CHOSEONG FILLER */
+ {0, 0, 0},
+
+ /*
+ * JUNGSEONG
+ */
+ /*
+ * JUNGSEONG
+ */
+ {0, 0, 0}, /* JUNGSEONG FILL */
+ /* JUNGSEONG 0x1161 -- 0x1175 : matched to each ksc5601 Jamos extactly. */
+ {JOHAB_A, 0, 0},
+ {JOHAB_AE, 0, 0},
+ {JOHAB_YA, 0, 0},
+ {JOHAB_YAE, 0, 0},
+ {JOHAB_EO, 0, 0},
+ {JOHAB_E, 0, 0},
+ {JOHAB_YEO, 0, 0},
+ {JOHAB_YE, 0, 0},
+ {JOHAB_O, 0, 0},
+ {JOHAB_WA, 0, 0},
+ {JOHAB_WAE, 0, 0},
+ {JOHAB_OE, 0, 0},
+ {JOHAB_YO, 0, 0},
+ {JOHAB_U, 0, 0},
+ {JOHAB_WEO, 0, 0},
+ {JOHAB_WE, 0, 0},
+ {JOHAB_WI, 0, 0},
+ {JOHAB_YU, 0, 0},
+ {JOHAB_EU, 0, 0},
+ {JOHAB_YI, 0, 0},
+ {JOHAB_I, 0, 0},
+ /* Some of the following are representable as a glyph, the others not. */
+ {JOHAB_A, JOHAB_O, 0},
+ {JOHAB_A, JOHAB_U, 0},
+ {JOHAB_YA, JOHAB_O, 0},
+ {JOHAB_YA, JOHAB_YO, 0},
+ {JOHAB_EO, JOHAB_O, 0},
+ {JOHAB_EO, JOHAB_U, 0},
+ {JOHAB_EO, JOHAB_EU, 0},
+ {JOHAB_YEO, JOHAB_O, 0},
+ {JOHAB_YEO, JOHAB_U, 0},
+ {JOHAB_O, JOHAB_EO, 0},
+ {JOHAB_O, JOHAB_E, 0},
+ {JOHAB_O, JOHAB_YE, 0},
+ {JOHAB_O, JOHAB_O, 0},
+ {JOHAB_O, JOHAB_U, 0},
+ {JOHAB_YO_YA, 0, 0},
+ {JOHAB_YO_YAE, 0, 0},
+ {JOHAB_YO, JOHAB_YEO, 0},
+ {JOHAB_YO, JOHAB_O, 0},
+ {JOHAB_YO_I, 0, 0},
+ {JOHAB_U, JOHAB_A, 0},
+ {JOHAB_U, JOHAB_AE, 0},
+ {JOHAB_U, JOHAB_EO, JOHAB_EU},
+ {JOHAB_U, JOHAB_YE, 0},
+ {JOHAB_U, JOHAB_U, 0},
+ {JOHAB_YU, JOHAB_A, 0},
+ {JOHAB_YU, JOHAB_EO, 0},
+ {JOHAB_YU, JOHAB_E, 0},
+ {JOHAB_YU_YEO, 0, 0},
+ {JOHAB_YU_YE, 0, 0},
+ {JOHAB_YU, JOHAB_U, 0},
+ {JOHAB_YU_I, 0, 0},
+ {JOHAB_EU, JOHAB_U, 0},
+ {JOHAB_EU, JOHAB_EU, 0},
+ {JOHAB_YI, JOHAB_U, 0},
+ {JOHAB_I, JOHAB_A, 0},
+ {JOHAB_I, JOHAB_YA, 0},
+ {JOHAB_I, JOHAB_O, 0},
+ {JOHAB_I, JOHAB_U, 0},
+ {JOHAB_I, JOHAB_EU, 0},
+ {JOHAB_I, JOHAB_ARAEA, 0},
+ {JOHAB_ARAEA, 0, 0},
+ {JOHAB_ARAEA, JOHAB_EO, 0},
+ {JOHAB_ARAEA, JOHAB_U, 0},
+ {JOHAB_ARAEA, JOHAB_I, 0},
+ {JOHAB_ARAEA, JOHAB_ARAEA, 0},
+ /* 0x11A3 ~ 0x11A7 -- reserved */
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0}, /* (INTERNAL) JONGSEONG FILL */
+
+ /*
+ * JONGSEONG
+ */
+ {JOHAB_KIYEOK, 0, 0},
+ {JOHAB_SSANGKIYEOK, 0, 0},
+ {JOHAB_KIYEOK_SIOS, 0, 0},
+ {JOHAB_NIEUN, 0, 0},
+ {JOHAB_NIEUN_CIEUC, 0, 0},
+ {JOHAB_NIEUN_HIEUH, 0, 0},
+ {JOHAB_TIKEUT, 0, 0},
+ {JOHAB_RIEUL, 0, 0},
+ {JOHAB_RIEUL_KIYEOK, 0, 0},
+ {JOHAB_RIEUL_MIEUM, 0, 0},
+ {JOHAB_RIEUL_PIEUP, 0, 0},
+ {JOHAB_RIEUL_SIOS, 0, 0},
+ {JOHAB_RIEUL, JOHAB_TIKEUT, 0},
+ {JOHAB_RIEUL_PHIEUPH, 0, 0},
+ {JOHAB_RIEUL_HIEUH, 0, 0},
+ {JOHAB_MIEUM, 0, 0},
+ {JOHAB_PIEUP, 0, 0},
+ {JOHAB_PIEUP_SIOS, 0, 0},
+ {JOHAB_SIOS, 0, 0},
+ {JOHAB_SSANGSIOS, 0, 0},
+ {JOHAB_IEUNG, 0, 0},
+ {JOHAB_CIEUC, 0, 0},
+ {JOHAB_CHIEUCH, 0, 0},
+ {JOHAB_KHIEUKH, 0, 0},
+ {JOHAB_THIEUTH, 0, 0},
+ {JOHAB_PHIEUPH, 0, 0},
+ {JOHAB_HIEUH, 0, 0},
+ {JOHAB_KIYEOK, JOHAB_RIEUL, 0},
+ {JOHAB_KIYEOK, JOHAB_SIOS, JOHAB_KIYEOK},
+ {JOHAB_NIEUN, JOHAB_KIYEOK, 0},
+ {JOHAB_NIEUN, JOHAB_TIKEUT, 0},
+ {JOHAB_NIEUN, JOHAB_SIOS, 0},
+ {JOHAB_NIEUN, JOHAB_PANSIOS, 0},
+ {JOHAB_NIEUN, JOHAB_THIEUTH, 0},
+ {JOHAB_TIKEUT, JOHAB_KIYEOK, 0},
+ {JOHAB_TIKEUT, JOHAB_RIEUL, 0},
+ {JOHAB_RIEUL, JOHAB_KIYEOK, JOHAB_SIOS},
+ {JOHAB_RIEUL, JOHAB_NIEUN, 0},
+ {JOHAB_RIEUL, JOHAB_TIKEUT, 0},
+ {JOHAB_RIEUL, JOHAB_TIKEUT, JOHAB_HIEUH},
+ {JOHAB_RIEUL, JOHAB_RIEUL, 0},
+ {JOHAB_RIEUL, JOHAB_MIEUM, JOHAB_KIYEOK},
+ {JOHAB_RIEUL, JOHAB_MIEUM, JOHAB_SIOS},
+ {JOHAB_RIEUL, JOHAB_PIEUP, JOHAB_SIOS},
+ {JOHAB_RIEUL, JOHAB_PHIEUPH, JOHAB_HIEUH},
+ {JOHAB_RIEUL, JOHAB_KAPYEOUNPIEUP, 0},
+ {JOHAB_RIEUL, JOHAB_SIOS, JOHAB_SIOS},
+ {JOHAB_RIEUL, JOHAB_PANSIOS, 0},
+ {JOHAB_RIEUL, JOHAB_KHIEUKH, 0},
+ {JOHAB_RIEUL_YEORINHIEUH, 0, 0},
+ {JOHAB_MIEUM, JOHAB_KIYEOK, 0},
+ {JOHAB_MIEUM, JOHAB_RIEUL, 0},
+ {JOHAB_MIEUM, JOHAB_PIEUP, 0},
+ {JOHAB_MIEUM, JOHAB_SIOS, 0},
+ {JOHAB_MIEUM, JOHAB_SIOS, JOHAB_SIOS},
+ {JOHAB_MIEUM, JOHAB_PANSIOS, 0},
+ {JOHAB_MIEUM, JOHAB_CHIEUCH, 0},
+ {JOHAB_MIEUM, JOHAB_HIEUH, 0},
+ {JOHAB_MIEUM, JOHAB_IEUNG, 0}, /* KAPYEOUNMIEUM */
+ {JOHAB_PIEUP, JOHAB_RIEUL, 0},
+ {JOHAB_PIEUP, JOHAB_PHIEUPH, 0},
+ {JOHAB_PIEUP, JOHAB_HIEUH, 0},
+ {JOHAB_KAPYEOUNPIEUP, 0, 0},
+ {JOHAB_SIOS_KIYEOK, 0, 0},
+ {JOHAB_SIOS_TIKEUT, 0, 0},
+ {JOHAB_SIOS, JOHAB_RIEUL, 0},
+ {JOHAB_SIOS_PIEUP, 0, 0},
+ {JOHAB_PANSIOS, 0, 0},
+ {JOHAB_IEUNG, JOHAB_KIYEOK, 0},
+ {JOHAB_IEUNG, JOHAB_KIYEOK, JOHAB_KIYEOK},
+ {JOHAB_IEUNG, JOHAB_IEUNG, 0},
+ {JOHAB_IEUNG, JOHAB_KHIEUKH, 0},
+ {JOHAB_YESIEUNG, 0, 0},
+ {JOHAB_YESIEUNG, JOHAB_SIOS, 0},
+ {JOHAB_YESIEUNG, JOHAB_PANSIOS, 0},
+ {JOHAB_PHIEUPH, JOHAB_PIEUP, 0},
+ {JOHAB_PHIEUPH, JOHAB_IEUNG, 0}, /* KAPYEOUNPHIEUPH */
+ {JOHAB_HIEUH, JOHAB_NIEUN, 0},
+ {JOHAB_HIEUH, JOHAB_RIEUL, 0},
+ {JOHAB_HIEUH, JOHAB_MIEUM, 0},
+ {JOHAB_HIEUH, JOHAB_PIEUP, 0},
+ {JOHAB_YEORINHIEUH, 0, 0},
+ /* reserved */
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0}
+};
+
diff --git a/modules/hangul/tables-ksc5601.i b/modules/hangul/tables-ksc5601.i
new file mode 100644
index 00000000..3f5b818f
--- /dev/null
+++ b/modules/hangul/tables-ksc5601.i
@@ -0,0 +1,708 @@
+/* -*-c-*- */
+
+/* ks c 5601 HANGUL syllables -> UCS2 table
+ *
+ * This table is a part of the GNU C library:
+ *
+ * Copyright (C) 1998 Free Software Foundation, Inc.
+ */
+
+#define KSC5601_HANGUL 2350
+#define KSC5601_HANJA 4888
+#define KSC5601_SYMBOL 986
+
+static guint16 __ksc5601_hangul_to_ucs[KSC5601_HANGUL]=
+{
+ 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10,
+ 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19,
+ 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d,
+ 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b,
+ 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77,
+ 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86,
+ 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d,
+ 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf,
+ 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4,
+ 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7,
+ 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5,
+ 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06, 0xad0c, 0xad0d,
+ 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29, 0xad2c, 0xad2d,
+ 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45, 0xad47, 0xad49,
+ 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c, 0xad6d, 0xad70,
+ 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c, 0xad7d, 0xad7f,
+ 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90, 0xad9c, 0xad9d,
+ 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8, 0xadd0, 0xadd1,
+ 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9, 0xadfc, 0xadff,
+ 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d, 0xae14, 0xae30,
+ 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40, 0xae41, 0xae43,
+ 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e, 0xae50, 0xae54,
+ 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61, 0xae65, 0xae68,
+ 0xae69, 0xae6c, 0xae70, 0xae78, 0xae79, 0xae7b, 0xae7c, 0xae7d,
+ 0xae84, 0xae85, 0xae8c, 0xaebc, 0xaebd, 0xaebe, 0xaec0, 0xaec4,
+ 0xaecc, 0xaecd, 0xaecf, 0xaed0, 0xaed1, 0xaed8, 0xaed9, 0xaedc,
+ 0xaee8, 0xaeeb, 0xaeed, 0xaef4, 0xaef8, 0xaefc, 0xaf07, 0xaf08,
+ 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d, 0xaf30, 0xaf32, 0xaf34, 0xaf3c,
+ 0xaf3d, 0xaf3f, 0xaf41, 0xaf42, 0xaf43, 0xaf48, 0xaf49, 0xaf50,
+ 0xaf5c, 0xaf5d, 0xaf64, 0xaf65, 0xaf79, 0xaf80, 0xaf84, 0xaf88,
+ 0xaf90, 0xaf91, 0xaf95, 0xaf9c, 0xafb8, 0xafb9, 0xafbc, 0xafc0,
+ 0xafc7, 0xafc8, 0xafc9, 0xafcb, 0xafcd, 0xafce, 0xafd4, 0xafdc,
+ 0xafe8, 0xafe9, 0xaff0, 0xaff1, 0xaff4, 0xaff8, 0xb000, 0xb001,
+ 0xb004, 0xb00c, 0xb010, 0xb014, 0xb01c, 0xb01d, 0xb028, 0xb044,
+ 0xb045, 0xb048, 0xb04a, 0xb04c, 0xb04e, 0xb053, 0xb054, 0xb055,
+ 0xb057, 0xb059, 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c,
+ 0xb08d, 0xb08f, 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f,
+ 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad,
+ 0xb0ae, 0xb0af, 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc,
+ 0xb0c4, 0xb0c5, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4,
+ 0xb0d8, 0xb0e0, 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110,
+ 0xb112, 0xb113, 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123,
+ 0xb124, 0xb125, 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138,
+ 0xb139, 0xb140, 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154,
+ 0xb155, 0xb158, 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180,
+ 0xb182, 0xb188, 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194,
+ 0xb198, 0xb19c, 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd,
+ 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd,
+ 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217,
+ 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268,
+ 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290,
+ 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3,
+ 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9,
+ 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2,
+ 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee,
+ 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa,
+ 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311,
+ 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358,
+ 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365, 0xb367, 0xb369,
+ 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378, 0xb380, 0xb381,
+ 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394, 0xb3a0, 0xb3a1,
+ 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb, 0xb3cc, 0xb3ce,
+ 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db, 0xb3dd, 0xb3e0,
+ 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c, 0xb420, 0xb428,
+ 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454, 0xb458, 0xb460,
+ 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488, 0xb49d, 0xb4a4,
+ 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0, 0xb4c4, 0xb4c8,
+ 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3, 0xb4e4, 0xb4e6,
+ 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514, 0xb515, 0xb518,
+ 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528, 0xb529, 0xb52a,
+ 0xb530, 0xb531, 0xb534, 0xb538, 0xb540, 0xb541, 0xb543, 0xb544,
+ 0xb545, 0xb54b, 0xb54c, 0xb54d, 0xb550, 0xb554, 0xb55c, 0xb55d,
+ 0xb55f, 0xb560, 0xb561, 0xb5a0, 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa,
+ 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc,
+ 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc, 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1,
+ 0xb5d8, 0xb5ec, 0xb610, 0xb611, 0xb614, 0xb618, 0xb625, 0xb62c,
+ 0xb634, 0xb648, 0xb664, 0xb668, 0xb69c, 0xb69d, 0xb6a0, 0xb6a4,
+ 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4, 0xb6f0, 0xb6f4, 0xb6f8, 0xb700,
+ 0xb701, 0xb705, 0xb728, 0xb729, 0xb72c, 0xb72f, 0xb730, 0xb738,
+ 0xb739, 0xb73b, 0xb744, 0xb748, 0xb74c, 0xb754, 0xb755, 0xb760,
+ 0xb764, 0xb768, 0xb770, 0xb771, 0xb773, 0xb775, 0xb77c, 0xb77d,
+ 0xb780, 0xb784, 0xb78c, 0xb78d, 0xb78f, 0xb790, 0xb791, 0xb792,
+ 0xb796, 0xb797, 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9,
+ 0xb7ab, 0xb7ac, 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9,
+ 0xb7ec, 0xb7ed, 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800,
+ 0xb801, 0xb807, 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819,
+ 0xb81b, 0xb81d, 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835,
+ 0xb837, 0xb838, 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c,
+ 0xb85d, 0xb860, 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878,
+ 0xb87c, 0xb88d, 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1,
+ 0xb8c3, 0xb8c5, 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1,
+ 0xb8e8, 0xb8e9, 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd,
+ 0xb904, 0xb918, 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c,
+ 0xb94f, 0xb951, 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969,
+ 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985,
+ 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0,
+ 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc,
+ 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db,
+ 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec,
+ 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01,
+ 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48,
+ 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58,
+ 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71,
+ 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8,
+ 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb,
+ 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc, 0xbb00, 0xbb04,
+ 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20, 0xbb29, 0xbb2b,
+ 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e,
+ 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f, 0xbb50, 0xbb54,
+ 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c, 0xbb90, 0xbba4,
+ 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4, 0xbbc8, 0xbbd0,
+ 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00, 0xbc02, 0xbc08,
+ 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11, 0xbc14, 0xbc15,
+ 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f,
+ 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30, 0xbc31, 0xbc34,
+ 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45, 0xbc49, 0xbc4c,
+ 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88, 0xbc8b, 0xbc8c,
+ 0xbc8e, 0xbc94, 0xbc95, 0xbc97, 0xbc99, 0xbc9a, 0xbca0, 0xbca1,
+ 0xbca4, 0xbca7, 0xbca8, 0xbcb0, 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5,
+ 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4, 0xbccd, 0xbccf, 0xbcd0, 0xbcd1,
+ 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc,
+ 0xbd04, 0xbd05, 0xbd07, 0xbd09, 0xbd10, 0xbd14, 0xbd24, 0xbd2c,
+ 0xbd40, 0xbd48, 0xbd49, 0xbd4c, 0xbd50, 0xbd58, 0xbd59, 0xbd64,
+ 0xbd68, 0xbd80, 0xbd81, 0xbd84, 0xbd87, 0xbd88, 0xbd89, 0xbd8a,
+ 0xbd90, 0xbd91, 0xbd93, 0xbd95, 0xbd99, 0xbd9a, 0xbd9c, 0xbda4,
+ 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5, 0xbdd8, 0xbddc, 0xbde9, 0xbdf0,
+ 0xbdf4, 0xbdf8, 0xbe00, 0xbe03, 0xbe05, 0xbe0c, 0xbe0d, 0xbe10,
+ 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f, 0xbe44, 0xbe45, 0xbe48, 0xbe4c,
+ 0xbe4e, 0xbe54, 0xbe55, 0xbe57, 0xbe59, 0xbe5a, 0xbe5b, 0xbe60,
+ 0xbe61, 0xbe64, 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74,
+ 0xbe75, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d,
+ 0xbe8f, 0xbe90, 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1,
+ 0xbed4, 0xbed7, 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec,
+ 0xbf01, 0xbf08, 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d,
+ 0xbf40, 0xbf41, 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94,
+ 0xbfb0, 0xbfc5, 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf,
+ 0xbfe1, 0xc03c, 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069,
+ 0xc090, 0xc091, 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5,
+ 0xc0ac, 0xc0ad, 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6,
+ 0xc0bc, 0xc0bd, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9,
+ 0xc0cc, 0xc0d0, 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4,
+ 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100,
+ 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f,
+ 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f,
+ 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148,
+ 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c,
+ 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178,
+ 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c,
+ 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0,
+ 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0,
+ 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200,
+ 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c,
+ 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d, 0xc22f, 0xc231,
+ 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254, 0xc258, 0xc260,
+ 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c, 0xc27d, 0xc27f,
+ 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b, 0xc29d, 0xc2a4,
+ 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5, 0xc2b7, 0xc2b9,
+ 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb, 0xc2ec, 0xc2ed,
+ 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb, 0xc2fc, 0xc300,
+ 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314, 0xc315, 0xc318,
+ 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345, 0xc368, 0xc369,
+ 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c, 0xc37d, 0xc384,
+ 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc, 0xc3df, 0xc3e0,
+ 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5, 0xc3f8, 0xc408,
+ 0xc410, 0xc424, 0xc42c, 0xc430, 0xc434, 0xc43c, 0xc43d, 0xc448,
+ 0xc464, 0xc465, 0xc468, 0xc46c, 0xc474, 0xc475, 0xc479, 0xc480,
+ 0xc494, 0xc49c, 0xc4b8, 0xc4bc, 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4,
+ 0xc4f8, 0xc4fa, 0xc4ff, 0xc500, 0xc501, 0xc50c, 0xc510, 0xc514,
+ 0xc51c, 0xc528, 0xc529, 0xc52c, 0xc530, 0xc538, 0xc539, 0xc53b,
+ 0xc53d, 0xc544, 0xc545, 0xc548, 0xc549, 0xc54a, 0xc54c, 0xc54d,
+ 0xc54e, 0xc553, 0xc554, 0xc555, 0xc557, 0xc558, 0xc559, 0xc55d,
+ 0xc55e, 0xc560, 0xc561, 0xc564, 0xc568, 0xc570, 0xc571, 0xc573,
+ 0xc574, 0xc575, 0xc57c, 0xc57d, 0xc580, 0xc584, 0xc587, 0xc58c,
+ 0xc58d, 0xc58f, 0xc591, 0xc595, 0xc597, 0xc598, 0xc59c, 0xc5a0,
+ 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8, 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd,
+ 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca,
+ 0xc5cc, 0xc5ce, 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1,
+ 0xc5e3, 0xc5e5, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6,
+ 0xc5f7, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605,
+ 0xc606, 0xc607, 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b,
+ 0xc61c, 0xc624, 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630,
+ 0xc633, 0xc634, 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641,
+ 0xc644, 0xc648, 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c,
+ 0xc65d, 0xc660, 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c,
+ 0xc680, 0xc688, 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698,
+ 0xc69c, 0xc6a4, 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4,
+ 0xc6b8, 0xc6b9, 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc,
+ 0xc6cd, 0xc6d0, 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8,
+ 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705,
+ 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721,
+ 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c,
+ 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751,
+ 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c,
+ 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d,
+ 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a,
+ 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a,
+ 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad,
+ 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8,
+ 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8,
+ 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a, 0xc810, 0xc811,
+ 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820, 0xc824, 0xc82c,
+ 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840, 0xc848, 0xc849,
+ 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874, 0xc878, 0xc87a,
+ 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887, 0xc88b, 0xc88c,
+ 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8, 0xc8bc, 0xc8bd,
+ 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7, 0xc8d9, 0xc8e0,
+ 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900, 0xc904, 0xc905,
+ 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918, 0xc92c, 0xc934,
+ 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961, 0xc963, 0xc96c,
+ 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c, 0xc990, 0xc998,
+ 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4, 0xc9c7, 0xc9c8,
+ 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3, 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da,
+ 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2, 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed,
+ 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8, 0xc9f9, 0xc9fc, 0xca00, 0xca08,
+ 0xca09, 0xca0b, 0xca0c, 0xca0d, 0xca14, 0xca18, 0xca29, 0xca4c,
+ 0xca4d, 0xca50, 0xca54, 0xca5c, 0xca5d, 0xca5f, 0xca60, 0xca61,
+ 0xca68, 0xca7d, 0xca84, 0xca98, 0xcabc, 0xcabd, 0xcac0, 0xcac4,
+ 0xcacc, 0xcacd, 0xcacf, 0xcad1, 0xcad3, 0xcad8, 0xcad9, 0xcae0,
+ 0xcaec, 0xcaf4, 0xcb08, 0xcb10, 0xcb14, 0xcb18, 0xcb20, 0xcb21,
+ 0xcb41, 0xcb48, 0xcb49, 0xcb4c, 0xcb50, 0xcb58, 0xcb59, 0xcb5d,
+ 0xcb64, 0xcb78, 0xcb79, 0xcb9c, 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7,
+ 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10, 0xcc14, 0xcc1c, 0xcc1d, 0xcc21,
+ 0xcc22, 0xcc27, 0xcc28, 0xcc29, 0xcc2c, 0xcc2e, 0xcc30, 0xcc38,
+ 0xcc39, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48,
+ 0xcc4c, 0xcc54, 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64,
+ 0xcc66, 0xcc68, 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0,
+ 0xcca8, 0xcca9, 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8,
+ 0xccbc, 0xccc4, 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4,
+ 0xccec, 0xccf0, 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18,
+ 0xcd19, 0xcd1b, 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c,
+ 0xcd60, 0xcd64, 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88,
+ 0xcd94, 0xcd95, 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9,
+ 0xcdb0, 0xcdc4, 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8,
+ 0xcdf9, 0xcdfb, 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19,
+ 0xce20, 0xce21, 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35,
+ 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69,
+ 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85,
+ 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1,
+ 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5,
+ 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9,
+ 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15,
+ 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31,
+ 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67,
+ 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c,
+ 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8,
+ 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011,
+ 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c, 0xd044, 0xd045,
+ 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060, 0xd06c, 0xd06d,
+ 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4, 0xd0a5, 0xd0a8,
+ 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0, 0xd0c1, 0xd0c4,
+ 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4, 0xd0d5, 0xd0dc,
+ 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef, 0xd0f0, 0xd0f1,
+ 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138, 0xd13a, 0xd140,
+ 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d, 0xd150, 0xd154,
+ 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c, 0xd17c, 0xd184,
+ 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0, 0xd1b1, 0xd1b3,
+ 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4, 0xd1f8, 0xd207,
+ 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234, 0xd23c, 0xd23d,
+ 0xd23f, 0xd241, 0xd248, 0xd25c, 0xd264, 0xd280, 0xd281, 0xd284,
+ 0xd288, 0xd290, 0xd291, 0xd295, 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac,
+ 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc, 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8,
+ 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8, 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0,
+ 0xd2f1, 0xd2f4, 0xd2f8, 0xd300, 0xd301, 0xd303, 0xd305, 0xd30c,
+ 0xd30d, 0xd30e, 0xd310, 0xd314, 0xd316, 0xd31c, 0xd31d, 0xd31f,
+ 0xd320, 0xd321, 0xd325, 0xd328, 0xd329, 0xd32c, 0xd330, 0xd338,
+ 0xd339, 0xd33b, 0xd33c, 0xd33d, 0xd344, 0xd345, 0xd37c, 0xd37d,
+ 0xd380, 0xd384, 0xd38c, 0xd38d, 0xd38f, 0xd390, 0xd391, 0xd398,
+ 0xd399, 0xd39c, 0xd3a0, 0xd3a8, 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4,
+ 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5, 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8,
+ 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed, 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd,
+ 0xd3ff, 0xd401, 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460,
+ 0xd464, 0xd46d, 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480,
+ 0xd482, 0xd488, 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc,
+ 0xd4d0, 0xd4d4, 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8,
+ 0xd4fb, 0xd4fd, 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517,
+ 0xd53c, 0xd53d, 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551,
+ 0xd558, 0xd559, 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b,
+ 0xd56d, 0xd574, 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587,
+ 0xd588, 0xd589, 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0,
+ 0xd5d2, 0xd5d8, 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8,
+ 0xd5ec, 0xd5f4, 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604,
+ 0xd608, 0xd610, 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620,
+ 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648,
+ 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c,
+ 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c,
+ 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac,
+ 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1,
+ 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5,
+ 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c,
+ 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738,
+ 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756,
+ 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769,
+ 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789,
+ 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d
+};
+
+
+#define KSC_KIYEOK 0x2421
+#define KSC_SSANGKIYEOK 0x2422
+#define KSC_KIYEOK_SIOS 0x2423
+#define KSC_NIEUN 0x2424
+#define KSC_NIEUN_CIEUC 0x2425
+#define KSC_NIEUN_HIEUH 0x2426
+#define KSC_TIKEUT 0x2427
+#define KSC_SSANGTIKEUT 0x2428
+#define KSC_RIEUL 0x2429
+#define KSC_RIEUL_KIYEOK 0x242a
+#define KSC_RIEUL_MIEUM 0x242b
+#define KSC_RIEUL_PIEUP 0x242c
+#define KSC_RIEUL_SIOS 0x242d
+#define KSC_RIEUL_THIEUTH 0x242e
+#define KSC_RIEUL_PHIEUPH 0x242f
+#define KSC_RIEUL_HIEUH 0x2430
+#define KSC_MIEUM 0x2431
+#define KSC_PIEUP 0x2432
+#define KSC_SSANGPIEUP 0x2433
+#define KSC_PIEUP_SIOS 0x2434
+#define KSC_SIOS 0x2435
+#define KSC_SSANGSIOS 0x2436
+#define KSC_IEUNG 0x2437
+#define KSC_CIEUC 0x2438
+#define KSC_SSANGCIEUC 0x2439
+#define KSC_CHIEUCH 0x243a
+#define KSC_KHIEUKH 0x243b
+#define KSC_THIEUTH 0x243c
+#define KSC_PHIEUPH 0x243d
+#define KSC_HIEUH 0x243e
+
+#define KSC_A 0x243f
+#define KSC_AE 0x2440
+#define KSC_YA 0x2441
+#define KSC_YAE 0x2442
+#define KSC_EO 0x2443
+#define KSC_E 0x2444
+#define KSC_YEO 0x2445
+#define KSC_YE 0x2446
+#define KSC_O 0x2447
+#define KSC_WA 0x2448
+#define KSC_WAE 0x2449
+#define KSC_OE 0x244a
+#define KSC_YO 0x244b
+#define KSC_U 0x244c
+#define KSC_WEO 0x244d
+#define KSC_WE 0x244e
+#define KSC_WI 0x244f
+#define KSC_YU 0x2450
+#define KSC_EU 0x2451
+#define KSC_YI 0x2452
+#define KSC_I 0x2453
+
+#define KSC_SSANGNIEUN 0x2455
+#define KSC_NIEUN_TIKEUT 0x2456
+#define KSC_NIEUN_SIOS 0x2457
+#define KSC_NIEUN_PANSIOS 0x2458
+#define KSC_RIEUL_KIYEOK_SIOS 0x2459
+#define KSC_RIEUL_TIKEUT 0x245a
+#define KSC_RIEUL_PIEUP_SIOS 0x245b
+#define KSC_RIEUL_PANSIOS 0x245c
+#define KSC_RIEUL_YEORINHIEUH 0x245d
+#define KSC_MIEUM_PIEUP 0x245e
+#define KSC_MIEUM_SIOS 0x245f
+#define KSC_MIEUM_PANSIOS 0x2460
+#define KSC_KAPYEOUNMIEUM 0x2461
+#define KSC_PIEUP_KIYEOK 0x2462
+#define KSC_PIEUP_TIKEUT 0x2463
+#define KSC_PIEUP_SIOS_KIYEOK 0x2464
+#define KSC_PIEUP_SIOS_TIKEUT 0x2465
+#define KSC_PIEUP_CIEUC 0x2466
+#define KSC_PIEUP_THIEUTH 0x2467
+#define KSC_KAPYEOUNPIEUP 0x2468
+#define KSC_KAPYEOUNSSANGPIEUP 0x2469
+#define KSC_SIOS_KIYEOK 0x246a
+#define KSC_SIOS_NIEUN 0x246b
+#define KSC_SIOS_TIKEUT 0x246c
+#define KSC_SIOS_PIEUP 0x246d
+#define KSC_SIOS_CIEUC 0x246e
+#define KSC_PANSIOS 0x246f
+#define KSC_SSANGIEUNG 0x2470
+#define KSC_YESIEUNG 0x2471
+#define KSC_IEUNG_CIEUC 0x2472
+#define KSC_IEUNG_PANSIOS 0x2473
+#define KSC_KAPYEOUNPHIEUPH 0x2474
+#define KSC_SSANGHIEUH 0x2475
+#define KSC_YEORINHIEUH 0x2476
+#define KSC_YO_YA 0x2477
+#define KSC_YO_YAE 0x2478
+#define KSC_YO_I 0x2479
+#define KSC_YU_YEO 0x247a
+#define KSC_YU_YE 0x247b
+#define KSC_YU_I 0x247c
+#define KSC_ARAEA 0x247d
+#define KSC_ARAEA_I 0x247e
+
+/*
+ * Some jamos are not representable with KSC5601. These are ugly
+ * fallbacks:
+ *
+ * CHITUEUMSIOS: 0x233c (less than)
+ * CEONGCHITUEUMSIOS: 0x233e (greater than)
+ * CHITUEUMCIEUC 0x237b (left bracket)
+ * CEONGEUMCIEUC 0x237d (right bracket)
+ * CHITUEUMCHIEUCH 0x237b (left brace)
+ * CEONGEUMCHIEUCH 0x237d (right brace)
+ */
+#define KSC_CHITUEUMSIOS 0x233c
+#define KSC_CEONGCHITUEUMSIOS 0x233e
+#define KSC_CHITUEUMCIEUC 0x235b
+#define KSC_CEONGEUMCIEUC 0x235d
+#define KSC_CHITUEUMCHIEUCH 0x237b
+#define KSC_CEONGEUMCHIEUCH 0x237d
+
+static guint16 __jamo_to_ksc5601[0x100][3] =
+{
+ /*
+ * CHOSEONG
+ */
+ /* CHOSEONG 0x1100 -- 0x1112 : matched to each ksc5601 Jamos extactly. */
+ {KSC_KIYEOK, 0, 0},
+ {KSC_SSANGKIYEOK, 0, 0},
+ {KSC_NIEUN, 0, 0},
+ {KSC_TIKEUT, 0, 0},
+ {KSC_SSANGTIKEUT, 0, 0},
+ {KSC_RIEUL, 0, 0},
+ {KSC_MIEUM, 0, 0},
+ {KSC_PIEUP, 0, 0},
+ {KSC_SSANGPIEUP, 0, 0},
+ {KSC_SIOS, 0, 0},
+ {KSC_SSANGSIOS, 0, 0},
+ {KSC_IEUNG, 0, 0},
+ {KSC_CIEUC, 0, 0},
+ {KSC_SSANGCIEUC, 0, 0},
+ {KSC_CHIEUCH, 0, 0},
+ {KSC_KHIEUKH, 0, 0},
+ {KSC_THIEUTH, 0, 0},
+ {KSC_PHIEUPH, 0, 0},
+ {KSC_HIEUH, 0, 0},
+ /* Some of the following are representable as a glyph, the others not. */
+ {KSC_NIEUN, KSC_KIYEOK, 0},
+ {KSC_SSANGNIEUN, 0, 0},
+ {KSC_NIEUN_TIKEUT, 0, 0},
+ {KSC_NIEUN, KSC_PIEUP, 0},
+ {KSC_TIKEUT, KSC_KIYEOK, 0},
+ {KSC_RIEUL, KSC_NIEUN, 0},
+ {KSC_RIEUL, KSC_RIEUL, 0},
+ {KSC_RIEUL_HIEUH, 0, 0},
+ {KSC_RIEUL, KSC_IEUNG, 0},
+ {KSC_MIEUM_PIEUP, 0, 0},
+ {KSC_KAPYEOUNMIEUM, 0, 0},
+ {KSC_PIEUP_KIYEOK, 0, 0},
+ {KSC_PIEUP, KSC_NIEUN, 0},
+ {KSC_PIEUP_TIKEUT, 0, 0},
+ {KSC_PIEUP_SIOS, 0, 0},
+ {KSC_PIEUP_SIOS_KIYEOK, 0, 0},
+ {KSC_PIEUP_SIOS_TIKEUT, 0, 0},
+ {KSC_PIEUP, KSC_SIOS, KSC_PIEUP},
+ {KSC_PIEUP, KSC_SIOS, KSC_SIOS},
+ {KSC_PIEUP, KSC_SIOS, KSC_CIEUC},
+ {KSC_PIEUP_CIEUC, 0, 0},
+ {KSC_PIEUP, KSC_CHIEUCH, 0},
+ {KSC_PIEUP_THIEUTH, 0, 0},
+ {KSC_PIEUP, KSC_PHIEUPH, 0},
+ {KSC_KAPYEOUNPIEUP, 0, 0},
+ {KSC_KAPYEOUNSSANGPIEUP, 0, 0},
+ {KSC_SIOS_KIYEOK, 0, 0},
+ {KSC_SIOS_NIEUN, 0, 0},
+ {KSC_SIOS_TIKEUT, 0, 0},
+ {KSC_SIOS, KSC_RIEUL, 0},
+ {KSC_SIOS, KSC_MIEUM, 0},
+ {KSC_SIOS_PIEUP, 0, 0},
+ {KSC_SIOS, KSC_PIEUP, KSC_KIYEOK},
+ {KSC_SIOS, KSC_SIOS, KSC_SIOS},
+ {KSC_SIOS, KSC_IEUNG, 0},
+ {KSC_SIOS_CIEUC, 0, 0},
+ {KSC_SIOS, KSC_CHIEUCH, 0},
+ {KSC_SIOS, KSC_KHIEUKH, 0},
+ {KSC_SIOS, KSC_THIEUTH, 0},
+ {KSC_SIOS, KSC_PHIEUPH, 0},
+ {KSC_SIOS, KSC_HIEUH, 0},
+ {KSC_CHITUEUMSIOS, 0, 0},
+ {KSC_CHITUEUMSIOS, KSC_CHITUEUMSIOS, 0},
+ {KSC_CEONGCHITUEUMSIOS, 0, 0},
+ {KSC_CEONGCHITUEUMSIOS, KSC_CEONGCHITUEUMSIOS, 0},
+ {KSC_PANSIOS, 0, 0},
+ {KSC_IEUNG, KSC_KIYEOK, 0},
+ {KSC_IEUNG, KSC_TIKEUT, 0},
+ {KSC_IEUNG, KSC_MIEUM, 0},
+ {KSC_IEUNG, KSC_PIEUP, 0},
+ {KSC_IEUNG, KSC_SIOS, 0},
+ {KSC_IEUNG_PANSIOS, 0, 0},
+ {KSC_SSANGIEUNG, 0, 0},
+ {KSC_IEUNG_CIEUC, 0, 0},
+ {KSC_IEUNG, KSC_CHIEUCH, 0},
+ {KSC_IEUNG, KSC_THIEUTH, 0},
+ {KSC_IEUNG, KSC_PHIEUPH, 0},
+ {KSC_YESIEUNG, 0, 0},
+ {KSC_CIEUC, KSC_IEUNG, 0},
+ {KSC_CHITUEUMCIEUC, 0, 0},
+ {KSC_CHITUEUMCIEUC, KSC_CHITUEUMCIEUC, 0},
+ {KSC_CEONGEUMCIEUC, 0, 0},
+ {KSC_CEONGEUMCIEUC, KSC_CEONGEUMCIEUC, 0},
+ {KSC_CHIEUCH, KSC_KHIEUKH, 0},
+ {KSC_CHIEUCH, KSC_HIEUH, 0},
+ {KSC_CHITUEUMCHIEUCH, 0, 0},
+ {KSC_CEONGEUMCHIEUCH, 0, 0},
+ {KSC_PHIEUPH, KSC_PIEUP, 0},
+ {KSC_KAPYEOUNPHIEUPH, 0, 0},
+ {KSC_SSANGHIEUH, 0, 0},
+ {KSC_YEORINHIEUH, 0, 0},
+ /* 0x115A ~ 0x115E -- reserved */
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ /* CHOSEONG FILLER */
+ {0, 0, 0},
+
+ /*
+ * JUNGSEONG
+ */
+ /*
+ * JUNGSEONG
+ */
+ {0, 0, 0}, /* JUNGSEONG FILL */
+ /* JUNGSEONG 0x1161 -- 0x1175 : matched to each ksc5601 Jamos extactly. */
+ {KSC_A, 0, 0},
+ {KSC_AE, 0, 0},
+ {KSC_YA, 0, 0},
+ {KSC_YAE, 0, 0},
+ {KSC_EO, 0, 0},
+ {KSC_E, 0, 0},
+ {KSC_YEO, 0, 0},
+ {KSC_YE, 0, 0},
+ {KSC_O, 0, 0},
+ {KSC_WA, 0, 0},
+ {KSC_WAE, 0, 0},
+ {KSC_OE, 0, 0},
+ {KSC_YO, 0, 0},
+ {KSC_U, 0, 0},
+ {KSC_WEO, 0, 0},
+ {KSC_WE, 0, 0},
+ {KSC_WI, 0, 0},
+ {KSC_YU, 0, 0},
+ {KSC_EU, 0, 0},
+ {KSC_YI, 0, 0},
+ {KSC_I, 0, 0},
+ /* Some of the following are representable as a glyph, the others not. */
+ {KSC_A, KSC_O, 0},
+ {KSC_A, KSC_U, 0},
+ {KSC_YA, KSC_O, 0},
+ {KSC_YA, KSC_YO, 0},
+ {KSC_EO, KSC_O, 0},
+ {KSC_EO, KSC_U, 0},
+ {KSC_EO, KSC_EU, 0},
+ {KSC_YEO, KSC_O, 0},
+ {KSC_YEO, KSC_U, 0},
+ {KSC_O, KSC_EO, 0},
+ {KSC_O, KSC_E, 0},
+ {KSC_O, KSC_YE, 0},
+ {KSC_O, KSC_O, 0},
+ {KSC_O, KSC_U, 0},
+ {KSC_YO_YA, 0, 0},
+ {KSC_YO_YAE, 0, 0},
+ {KSC_YO, KSC_YEO, 0},
+ {KSC_YO, KSC_O, 0},
+ {KSC_YO_I, 0, 0},
+ {KSC_U, KSC_A, 0},
+ {KSC_U, KSC_AE, 0},
+ {KSC_U, KSC_EO, KSC_EU},
+ {KSC_U, KSC_YE, 0},
+ {KSC_U, KSC_U, 0},
+ {KSC_YU, KSC_A, 0},
+ {KSC_YU, KSC_EO, 0},
+ {KSC_YU, KSC_E, 0},
+ {KSC_YU_YEO, 0, 0},
+ {KSC_YU_YE, 0, 0},
+ {KSC_YU, KSC_U, 0},
+ {KSC_YU_I, 0, 0},
+ {KSC_EU, KSC_U, 0},
+ {KSC_EU, KSC_EU, 0},
+ {KSC_YI, KSC_U, 0},
+ {KSC_I, KSC_A, 0},
+ {KSC_I, KSC_YA, 0},
+ {KSC_I, KSC_O, 0},
+ {KSC_I, KSC_U, 0},
+ {KSC_I, KSC_EU, 0},
+ {KSC_I, KSC_ARAEA, 0},
+ {KSC_ARAEA, 0, 0},
+ {KSC_ARAEA, KSC_EO, 0},
+ {KSC_ARAEA, KSC_U, 0},
+ {KSC_ARAEA, KSC_I, 0},
+ {KSC_ARAEA, KSC_ARAEA, 0},
+ /* 0x11A3 ~ 0x11A7 -- reserved */
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0}, /* (INTERNAL) JONGSEONG FILL */
+
+ /*
+ * JONGSEONG
+ */
+ {KSC_KIYEOK, 0, 0},
+ {KSC_SSANGKIYEOK, 0, 0},
+ {KSC_KIYEOK_SIOS, 0, 0},
+ {KSC_NIEUN, 0, 0},
+ {KSC_NIEUN_CIEUC, 0, 0},
+ {KSC_NIEUN_HIEUH, 0, 0},
+ {KSC_TIKEUT, 0, 0},
+ {KSC_RIEUL, 0, 0},
+ {KSC_RIEUL_KIYEOK, 0, 0},
+ {KSC_RIEUL_MIEUM, 0, 0},
+ {KSC_RIEUL_PIEUP, 0, 0},
+ {KSC_RIEUL_SIOS, 0, 0},
+ {KSC_RIEUL_TIKEUT, 0, 0},
+ {KSC_RIEUL_PHIEUPH, 0, 0},
+ {KSC_RIEUL_HIEUH, 0, 0},
+ {KSC_MIEUM, 0, 0},
+ {KSC_PIEUP, 0, 0},
+ {KSC_PIEUP_SIOS, 0, 0},
+ {KSC_SIOS, 0, 0},
+ {KSC_SSANGSIOS, 0, 0},
+ {KSC_IEUNG, 0, 0},
+ {KSC_CIEUC, 0, 0},
+ {KSC_CHIEUCH, 0, 0},
+ {KSC_KHIEUKH, 0, 0},
+ {KSC_THIEUTH, 0, 0},
+ {KSC_PHIEUPH, 0, 0},
+ {KSC_HIEUH, 0, 0},
+ {KSC_KIYEOK, KSC_RIEUL, 0},
+ {KSC_KIYEOK, KSC_SIOS, KSC_KIYEOK},
+ {KSC_NIEUN, KSC_KIYEOK, 0},
+ {KSC_NIEUN_TIKEUT, 0, 0},
+ {KSC_NIEUN_SIOS, 0, 0},
+ {KSC_NIEUN_PANSIOS, 0, 0},
+ {KSC_NIEUN, KSC_THIEUTH, 0},
+ {KSC_TIKEUT, KSC_KIYEOK, 0},
+ {KSC_TIKEUT, KSC_RIEUL, 0},
+ {KSC_RIEUL_KIYEOK_SIOS, 0, 0},
+ {KSC_RIEUL, KSC_NIEUN, 0},
+ {KSC_RIEUL_TIKEUT, 0, 0},
+ {KSC_RIEUL, KSC_TIKEUT, KSC_HIEUH},
+ {KSC_RIEUL, KSC_RIEUL, 0},
+ {KSC_RIEUL, KSC_MIEUM, KSC_KIYEOK},
+ {KSC_RIEUL, KSC_MIEUM, KSC_SIOS},
+ {KSC_RIEUL_PIEUP_SIOS, 0, 0},
+ {KSC_RIEUL, KSC_PHIEUPH, KSC_HIEUH},
+ {KSC_RIEUL, KSC_KAPYEOUNPIEUP, 0},
+ {KSC_RIEUL, KSC_SIOS, KSC_SIOS},
+ {KSC_RIEUL_PANSIOS, 0, 0},
+ {KSC_RIEUL, KSC_KHIEUKH, 0},
+ {KSC_RIEUL_YEORINHIEUH, 0, 0},
+ {KSC_MIEUM, KSC_KIYEOK, 0},
+ {KSC_MIEUM, KSC_RIEUL, 0},
+ {KSC_MIEUM_PIEUP, 0, 0},
+ {KSC_MIEUM_SIOS, 0, 0},
+ {KSC_MIEUM, KSC_SIOS, KSC_SIOS},
+ {KSC_MIEUM_PANSIOS, 0, 0},
+ {KSC_MIEUM, KSC_CHIEUCH, 0},
+ {KSC_MIEUM, KSC_HIEUH, 0},
+ {KSC_KAPYEOUNMIEUM, 0, 0},
+ {KSC_PIEUP, KSC_RIEUL, 0},
+ {KSC_PIEUP, KSC_PHIEUPH, 0},
+ {KSC_PIEUP, KSC_HIEUH, 0},
+ {KSC_KAPYEOUNPIEUP, 0, 0},
+ {KSC_SIOS_KIYEOK, 0, 0},
+ {KSC_SIOS_TIKEUT, 0, 0},
+ {KSC_SIOS, KSC_RIEUL, 0},
+ {KSC_SIOS_PIEUP, 0, 0},
+ {KSC_PANSIOS, 0, 0},
+ {KSC_IEUNG, KSC_KIYEOK, 0},
+ {KSC_IEUNG, KSC_KIYEOK, KSC_KIYEOK},
+ {KSC_SSANGIEUNG, 0, 0},
+ {KSC_IEUNG, KSC_KHIEUKH, 0},
+ {KSC_YESIEUNG, 0, 0},
+ {KSC_YESIEUNG, KSC_SIOS, 0},
+ {KSC_YESIEUNG, KSC_PANSIOS, 0},
+ {KSC_PHIEUPH, KSC_PIEUP, 0},
+ {KSC_KAPYEOUNPHIEUPH, 0, 0},
+ {KSC_HIEUH, KSC_NIEUN, 0},
+ {KSC_HIEUH, KSC_RIEUL, 0},
+ {KSC_HIEUH, KSC_MIEUM, 0},
+ {KSC_HIEUH, KSC_PIEUP, 0},
+ {KSC_YEORINHIEUH, 0, 0},
+ /* reserved */
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0},
+ {0, 0, 0}
+};
+
diff --git a/modules/tamil/Makefile.am b/modules/tamil/Makefile.am
new file mode 100644
index 00000000..476a14fa
--- /dev/null
+++ b/modules/tamil/Makefile.am
@@ -0,0 +1,10 @@
+## Process this file with automake to create Makefile.in.
+
+noinst_LTLIBRARIES = pango-tamil.la
+
+INCLUDES = -I$(top_srcdir)/libpango/
+
+pango_tamil_la_SOURCES = tamil.c taconv.c taconv.h tadefs.h
+pango_tamil_la_LDFLAGS = -rpath $(libdir) -export-dynamic -avoid-version -module
+
+EXTRA_DIST=
diff --git a/modules/tamil/taconv.c b/modules/tamil/taconv.c
new file mode 100644
index 00000000..85e15de6
--- /dev/null
+++ b/modules/tamil/taconv.c
@@ -0,0 +1,590 @@
+/* taconv.h
+ * Author: Sivaraj D (sivaraj@tamil.net)
+ * Date : 4-Jan-2000
+ */
+
+/* Warning: These routines are very inefficient.
+ */
+
+#include <stdio.h>
+#include "taconv.h"
+#include "tadefs.h"
+
+/* tsc_find_char: Search the string for given character,
+ * and return its position */
+int tsc_find_char(unsigned char *str, unsigned char c)
+{
+ int i=0;
+ while(str[i]) {
+ if (c==str[i])
+ return i;
+ i++;
+ }
+ return -1; /* character not found */
+}
+
+/* u_find_char: Search the string of integers for given unicode character
+ * and return its position */
+int u_find_char(unsigned int *str, unsigned int c)
+{
+ int i=0;
+ while(str[i]) {
+ if (c==str[i])
+ return i;
+ i++;
+ }
+ return -1; /* character not found */
+}
+
+int tsc2uni(unsigned char *tsc_str, unsigned int *uni_str,
+ int *num_tsc, int *num_uni,
+ int num_in_left, int num_out_left)
+{
+ int i = 0, pos;
+ unsigned char c1, c2, c3;
+
+ /* default is 1 char */
+ *num_tsc = 1;
+ *num_uni = 1;
+
+ if (num_in_left > 0)
+ c1 = tsc_str[0];
+ else
+ return TA_INSUF_IN;
+
+ if (num_in_left > 1)
+ c2 = tsc_str[1];
+ else
+ c2 = TA_NULL;
+
+ if (num_in_left > 2)
+ c3 = tsc_str[2];
+ else
+ c3 = TA_NULL;
+
+ if (num_out_left < 3)
+ return TA_INSUF_OUT; /* Need atleast 3 chars */
+
+ /* us-ascii characters */
+ if (c1 < 0x80) {
+ uni_str[i] = (int)c1;
+ return TA_SUCCESS;
+ }
+
+ /* direct one to one translation - uyirs, aaytham, quotes,
+ * copyright & numbers */
+ if((pos = tsc_find_char(tsc_uyir, c1)) >= 0 ) {
+ uni_str[i] = u_uyir[pos];
+ return TA_SUCCESS;
+ }
+
+ /* mey is always amey + puLLI in unicode */
+ if (is_tsc_mey(c1)) {
+ if (c1 == 0x8C) {
+ uni_str[i++] = 0x0B95;
+ uni_str[i++] = 0x0BCD;
+ }
+ pos = tsc_find_char(tsc_mey, c1);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_PULLI;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ }
+
+ /* ukaram = amey + umodi1 */
+ if ((c1 >= 0xCC && c1 <= 0xDB) ||
+ c1 == 0x99 || c1 == 0x9A ) {
+ pos = tsc_find_char(tsc_ukaram, c1);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_UMODI1;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ }
+
+ /* uukaram = amey + umodi2 */
+ if ((c1 >= 0xDC && c1 <= 0xEB) ||
+ c1 == 0x9B || c1 == 0x9C ) {
+ pos = tsc_find_char(tsc_uukaaram, c1);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_UMODI2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ }
+
+ /* TI */
+ if (c1 == TSC_TI) {
+ uni_str[i++] = 0x0B9F; /* TA */
+ uni_str[i] = U_KOKKI1;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ }
+
+ /* TII */
+ if (c1 == TSC_TI) {
+ uni_str[i++] = 0x0B9F; /* TA */
+ uni_str[i] = U_KOKKI2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ }
+
+ /* characters starting with akarameriya meys */
+ if (is_tsc_amey(c1)) {
+ if (c1 == 0x87) { /* KSHA = KA+puLLi+SHA in unicode */
+ uni_str[i++] = 0x0B95; /* KA */
+ uni_str[i++] = 0x0BCD; /* puLLi */
+ }
+ pos = tsc_find_char(tsc_amey, c1);
+ switch(c2) {
+ case TSC_KAAL:
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_KAAL;
+ *num_tsc = 2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ case TSC_KOKKI1:
+ pos = tsc_find_char(tsc_amey, c1);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_KOKKI1;
+ *num_tsc = 2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ case TSC_KOKKI2:
+ pos = tsc_find_char(tsc_amey, c1);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_KOKKI2;
+ *num_tsc = 2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ case TSC_UMODI1: /* ok, I know this is not correct */
+ pos = tsc_find_char(tsc_amey, c1);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_UMODI1;
+ *num_tsc = 2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ case TSC_UMODI2:
+ pos = tsc_find_char(tsc_amey, c1);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_UMODI2;
+ *num_tsc = 2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ default:
+ pos = tsc_find_char(tsc_amey, c1);
+ uni_str[i] = u_amey[pos];
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ }
+ }
+
+ /* ekaram, okaram & aukaaram */
+ if (c1 == TSC_KOMBU1) {
+ if (((c2 >= 0xB8 && c2 <= 0xC9) ||
+ (c2 >= 0x93 && c2 <= 0x96)) &&
+ num_in_left > 2) {
+ pos = tsc_find_char(tsc_amey, c2);
+ switch(c3) {
+ case TSC_KAAL:
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_OMODI1;
+ *num_tsc = 3;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ case TSC_AUMODI:
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_AUMODI;
+ *num_tsc = 3;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ default: /* it is ekaram */
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_KOMBU1;
+ *num_tsc = 2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ } /* switch */
+ } /* c2 */
+ else {
+ /* if the sequence is illegal, handle it gracefully */
+ uni_str[i++] = U_ZWSP; /* zero width space */
+ uni_str[i] = U_KOMBU1;
+ *num_uni = i+1;
+ return TA_ILL_SEQ;
+ } /* c2 */
+ } /* c1 */
+
+
+ /* eekaaram, ookaaram */
+ if (c1 == TSC_KOMBU2) {
+ if ((c2 >= 0xB8 && c2 <= 0xC9) ||
+ (c2 >= 0x93 && c2 <= 0x96)) {
+ switch(c3) {
+ case TSC_KAAL:
+ pos = tsc_find_char(tsc_amey, c2);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_OMODI2;
+ *num_tsc = 3;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ default: /* it is eekaaram */
+ pos = tsc_find_char(tsc_amey, c2);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_KOMBU2;
+ *num_tsc = 2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ } /* switch */
+ } /* c2 */
+ else {
+ /* if the sequence is illegal, handle it gracefully */
+ uni_str[i++] = U_ZWSP; /* zero width space */
+ uni_str[i] = U_KOMBU2;
+ *num_uni = i+1;
+ return TA_ILL_SEQ;
+ } /* c2 */
+ } /* c1 */
+
+ /* aikaaram */
+ if (c1 == TSC_AIMODI) {
+ if ((c2 >= 0xB8 && c2 <= 0xC9) ||
+ (c2 >= 0x93 && c2 <= 0x96)) {
+ pos = tsc_find_char(tsc_amey, c2);
+ uni_str[i++] = u_amey[pos];
+ uni_str[i] = U_AIMODI;
+ *num_tsc = 2;
+ *num_uni = i+1;
+ return TA_SUCCESS;
+ } /* c2 */
+ else {
+ /* if the sequence is illegal, handle it gracefully */
+ uni_str[i++] = U_ZWSP; /* zero width space */
+ uni_str[i] = U_AIMODI;
+ *num_uni = i+1;
+ return TA_ILL_SEQ;
+ } /* c2 */
+ } /* c1 */
+
+ /* It is illegal in the language for the modifiers to appear alone.
+ * However in practice, they might appear alone, for example, when
+ * teaching the language. We will precede those with a zero width
+ * space to avoid combining them improperly */
+ if (c1 == TSC_KAAL || c1 == TSC_AUMODI ||
+ c1 == TSC_KOKKI1 || c1 == TSC_KOKKI2 ||
+ c1 == TSC_UMODI1 || c1 == TSC_UMODI2 ) {
+ pos = tsc_find_char(tsc_modi, c1);
+ uni_str[i++] = U_ZWSP;
+ uni_str[i] = u_modi[pos];
+ *num_uni = i+1;
+ return TA_ILL_SEQ;
+ }
+
+ /* These two characters were undefined in TSCII */
+ if (c1 == 0xFE || c1 == 0xFF ) {
+ uni_str[i++] = U_ZWSP;
+ return TA_NOT_DEFINED;
+ }
+
+ /* For everything else, display a space */
+ uni_str[i++] = U_SPACE;
+ return TA_ILL_SEQ;
+}
+
+
+int uni2tsc(unsigned int *uni_str, unsigned char *tsc_str,
+ int *num_uni, int *num_tsc,
+ int num_in_left, int num_out_left)
+{
+ int i = 0, pos;
+ unsigned int c1, c2, c3;
+
+ /* default is 1 char */
+ *num_uni = 1;
+ *num_tsc = 1;
+
+ if (num_in_left > 0)
+ c1 = uni_str[0];
+ else
+ return TA_INSUF_IN;
+
+ if (num_in_left > 1)
+ c2 = uni_str[1];
+ else
+ c2 = TA_NULL;
+
+ if (num_in_left > 2)
+ c3 = uni_str[2];
+ else
+ c3 = TA_NULL;
+
+ if (num_out_left < 3)
+ return TA_INSUF_OUT; /* Need atleast three chars */
+
+ if (c1 < 0x80) {
+ tsc_str[i] = (char)c1;
+ return TA_SUCCESS;
+ }
+
+ if (c1 < 0x0B80 || c1 > 0x0BFF) {
+ tsc_str[i] = SPACE;
+ return TA_OUT_OF_RANGE;
+ }
+
+ if (c1 < 0x0B82)
+ return TA_ILL_SEQ;
+
+ if (c1 == 0x0B82) {
+ tsc_str[i] = SPACE;
+ return TA_SUCCESS; /* Don't know any TAMIL SIGN ANUSVARA */
+ }
+
+ /* uyir, aaytham & numbers */
+ if ((c1 >= 0x0B83 && c1 <= 0x0B94) ||
+ (c1 >= 0x0BE7 && c1 <= 0x0BF2)) {
+ if ((pos = u_find_char(u_uyir, c1)) < 0) {
+ tsc_str[i] = SPACE;
+ return TA_NOT_DEFINED;
+ }
+ tsc_str[i] = tsc_uyir[pos];
+ return TA_SUCCESS;
+ }
+
+ /* akarameriya mey */
+ if (c1 >= 0x0B95 && c1 <= 0x0BB9) {
+ if ((pos = u_find_char(u_amey, c1)) < 0) {
+ tsc_str[i] = SPACE;
+ return TA_NOT_DEFINED;
+ }
+ switch(c2) {
+ case U_PULLI:
+ tsc_str[i] = tsc_mey[pos];
+ *num_uni = 2;
+ return TA_SUCCESS;
+ case U_KAAL:
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_KAAL;
+ *num_tsc = 2;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ case U_KOKKI1:
+ /* TI & TII case */
+ if (c1 == 0x0B9f) {
+ tsc_str[i] = TSC_TI;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ }
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_KOKKI1;
+ *num_tsc = 2;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ case U_KOKKI2:
+ /* TI & TII case */
+ if (c1 == 0x0B9f) {
+ tsc_str[i] = TSC_TII;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ }
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_KOKKI2;
+ *num_tsc = 2;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ case U_UMODI1:
+ /* If it is a grantha add a hook, otherwise
+ * we have separate chars in TSCII */
+ if (u_find_char(u_grantha, c1) < 0) {
+ tsc_str[i] = tsc_ukaram[pos];
+ *num_uni = 2;
+ return TA_SUCCESS;
+ }
+ else {
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_UMODI1;
+ *num_tsc = 2;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ }
+ case U_UMODI2:
+ if (u_find_char(u_grantha, c1) < 0) {
+ tsc_str[i] = tsc_uukaaram[pos];
+ *num_uni = 2;
+ return TA_SUCCESS;
+ }
+ else {
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_UMODI2;
+ *num_tsc = 2;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ }
+ case U_KOMBU1:
+ /* Unicode seems to allow double modifiers for
+ * okaram, ookaaram & aukaaram. This is
+ * somewhat unnecessary. But we will handle
+ * that condition too.
+ */
+ switch(c3) {
+ case U_KAAL:
+ tsc_str[i++] = TSC_KOMBU1;
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_KAAL;
+ *num_tsc = 3;
+ *num_uni = 3;
+ return TA_SUCCESS;
+ case U_AUMARK:
+ tsc_str[i++] = TSC_KOMBU1;
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_AUMODI;
+ *num_tsc = 3;
+ *num_uni = 3;
+ return TA_SUCCESS;
+ default:
+ tsc_str[i++] = TSC_KOMBU1;
+ tsc_str[i] = tsc_amey[pos];
+ *num_tsc = 2;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ }
+ case U_KOMBU2:
+ if (c3 == U_KAAL) {
+ tsc_str[i++] = TSC_KOMBU2;
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_KAAL;
+ *num_tsc = 3;
+ *num_uni = 3;
+ return TA_SUCCESS;
+ }
+ else {
+ tsc_str[i++] = TSC_KOMBU2;
+ tsc_str[i] = tsc_amey[pos];
+ *num_tsc = 2;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ }
+ case U_AIMODI:
+ tsc_str[i++] = TSC_AIMODI;
+ tsc_str[i] = tsc_amey[pos];
+ *num_tsc = 2;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ case U_OMODI1:
+ tsc_str[i++] = TSC_KOMBU1;
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_KAAL;
+ *num_tsc = 3;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ case U_OMODI2:
+ tsc_str[i++] = TSC_KOMBU2;
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_KAAL;
+ *num_tsc = 3;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ case U_AUMODI:
+ tsc_str[i++] = TSC_KOMBU1;
+ tsc_str[i++] = tsc_amey[pos];
+ tsc_str[i] = TSC_AUMODI;
+ *num_tsc = 3;
+ *num_uni = 2;
+ return TA_SUCCESS;
+ default:
+ tsc_str[i] = tsc_amey[pos];
+ return TA_SUCCESS;
+ }
+ }
+
+ /* modifiers - illegal sequence */
+ if (c1 >= 0x0BBE && c1 <= 0x0BD7) {
+ if ((pos = u_find_char(u_modi, c1)) < 0) {
+ tsc_str[i] = SPACE;
+ return TA_NOT_DEFINED;
+ }
+ tsc_str[i] = tsc_modi[pos];
+ return TA_ILL_SEQ;
+ }
+ tsc_str[i] = SPACE;
+ return TA_NOT_DEFINED;
+}
+
+int is_tsc_uyir(unsigned char c)
+{
+ if (c >= 0xAB && c <= 0xB7)
+ return TA_TRUE;
+ else
+ return TA_FALSE;
+
+}
+
+int is_tsc_modi(unsigned char c)
+{
+ if ((c >= 0xA1 && c <= 0xA8) ||
+ c == 0xAA )
+ return TA_TRUE;
+ else
+ return TA_FALSE;
+}
+
+int is_tsc_amey(unsigned char c)
+{
+ if ((c >= 0x83 && c <= 0x87) ||
+ (c >= 0xB8 && c <= 0xC9))
+ return TA_TRUE;
+ else
+ return TA_FALSE;
+}
+
+int is_tsc_mey(unsigned char c)
+{
+ if ((c >= 0x88 && c <= 0x8C) ||
+ (c >= 0xEC && c <= 0xFD))
+ return TA_TRUE;
+ else
+ return TA_FALSE;
+}
+
+int is_tsc_number(unsigned char c)
+{
+ if ( c >= 0x81 ||
+ (c >= 0x8D && c <= 0x90) ||
+ (c >= 0x95 && c <= 0x98) ||
+ (c >= 0x9D && c <= 0x9F))
+ return TA_TRUE;
+ else
+ return TA_FALSE;
+}
+
+int is_uni_uyir(unsigned int c)
+{
+ if ((c >= 0x0B85 && c <= 0x0B8A) ||
+ (c >= 0x0B8E && c <= 0x0B90) ||
+ (c >= 0x0B92 && c <= 0x0B94) ||
+ (c == 0x0B83))
+ return TA_TRUE;
+ else
+ return TA_FALSE;
+}
+
+int is_uni_amey(unsigned int c)
+{
+ if (u_find_char(u_amey, c) < 0)
+ return TA_FALSE;
+ else
+ return TA_TRUE;
+}
+
+int is_uni_modi(unsigned int c)
+{
+ if (u_find_char(u_modi, c) < 0)
+ return TA_FALSE;
+ else
+ return TA_TRUE;
+}
+
+int is_uni_numb(unsigned int c)
+{
+ if ((c >= 0x0BE7 && c <= 0x0BF2))
+ return TA_FALSE;
+ else
+ return TA_TRUE;
+}
diff --git a/modules/tamil/taconv.h b/modules/tamil/taconv.h
new file mode 100644
index 00000000..dad44078
--- /dev/null
+++ b/modules/tamil/taconv.h
@@ -0,0 +1,55 @@
+/* taconv.h:
+ * Author: Sivaraj D (sivaraj@tamil.net)
+ * Date : 4-Jan-2000
+ */
+
+/* Return codes */
+#define TA_SUCCESS 0
+#define TA_ILL_SEQ 1 /* Sequence is illegal in language */
+#define TA_INSUF_IN 2
+#define TA_INSUF_OUT 3 /* Need atleast three chars */
+#define TA_OUT_OF_RANGE 4 /* Char outside 0x00-0x7f or 0xb80-0xbff */
+#define TA_NOT_DEFINED 5 /* Within 0xb80-0xbff but not defined
+ * by unicode*/
+
+#define TA_NULL 0x00
+#define TA_TRUE 1
+#define TA_FALSE 0
+
+/* tsc2uni: Get the first TSCII Tamil character in tsc_str and convert it to
+ * corresponding unicode character in uni_str.
+ * tsc_str: TSCII string (in)
+ * uni_str: Unicode string (out)
+ * num_tsc: Number of TSCII characters processed (out)
+ * num_uni: Number of Unicode characters returned (out)
+ * num_in_left: Number of characters left in input buffer (in)
+ * num_out_left: Number of characters left in output buffer (in)
+ */
+int tsc2uni(unsigned char *tsc_str, unsigned int *uni_str,
+ int *num_tsc, int *num_uni,
+ int num_in_left, int num_out_left);
+
+/* uni2tsc: Get the first Unicode character in uni_str and convert it to
+ * corresponding TSCII Tamil character in tsc_str.
+ * uni_str: Unicode string (out)
+ * tsc_str: TSCII string (in)
+ * num_uni: Number of Unicode characters returned (out)
+ * num_tsc: Number of TSCII characters processed (out)
+ * num_in_left: Number of characters left in input buffer (in)
+ * num_out_left: Number of characters left in output buffer (in)
+ */
+int uni2tsc(unsigned int *uni_str, unsigned char *tsc_str,
+ int *num_uni, int *num_tsc,
+ int num_in_left, int num_out_left);
+
+int is_tsc_uyir(unsigned char c); /* Returns 1 if c is a vowel, else 0 */
+int is_tsc_modi(unsigned char c); /* Returns 1 if c is a modifier */
+int is_tsc_amey(unsigned char c); /* Returns 1 if c is a akara mey */
+int is_tsc_mey(unsigned char c); /* Returns 1 if c is a consonant */
+int is_tsc_number(unsigned char c); /* Returns 1 if c is a number */
+
+int is_uni_uyir(unsigned int c); /* Returns 1 if c is a vowel, else 0 */
+int is_uni_modi(unsigned int c); /* Returns 1 if c is a modifier */
+int is_uni_amey(unsigned int c); /* Returns 1 if c is a akara mey */
+int is_uni_numb(unsigned int c); /* Returns 1 if c is a number */
+
diff --git a/modules/tamil/tadefs.h b/modules/tamil/tadefs.h
new file mode 100644
index 00000000..5e587471
--- /dev/null
+++ b/modules/tamil/tadefs.h
@@ -0,0 +1,132 @@
+/* Author: Sivaraj D (sivaraj@tamil.net)
+ * Date : 4-Jan-2000
+ */
+
+/* Defining Unicode unsigned characters */
+
+unsigned int
+u_uyir[] = { 0x0B85, 0x0B86, 0x0B87, 0x0B88,
+ 0x0B89, 0x0B8A, 0x0B8E, 0x0B8F,
+ 0x0B90, 0x0B92, 0x0B93, 0x0B94,
+ 0x0B83, 0x00A9,
+ 0x2018, 0x2019, 0x201c, 0x201D,
+ 0x0BE7, 0x0BE8, 0x0BE9, 0x0BEA,
+ 0x0BEB, 0x0BEC, 0x0BED, 0x0BEE,
+ 0x0BEF, 0x0BF0, 0x0BF1, 0x0BF2,
+ 0x0000 };
+
+/* akaramEriya mey */
+unsigned int
+u_amey[] = { 0x0B95, 0x0B99, 0x0B9A, 0x0B9E,
+ 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8,
+ 0x0BAA, 0x0BAE, 0x0BAF, 0x0BB0,
+ 0x0BB2, 0x0BB5, 0x0BB4, 0x0BB3,
+ 0x0BB1, 0x0BA9, 0x0B9C, 0x0BB7,
+ 0x0BB8, 0x0BB9, 0x0000 };
+
+unsigned int
+u_modi[] = { 0x0BBE, 0x0BBF, 0x0BC0, 0x0BC1,
+ 0x0BC2, 0x0BC6, 0x0BC7, 0x0BC8,
+ 0x0BCA, 0x0BCB, 0x0BCC, 0x0BCD,
+ 0x0BD7, 0x0000 };
+
+unsigned int
+u_grantha[] = { 0x0B9C, 0x0BB7, 0x0BB8, 0x0BB9,
+ 0x0000 };
+
+#define U_KAAL 0x0BBE
+#define U_KOKKI1 0x0BBF
+#define U_KOKKI2 0x0BC0
+#define U_UMODI1 0x0BC1
+#define U_UMODI2 0x0BC2
+#define U_KOMBU1 0x0BC6
+#define U_KOMBU2 0x0BC7
+#define U_AIMODI 0x0BC8
+#define U_OMODI1 0x0BCA
+#define U_OMODI2 0x0BCB
+#define U_AUMODI 0x0BCC
+#define U_AUMARK 0x0BD7
+#define U_PULLI 0x0BCD
+
+#define U_SPACE 0x0020
+#define U_ZWSP 0x200B
+#define U_LSQUOT 0x2018
+#define U_RSQUOT 0x2019
+#define U_LDQUOT 0x201C
+#define U_RDQUOT 0x201D
+
+/* Defining TSCII unsigned characters - we define only those unsigned characters
+ * that are useful in Unicode */
+
+#define SPACE 0x20
+
+/* Vowel modifiers */
+#define TSC_KAAL 0xA1
+#define TSC_KOKKI1 0xA2
+#define TSC_KOKKI2 0xA3
+#define TSC_UMODI1 0xA4
+#define TSC_UMODI2 0xA5
+#define TSC_KOMBU1 0xA6
+#define TSC_KOMBU2 0xA7
+#define TSC_AIMODI 0xA8
+#define TSC_AUMODI 0xAA
+
+unsigned char
+tsc_modi[] = { 0xA1, 0xA2, 0xA3, 0xA4,
+ 0xA5, 0xA6, 0xA7, 0xA8,
+ 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xAA, 0x00 };
+
+/* all uyirs & aaytham: these convert directly to unicode */
+unsigned char
+tsc_uyir[] = { 0xAB, 0xAC, 0xAD, 0xAE, /* a, aa, i, ii */
+ 0xAF, 0xB0, 0xB1, 0xB2, /* u, uu, e, ee */
+ 0xB3, 0xB4, 0xB5, 0xB6, /* ai, o, oo, au */
+ 0xB7, 0xA9, /* aaytham, copyright*/
+ 0x91, 0x92, 0x93, 0x94, /* quotes */
+ 0x81, 0x8D, 0x8E, 0x8F,
+ 0x90, 0x95, 0x96, 0x97,
+ 0x98, 0x9D, 0x9E, 0x9F,
+ 0x00 };
+
+/* all mey */
+unsigned char
+tsc_mey[] = { 0xEC, 0xED, 0xEE, 0xEF,
+ 0xF0, 0xF1, 0xF2, 0xF3,
+ 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB,
+ 0xFC, 0xFD, 0x88, 0x89,
+ 0x8A, 0x8B, 0x00 };
+
+/* akaramEriya mey */
+unsigned char
+tsc_amey[] = { 0xB8, 0xB9, 0xBA, 0xBB,
+ 0xBC, 0xBD, 0xBE, 0xBF,
+ 0xC0, 0xC1, 0xC2, 0xC3,
+ 0xC4, 0xC5, 0xC6, 0xC7,
+ 0xC8, 0xC9, 0x83, 0x84,
+ 0x85, 0x86, 0x00 };
+
+
+/* ikaram, iikaaram for T */
+#define TSC_TI 0xCA
+#define TSC_TII 0xCB
+
+/* ukaram, uukaaram & grantha ameys*/
+unsigned char
+tsc_ukaram[] = { 0xCC, 0x99, 0xCD, 0x9A,
+ 0xCE, 0xCF, 0xD0, 0xD1,
+ 0xD2, 0xD3, 0xD4, 0xD5,
+ 0xD6, 0xD7, 0xD8, 0xD9,
+ 0xDA, 0xDB, 0x00 };
+
+unsigned char
+tsc_uukaaram[] = { 0xDC, 0x9B, 0xDD, 0x9C,
+ 0xDE, 0xDF, 0xE0, 0xE1,
+ 0xE2, 0xE3, 0xE4, 0xE5,
+ 0xE6, 0xE7, 0xE8, 0xE9,
+ 0xEA, 0xEB, 0x00 };
+
+unsigned char
+tsc_grantha[] = { 0x83, 0x84, 0x85, 0x86, 0x00 };
+
diff --git a/modules/tamil/tamil-x.c b/modules/tamil/tamil-x.c
new file mode 100644
index 00000000..934bd216
--- /dev/null
+++ b/modules/tamil/tamil-x.c
@@ -0,0 +1,226 @@
+/* Pango - Tamil module
+ * tamil.c:
+ *
+ * Copyright (C) 2000 Sivaraj D
+ *
+ */
+
+#include <stdio.h>
+#include <glib.h>
+#include "pango.h"
+#include "pangox.h"
+#include "utils.h"
+#include "taconv.h"
+
+#define MEMBERS(strct) sizeof(strct) / sizeof(strct[1])
+
+static PangoEngineRange tamil_range[] = {
+ { 0x0b80, 0x0bff, "*" },
+};
+
+static PangoEngineInfo script_engines[] = {
+ {
+ "TamilScriptEngineLang",
+ PANGO_ENGINE_TYPE_LANG,
+ PANGO_RENDER_TYPE_NONE,
+ tamil_range, MEMBERS(tamil_range)
+ },
+ {
+ "TamilScriptEngineX",
+ PANGO_ENGINE_TYPE_SHAPE,
+ PANGO_RENDER_TYPE_X,
+ tamil_range, MEMBERS(tamil_range)
+ }
+};
+
+static gint n_script_engines = MEMBERS (script_engines);
+
+/*
+ * Language script engine
+ */
+
+static void
+tamil_engine_break (gchar *text,
+ gint len,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs)
+{
+/* Most of the code comes from pango_break
+ * only difference is char stop based on modifiers
+ */
+
+ gchar *cur = text;
+ gchar *next;
+ gint i = 0;
+ GUChar4 wc;
+
+ while (*cur)
+ {
+ if (!_pango_utf8_iterate (cur, &next, &wc))
+ return;
+ if (cur == next)
+ break;
+ if ((next - text) > len)
+ break;
+ cur = next;
+
+ attrs[i].is_white = (wc == ' ' || wc == '\t' || wc == 'n') ? 1 : 0;
+ attrs[i].is_break = (i > 0 && attrs[i-1].is_white) || attrs[i].is_white;
+ attrs[i].is_char_stop = (is_uni_modi(wc)) ? 0 : 1;
+ attrs[i].is_word_stop = (i == 0) || attrs[i-1].is_white;
+
+ i++;
+ }
+}
+
+static PangoEngine *
+tamil_engine_lang_new ()
+{
+ PangoEngineLang *result;
+
+ result = g_new (PangoEngineLang, 1);
+
+ result->engine.id = "TamilScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_break = tamil_engine_break;
+
+ return (PangoEngine *)result;
+}
+
+/*
+ * X window system script engine portion
+ */
+
+/* We will need some type of kerning support for use with ikaram/iikaaram.
+ * But we can live with this for time being
+ */
+static void
+set_glyph (PangoGlyphString *glyphs, gint i, PangoCFont *cfont, PangoGlyphIndex glyph)
+{
+ gint width;
+
+ glyphs->glyphs[i].font = cfont;
+ glyphs->glyphs[i].glyph = glyph;
+
+ glyphs->geometry[i].x_offset = 0;
+ glyphs->geometry[i].y_offset = 0;
+
+ glyphs->log_clusters[i] = i;
+
+ pango_x_glyph_extents (&glyphs->glyphs[i],
+ NULL, NULL, &width, NULL, NULL, NULL, NULL);
+ glyphs->geometry[i].width = width * 72;
+}
+
+static void
+tamil_engine_shape (PangoFont *font,
+ gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs)
+{
+ int n_chars, n_glyph;
+ int i, j;
+ char *p, *next;
+ GUChar4 *wc, *uni_str;
+ int res;
+ unsigned char tsc_str[6];
+ int ntsc, nuni;
+
+ PangoCFont *tscii_font = NULL;
+
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (text != NULL);
+ g_return_if_fail (length >= 0);
+ g_return_if_fail (analysis != NULL);
+
+ tscii_font = pango_x_find_cfont (font, "tscii-0");
+ pango_cfont_ref (tscii_font);
+
+ n_chars = _pango_utf8_len (text, length);
+
+ /* temporarily set the size to 3 times the number of unicode chars */
+ pango_glyph_string_set_size (glyphs, n_chars * 3);
+ wc = (GUChar4 *)g_malloc(sizeof(GUChar4)*n_chars);
+
+ p = text;
+ for (i=0; i < n_chars; i++)
+ {
+ _pango_utf8_iterate (p, &next, &wc[i]);
+ p = next;
+ }
+
+ n_glyph = 0;
+ uni_str = wc;
+
+ j = 0;
+ while (j < n_chars)
+ {
+ res = uni2tsc(uni_str, tsc_str, &nuni, &ntsc, n_chars - j, 6);
+
+ uni_str = uni_str + nuni;
+ /* We need to differentiate between different return codes later */
+ if (res != TA_SUCCESS)
+ {
+ set_glyph (glyphs, n_glyph, tscii_font, ' ');
+ n_glyph++;
+ j = j + nuni;
+ continue;
+ }
+ for (i = 0; i < ntsc; i++)
+ {
+ set_glyph (glyphs, n_glyph, tscii_font, (PangoGlyphIndex) tsc_str[i]);
+ n_glyph++;
+ }
+ j = j + nuni;
+ }
+
+ pango_glyph_string_set_size (glyphs, n_glyph);
+
+ if (tscii_font)
+ pango_cfont_unref (tscii_font);
+ g_free(wc);
+}
+
+static PangoEngine *
+tamil_engine_x_new ()
+{
+ PangoEngineShape *result;
+
+ result = g_new (PangoEngineShape, 1);
+
+ result->engine.id = "TamilScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_shape = tamil_engine_shape;
+
+ return (PangoEngine *)result;
+}
+
+/* The following three functions provide the public module API for
+ * Pango
+ */
+void
+script_engine_list (PangoEngineInfo **engines, gint *n_engines)
+{
+ *engines = script_engines;
+ *n_engines = n_script_engines;
+}
+
+PangoEngine *
+script_engine_load (const char *id)
+{
+ if (!strcmp (id, "TamilScriptEngineLang"))
+ return tamil_engine_lang_new ();
+ else if (!strcmp (id, "TamilScriptEngineX"))
+ return tamil_engine_x_new ();
+ else
+ return NULL;
+}
+
+void
+script_engine_unload (PangoEngine *engine)
+{
+}
+
diff --git a/modules/tamil/tamil.c b/modules/tamil/tamil.c
new file mode 100644
index 00000000..934bd216
--- /dev/null
+++ b/modules/tamil/tamil.c
@@ -0,0 +1,226 @@
+/* Pango - Tamil module
+ * tamil.c:
+ *
+ * Copyright (C) 2000 Sivaraj D
+ *
+ */
+
+#include <stdio.h>
+#include <glib.h>
+#include "pango.h"
+#include "pangox.h"
+#include "utils.h"
+#include "taconv.h"
+
+#define MEMBERS(strct) sizeof(strct) / sizeof(strct[1])
+
+static PangoEngineRange tamil_range[] = {
+ { 0x0b80, 0x0bff, "*" },
+};
+
+static PangoEngineInfo script_engines[] = {
+ {
+ "TamilScriptEngineLang",
+ PANGO_ENGINE_TYPE_LANG,
+ PANGO_RENDER_TYPE_NONE,
+ tamil_range, MEMBERS(tamil_range)
+ },
+ {
+ "TamilScriptEngineX",
+ PANGO_ENGINE_TYPE_SHAPE,
+ PANGO_RENDER_TYPE_X,
+ tamil_range, MEMBERS(tamil_range)
+ }
+};
+
+static gint n_script_engines = MEMBERS (script_engines);
+
+/*
+ * Language script engine
+ */
+
+static void
+tamil_engine_break (gchar *text,
+ gint len,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs)
+{
+/* Most of the code comes from pango_break
+ * only difference is char stop based on modifiers
+ */
+
+ gchar *cur = text;
+ gchar *next;
+ gint i = 0;
+ GUChar4 wc;
+
+ while (*cur)
+ {
+ if (!_pango_utf8_iterate (cur, &next, &wc))
+ return;
+ if (cur == next)
+ break;
+ if ((next - text) > len)
+ break;
+ cur = next;
+
+ attrs[i].is_white = (wc == ' ' || wc == '\t' || wc == 'n') ? 1 : 0;
+ attrs[i].is_break = (i > 0 && attrs[i-1].is_white) || attrs[i].is_white;
+ attrs[i].is_char_stop = (is_uni_modi(wc)) ? 0 : 1;
+ attrs[i].is_word_stop = (i == 0) || attrs[i-1].is_white;
+
+ i++;
+ }
+}
+
+static PangoEngine *
+tamil_engine_lang_new ()
+{
+ PangoEngineLang *result;
+
+ result = g_new (PangoEngineLang, 1);
+
+ result->engine.id = "TamilScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_break = tamil_engine_break;
+
+ return (PangoEngine *)result;
+}
+
+/*
+ * X window system script engine portion
+ */
+
+/* We will need some type of kerning support for use with ikaram/iikaaram.
+ * But we can live with this for time being
+ */
+static void
+set_glyph (PangoGlyphString *glyphs, gint i, PangoCFont *cfont, PangoGlyphIndex glyph)
+{
+ gint width;
+
+ glyphs->glyphs[i].font = cfont;
+ glyphs->glyphs[i].glyph = glyph;
+
+ glyphs->geometry[i].x_offset = 0;
+ glyphs->geometry[i].y_offset = 0;
+
+ glyphs->log_clusters[i] = i;
+
+ pango_x_glyph_extents (&glyphs->glyphs[i],
+ NULL, NULL, &width, NULL, NULL, NULL, NULL);
+ glyphs->geometry[i].width = width * 72;
+}
+
+static void
+tamil_engine_shape (PangoFont *font,
+ gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs)
+{
+ int n_chars, n_glyph;
+ int i, j;
+ char *p, *next;
+ GUChar4 *wc, *uni_str;
+ int res;
+ unsigned char tsc_str[6];
+ int ntsc, nuni;
+
+ PangoCFont *tscii_font = NULL;
+
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (text != NULL);
+ g_return_if_fail (length >= 0);
+ g_return_if_fail (analysis != NULL);
+
+ tscii_font = pango_x_find_cfont (font, "tscii-0");
+ pango_cfont_ref (tscii_font);
+
+ n_chars = _pango_utf8_len (text, length);
+
+ /* temporarily set the size to 3 times the number of unicode chars */
+ pango_glyph_string_set_size (glyphs, n_chars * 3);
+ wc = (GUChar4 *)g_malloc(sizeof(GUChar4)*n_chars);
+
+ p = text;
+ for (i=0; i < n_chars; i++)
+ {
+ _pango_utf8_iterate (p, &next, &wc[i]);
+ p = next;
+ }
+
+ n_glyph = 0;
+ uni_str = wc;
+
+ j = 0;
+ while (j < n_chars)
+ {
+ res = uni2tsc(uni_str, tsc_str, &nuni, &ntsc, n_chars - j, 6);
+
+ uni_str = uni_str + nuni;
+ /* We need to differentiate between different return codes later */
+ if (res != TA_SUCCESS)
+ {
+ set_glyph (glyphs, n_glyph, tscii_font, ' ');
+ n_glyph++;
+ j = j + nuni;
+ continue;
+ }
+ for (i = 0; i < ntsc; i++)
+ {
+ set_glyph (glyphs, n_glyph, tscii_font, (PangoGlyphIndex) tsc_str[i]);
+ n_glyph++;
+ }
+ j = j + nuni;
+ }
+
+ pango_glyph_string_set_size (glyphs, n_glyph);
+
+ if (tscii_font)
+ pango_cfont_unref (tscii_font);
+ g_free(wc);
+}
+
+static PangoEngine *
+tamil_engine_x_new ()
+{
+ PangoEngineShape *result;
+
+ result = g_new (PangoEngineShape, 1);
+
+ result->engine.id = "TamilScriptEngine";
+ result->engine.type = PANGO_ENGINE_TYPE_LANG;
+ result->engine.length = sizeof (result);
+ result->script_shape = tamil_engine_shape;
+
+ return (PangoEngine *)result;
+}
+
+/* The following three functions provide the public module API for
+ * Pango
+ */
+void
+script_engine_list (PangoEngineInfo **engines, gint *n_engines)
+{
+ *engines = script_engines;
+ *n_engines = n_script_engines;
+}
+
+PangoEngine *
+script_engine_load (const char *id)
+{
+ if (!strcmp (id, "TamilScriptEngineLang"))
+ return tamil_engine_lang_new ();
+ else if (!strcmp (id, "TamilScriptEngineX"))
+ return tamil_engine_x_new ();
+ else
+ return NULL;
+}
+
+void
+script_engine_unload (PangoEngine *engine)
+{
+}
+
diff --git a/pango/.cvsignore b/pango/.cvsignore
new file mode 100644
index 00000000..417f2d5d
--- /dev/null
+++ b/pango/.cvsignore
@@ -0,0 +1,5 @@
+*.lo
+*.la
+.deps
+.libs
+gscript-querymodules
diff --git a/pango/Makefile.am b/pango/Makefile.am
new file mode 100644
index 00000000..e134358b
--- /dev/null
+++ b/pango/Makefile.am
@@ -0,0 +1,31 @@
+## Process this file with automake to create Makefile.in.
+
+lib_LTLIBRARIES = libpango.la
+bin_PROGRAMS = pango-querymodules
+
+libpango_la_SOURCES = \
+ break.c \
+ fonts.c \
+ glyphstring.c \
+ pangox.c \
+ itemize.c \
+ mapping.c \
+ modules.c \
+ modules.h \
+ reorder-items.c \
+ shape.c \
+ utils.c \
+ utils.h
+
+# We use the -release flag for now until the API settles
+# down at which point we'll either use the GTK+ versioning
+# scheme or the standard libtool scheme.
+#
+libpango_la_LDFLAGS = -release $(VERSION)
+
+include_HEADERS = pango.h pangox.h
+
+pango_querymodules_SOURCES = \
+ querymodules.c
+pango_querymodules_LDADD = libpango.la $(GTK_LIBS) -lfribidi $(UNICODE_LIBS)
+
diff --git a/pango/break.c b/pango/break.c
new file mode 100644
index 00000000..997635b3
--- /dev/null
+++ b/pango/break.c
@@ -0,0 +1,66 @@
+/* Pango
+ * break.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <pango.h>
+#include <unicode.h>
+#include "utils.h"
+
+/**
+ * pango_break:
+ * @text: the text to process
+ * @length: the length (in bytes) of @text
+ * @analysis: #PangoAnalysis structure from PangoItemize
+ * @attrs: an array to store character information in
+ *
+ * Determines possible line, word, and character breaks
+ * for a string of Unicode text.
+ */
+void pango_break (gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs)
+{
+ /* Pseudo-implementation */
+
+ gchar *cur = text;
+ gchar *next;
+ gint i = 0;
+ GUChar4 wc;
+
+ while (*cur)
+ {
+ next = unicode_get_utf8 (cur, &wc);
+ if (!next)
+ return; /* FIXME: ERROR */
+ if (cur == next)
+ break;
+ if ((next - text) > length)
+ break;
+ cur = next;
+
+ attrs[i].is_white = (wc == ' ' || wc == '\t' || wc == '\n') ? 1 : 0;
+ attrs[i].is_break = (i > 0 && attrs[i-1].is_white) || attrs[i].is_white;
+ attrs[i].is_char_stop = 1;
+ attrs[i].is_word_stop = (i == 0) || attrs[i-1].is_white;
+
+ i++;
+ }
+}
diff --git a/pango/fonts.c b/pango/fonts.c
new file mode 100644
index 00000000..473d3936
--- /dev/null
+++ b/pango/fonts.c
@@ -0,0 +1,167 @@
+/* Pango
+ * fonts.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "pango.h"
+
+/**
+ * pango_font_init:
+ * @font: a #PangoFont
+ *
+ * Initialize a #PangoFont structure. This should
+ * only be called from the "new" routine of code which
+ * is implementing a "subclass" of #PangoFont
+ */
+void
+pango_font_init (PangoFont *font)
+{
+ g_return_if_fail (font != NULL);
+
+ g_datalist_init (&font->data);
+ font->ref_count = 1;
+}
+
+/**
+ * pango_font_ref:
+ * @font: a #PangoFont
+ *
+ * Increase the reference count of a #PangoFont.
+ */
+void
+pango_font_ref (PangoFont *font)
+{
+ g_return_if_fail (font != NULL);
+
+ font->ref_count++;
+}
+
+
+/**
+ * pango_font_unref:
+ * @font: a #PangoFont
+ *
+ * Decrease the reference count of a #PangoFont.
+ * if the result is zero, destroy the font
+ * and free the associated memory.
+ */
+void
+pango_font_unref (PangoFont *font)
+{
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (font->ref_count > 0);
+
+ font->ref_count--;
+ if (font->ref_count == 0)
+ {
+ g_datalist_clear (&font->data);
+ font->klass->destroy (font);
+ }
+}
+
+/**
+ * pango_font_set_data:
+ * @font: a #PangoCFont
+ * @key: a string identifying the type of user data.
+ * @data: the data to store. If %NULL, the current
+ * data for the key will be removed.
+ * @destroy_func: a function to call when the data is no
+ * longer stored, either because the font has
+ * been destroyed, or because the data has
+ * been replaced. This can be %NULL, in which
+ * case no function will be called.
+ *
+ * Associate user data, tagged with a string id, with a particular
+ * font.
+ */
+void
+pango_font_set_data (PangoFont *font,
+ gchar *key,
+ gpointer data,
+ GDestroyNotify destroy_func)
+{
+ g_datalist_set_data_full (&font->data, key, data, destroy_func);
+}
+
+/**
+ * pango_font_get_data:
+ * @font: a #PangoCFont
+ * @key: a string identifying the type of user data.
+ *
+ * Look up user data tagged with a particular key.
+ *
+ * Returns the data, or NULL if that key does not exist.
+ */
+gpointer
+pango_font_get_data (PangoFont *font,
+ gchar *key)
+{
+ return g_datalist_get_data (&font->data, key);
+}
+
+/**
+ * pango_cfont_init:
+ * @font: a #PangoCFont
+ *
+ * Initialize a #PangoCFont structure. This should
+ * only be called from the "new" routine of code which
+ * is implementing a "subclass" of #PangoCFont
+ */
+void
+pango_cfont_init (PangoCFont *font)
+{
+ g_return_if_fail (font != NULL);
+
+ font->ref_count = 1;
+}
+
+/**
+ * pango_cfont_ref:
+ * @font: a #PangoCFont
+ *
+ * Increase the reference count of a #GScripCFont.
+ */
+void
+pango_cfont_ref (PangoCFont *font)
+{
+ g_return_if_fail (font != NULL);
+
+ font->ref_count++;
+}
+
+/**
+ * pango_cfont_unref:
+ * @font: a #PangoCFont
+ *
+ * Decrease the reference count of a #PangoXFont.
+ * if the result is zero, destroy the font component
+ * and free the associated memory.
+ */
+void
+pango_cfont_unref (PangoCFont *font)
+{
+ g_return_if_fail (font != NULL);
+ g_return_if_fail (font->ref_count > 0);
+
+ font->ref_count--;
+ if (font->ref_count == 0)
+ font->klass->destroy (font);
+}
+
+
diff --git a/pango/glyphstring.c b/pango/glyphstring.c
new file mode 100644
index 00000000..d965ceb8
--- /dev/null
+++ b/pango/glyphstring.c
@@ -0,0 +1,106 @@
+/* Pango
+ * glyphstring.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <glib.h>
+#include <pango.h>
+
+/**
+ * pango_glyph_string_new:
+ *
+ * Create a new PangoGlyphString.
+ *
+ * Returns the new PangoGlyphString
+ */
+PangoGlyphString *
+pango_glyph_string_new (void)
+{
+ PangoGlyphString *string = g_new (PangoGlyphString, 1);
+
+ string->num_glyphs = 0;
+ string->space = 0;
+ string->glyphs = NULL;
+ string->geometry = NULL;
+ string->attrs = NULL;
+ string->log_clusters = NULL;
+
+ return string;
+}
+
+/**
+ * pango_glyph_string_set_size:
+ * @string: a PangoGlyphString.
+ * @new_len: the new length of the string.
+ *
+ * Resize a glyph string to the given length.
+ */
+void
+pango_glyph_string_set_size (PangoGlyphString *string, gint new_len)
+{
+ g_return_if_fail (new_len >= 0);
+
+ while (new_len > string->space)
+ {
+ if (string->space == 0)
+ string->space = 1;
+ else
+ string->space *= 2;
+
+ if (string->space < 0)
+ string->space = G_MAXINT;
+ }
+
+ string->glyphs = g_realloc (string->glyphs, string->space * sizeof (PangoGlyph));
+ string->geometry = g_realloc (string->geometry, string->space * sizeof (PangoGlyphGeometry));
+ string->attrs = g_realloc (string->attrs, string->space * sizeof (PangoGlyphVisAttr));
+ string->log_clusters = g_realloc (string->log_clusters, string->space * sizeof (gint));
+ string->num_glyphs = new_len;
+}
+
+/**
+ * pango_glyph_string_free:
+ * @string: a PangoGlyphString.
+ *
+ * Free a glyph string and associated storage.
+ */
+void
+pango_glyph_string_free (PangoGlyphString *string)
+{
+ int i;
+ PangoCFont *last_cfont = NULL;
+
+ for (i=0; i<string->num_glyphs; i++)
+ {
+ if (last_cfont && string->glyphs[i].font != last_cfont)
+ {
+ pango_cfont_unref (last_cfont);
+ last_cfont = string->glyphs[i].font;
+ }
+ }
+
+ if (last_cfont)
+ pango_cfont_unref (last_cfont);
+
+ g_free (string->glyphs);
+ g_free (string->geometry);
+ g_free (string->attrs);
+ g_free (string->log_clusters);
+ g_free (string);
+}
diff --git a/pango/gunicode.h b/pango/gunicode.h
new file mode 100644
index 00000000..6d089880
--- /dev/null
+++ b/pango/gunicode.h
@@ -0,0 +1,21 @@
+/* Pango
+ * gunicode.h:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
diff --git a/pango/itemize.c b/pango/itemize.c
new file mode 100644
index 00000000..bc7c9bd8
--- /dev/null
+++ b/pango/itemize.c
@@ -0,0 +1,234 @@
+/* Pango
+ * itemize.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <fribidi/fribidi.h>
+#include <unicode.h>
+#include "pango.h"
+#include "iconv.h"
+#include "utils.h"
+#include "modules.h"
+
+static void add_engines (PangoContext *context,
+ gchar *text,
+ gint length,
+ PangoLangRange *lang_info,
+ gint n_langs,
+ gboolean force_exact,
+ PangoEngineInfo **shape_engines,
+ PangoEngineInfo **lang_engines);
+
+/**
+ * pango_itemize:
+ * @context: a structure holding information that affects
+ the itemization process.
+ * @text: the text to itemize.
+ * @length: the number of bytes (not characters) in text.
+ * This must be >= 0.
+ * @lang_info: an array of language tagging information.
+ * @n_langs: the number of elements in @lang_info.
+ *
+ * Breaks a piece of text into segments with consistent
+ * directional level and shaping engine.
+ *
+ * Returns a GList of PangoItem structures.
+ */
+GList *
+pango_itemize (PangoContext *context,
+ gchar *text,
+ gint length,
+ PangoLangRange *lang_info,
+ gint n_langs)
+{
+ guint16 *text_ucs2;
+ gint n_chars;
+ guint8 *embedding_levels;
+ FriBidiCharType base_dir;
+ gint i;
+ PangoItem *item;
+ char *p, *next;
+ GList *result = NULL;
+
+ PangoEngineInfo **shape_engines;
+ PangoEngineInfo **lang_engines;
+
+ g_return_val_if_fail (context != NULL, NULL);
+ g_return_val_if_fail (text != NULL, NULL);
+ g_return_val_if_fail (length >= 0, NULL);
+
+
+ if (context->direction == PANGO_DIRECTION_RTL)
+ base_dir = FRIBIDI_TYPE_RTL;
+ else
+ base_dir = FRIBIDI_TYPE_LTR;
+
+ if (length == 0)
+ return NULL;
+
+ /* First, apply the bidirectional algorithm to break
+ * the text into directional runs.
+ */
+ text_ucs2 = _pango_utf8_to_ucs2 (text, length);
+ if (!text_ucs2)
+ return NULL;
+
+ n_chars = unicode_strlen (text, length);
+ embedding_levels = g_new (guint8, n_chars);
+
+ /* Storing these as ranges would be a lot more efficient,
+ * but also more complicated... we take the simple
+ * approach for now.
+ */
+ shape_engines = g_new0 (PangoEngineInfo *, n_chars);
+ lang_engines = g_new0 (PangoEngineInfo *, n_chars);
+
+ fribidi_log2vis_get_embedding_levels (text_ucs2, n_chars, &base_dir,
+ embedding_levels);
+
+ /* Now, make shaping-engine affilitations for characters in
+ * each run that have high-affinity. This means that there
+ * is a shaping engine specific to the current
+ * language/character pair.
+ */
+
+ add_engines (context, text, length, lang_info, n_langs,
+ TRUE, shape_engines, lang_engines);
+
+ /* Fill in low-affinity shaping-engine affiliations for
+ * remainder of characters.
+ */
+
+ add_engines (context, text, length, lang_info, n_langs,
+ FALSE, shape_engines, lang_engines);
+
+ /* Make a GList of PangoItems out of the above results
+ */
+
+ item = NULL;
+ p = text;
+ for (i=0; i<n_chars; i++)
+ {
+ next = unicode_next_utf8 (p);
+
+ if (i == 0 ||
+ embedding_levels[i] != embedding_levels[i-1] ||
+ shape_engines[i] != shape_engines[i-1] ||
+ lang_engines[i] != lang_engines[i-1])
+ {
+ if (item)
+ result = g_list_prepend (result, item);
+ item = g_new (PangoItem, 1);
+ item->offset = p - text;
+ item->num_chars = 0;
+ item->analysis.level = embedding_levels[i];
+
+ if (shape_engines[i])
+ item->analysis.shape_engine = (PangoEngineShape *)_pango_load_engine (shape_engines[i]->id);
+ else
+ item->analysis.shape_engine = NULL;
+
+ if (lang_engines[i])
+ item->analysis.lang_engine = (PangoEngineLang *)_pango_load_engine (lang_engines[i]->id);
+ else
+ item->analysis.lang_engine = NULL;
+ }
+
+ item->length = (next - text) - item->offset;
+ item->num_chars++;
+ p = next;
+ }
+
+ if (item)
+ result = g_list_prepend (result, item);
+
+ g_free (text_ucs2);
+
+ return g_list_reverse (result);
+}
+
+static void
+add_engines (PangoContext *context,
+ gchar *text,
+ gint length,
+ PangoLangRange *lang_info,
+ gint n_langs,
+ gboolean force_exact,
+ PangoEngineInfo **shape_engines,
+ PangoEngineInfo **lang_engines)
+{
+ char *pos;
+ char *last_lang = NULL;
+ gint n_chars;
+ PangoMap *shape_map = NULL;
+ PangoMap *lang_map = NULL;
+ GUChar4 wc;
+ int i, j;
+
+ n_chars = unicode_strlen (text, length);
+
+ pos = text;
+ last_lang = NULL;
+ for (i=0, j=0; i<n_chars; i++)
+ {
+ char *lang;
+ PangoSubmap *submap;
+ PangoMapEntry *entry;
+
+ while (j < n_langs && lang_info[j].start < pos - text)
+ j++;
+
+ if (j < n_langs && (pos - text) < lang_info[j].start + lang_info[j].length)
+ lang = lang_info[j].lang;
+ else
+ lang = context->lang;
+
+ if (last_lang != lang ||
+ last_lang == 0 || lang == 0 ||
+ strcmp (lang, last_lang) != 0)
+ {
+ lang_map = _pango_find_map (lang, PANGO_ENGINE_TYPE_LANG,
+ PANGO_RENDER_TYPE_NONE);
+ shape_map = _pango_find_map (lang, PANGO_ENGINE_TYPE_SHAPE,
+ context->render_type);
+ last_lang = lang;
+ }
+
+ pos = unicode_get_utf8 (pos, &wc);
+
+ if (!lang_engines[i])
+ {
+ submap = &lang_map->submaps[wc / 256];
+ entry = submap->is_leaf ? &submap->d.entry : &submap->d.leaves[wc % 256];
+
+ if (entry->info && (!force_exact || entry->is_exact))
+ lang_engines[i] = entry->info;
+ }
+
+ if (!shape_engines[i])
+ {
+ submap = &shape_map->submaps[wc / 256];
+ entry = submap->is_leaf ? &submap->d.entry : &submap->d.leaves[wc % 256];
+
+ if (entry->info && (!force_exact || entry->is_exact))
+ shape_engines[i] = entry->info;
+ }
+ }
+}
+
diff --git a/pango/mapping.c b/pango/mapping.c
new file mode 100644
index 00000000..bd0cb3de
--- /dev/null
+++ b/pango/mapping.c
@@ -0,0 +1,275 @@
+/* Pango
+ * itemize.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* The initial implementation here is script independent,
+ * but it might actually need to be virtualized into the
+ * rendering modules. Otherwise, we probably will end up
+ * enforcing unnatural cursor behavior for some languages.
+ *
+ * The only distinction that Uniscript makes is whether
+ * cursor positioning is allowed within clusters or not.
+ */
+
+#include <pango.h>
+#include <unicode.h>
+
+/**
+ * pango_cp_to_x:
+ * @text: the text for the run
+ * @length: the number of bytes (not characters) in @text.
+ * @analysis: the analysis information return from pango_itemize()
+ * @glyphs: the glyphs return from pango_shape()
+ * @char_pos: the character position
+ * @trailing: whether we should compute the result for the beginning
+ * or end of the character (or cluster - the decision
+ * for which may be script dependent).
+ * @x_pos: location to store result
+ *
+ * Converts from character position to x position. (X position
+ * is measured from the left edge of the run)
+ */
+
+void
+pango_cp_to_x (gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs,
+ gint char_pos,
+ gboolean trailing,
+ gint *x_pos)
+{
+ gint i;
+ gint start_xpos = 0;
+ gint end_xpos = 0;
+ gint width = 0;
+
+ gint start_char = -1;
+ gint end_char = -1;
+
+ g_return_if_fail (glyphs != NULL);
+ g_return_if_fail (length >= 0);
+ g_return_if_fail (length == 0 || text != NULL);
+
+ if (!x_pos) /* Allow the user to do the useless */
+ return;
+
+ if (glyphs->num_glyphs == 0)
+ {
+ *x_pos = 0;
+ return;
+ }
+
+ /* Calculate the starting and ending character positions
+ * and x positions for the cluster
+ */
+ if (analysis->level % 2) /* Right to left */
+ {
+ for (i = glyphs->num_glyphs - 1; i >= 0; i--)
+ width += glyphs->geometry[i].width;
+
+ for (i = glyphs->num_glyphs - 1; i >= 0; i--)
+ {
+ if (glyphs->log_clusters[i] > char_pos)
+ {
+ end_char = glyphs->log_clusters[i];
+ end_xpos = width;
+ break;
+ }
+
+ if (start_char == -1 || glyphs->log_clusters[i] != start_char)
+ {
+ start_char = glyphs->log_clusters[i];
+ start_xpos = width;
+ }
+
+ width -= glyphs->geometry[i].width;
+ }
+ }
+ else /* Left to right */
+ {
+ for (i = 0; i < glyphs->num_glyphs; i++)
+ {
+ if (glyphs->log_clusters[i] > char_pos)
+ {
+ end_char = glyphs->log_clusters[i];
+ end_xpos = width;
+ break;
+ }
+
+ if (start_char == -1 || glyphs->log_clusters[i] != start_char)
+ {
+ start_char = glyphs->log_clusters[i];
+ start_xpos = width;
+ }
+
+ width += glyphs->geometry[i].width;
+ }
+ }
+
+ /* We need the character index of one past the end of the
+ * string, and so we have to recalculate the entire length
+ * of the string...
+ */
+ if (end_char == -1)
+ {
+ end_char = unicode_strlen (text, length);
+ end_xpos = (analysis->level % 2) ? 0 : width;
+ }
+
+ /* Now interpolate the result. For South Asian languages
+ * we actually shouldn't iterpolate
+ */
+
+ if (trailing)
+ char_pos += 1;
+
+ *x_pos = (((double)(end_char - char_pos)) * start_xpos +
+ ((double)(char_pos - start_char)) * end_xpos) /
+ (end_char - start_char);
+}
+
+/**
+ * pango_x_to_cp:
+ * @text: the text for the run
+ * @length: the number of bytes (not characters) in text.
+ * @analysis: the analysis information return from pango_itemize()
+ * @glyphs: the glyphs return from pango_shape()
+ * @x_pos: location to store the returned x character position
+ * @char_pos: location to store calculated character position.
+ * @trailing: location to store a integer indicating where
+ * in the cluster the user clicked. If the script
+ * allows positioning within the cluster, it is either
+ * 0 or 1; otherwise it is either 0 or the number
+ * of characters in the cluster. In either case
+ * 0 represents the trailing edge of the cluster.
+ *
+ * Converts from x position to x character. (X position
+ * is measured from the left edge of the run)
+ */
+void
+pango_x_to_cp (gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs,
+ gint x_pos,
+ gint *char_pos,
+ gint *trailing)
+{
+ gint i;
+ gint start_xpos = 0;
+ gint end_xpos = 0;
+ gint width = 0;
+
+ gint start_char = -1;
+ gint end_char = -1;
+
+ gboolean found = FALSE;
+
+ /* Find the cluster containing the position */
+
+ width = 0;
+
+ if (analysis->level % 2) /* Right to left */
+ {
+ for (i = glyphs->num_glyphs - 1; i >= 0; i--)
+ width += glyphs->geometry[i].width;
+
+ for (i = glyphs->num_glyphs - 1; i >= 0; i--)
+ {
+ if (start_char == -1 || glyphs->log_clusters[i] != start_char)
+ {
+ if (found)
+ {
+ end_char = glyphs->log_clusters[i];
+ end_xpos = width;
+ break;
+ }
+ else
+ {
+ start_char = glyphs->log_clusters[i];
+ start_xpos = width;
+ }
+ }
+
+ width -= glyphs->geometry[i].width;
+
+ if (width <= x_pos && x_pos < width + glyphs->geometry[i].width)
+ found = TRUE;
+ }
+ }
+ else /* Left to right */
+ {
+ for (i = 0; i < glyphs->num_glyphs; i++)
+ {
+ if (start_char == -1 || glyphs->log_clusters[i] != start_char)
+ {
+ if (found)
+ {
+ end_char = glyphs->log_clusters[i];
+ end_xpos = width;
+ break;
+ }
+ else
+ {
+ start_char = glyphs->log_clusters[i];
+ start_xpos = width;
+ }
+ }
+
+ if (width <= x_pos && x_pos < width + glyphs->geometry[i].width)
+ found = TRUE;
+
+ width += glyphs->geometry[i].width;
+ }
+ }
+
+ /* We need the character index of one past the end of the
+ * string, and so we have to recalculate the entire length
+ * of the string...
+ */
+ if (end_char == -1)
+ {
+ end_char = unicode_strlen (text, length);
+ end_xpos = (analysis->level % 2) ? 0 : width;
+ }
+
+ if (start_xpos == end_xpos)
+ {
+ if (char_pos)
+ *char_pos = start_char;
+ if (trailing)
+ trailing = 0;
+ }
+ else
+ {
+ double cp = (((double)(end_xpos - x_pos)) * start_char +
+ ((double)(x_pos - start_xpos)) * end_char) /
+ (end_xpos - start_xpos);
+
+ if (char_pos)
+ *char_pos = (int)cp;
+ if (trailing)
+ *trailing = (cp - (int)cp) > 0.5 ? 1 : 0;
+ }
+}
+
+
+
diff --git a/pango/modules.c b/pango/modules.c
new file mode 100644
index 00000000..0016df1f
--- /dev/null
+++ b/pango/modules.c
@@ -0,0 +1,409 @@
+/* Pango
+ * modules.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <gmodule.h>
+#include <pango.h>
+
+#include "modules.h"
+#include "utils.h"
+
+typedef struct _PangoMapInfo PangoMapInfo;
+typedef struct _PangoEnginePair PangoEnginePair;
+
+struct _PangoMapInfo
+{
+ gchar *lang;
+ gchar *engine_type;
+ gchar *render_type;
+};
+
+struct _PangoEnginePair
+{
+ gchar *module;
+ PangoEngineInfo info;
+};
+
+GList *engines;
+
+static PangoMap *build_map (PangoMapInfo *info);
+static void read_modules (void);
+static guint map_info_hash (const PangoMapInfo *map);
+static gboolean map_info_equal (const PangoMapInfo *map_a,
+ const PangoMapInfo *map_b);
+
+PangoMap *
+_pango_find_map (gchar *lang,
+ gchar *engine_type,
+ gchar *render_type)
+{
+ PangoMapInfo map_info;
+ PangoMap *map;
+
+ static GHashTable *map_hash = NULL;
+
+ if (!map_hash)
+ map_hash = g_hash_table_new ((GHashFunc)map_info_hash,
+ (GCompareFunc)map_info_equal);
+
+ map_info.lang = lang;
+ map_info.engine_type = engine_type;
+ map_info.render_type = render_type;
+
+ map = g_hash_table_lookup (map_hash, &map_info);
+ if (!map)
+ {
+ PangoMapInfo *new_info = g_new (PangoMapInfo, 1);
+ *new_info = map_info;
+
+ map = build_map (new_info);
+ g_hash_table_insert (map_hash, new_info, map);
+ }
+
+ return map;
+}
+
+PangoEngine *
+_pango_load_engine (gchar *id)
+{
+ GList *tmp_list;
+
+ read_modules();
+
+ tmp_list = engines;
+ while (tmp_list)
+ {
+ PangoEnginePair *pair = tmp_list->data;
+ tmp_list = tmp_list->next;
+
+ if (!strcmp (pair->info.id, id))
+ {
+ GModule *module;
+ PangoEngine *(*load) (const gchar *id);
+ PangoEngine *engine;
+
+ module = g_module_open (pair->module, 0);
+ if (!module)
+ {
+ fprintf(stderr, "Cannot load module %s: %s\n",
+ pair->module, g_module_error());
+ return NULL;
+ }
+
+ g_module_symbol (module, "script_engine_load", (gpointer)&load);
+ if (!load)
+ {
+ fprintf(stderr, "cannot retrieve script_engine_load from %s: %s\n",
+ pair->module, g_module_error());
+ g_module_close (module);
+ return NULL;
+ }
+
+ engine = (*load) (id);
+
+ return engine;
+ }
+ }
+
+ return NULL;
+}
+
+
+static guint
+map_info_hash (const PangoMapInfo *map)
+{
+ return g_str_hash (map->lang) |
+ g_str_hash (map->engine_type) |
+ g_str_hash (map->render_type);
+}
+
+static gboolean
+map_info_equal (const PangoMapInfo *map_a, const PangoMapInfo *map_b)
+{
+ return (strcmp (map_a->lang, map_b->lang) == 0 &&
+ strcmp (map_a->engine_type, map_b->engine_type) == 0 &&
+ strcmp (map_a->render_type, map_b->render_type) == 0);
+}
+
+static char *
+readline(FILE *file)
+{
+ static GString *bufstring = NULL;
+ int c;
+
+ if (!bufstring)
+ bufstring = g_string_new (NULL);
+ else
+ g_string_truncate (bufstring, 0);
+
+ while ((c = getc(file)) != EOF)
+ {
+ g_string_append_c (bufstring, c);
+ if (c == '\n')
+ break;
+ }
+
+ if (bufstring->len == 0)
+ return NULL;
+ else
+ return g_strdup (bufstring->str);
+}
+
+static char *
+my_strdupn (char *p, gint n)
+{
+ gchar *result;
+
+ if (n == 0)
+ return NULL;
+
+ result = g_malloc (n + 1);
+ strncpy (result, p, n);
+ result[n] = '\0';
+
+ return result;
+}
+
+static void
+read_modules (void)
+{
+ FILE *module_file;
+ static gboolean init = FALSE;
+ char *line;
+
+ if (init)
+ return;
+ else
+ init = TRUE;
+
+ module_file = fopen ("pango.modules", "r");
+ if (!module_file)
+ {
+ fprintf(stderr, "Cannot load module file!\n");
+ return; /* FIXME: Error */
+ }
+
+ engines = NULL;
+ while ((line = readline (module_file)))
+ {
+ PangoEnginePair *pair = g_new (PangoEnginePair, 1);
+ PangoEngineRange *range;
+ GList *ranges;
+ GList *tmp_list;
+ char *p, *q;
+ int i;
+ int start;
+ int end;
+
+ p = line;
+ q = line;
+ ranges = NULL;
+
+ /* Break line into words on whitespace */
+ i = 0;
+ while (1)
+ {
+ if (!*p || isspace(*p))
+ {
+ switch (i)
+ {
+ case 0:
+ pair->module = my_strdupn (q, p-q);
+ break;
+ case 1:
+ pair->info.id = my_strdupn (q, p-q);
+ break;
+ case 2:
+ pair->info.engine_type = my_strdupn (q, p-q);
+ break;
+ case 3:
+ pair->info.render_type = my_strdupn (q, p-q);
+ break;
+ default:
+ range = g_new (PangoEngineRange, 1);
+ if (sscanf(q, "%d-%d:", &start, &end) != 2)
+ {
+ fprintf(stderr, "Error reading pango.modules");
+ return;
+ }
+ q = strchr (q, ':');
+ if (!q)
+ {
+ fprintf(stderr, "Error reading pango.modules");
+ return;
+ }
+ q++;
+ range->start = start;
+ range->end = end;
+ range->langs = my_strdupn (q, p-q);
+
+ ranges = g_list_prepend (ranges, range);
+ }
+
+ i++;
+
+ do
+ p++;
+ while (*p && isspace(*p));
+
+ if (!*p)
+ break;
+
+ q = p;
+ }
+ else
+ p++;
+ }
+
+ if (i<3)
+ {
+ fprintf(stderr, "Error reading pango.modules");
+ return;
+ }
+
+ ranges = g_list_reverse (ranges);
+ pair->info.n_ranges = g_list_length (ranges);
+ pair->info.ranges = g_new (PangoEngineRange, pair->info.n_ranges);
+
+ tmp_list = ranges;
+ for (i=0; i<pair->info.n_ranges; i++)
+ {
+ pair->info.ranges[i] = *(PangoEngineRange *)tmp_list->data;
+ tmp_list = tmp_list->next;
+ }
+
+ g_list_foreach (ranges, (GFunc)g_free, NULL);
+ g_list_free (ranges);
+ g_free (line);
+
+ engines = g_list_prepend (engines, pair);
+ }
+ engines = g_list_reverse (engines);
+}
+
+static void
+set_entry (PangoMapEntry *entry, gboolean is_exact, PangoEngineInfo *info)
+{
+ if ((is_exact && !entry->is_exact) ||
+ !entry->info)
+ {
+ entry->is_exact = is_exact;
+ entry->info = info;
+ }
+}
+
+static PangoMap *
+build_map (PangoMapInfo *info)
+{
+ GList *tmp_list;
+ int i, j;
+ PangoMap *map;
+
+ read_modules();
+
+ map = g_new (PangoMap, 1);
+ for (i=0; i<256; i++)
+ {
+ map->submaps[i].is_leaf = TRUE;
+ map->submaps[i].d.entry.info = NULL;
+ map->submaps[i].d.entry.is_exact = FALSE;
+ }
+
+ tmp_list = engines;
+ while (tmp_list)
+ {
+ PangoEnginePair *pair = tmp_list->data;
+ tmp_list = tmp_list->next;
+
+ if (strcmp (pair->info.engine_type, info->engine_type) == 0 &&
+ strcmp (pair->info.render_type, info->render_type) == 0)
+ {
+ int submap;
+
+ for (i=0; i<pair->info.n_ranges; i++)
+ {
+ gchar **langs;
+ gboolean is_exact = FALSE;
+
+ if (pair->info.ranges[i].langs)
+ {
+ langs = g_strsplit (pair->info.ranges[i].langs, ";", -1);
+ for (j=0; langs[j]; j++)
+ if (strcmp (langs[j], "*") == 0 ||
+ strcmp (langs[j], info->lang) == 0)
+ {
+ is_exact = TRUE;
+ break;
+ }
+ g_strfreev (langs);
+ }
+
+ for (submap = pair->info.ranges[i].start / 256;
+ submap <= pair->info.ranges[i].end / 256;
+ submap ++)
+ {
+ GUChar4 start;
+ GUChar4 end;
+
+ if (submap == pair->info.ranges[i].start / 256)
+ start = pair->info.ranges[i].start % 256;
+ else
+ start = 0;
+
+ if (submap == pair->info.ranges[i].end / 256)
+ end = pair->info.ranges[i].end % 256;
+ else
+ end = 255;
+
+ if (map->submaps[submap].is_leaf &&
+ start == 0 && end == 255)
+ {
+ set_entry (&map->submaps[submap].d.entry,
+ is_exact, &pair->info);
+ }
+ else
+ {
+ if (map->submaps[submap].is_leaf)
+ {
+ map->submaps[submap].is_leaf = FALSE;
+ map->submaps[submap].d.leaves = g_new (PangoMapEntry, 256);
+ for (j=0; j<256; j++)
+ {
+ map->submaps[submap].d.leaves[j].info = NULL;
+ map->submaps[submap].d.leaves[j].is_exact = FALSE;
+ }
+ }
+
+ for (j=start; j<=end; j++)
+ set_entry (&map->submaps[submap].d.leaves[j],
+ is_exact, &pair->info);
+
+ }
+ }
+ }
+ }
+ }
+
+ return map;
+}
diff --git a/pango/modules.h b/pango/modules.h
new file mode 100644
index 00000000..14617461
--- /dev/null
+++ b/pango/modules.h
@@ -0,0 +1,55 @@
+/* Pango
+ * modules.h:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __MODULES_H__
+#define __MODULES_H__
+
+typedef struct _PangoMap PangoMap;
+typedef struct _PangoSubmap PangoSubmap;
+typedef struct _PangoMapEntry PangoMapEntry;
+
+struct _PangoMapEntry
+{
+ PangoEngineInfo *info;
+ gboolean is_exact;
+};
+
+struct _PangoSubmap
+{
+ gboolean is_leaf;
+ union {
+ PangoMapEntry entry;
+ PangoMapEntry *leaves;
+ } d;
+};
+
+struct _PangoMap
+{
+ gint n_submaps;
+ PangoSubmap submaps[256];
+};
+
+PangoMap *_pango_find_map (gchar *lang,
+ gchar *engine_type,
+ gchar *render_type);
+PangoEngine *_pango_load_engine (gchar *id);
+
+#endif /* __MODULES_H__ */
diff --git a/pango/pango.h b/pango/pango.h
new file mode 100644
index 00000000..0b375a96
--- /dev/null
+++ b/pango/pango.h
@@ -0,0 +1,339 @@
+/* Pango
+ * pango.h:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* The API here is based fairly closely on Microsoft's Uniscript
+ * API. Differences here:
+ *
+ * - Memory management is more convenient (Pango handles
+ * all buffer reallocation)
+ * - Unicode strings are represented in UTF-8
+ * - Representation of fonts and glyphs is abstracted to be
+ * rendering-system dependent.
+ */
+
+#ifndef __PANGO_H__
+#define __PANGO_H__
+
+#include <glib.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+typedef struct _PangoAnalysis PangoAnalysis;
+typedef struct _PangoItem PangoItem;
+typedef struct _PangoContext PangoContext;
+typedef struct _PangoLangRange PangoLangRange;
+typedef struct _PangoLogAttr PangoLogAttr;
+
+typedef struct _PangoFont PangoFont;
+typedef struct _PangoFontClass PangoFontClass;
+typedef struct _PangoCFont PangoCFont;
+typedef struct _PangoCFontClass PangoCFontClass;
+
+typedef struct _PangoGlyph PangoGlyph;
+typedef struct _PangoGlyphGeometry PangoGlyphGeometry;
+typedef struct _PangoGlyphVisAttr PangoGlyphVisAttr;
+typedef struct _PangoGlyphString PangoGlyphString;
+
+typedef struct _PangoEngineInfo PangoEngineInfo;
+typedef struct _PangoEngineRange PangoEngineRange;
+typedef struct _PangoEngine PangoEngine;
+typedef struct _PangoEngineLang PangoEngineLang;
+typedef struct _PangoEngineShape PangoEngineShape;
+
+/* 64'ths of a point - 1/4608 in, 5.51 * 10^-5 in. */
+typedef guint32 PangoGlyphUnit;
+
+/* Information about a segment of text with a consistent
+ * shaping/language engine and bidirectional level
+ */
+struct _PangoAnalysis {
+ PangoEngineShape *shape_engine;
+ PangoEngineLang *lang_engine;
+ guint8 level;
+};
+
+struct _PangoItem {
+ gint offset;
+ gint length;
+ gint num_chars;
+ PangoAnalysis analysis;
+};
+
+/* Sort of like a GC - application set information about how
+ * to handle scripts
+ */
+
+typedef enum {
+ PANGO_DIRECTION_LTR,
+ PANGO_DIRECTION_RTL,
+ PANGO_DIRECTION_TTB
+} PangoDirection;
+
+struct _PangoContext {
+ gchar *lang;
+ gchar *render_type;
+ PangoDirection direction;
+};
+
+/* Language tagging information
+ */
+struct _PangoLangRange
+{
+ gint start;
+ gint length;
+ gchar *lang;
+};
+
+/* Break a string of Unicode characters into segments with
+ * consistent shaping/language engine and bidrectional level.
+ * Returns a GList of PangoItem's
+ */
+GList *pango_itemize (PangoContext *context,
+ gchar *text,
+ gint length,
+ PangoLangRange *lang_info,
+ gint n_langs);
+
+/* Logical attributes of a character
+ */
+struct _PangoLogAttr {
+ guint is_break : 1; /* Break in front of character */
+ guint is_white : 1;
+ guint is_char_stop : 1;
+ guint is_word_stop : 1;
+ /* Uniscript has is_invalid */
+};
+
+/* Determine information about cluster/word/line breaks in a string
+ * of Unicode text.
+ */
+void pango_break (gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs);
+
+/*
+ * FONT OPERATIONS
+ */
+
+/* This structure represents a logical font */
+struct _PangoFont {
+ PangoFontClass *klass;
+
+ /*< private >*/
+ gint ref_count;
+ GData *data;
+};
+
+struct _PangoFontClass {
+ void (*destroy) (PangoFont *font);
+};
+
+void pango_font_init (PangoFont *font);
+void pango_font_ref (PangoFont *font);
+void pango_font_unref (PangoFont *font);
+gpointer pango_font_get_data (PangoFont *font,
+ gchar *key);
+void pango_font_set_data (PangoFont *font,
+ gchar *key,
+ gpointer data,
+ GDestroyNotify destroy_func);
+
+/* A component of a font. The contents of this are completely
+ * rendering system dependent
+ */
+struct _PangoCFont {
+ PangoCFontClass *klass;
+
+ /*< private >*/
+ gint ref_count;
+};
+
+struct _PangoCFontClass {
+ void (*destroy) (PangoCFont *cfont);
+};
+
+void pango_cfont_init (PangoCFont *font);
+void pango_cfont_ref (PangoCFont *font);
+void pango_cfont_unref (PangoCFont *font);
+
+
+/*
+ * GLYPH STORAGE
+ */
+
+/* A index of a glyph into a PangoCFont. Rendering system dependent
+ */
+typedef guint32 PangoGlyphIndex;
+
+/* A single glyph
+ */
+struct _PangoGlyph
+{
+ PangoGlyphIndex glyph;
+ PangoCFont *font;
+};
+
+/* Positioning information about a glyph
+ */
+struct _PangoGlyphGeometry
+{
+ PangoGlyphUnit width;
+ PangoGlyphUnit x_offset;
+ PangoGlyphUnit y_offset;
+};
+
+/* Visual attributes of a glyph
+ */
+struct _PangoGlyphVisAttr
+{
+ guint is_cluster_start : 1;
+};
+
+/* A string of glyphs with positional information and visual attributes -
+ * ready for drawing
+ */
+struct _PangoGlyphString {
+ gint num_glyphs;
+ PangoGlyph *glyphs;
+ PangoGlyphGeometry *geometry;
+ PangoGlyphVisAttr *attrs;
+
+ /* This is a memory inefficient way of representing the
+ * information here - each value gives the character index
+ * of the start of the cluster to which the glyph belongs.
+ */
+ gint *log_clusters;
+
+ /*< private >*/
+ gint space;
+};
+
+PangoGlyphString *pango_glyph_string_new (void);
+void pango_glyph_string_set_size (PangoGlyphString *string,
+ gint new_len);
+void pango_glyph_string_free (PangoGlyphString *string);
+
+/* Turn a string of characters into a string of glyphs
+ */
+void pango_shape (PangoFont *font,
+ gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs);
+
+/* [ pango_place - subsume into g_script_shape? ] */
+
+GList *pango_reorder_items (GList *logical_items);
+
+/* Take a PangoGlyphString and add justification to fill to a
+ * given width
+ */
+void pango_justify (PangoGlyphString *glyphs,
+ gint new_line_width,
+ gint min_kashida_width);
+
+/* For selection/cursor positioning - turn a character position into a
+ * X position.
+ */
+void pango_cp_to_x (gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs,
+ gint char_pos,
+ gboolean trailing,
+ gint *x_pos);
+
+
+/* For selection/cursor positioning - turn a X position into a
+ * character position
+ */
+void pango_x_to_cp (gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs,
+ gint x_pos,
+ gint *char_pos,
+ gint *trailing);
+
+/* Module API */
+
+#define PANGO_ENGINE_TYPE_LANG "PangoEngineLang"
+#define PANGO_ENGINE_TYPE_SHAPE "PangoEngineShape"
+
+#define PANGO_RENDER_TYPE_NONE "PangoRenderNone"
+
+struct _PangoEngineRange
+{
+ guint32 start;
+ guint32 end;
+ gchar *langs;
+};
+
+struct _PangoEngineInfo
+{
+ gchar *id;
+ gchar *engine_type;
+ gchar *render_type;
+ PangoEngineRange *ranges;
+ gint n_ranges;
+};
+
+struct _PangoEngine
+{
+ gchar *id;
+ gchar *type;
+ gint length;
+};
+
+struct _PangoEngineLang
+{
+ PangoEngine engine;
+ void (*script_break) (gchar *text,
+ gint len,
+ PangoAnalysis *analysis,
+ PangoLogAttr *attrs);
+};
+
+struct _PangoEngineShape {
+ PangoEngine engine;
+ void (*script_shape) (PangoFont *font,
+ gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs);
+};
+
+/* A module should export the following functions */
+
+void script_engine_list (PangoEngineInfo **engines,
+ gint *n_engines);
+PangoEngine *script_engine_load (const gchar *id);
+void script_engine_unload (PangoEngine *engine);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+#endif /* __PANGO_H__ */
diff --git a/pango/pangox.c b/pango/pangox.c
new file mode 100644
index 00000000..21c2d24d
--- /dev/null
+++ b/pango/pangox.c
@@ -0,0 +1,757 @@
+/* Pango
+ * gscriptx.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <X11/Xlib.h>
+#include "pangox.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+
+typedef struct _PangoXFont PangoXFont;
+typedef struct _XLFDInfo XLFDInfo;
+
+struct _PangoXFont {
+ PangoFont font;
+ Display *display;
+ gchar **fonts;
+ gint n_fonts;
+ GHashTable *name_hash;
+ GHashTable *xlfd_hash;
+};
+
+struct _XLFDInfo {
+ XFontStruct *font_struct;
+ PangoCFont *cfont;
+};
+
+static void pango_x_font_destroy (PangoFont *font);
+static void pango_x_cfont_destroy (PangoCFont *cfont);
+
+PangoFontClass pango_x_font_class = {
+ pango_x_font_destroy
+};
+
+PangoCFontClass pango_x_cfont_class = {
+ pango_x_cfont_destroy
+};
+
+/**
+ * pango_x_load_font:
+ * @display: the X display
+ * @spec: a comma-separated list of XLFD's
+ *
+ * Load up a logical font based on a "fontset" style
+ * text specification.
+ *
+ * Returns a new #PangoFont
+ */
+PangoFont *
+pango_x_load_font (Display *display,
+ gchar *spec)
+{
+ PangoXFont *result;
+
+ g_return_val_if_fail (display != NULL, NULL);
+ g_return_val_if_fail (spec != NULL, NULL);
+
+ result = g_new (PangoXFont, 1);
+
+ result->display = display;
+
+ pango_font_init (&result->font);
+ result->font.klass = &pango_x_font_class;
+
+ result->fonts = g_strsplit(spec, ",", -1);
+ result->n_fonts = 0;
+ while (result->fonts[result->n_fonts])
+ result->n_fonts++;
+
+ result->name_hash = g_hash_table_new (g_str_hash, g_str_equal);
+ result->xlfd_hash = g_hash_table_new (g_str_hash, g_str_equal);
+
+ return (PangoFont *)result;
+}
+
+/**
+ * pango_x_render:
+ * @display: the X display
+ * @d: the drawable on which to draw string
+ * @gc: the graphics context
+ * @glyphs: the glyph string to draw
+ * @x: the x position of start of string
+ * @y: the y position of baseline
+ *
+ * Render a PangoGlyphString onto an X drawable
+ */
+void
+pango_x_render (Display *display,
+ Drawable d,
+ GC gc,
+ PangoGlyphString *glyphs,
+ gint x,
+ gint y)
+{
+ /* Slow initial implementation. For speed, it should really
+ * collect the characters into runs, and draw multiple
+ * characters with each XDrawString16 call.
+ */
+ XChar2b c;
+ PangoXCFont *cfont;
+ Font old_fid = None;
+ XFontStruct *fs;
+ int i;
+
+ for (i=0; i<glyphs->num_glyphs; i++)
+ {
+ c.byte1 = glyphs->glyphs[i].glyph / 256;
+ c.byte2 = glyphs->glyphs[i].glyph % 256;
+ cfont = (PangoXCFont *)glyphs->glyphs[i].font;
+ fs = cfont->font_struct;
+
+ if (fs->fid != old_fid)
+ {
+ XSetFont (display, gc, fs->fid);
+ old_fid = fs->fid;
+ }
+
+ XDrawString16 (display, d, gc,
+ x + glyphs->geometry[i].x_offset / 72,
+ y + glyphs->geometry[i].y_offset / 72,
+ &c, 1);
+
+ x += glyphs->geometry[i].width / 72;
+
+ }
+}
+
+/**
+ * pango_x_glyph_extents:
+ * @glyph: the glyph to measure
+ * @lbearing: left bearing of glyph (result)
+ * @rbearing: right bearing of glyph (result)
+ * @width: width of glyph (result)
+ * @ascent: ascent of glyph (result)
+ * @descent: descent of glyph (result)
+ * @logical_ascent: The vertical distance from the baseline to the
+ * bottom of the line above.
+ * @logical_descent: The vertical distance from the baseline to the
+ * top of the line below.
+ *
+ * Compute the measurements of a single glyph in pixels.
+ */
+void
+pango_x_glyph_extents (PangoGlyph *glyph,
+ gint *lbearing,
+ gint *rbearing,
+ gint *width,
+ gint *ascent,
+ gint *descent,
+ gint *logical_ascent,
+ gint *logical_descent)
+{
+ int index;
+
+ PangoXCFont *cfont;
+ XFontStruct *fs;
+ XCharStruct *cs;
+ XChar2b c;
+
+ c.byte1 = glyph->glyph / 256;
+ c.byte2 = glyph->glyph % 256;
+ cfont = (PangoXCFont *)glyph->font;
+ fs = cfont->font_struct;
+
+ if ((fs->min_byte1 == 0) && (fs->max_byte1 == 0))
+ index = c.byte2 - fs->min_char_or_byte2;
+ else
+ {
+ index = ((c.byte1 - fs->min_byte1) *
+ (fs->max_char_or_byte2 - fs->min_char_or_byte2 + 1)) +
+ c.byte2 - fs->min_char_or_byte2;
+ }
+
+ if (fs->per_char)
+ cs = &fs->per_char[index];
+ else
+ cs = &fs->min_bounds;
+
+ if (lbearing)
+ *lbearing = cs->lbearing;
+ if (rbearing)
+ *rbearing = cs->rbearing;
+ if (width)
+ *width = cs->width;
+ if (ascent)
+ *ascent = cs->ascent;
+ if (descent)
+ *descent = cs->descent;
+ if (logical_ascent)
+ *logical_ascent = fs->ascent;
+ if (logical_descent)
+ *logical_descent = fs->descent;
+}
+
+/**
+ * pango_x_extents:
+ * @glyphs: the glyph string to measure
+ * @lbearing: left bearing of string (result)
+ * @rbearing: right bearing of string (result)
+ * @width: width of string (result)
+ * @ascent: ascent of string (result)
+ * @descent: descent of string (result)
+ * @logical_ascent: The vertical distance from the baseline to the
+ * bottom of the line above.
+ * @logical_descent: The vertical distance from the baseline to the
+ * top of the line below.
+ *
+ * Compute the measurements of a glyph string in pixels.
+ * The number of parameters here is clunky - it might be
+ * nicer to use structures as in XmbTextExtents.
+ */
+void
+pango_x_extents (PangoGlyphString *glyphs,
+ gint *lbearing,
+ gint *rbearing,
+ gint *width,
+ gint *ascent,
+ gint *descent,
+ gint *logical_ascent,
+ gint *logical_descent)
+{
+ int index;
+
+ PangoXCFont *cfont;
+ XFontStruct *fs;
+ XCharStruct *cs;
+ PangoGlyphGeometry *geometry;
+ XChar2b c;
+
+ int i;
+
+ int t_lbearing = 0;
+ int t_rbearing = 0;
+ int t_ascent = 0;
+ int t_descent = 0;
+ int t_logical_ascent = 0;
+ int t_logical_descent = 0;
+ int t_width = 0;
+
+ for (i=0; i<glyphs->num_glyphs; i++)
+ {
+ c.byte1 = glyphs->glyphs[i].glyph / 256;
+ c.byte2 = glyphs->glyphs[i].glyph % 256;
+ cfont = (PangoXCFont *)glyphs->glyphs[i].font;
+ fs = cfont->font_struct;
+
+ if ((fs->min_byte1 == 0) && (fs->min_byte1 == 0))
+ index = c.byte2 - fs->min_char_or_byte2;
+ else
+ {
+ index = ((c.byte1 - fs->min_byte1) *
+ (fs->max_char_or_byte2 - fs->min_char_or_byte2 + 1)) +
+ c.byte2 - fs->min_char_or_byte2;
+ }
+
+ if (fs->per_char)
+ cs = &fs->per_char[index];
+ else
+ cs = &fs->min_bounds;
+
+ geometry = &glyphs->geometry[i];
+
+ if (i == 0)
+ {
+ t_lbearing = cs->lbearing - geometry->x_offset / 72;
+ t_rbearing = cs->rbearing + geometry->x_offset / 72;
+ t_ascent = cs->ascent + geometry->y_offset / 72;
+ t_descent = cs->descent - geometry->y_offset / 72;
+ t_logical_ascent = fs->ascent + geometry->y_offset / 72;
+ t_logical_descent = fs->descent - geometry->y_offset / 72;
+ }
+ else
+ {
+ t_lbearing = MAX (t_lbearing,
+ cs->lbearing - geometry->x_offset / 72 - t_width);
+ t_rbearing = MAX (t_rbearing,
+ t_width + cs->rbearing + geometry->x_offset / 72);
+ t_ascent = MAX (t_ascent, cs->ascent + geometry->y_offset / 72);
+ t_descent = MAX (t_descent, cs->descent - geometry->y_offset / 72);
+ t_logical_ascent = MAX (t_logical_ascent, fs->ascent + geometry->y_offset / 72);
+ t_logical_descent = MAX (t_logical_descent, fs->descent - geometry->y_offset / 72);
+ }
+
+ t_width += geometry->width / 72;
+ }
+
+ if (lbearing)
+ *lbearing = t_lbearing;
+ if (rbearing)
+ *rbearing = t_rbearing;
+ if (width)
+ *width = t_width;
+ if (ascent)
+ *ascent = t_ascent;
+ if (descent)
+ *descent = t_descent;
+ if (logical_ascent)
+ *logical_ascent = t_logical_ascent;
+ if (logical_descent)
+ *logical_descent = t_logical_descent;
+}
+
+/* Compare the tail of a to b */
+static gboolean
+match_end (char *a, char *b)
+{
+ size_t len_a = strlen (a);
+ size_t len_b = strlen (b);
+
+ if (len_b > len_a)
+ return FALSE;
+ else
+ return (strcmp (a + len_a - len_b, b) == 0);
+}
+
+/* Substitute in a charset into an XLFD. Return the
+ * (g_malloc'd) new name, or NULL if the XLFD cannot
+ * match the charset
+ */
+static gchar *
+name_for_charset (char *xlfd, char *charset)
+{
+ char *p;
+ char *dash_charset = g_strconcat ("-", charset, NULL);
+ char *result = NULL;
+ gint ndashes = 0;
+
+ for (p = xlfd; *p; p++)
+ if (*p == '-')
+ ndashes++;
+
+ if (ndashes == 14) /* Complete XLFD */
+ {
+ if (match_end (xlfd, "-*-*"))
+ {
+ result = g_malloc (strlen (xlfd) - 4 + strlen (dash_charset) + 1);
+ strncpy (result, xlfd, strlen (xlfd) - 4);
+ strcpy (result + strlen (xlfd) - 4, dash_charset);
+ }
+ if (match_end (xlfd, dash_charset))
+ result = g_strdup (xlfd);
+ }
+ else if (ndashes == 13)
+ {
+ if (match_end (xlfd, "-*"))
+ {
+ result = g_malloc (strlen (xlfd) - 2 + strlen (dash_charset) + 1);
+ strncpy (result, xlfd, strlen (xlfd) - 2);
+ strcpy (result + strlen (xlfd) - 2, dash_charset);
+ }
+ if (match_end (xlfd, dash_charset))
+ result = g_strdup (xlfd);
+ }
+ else
+ {
+ if (match_end (xlfd, "*"))
+ {
+ result = g_malloc (strlen (xlfd) + strlen (dash_charset) + 1);
+ strcpy (result, xlfd);
+ strcpy (result + strlen (xlfd), dash_charset);
+ }
+ if (match_end (xlfd, dash_charset))
+ result = g_strdup (xlfd);
+ }
+
+ g_free (dash_charset);
+ return result;
+}
+
+/**
+ * pango_x_load_xlfd:
+ * @font: a #PangoFont
+ * @xlfd: the XLFD of a component font to load
+ *
+ * Create a component font from a XLFD. It is assumed that
+ * the xlfd matches a font matching one of the names
+ * of @font, but this is not currently required.
+ *
+ * Returns the new #PangoXCFont
+ */
+PangoCFont *
+pango_x_load_xlfd (PangoFont *font,
+ gchar *xlfd)
+{
+ XFontStruct *fs;
+ PangoXFont *xfont = (PangoXFont *)font;
+ XLFDInfo *info;
+
+ g_return_val_if_fail (font != NULL, NULL);
+
+ info = g_hash_table_lookup (xfont->xlfd_hash, xlfd);
+ if (!info)
+ {
+ info = g_new (XLFDInfo, 1);
+ info->cfont = NULL;
+ info->font_struct = NULL;
+
+ g_hash_table_insert (xfont->xlfd_hash, g_strdup(xlfd), info);
+ }
+
+ if (!info->cfont)
+ {
+ fs = XLoadQueryFont (xfont->display, xlfd);
+ if (fs)
+ {
+ PangoXCFont *cfont = g_new (PangoXCFont, 1);
+ cfont->display = xfont->display;
+ cfont->font_struct = fs;
+ cfont->font.klass = &pango_x_cfont_class;
+
+ info->cfont = (PangoCFont *)cfont;
+
+ pango_cfont_init (info->cfont);
+ pango_cfont_ref (info->cfont);
+
+ if (info->font_struct)
+ XFreeFontInfo (NULL, info->font_struct, 1);
+
+ info->font_struct = fs;
+ }
+ }
+
+ return info->cfont;
+}
+
+static gchar **
+find_cfonts (PangoFont *font, gchar *charset)
+{
+ PangoXFont *xfont = (PangoXFont *)font;
+ gchar **cfonts;
+ int i;
+
+ cfonts = g_hash_table_lookup (xfont->name_hash, charset);
+ if (!cfonts)
+ {
+ cfonts = g_new (gchar *, xfont->n_fonts + 1);
+ for (i=0; i<xfont->n_fonts; i++)
+ {
+ char *xlfd = name_for_charset (xfont->fonts[i], charset);
+ gchar **names;
+ gint count;
+
+ cfonts[i] = NULL;
+ if (xlfd)
+ {
+ names = XListFonts (xfont->display, xlfd, 1, &count);
+ if (count > 0)
+ cfonts[i] = g_strdup (names[0]);
+
+ XFreeFontNames (names);
+ g_free (xlfd);
+ }
+ }
+
+ g_hash_table_insert (xfont->name_hash, g_strdup(charset), cfonts);
+ }
+
+ return cfonts;
+}
+
+/**
+ * pango_x_find_cfont:
+ * @font: A font from pango_x_load_font()
+ * @charset: characterset descript (last two components of XLFD)
+ *
+ * Find a component font of a #PangoFont.
+ *
+ * Returns the #PangoCFont for @charset, or NULL, if no appropriate
+ * font could be found.
+ */
+PangoCFont *
+pango_x_find_cfont (PangoFont *font,
+ gchar *charset)
+{
+ PangoXFont *xfont = (PangoXFont *)font;
+ gchar **names;
+ int i;
+
+ names = find_cfonts (font, charset);
+ for (i=0; i<xfont->n_fonts; i++)
+ if (names[i])
+ return pango_x_load_xlfd (font, names[i]);
+
+ return NULL;
+}
+
+void
+font_struct_get_ranges (Display *display,
+ XFontStruct *fs,
+ gint **ranges,
+ gint *n_ranges)
+{
+ gint i, j;
+ static Atom bounds_atom = None;
+ gint *range_buf = NULL;
+ size_t range_buf_size = 8;
+
+ if (bounds_atom == None)
+ bounds_atom = XInternAtom (display, "_XFREE86_GLYPH_RANGES", False);
+
+ j = 0;
+ for (i=0; i<fs->n_properties; i++)
+ {
+ if (fs->properties[i].name == bounds_atom)
+ {
+ char *val = XGetAtomName (display, fs->properties[i].card32);
+ char *p;
+ guint start, end;
+
+ p = val;
+ while (*p)
+ {
+ int count;
+
+ while (*p && isspace (*p))
+ p++;
+
+ count = sscanf (p, "%u_%u", &start, &end);
+
+ if (count > 0)
+ {
+ if (count == 1)
+ end = start;
+
+ if (!range_buf || (2*j+1) >= range_buf_size)
+ {
+ size_t new_size = range_buf_size * 2;
+ if (new_size < range_buf_size) /* Paranoia */
+ {
+ XFree (val);
+ *ranges = NULL;
+ *n_ranges = 0;
+
+ return;
+ }
+ range_buf_size = new_size;
+ range_buf = g_realloc (range_buf, sizeof(gint) * range_buf_size);
+ }
+
+ range_buf[2*j] = start;
+ range_buf[2*j + 1] = end;
+ j++;
+ }
+ else
+ {
+ goto error;
+ }
+
+ while (*p && !isspace (*p))
+ p++;
+ }
+
+ error:
+ XFree (val);
+ }
+
+ }
+
+ if (j > 0)
+ {
+ *n_ranges = j;
+ *ranges = g_malloc (sizeof(gint) * 2*j);
+ memcpy (*ranges, range_buf, sizeof(gint) * 2*j);
+ }
+ else
+ {
+ *n_ranges = 1;
+ *ranges = g_malloc (sizeof(gint) * 2);
+
+ (*ranges)[0] = fs->min_byte1 * 256 + fs->min_char_or_byte2;
+ (*ranges)[1] = fs->max_byte1 * 256 + fs->max_char_or_byte2;
+ }
+
+ g_free (range_buf);
+}
+
+/**
+ * pango_x_xlfd_get_ranges:
+ * @font: a #PangoFont.
+ * @xlfd: a XLFD of a component font.
+ * @ranges: location to store returned ranges.
+ * @n_ranges: location to store the number of ranges.
+ *
+ * Find the range of valid characters for a particular
+ * XLFD representing a component of the given font.
+ *
+ * Returns %TRUE if the XLFD matches a font, FALSE otherwise.
+ * in the latter case, @ranges and @n_ranges are unchanged.
+ */
+gboolean
+pango_x_xlfd_get_ranges (PangoFont *font,
+ gchar *xlfd,
+ gint **ranges,
+ gint *n_ranges)
+{
+ PangoXFont *xfont = (PangoXFont *)font;
+ gchar **names;
+ gint count;
+ XLFDInfo *info;
+
+ info = g_hash_table_lookup (xfont->xlfd_hash, xlfd);
+ if (!info)
+ {
+ info = g_new (XLFDInfo, 1);
+ info->cfont = NULL;
+ info->font_struct = NULL;
+ g_hash_table_insert (xfont->xlfd_hash, g_strdup(xlfd), info);
+ }
+
+ if (!info->font_struct)
+ {
+ names = XListFontsWithInfo (xfont->display, xlfd, 1, &count, &info->font_struct);
+
+ if (count == 0)
+ info->font_struct = NULL;
+
+ XFreeFontNames (names);
+ }
+
+ if (info->font_struct)
+ {
+ font_struct_get_ranges (xfont->display, info->font_struct, ranges, n_ranges);
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+/**
+ * pango_x_xlfd_list_cfonts:
+ * @font: a #PangoFont.
+ * @charsets: the list of character sets to match against.
+ * @n_charsets: the number of elements in @charsets.
+ * @xlfds: location to store a pointer to an array of returned XLFDs.
+ * @n_xlfds: location to store the number of XLFDs.
+ *
+ * List all possible XLFDs that can match a particular set
+ * of character sets for the given #PangoFont. The
+ * returned values are sorted at highest priority by
+ * the order of the names in fontlist used to create
+ * the #PangoFont, and then sorted by the ordering
+ * of the character sets in @charsets.
+ *
+ */
+void
+pango_x_list_cfonts (PangoFont *font,
+ gchar **charsets,
+ gint n_charsets,
+ gchar ***xlfds,
+ gint *n_xlfds)
+{
+ PangoXFont *xfont = (PangoXFont *)font;
+
+ int i, j;
+
+ GSList *result = NULL;
+ GSList *tmp_list;
+
+ gchar ***names = g_new (gchar **, n_charsets);
+
+ *n_xlfds = 0;
+ for (j=0; j<n_charsets; j++)
+ names[j] = find_cfonts (font, charsets[j]);
+
+ for (i=0; i < xfont->n_fonts; i++)
+ for (j=0; j < n_charsets; j++)
+ if (names[j][i] != 0)
+ {
+ (*n_xlfds)++;
+ result = g_slist_prepend (result, g_strdup (names[j][i]));
+ }
+
+ result = g_slist_reverse (result);
+ *xlfds = g_new (gchar *, *n_xlfds);
+
+ tmp_list = result;
+ for (i=0; i< *n_xlfds; i++)
+ {
+ (*xlfds)[i] = tmp_list->data;
+ tmp_list = tmp_list->next;
+ }
+
+ g_slist_free (result);
+ g_free (names);
+}
+
+void
+name_hash_foreach (gpointer key, gpointer value, gpointer data)
+{
+ gchar *charset = key;
+ gchar **names = value;
+ PangoXFont *xfont = data;
+ int i;
+
+ for (i=0; i<xfont->n_fonts; i++)
+ g_free (names[i]);
+ g_free (names);
+ g_free (charset);
+}
+
+void
+xlfd_hash_foreach (gpointer key, gpointer value, gpointer data)
+{
+ gchar *xlfd = key;
+ XLFDInfo *info = value;
+
+ if (info->cfont)
+ pango_cfont_unref (info->cfont);
+ else if (info->font_struct)
+ XFreeFontInfo (NULL, info->font_struct, 1);
+
+ g_free (info);
+
+ g_free (xlfd);
+}
+
+static void
+pango_x_font_destroy (PangoFont *font)
+{
+ PangoXFont *xfont = (PangoXFont *)font;
+
+ g_hash_table_foreach (xfont->name_hash, name_hash_foreach, xfont);
+ g_hash_table_destroy (xfont->name_hash);
+
+ g_hash_table_foreach (xfont->xlfd_hash, xlfd_hash_foreach, xfont);
+ g_hash_table_destroy (xfont->xlfd_hash);
+
+ g_strfreev (xfont->fonts);
+ g_free (font);
+}
+
+static void
+pango_x_cfont_destroy (PangoCFont *font)
+{
+ PangoXCFont *xcfont = (PangoXCFont *)font;
+
+ XFreeFont (xcfont->display, xcfont->font_struct);
+
+ g_free (font);
+}
diff --git a/pango/pangox.h b/pango/pangox.h
new file mode 100644
index 00000000..731ced79
--- /dev/null
+++ b/pango/pangox.h
@@ -0,0 +1,100 @@
+/* Pango
+ * pangox.h:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __PANGOX_H__
+#define __PANGOX_H__
+
+#include <glib.h>
+#include <pango.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include <X11/Xlib.h>
+
+#define PANGO_RENDER_TYPE_X "PangoRenderX"
+
+typedef struct _PangoXCFont PangoXCFont;
+
+struct _PangoXCFont {
+ /*< private >*/
+ PangoCFont font;
+
+ /*< public >*/
+ Display *display;
+ XFontStruct *font_struct;
+};
+
+/* Calls for applications
+ */
+PangoFont *pango_x_load_font (Display *display,
+ gchar *spec);
+void pango_x_render (Display *display,
+ Drawable d,
+ GC gc,
+ PangoGlyphString *glyphs,
+ gint x,
+ gint y);
+void pango_x_extents (PangoGlyphString *glyphs,
+ gint *lbearing,
+ gint *rbearing,
+ gint *width,
+ gint *ascent,
+ gint *descent,
+ gint *logical_ascent,
+ gint *logical_descent);
+void pango_x_glyph_extents (PangoGlyph *glyph,
+ gint *lbearing,
+ gint *rbearing,
+ gint *width,
+ gint *ascent,
+ gint *descent,
+ gint *logical_ascent,
+ gint *logical_descent);
+
+
+/* Calls for rendering modules
+ */
+PangoCFont *pango_x_find_cfont (PangoFont *font,
+ gchar *charset);
+void pango_x_list_cfonts (PangoFont *font,
+ gchar **charsets,
+ gint n_charsets,
+ gchar ***xlfds,
+ gint *n_xlfds);
+gboolean pango_x_xlfd_get_ranges (PangoFont *font,
+ gchar *xlfd,
+ gint **ranges,
+ gint *n_ranges);
+PangoCFont *pango_x_load_xlfd (PangoFont *font,
+ gchar *xlfd);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+#endif /* __PANGOX_H__ */
+
+
+
+
diff --git a/pango/querymodules.c b/pango/querymodules.c
new file mode 100644
index 00000000..8d643f44
--- /dev/null
+++ b/pango/querymodules.c
@@ -0,0 +1,102 @@
+/* Pango
+ * querymodules.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <glib.h>
+#include <gmodule.h>
+#include "pango.h"
+
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdio.h>
+
+void
+query_module (GModule *module, gchar *name)
+{
+ void (*list) (PangoEngineInfo **engines, gint *n_engines);
+ PangoEngine *(*load) (const gchar *id);
+ void (*unload) (PangoEngine *engine);
+
+ if (g_module_symbol (module, "script_engine_list", (gpointer)&list) &&
+ g_module_symbol (module, "script_engine_load", (gpointer)&load) &&
+ g_module_symbol (module, "script_engine_unload", (gpointer)&unload))
+ {
+ gint i,j;
+ PangoEngineInfo *engines;
+ gint n_engines;
+
+ (*list) (&engines, &n_engines);
+
+ for (i=0; i<n_engines; i++)
+ {
+ g_print ("%s %s %s %s ", name, engines[i].id, engines[i].engine_type, engines[i].render_type);
+ for (j=0; j < engines[i].n_ranges; j++)
+ {
+ if (j != 0)
+ g_print (" ");
+ g_print ("%d-%d:%s",
+ engines[i].ranges[j].start,
+ engines[i].ranges[j].end,
+ engines[i].ranges[j].langs);
+ }
+ g_print ("\n");
+ }
+ }
+ else
+ {
+ fprintf (stderr, "%s does not export Pango module API\n", name);
+ }
+}
+
+int main (int argc, char **argv)
+{
+ char cwd[PATH_MAX];
+ int i;
+
+ getcwd (cwd, PATH_MAX);
+
+ for (i=1; i<argc; i++)
+ {
+ GModule *module;
+ gchar *tmp;
+
+ if (argv[i][0] == '/')
+ tmp = g_strdup (argv[i]);
+ else
+ tmp = g_strconcat (cwd, "/", argv[i], NULL);
+
+ module = g_module_open (tmp, G_MODULE_BIND_LAZY);
+ if (module)
+ {
+ query_module (module, tmp);
+ g_module_close (module);
+ }
+ else
+ {
+ fprintf(stderr, "Cannot load module %s: %s\n",
+ tmp, g_module_error());
+ }
+
+ g_free (tmp);
+ }
+
+ return 0;
+}
diff --git a/pango/reorder-items.c b/pango/reorder-items.c
new file mode 100644
index 00000000..bbe415b7
--- /dev/null
+++ b/pango/reorder-items.c
@@ -0,0 +1,104 @@
+/* Pango
+ * reorder-items.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <pango.h>
+
+static GList *reorder_items_recurse (GList *items, int n_items);
+
+/**
+ * pango_reorder_items:
+ * @logical_items: a GList of #PangoItem in logical order.
+ *
+ * From a list of items in logical order and the associated
+ * directional levels, produce a list in visual order.
+ * The original list is unmodified.
+ *
+ * Returns a GList of PangoItem structures in visual order.
+ */
+GList *
+pango_reorder_items (GList *logical_items)
+{
+ return reorder_items_recurse (logical_items, g_list_length (logical_items));
+}
+
+static GList *
+reorder_items_recurse (GList *items, int n_items)
+{
+ GList *tmp_list, *level_start_node;
+ int i, level_start_i;
+ int min_level = G_MAXINT;
+ GList *result = NULL;
+
+ if (n_items == 0)
+ return NULL;
+
+ tmp_list = items;
+ for (i=0; i<n_items; i++)
+ {
+ PangoItem *item = tmp_list->data;
+
+ min_level = MIN (min_level, item->analysis.level);
+
+ tmp_list = tmp_list->next;
+ }
+
+ level_start_i = 0;
+ level_start_node = items;
+ tmp_list = items;
+ for (i=0; i<n_items; i++)
+ {
+ PangoItem *item = tmp_list->data;
+
+ if (item->analysis.level == min_level)
+ {
+ if (min_level % 2)
+ {
+ if (i > level_start_i)
+ result = g_list_concat (reorder_items_recurse (level_start_node, i - level_start_i), result);
+ result = g_list_prepend (result, item);
+ }
+ else
+ {
+ if (i > level_start_i)
+ result = g_list_concat (result, reorder_items_recurse (level_start_node, i - level_start_i));
+ result = g_list_append (result, item);
+ }
+
+ level_start_i = i + 1;
+ level_start_node = tmp_list->next;
+ }
+
+ tmp_list = tmp_list->next;
+ }
+
+ if (min_level % 2)
+ {
+ if (i > level_start_i)
+ result = g_list_concat (reorder_items_recurse (level_start_node, i - level_start_i), result);
+ }
+ else
+ {
+ if (i > level_start_i)
+ result = g_list_concat (result, reorder_items_recurse (level_start_node, i - level_start_i));
+ }
+
+ return result;
+}
diff --git a/pango/shape.c b/pango/shape.c
new file mode 100644
index 00000000..0f5efb39
--- /dev/null
+++ b/pango/shape.c
@@ -0,0 +1,48 @@
+/* Pango
+ * shape.c: Convert characters into glyphs.
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <pango.h>
+#include "utils.h"
+
+/**
+ * pango_shape:
+ * @font: font to use for shaping
+ * @text: the text to process
+ * @length: the length (in bytes) of @text
+ * @analysis: #PangoAnalysis structure from PangoItemize
+ * @glyphs: glyph string in which to store results
+ *
+ * Given a segment of text and the corresponding
+ * #PangoAnalysis structure returned from pango_itemize(),
+ * convert the characters into glyphs. You may also pass
+ * in only a substring of the item from pango_itemize().
+ */
+void pango_shape (PangoFont *font,
+ gchar *text,
+ gint length,
+ PangoAnalysis *analysis,
+ PangoGlyphString *glyphs)
+{
+ if (analysis->shape_engine)
+ analysis->shape_engine->script_shape (font, text, length, analysis, glyphs);
+ else
+ pango_glyph_string_set_size (glyphs, 0);
+}
diff --git a/pango/utils.c b/pango/utils.c
new file mode 100644
index 00000000..d3ab9fdd
--- /dev/null
+++ b/pango/utils.c
@@ -0,0 +1,153 @@
+/* Pango
+ * utils.c:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "utils.h"
+#include <iconv.h>
+#include <errno.h>
+#include <unicode.h>
+
+gboolean
+_pango_utf8_iterate (gchar *cur, char **next, GUChar4 *wc_out)
+{
+ gchar *p = cur;
+ gchar c = *p;
+ GUChar4 wc;
+ gint length;
+
+ if ((c & 0x80) == 0)
+ {
+ length = 1;
+ wc = c;
+ }
+ else if ((c & 0xc0) == 0x80)
+ {
+ return FALSE;
+ }
+ else if ((c & 0xe0) == 0xc0)
+ {
+ length = 2;
+ wc = c & 0x1f;
+ }
+ else if ((c & 0xf0) == 0xe0)
+ {
+ length = 3;
+ wc = c & 0x0f;
+ }
+ else
+ return FALSE;
+
+ p++;
+ while (--length > 0)
+ {
+ if (*p == 0) /* Incomplete character */
+ {
+ if (next)
+ *next = cur;
+ if (wc_out)
+ *wc_out = 0;
+ return TRUE;
+ }
+
+ if ((*p & 0xc0) != 0x80)
+ return FALSE;
+
+ wc <<= 6;
+ wc |= (*p) & 0x3f;
+
+ p++;
+ }
+
+ if (wc_out)
+ *wc_out = wc;
+ if (next)
+ *next = p;
+
+ return TRUE;
+}
+
+gint
+_pango_utf8_len (gchar *str, gint limit)
+{
+ gchar *cur = str;
+ gchar *next;
+ gint len = 0;
+
+ while (*cur)
+ {
+ if (!_pango_utf8_iterate (cur, &next, NULL))
+ return -1;
+ if (cur == next)
+ break;
+ if (limit >= 0 && (next - str) > limit)
+ return len;
+ cur = next;
+ len++;
+ }
+
+ return len;
+}
+
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+#define UCS2_CHARSET "UNICODELITTLE"
+#else
+#define UCS2_CHARSET "UNICODE"
+#endif
+
+GUChar2 *
+_pango_utf8_to_ucs2 (gchar *str, gint len)
+{
+ iconv_t cd;
+ gchar *outbuf, *result;
+ gchar *inbuf;
+ size_t inbytesleft;
+ size_t outbytesleft;
+ gint outlen;
+
+ gint count;
+
+ cd = iconv_open (UCS2_CHARSET, "UTF8");
+
+ if (cd == (iconv_t)-1)
+ g_error ("No converter from UTF8 to " UCS2_CHARSET);
+
+ if (len < 0)
+ len = strlen (str);
+
+ outlen = unicode_strlen (str, len) * sizeof(GUChar2);
+ result = g_malloc (outlen);
+
+ inbuf = str;
+ inbytesleft = len;
+ outbuf = result;
+ outbytesleft = outlen;
+
+ count = iconv (cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
+
+ if (count < 0 && (errno != E2BIG))
+ {
+ g_free (result);
+ result = NULL;
+ }
+
+ iconv_close (cd);
+
+ return (GUChar2 *)result;
+}
diff --git a/pango/utils.h b/pango/utils.h
new file mode 100644
index 00000000..2777b5d9
--- /dev/null
+++ b/pango/utils.h
@@ -0,0 +1,34 @@
+/* Pango
+ * utils.h:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __UTILS_H__
+#define __UTILS_H__
+
+#include <glib.h>
+
+typedef guint16 GUChar2;
+typedef guint32 GUChar4;
+
+gboolean _pango_utf8_iterate (gchar *cur, char **next, GUChar4 *wc_out);
+GUChar2 *_pango_utf8_to_ucs2 (gchar *str, gint len);
+gint _pango_utf8_len (gchar *str, gint limit);
+
+#endif /* __UTILS_H__ */
diff --git a/tools/Makefile.am b/tools/Makefile.am
new file mode 100644
index 00000000..bdf8f083
--- /dev/null
+++ b/tools/Makefile.am
@@ -0,0 +1,7 @@
+## Process this file with automake to create Makefile.in.
+
+EXTRA_DIST= \
+ add-copyright \
+ compress-table.pl \
+ make-table.sh \
+ maps/README
diff --git a/tools/add-copyright b/tools/add-copyright
new file mode 100755
index 00000000..201d887d
--- /dev/null
+++ b/tools/add-copyright
@@ -0,0 +1,62 @@
+#!/usr/local/bin/perl -w
+
+# Spit the copyright
+
+# If there is a leading block comment that looks like this
+# license, don't add the license.
+
+$ARGV[0] =~ s!^\./!!;
+
+open IN, "<$ARGV[0]" or die "Cannot open $ARGV[0]: $!";
+open OUT, ">$ARGV[0].new" or die "Cannot open $ARGV[0].new: $!";
+
+$old = "";
+while (<IN>) {
+ $old .= $_;
+ m!^(/| )\*! or last;
+}
+
+if ($old !~ /Free Software Foundation/) {
+ while (<DATA>) {
+ s/\@NAME\@/$ARGV[0]/;
+ print OUT;
+ }
+}
+
+print OUT $old;
+while (<IN>) {
+ print OUT;
+}
+
+close IN;
+close OUT;
+
+if (system("diff $ARGV[0] $ARGV[0].new > /dev/null") != 0) {
+ system ("mv $ARGV[0] $ARGV[0].bak");
+ system ("mv $ARGV[0].new $ARGV[0]");
+} else {
+ system ("rm $ARGV[0].new");
+}
+
+__DATA__
+/* Pango
+ * @NAME@:
+ *
+ * Copyright (C) 1999 Red Hat Software
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
diff --git a/tools/compress-table.pl b/tools/compress-table.pl
new file mode 100755
index 00000000..83b268cb
--- /dev/null
+++ b/tools/compress-table.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/perl -w
+
+sub convert {
+ $s = shift;
+ $s = "ENC_".uc($s);
+ $s =~ s/-/_/g;
+ return $s;
+}
+
+open TABLE, "table";
+
+$encodings = "";
+
+while (<TABLE>) {
+ if (/^(0x[0-9a-fA-F]+)\s+([^:]*):(0x[0-9a-fA-F]+)/) {
+ ($u, $e) = ($1, $2);
+
+ $u = oct($u);
+
+ if (!defined $start) {
+ $start = $u;
+ $old_u = $u;
+ $encodings = convert($e);
+ $end = $u;
+ } elsif ($old_u ne $u) {
+ if (!defined $old_encodings) {
+ $old_encodings = $encodings;
+ } elsif ($old_encodings ne $encodings || $old_u != $end + 1) {
+
+ printf "{ %#x, %#x, $old_encodings },\n", $start, $end;
+ $start = $old_u;
+ $old_encodings = $encodings;
+ }
+ $end = $old_u;
+ $encodings = convert($e);
+ $old_u = $u;
+ } else {
+ $encodings .= "|".convert($e);
+ }
+ }
+}
+
+close TABLE;
diff --git a/tools/make-table.sh b/tools/make-table.sh
new file mode 100755
index 00000000..e4a3963b
--- /dev/null
+++ b/tools/make-table.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+echo -n > table.tmp
+
+for i in maps/* ; do
+ name=`basename $i`
+ case $name in
+ README | CVS)
+ ;;
+ *)
+ cat $i | grep -v '^#' | awk "{ printf \"%s %s:%s\\n\", \$2, \"$name\", \$1 }" >> table.tmp
+ ;;
+ esac
+done
+sort table.tmp > table
+rm table.tmp
diff --git a/tools/maps/README b/tools/maps/README
new file mode 100644
index 00000000..036fc5b1
--- /dev/null
+++ b/tools/maps/README
@@ -0,0 +1,12 @@
+This directory is intentionally empty. It is located
+here so that mapping tables can be put here when
+running the make-table.sh script in the parent directory.
+
+However, the mapping tables that I've used are those
+provided by the Unicode consortium, which can't be
+distributed in their original form, though the data
+is freely useable.
+
+Owen Taylor
+otaylor@redhat.com
+10 Jul 1999 \ No newline at end of file